From 4a9c3b2433d4552bdabb832f71204aca95e68897 Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Fri, 23 Nov 2012 21:52:41 +0100 Subject: Repair QGraphicsWidget focus chain when used with ItemIsPanel. Add handling of the focus chain to QGraphicsItem::setFlags(), so that the focus chain is repaired (panels pop out of the chain and non-panels merge back in) when the ItemIsPanel flag is toggled. Add handling focus chain to QGraphicsWidgetPrivate::fixFocusChainBeforeReparenting for panels. Before this fix, you must enable the ItemIsPanel flag before adding the item as a child to a parent panel, and you lose focus when using the tab key to focus around a panel after it has been reparented into another panel. Task-number: QTBUG-28187 Change-Id: I1d0d81a90697eaf715a8a337c8bf6c2159329e68 Reviewed-by: Olivier Goffart --- src/widgets/graphicsview/qgraphicsitem.cpp | 49 +++++++++--- src/widgets/graphicsview/qgraphicsscene.cpp | 21 ++--- src/widgets/graphicsview/qgraphicswidget_p.cpp | 104 +++++++++++-------------- 3 files changed, 96 insertions(+), 78 deletions(-) (limited to 'src') diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp index c30435e56a..cd379e1b05 100644 --- a/src/widgets/graphicsview/qgraphicsitem.cpp +++ b/src/widgets/graphicsview/qgraphicsitem.cpp @@ -1884,15 +1884,46 @@ void QGraphicsItem::setFlags(GraphicsItemFlags flags) d_ptr->scene->d_func()->updateInputMethodSensitivityInViews(); } + if ((flags & ItemIsPanel) != (oldFlags & ItemIsPanel)) { + bool becomesPanel = (flags & ItemIsPanel); + if ((d_ptr->panelModality != NonModal) && d_ptr->scene) { + // update the panel's modal state + if (becomesPanel) + d_ptr->scene->d_func()->enterModal(this); + else + d_ptr->scene->d_func()->leaveModal(this); + } + if (d_ptr->isWidget && (becomesPanel || parentWidget())) { + QGraphicsWidget *w = static_cast(this); + QGraphicsWidget *focusFirst = w; + QGraphicsWidget *focusLast = w; + for (;;) { + QGraphicsWidget *test = focusLast->d_func()->focusNext; + if (!w->isAncestorOf(test) || test == w) + break; + focusLast = test; + } - if ((d_ptr->panelModality != NonModal) - && d_ptr->scene - && (flags & ItemIsPanel) != (oldFlags & ItemIsPanel)) { - // update the panel's modal state - if (flags & ItemIsPanel) - d_ptr->scene->d_func()->enterModal(this); - else - d_ptr->scene->d_func()->leaveModal(this); + if (becomesPanel) { + // unlink own widgets from focus chain + QGraphicsWidget *beforeMe = w->d_func()->focusPrev; + QGraphicsWidget *afterMe = focusLast->d_func()->focusNext; + beforeMe->d_func()->focusNext = afterMe; + afterMe->d_func()->focusPrev = beforeMe; + focusFirst->d_func()->focusPrev = focusLast; + focusLast->d_func()->focusNext = focusFirst; + if (!isAncestorOf(focusFirst->d_func()->focusNext)) + focusFirst->d_func()->focusNext = w; + } else if (QGraphicsWidget *pw = parentWidget()) { + // link up own widgets to focus chain + QGraphicsWidget *beforeMe = pw; + QGraphicsWidget *afterMe = pw->d_func()->focusNext; + beforeMe->d_func()->focusNext = w; + afterMe->d_func()->focusPrev = focusLast; + w->d_func()->focusPrev = beforeMe; + focusLast->d_func()->focusNext = afterMe; + } + } } if (d_ptr->scene) { @@ -2274,7 +2305,7 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, scene->d_func()->leaveModal(q_ptr); } if (hasFocus && scene) { - // Hiding the closest non-panel ancestor of the focus item + // Hiding the focus item or the closest non-panel ancestor of the focus item QGraphicsItem *focusItem = scene->focusItem(); bool clear = true; if (isWidget && !focusItem->isPanel()) { diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp index ee65fb8fa6..769b488f39 100644 --- a/src/widgets/graphicsview/qgraphicsscene.cpp +++ b/src/widgets/graphicsview/qgraphicsscene.cpp @@ -607,7 +607,7 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item) q->removeItem(item->d_ptr->children.at(i)); } - if (!item->d_ptr->inDestructor && item == tabFocusFirst) { + if (!item->d_ptr->inDestructor && !item->parentItem() && item->isWidget()) { QGraphicsWidget *widget = static_cast(item); widget->d_func()->fixFocusChainBeforeReparenting(0, oldScene, 0); } @@ -2528,14 +2528,13 @@ void QGraphicsScene::addItem(QGraphicsItem *item) // No first tab focus widget - make this the first tab focus // widget. d->tabFocusFirst = widget; - } else if (!widget->parentWidget()) { + } else if (!widget->parentWidget() && !widget->isPanel()) { // Adding a widget that is not part of a tab focus chain. - QGraphicsWidget *last = d->tabFocusFirst->d_func()->focusPrev; - QGraphicsWidget *lastNew = widget->d_func()->focusPrev; - last->d_func()->focusNext = widget; - widget->d_func()->focusPrev = last; - d->tabFocusFirst->d_func()->focusPrev = lastNew; - lastNew->d_func()->focusNext = d->tabFocusFirst; + QGraphicsWidget *myNewPrev = d->tabFocusFirst->d_func()->focusPrev; + myNewPrev->d_func()->focusNext = widget; + widget->d_func()->focusPrev->d_func()->focusNext = d->tabFocusFirst; + d->tabFocusFirst->d_func()->focusPrev = widget->d_func()->focusPrev; + widget->d_func()->focusPrev = myNewPrev; } } @@ -5330,7 +5329,7 @@ bool QGraphicsScene::focusNextPrevChild(bool next) return true; } } - if (!d->tabFocusFirst) { + if (!item && !d->tabFocusFirst) { // No widgets... return false; } @@ -5342,8 +5341,10 @@ bool QGraphicsScene::focusNextPrevChild(bool next) } else { QGraphicsWidget *test = static_cast(item); widget = next ? test->d_func()->focusNext : test->d_func()->focusPrev; - if ((next && widget == d->tabFocusFirst) || (!next && widget == d->tabFocusFirst->d_func()->focusPrev)) + if (!widget->panel() && ((next && widget == d->tabFocusFirst) || (!next && widget == d->tabFocusFirst->d_func()->focusPrev))) { + // Tab out of the scene. return false; + } } QGraphicsWidget *widgetThatHadFocus = widget; diff --git a/src/widgets/graphicsview/qgraphicswidget_p.cpp b/src/widgets/graphicsview/qgraphicswidget_p.cpp index 4ec215a720..dfebbb5036 100644 --- a/src/widgets/graphicsview/qgraphicswidget_p.cpp +++ b/src/widgets/graphicsview/qgraphicswidget_p.cpp @@ -764,73 +764,59 @@ bool QGraphicsWidgetPrivate::hasDecoration() const void QGraphicsWidgetPrivate::fixFocusChainBeforeReparenting(QGraphicsWidget *newParent, QGraphicsScene *oldScene, QGraphicsScene *newScene) { Q_Q(QGraphicsWidget); - Q_ASSERT(focusNext && focusPrev); - QGraphicsWidget *n = q; //last one in 'new' list - QGraphicsWidget *o = 0; //last one in 'old' list - - QGraphicsWidget *w = focusNext; - - QGraphicsWidget *firstOld = 0; - bool wasPreviousNew = true; - - while (w != q) { - bool isCurrentNew = q->isAncestorOf(w); - if (isCurrentNew) { - if (!wasPreviousNew) { - n->d_func()->focusNext = w; - w->d_func()->focusPrev = n; - } - n = w; - } else /*if (!isCurrentNew)*/ { - if (wasPreviousNew) { - if (o) { - o->d_func()->focusNext = w; - w->d_func()->focusPrev = o; - } else { - firstOld = w; - } - } - o = w; - } - w = w->d_func()->focusNext; - wasPreviousNew = isCurrentNew; - } - - // repair the 'old' chain - if (firstOld) { - o->d_func()->focusNext = firstOld; - firstOld->d_func()->focusPrev = o; + if (q_ptr->isPanel()) { + // panels are never a part of their parent's or ancestors' focus + // chains. so reparenting a panel is easy; there's nothing to + // do. + return; } - // update tabFocusFirst for oldScene if the item is going to be removed from oldScene - if (newParent) - newScene = newParent->scene(); - - if (oldScene && newScene != oldScene) - oldScene->d_func()->tabFocusFirst = (firstOld && firstOld->scene() == oldScene) ? firstOld : 0; - - QGraphicsItem *topLevelItem = newParent ? newParent->topLevelItem() : 0; - QGraphicsWidget *topLevel = 0; - if (topLevelItem && topLevelItem->isWidget()) - topLevel = static_cast(topLevelItem); + // we're not a panel, so find the first widget in the focus chain + // (this), and the last (this, or the last widget that is still + // a descendent of this). also find the widgets that currently / + // before reparenting point to this widgets' focus chain. + QGraphicsWidget *focusFirst = q; + QGraphicsWidget *focusBefore = focusPrev; + QGraphicsWidget *focusLast = focusFirst; + QGraphicsWidget *focusAfter = focusNext; + do { + if (!q->isAncestorOf(focusAfter)) + break; + focusLast = focusAfter; + } while ((focusAfter = focusAfter->d_func()->focusNext)); - if (topLevel && newParent) { - QGraphicsWidget *last = topLevel->d_func()->focusPrev; - // link last with new chain - last->d_func()->focusNext = q; - focusPrev = last; + if (!parent && oldScene && oldScene != newScene && oldScene->d_func()->tabFocusFirst == q) { + // detach from old scene's top level focus chain. + oldScene->d_func()->tabFocusFirst = (focusAfter != q) ? focusAfter : 0; + } - // link last in chain with - topLevel->d_func()->focusPrev = n; - n->d_func()->focusNext = topLevel; + // detach from current focus chain; skip this widget subtree. + focusBefore->d_func()->focusNext = focusAfter; + focusAfter->d_func()->focusPrev = focusBefore; + + if (newParent) { + // attach to new parent's focus chain as the last element + // in its chain. + QGraphicsWidget *newFocusFirst = newParent; + QGraphicsWidget *newFocusLast = newFocusFirst; + QGraphicsWidget *newFocusAfter = newFocusFirst->d_func()->focusNext; + do { + if (!newParent->isAncestorOf(newFocusAfter)) + break; + newFocusLast = newFocusAfter; + } while ((newFocusAfter = newFocusAfter->d_func()->focusNext)); + + newFocusLast->d_func()->focusNext = q; + focusLast->d_func()->focusNext = newFocusAfter; + newFocusAfter->d_func()->focusPrev = focusLast; + focusPrev = newFocusLast; } else { - // q is the start of the focus chain - n->d_func()->focusNext = q; - focusPrev = n; + // no new parent, so just link up our own prev->last widgets. + focusPrev = focusLast; + focusLast->d_func()->focusNext = q; } - } void QGraphicsWidgetPrivate::setLayout_helper(QGraphicsLayout *l) -- cgit v1.2.3 From a380c108a69051f0aaf1880b7f80d9065769a40f Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 11 Dec 2012 11:54:48 +0100 Subject: qdoc: Fix warnings about unused variables. Change-Id: Ic75518aaea3a080aee656637335f358304191b94 Reviewed-by: Martin Smith --- src/tools/qdoc/codeparser.cpp | 2 +- src/tools/qdoc/qmlvisitor.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/tools/qdoc/codeparser.cpp b/src/tools/qdoc/codeparser.cpp index 5fb4909f44..9569081ec4 100644 --- a/src/tools/qdoc/codeparser.cpp +++ b/src/tools/qdoc/codeparser.cpp @@ -242,7 +242,7 @@ void CodeParser::processCommonMetaCommand(const Location& location, else if ((command == COMMAND_INGROUP) || (command == COMMAND_INPUBLICGROUP)) { // Note: \ingroup and \inpublicgroup are now the same. // Not that they were ever different. - DocNode* dn = qdb_->addToGroup(arg.first, node); + qdb_->addToGroup(arg.first, node); } else if (command == COMMAND_INMODULE) { qdb_->addToModule(arg.first,node); diff --git a/src/tools/qdoc/qmlvisitor.cpp b/src/tools/qdoc/qmlvisitor.cpp index e0bee2e664..63a69ee0af 100644 --- a/src/tools/qdoc/qmlvisitor.cpp +++ b/src/tools/qdoc/qmlvisitor.cpp @@ -344,7 +344,7 @@ void QmlDocVisitor::applyMetacommands(QQmlJS::AST::SourceLocation, else if ((command == COMMAND_INGROUP) && !args.isEmpty()) { ArgList::ConstIterator argsIter = args.constBegin(); while (argsIter != args.constEnd()) { - DocNode* dn = QDocDatabase::qdocDB()->addToGroup(argsIter->first, node); + QDocDatabase::qdocDB()->addToGroup(argsIter->first, node); ++argsIter; } } -- cgit v1.2.3 From 6797413db25b54638c879020e2af552f6e61bcf6 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Thu, 6 Dec 2012 08:37:10 +0100 Subject: Remove some dead code from QLabel::paintEvent() The code removed was in a if (d->control) block and therefore d->control was always going to be true thus rendering the nested if invalid. The case that this would account for is already handled in the else for the parent if so this code is in effect not needed. Change-Id: I799383e238560a8a8e3d7dc073d3b1ee74269f90 Reviewed-by: Friedemann Kleint Reviewed-by: Marc Mutz Reviewed-by: Jens Bache-Wiig --- src/widgets/widgets/qlabel.cpp | 14 -------------- 1 file changed, 14 deletions(-) (limited to 'src') diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp index 3b3d15f6d0..9465acfdad 100644 --- a/src/widgets/widgets/qlabel.cpp +++ b/src/widgets/widgets/qlabel.cpp @@ -1032,20 +1032,6 @@ void QLabel::paintEvent(QPaintEvent *) d->ensureTextLayouted(); QAbstractTextDocumentLayout::PaintContext context; - if (!isEnabled() && !d->control && - // We cannot support etched for rich text controls because custom - // colors and links will override the light palette - style->styleHint(QStyle::SH_EtchDisabledText, &opt, this)) { - context.palette = opt.palette; - context.palette.setColor(QPalette::Text, context.palette.light().color()); - painter.save(); - painter.translate(lr.x() + 1, lr.y() + 1); - painter.setClipRect(lr.translated(-lr.x() - 1, -lr.y() - 1)); - QAbstractTextDocumentLayout *layout = d->control->document()->documentLayout(); - layout->draw(&painter, context); - painter.restore(); - } - // Adjust the palette context.palette = opt.palette; -- cgit v1.2.3 From 290ed7f8fafd67197f773454223410bbe57fc4d3 Mon Sep 17 00:00:00 2001 From: Rafael Roquetto Date: Tue, 11 Dec 2012 16:10:01 -0200 Subject: QNX: QQnxCursor implementation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementation of QQnxCursor, a QPlatformCursor subclass. Due to the lack of a proper cursor API from the underlying OS, this class only caches the current cursor position to make sure that the QCursor class works properly. Change-Id: I55031184a009f3b26ad4af36b1975204e8fa80dc Reviewed-by: Sérgio Martins Reviewed-by: Friedemann Kleint Reviewed-by: Nicolas Arnaud-Cormos --- src/plugins/platforms/qnx/qnx.pro | 7 +- src/plugins/platforms/qnx/qqnxcursor.cpp | 78 ++++++++++++++++++++++ src/plugins/platforms/qnx/qqnxcursor.h | 67 +++++++++++++++++++ src/plugins/platforms/qnx/qqnxscreen.cpp | 11 ++- src/plugins/platforms/qnx/qqnxscreen.h | 4 ++ .../platforms/qnx/qqnxscreeneventhandler.cpp | 2 + 6 files changed, 166 insertions(+), 3 deletions(-) create mode 100644 src/plugins/platforms/qnx/qqnxcursor.cpp create mode 100644 src/plugins/platforms/qnx/qqnxcursor.h (limited to 'src') diff --git a/src/plugins/platforms/qnx/qnx.pro b/src/plugins/platforms/qnx/qnx.pro index 30c95b1620..fa5f69769c 100644 --- a/src/plugins/platforms/qnx/qnx.pro +++ b/src/plugins/platforms/qnx/qnx.pro @@ -39,6 +39,7 @@ CONFIG(blackberry) { #DEFINES += QQNXSCREEN_DEBUG #DEFINES += QQNXVIRTUALKEYBOARD_DEBUG #DEFINES += QQNXWINDOW_DEBUG +#DEFINES += QQNXCURSOR_DEBUG SOURCES = main.cpp \ @@ -54,7 +55,8 @@ SOURCES = main.cpp \ qqnxnavigatoreventhandler.cpp \ qqnxabstractnavigator.cpp \ qqnxabstractvirtualkeyboard.cpp \ - qqnxservices.cpp + qqnxservices.cpp \ + qqnxcursor.cpp HEADERS = main.h \ qqnxbuffer.h \ @@ -70,7 +72,8 @@ HEADERS = main.h \ qqnxnavigatoreventhandler.h \ qqnxabstractnavigator.h \ qqnxabstractvirtualkeyboard.h \ - qqnxservices.h + qqnxservices.h \ + qqnxcursor.h LIBS += -lscreen diff --git a/src/plugins/platforms/qnx/qqnxcursor.cpp b/src/plugins/platforms/qnx/qqnxcursor.cpp new file mode 100644 index 0000000000..4fdff666d7 --- /dev/null +++ b/src/plugins/platforms/qnx/qqnxcursor.cpp @@ -0,0 +1,78 @@ +/*************************************************************************** +** +** Copyright (C) 2011 - 2012 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qqnxcursor.h" + +#include + +#ifdef QQNXCURSOR_DEBUG +#define qCursorDebug qDebug +#else +#define qCursorDebug QT_NO_QDEBUG_MACRO +#endif + +QT_BEGIN_NAMESPACE + +QQnxCursor::QQnxCursor() +{ +} + +#ifndef QT_NO_CURSOR +void QQnxCursor::changeCursor(QCursor *windowCursor, QWindow *window) +{ + Q_UNUSED(windowCursor); + Q_UNUSED(window); +} +#endif + +void QQnxCursor::setPos(const QPoint &pos) +{ + qCursorDebug() << "QQnxCursor::setPos -" << pos; + m_pos = pos; +} + +QPoint QQnxCursor::pos() const +{ + qCursorDebug() << "QQnxCursor::pos -" << m_pos; + return m_pos; +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/qnx/qqnxcursor.h b/src/plugins/platforms/qnx/qqnxcursor.h new file mode 100644 index 0000000000..5d6a8b2c30 --- /dev/null +++ b/src/plugins/platforms/qnx/qqnxcursor.h @@ -0,0 +1,67 @@ +/*************************************************************************** +** +** Copyright (C) 2011 - 2012 Research In Motion +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQNXCURSOR_H +#define QQNXCURSOR_H + +#include + +QT_BEGIN_NAMESPACE + +class QQnxCursor : public QPlatformCursor +{ +public: + QQnxCursor(); + +#ifndef QT_NO_CURSOR + void changeCursor(QCursor *windowCursor, QWindow *window); +#endif + void setPos(const QPoint &pos); + + QPoint pos() const; + +private: + QPoint m_pos; +}; + +QT_END_NAMESPACE + +#endif // QQNXCURSOR_H diff --git a/src/plugins/platforms/qnx/qqnxscreen.cpp b/src/plugins/platforms/qnx/qqnxscreen.cpp index 593bec8458..3b57f5d4e5 100644 --- a/src/plugins/platforms/qnx/qqnxscreen.cpp +++ b/src/plugins/platforms/qnx/qqnxscreen.cpp @@ -41,6 +41,7 @@ #include "qqnxscreen.h" #include "qqnxwindow.h" +#include "qqnxcursor.h" #include #include @@ -111,7 +112,8 @@ QQnxScreen::QQnxScreen(screen_context_t screenContext, screen_display_t display, m_posted(false), m_keyboardHeight(0), m_nativeOrientation(Qt::PrimaryOrientation), - m_platformContext(0) + m_platformContext(0), + m_cursor(new QQnxCursor()) { qScreenDebug() << Q_FUNC_INFO; // Cache initial orientation of this display @@ -154,6 +156,8 @@ QQnxScreen::QQnxScreen(screen_context_t screenContext, screen_display_t display, QQnxScreen::~QQnxScreen() { qScreenDebug() << Q_FUNC_INFO; + + delete m_cursor; } static int defaultDepth() @@ -497,6 +501,11 @@ void QQnxScreen::onWindowPost(QQnxWindow *window) } } +QPlatformCursor * QQnxScreen::cursor() const +{ + return m_cursor; +} + void QQnxScreen::keyboardHeightChanged(int height) { if (height == m_keyboardHeight) diff --git a/src/plugins/platforms/qnx/qqnxscreen.h b/src/plugins/platforms/qnx/qqnxscreen.h index be09eca1f8..682f681cd3 100644 --- a/src/plugins/platforms/qnx/qqnxscreen.h +++ b/src/plugins/platforms/qnx/qqnxscreen.h @@ -95,6 +95,8 @@ public: QSharedPointer rootWindow() const { return m_rootWindow; } + QPlatformCursor *cursor() const; + public Q_SLOTS: void setRotation(int rotation); void newWindowCreated(void *window); @@ -130,6 +132,8 @@ private: QList m_childWindows; QList m_overlays; + + QPlatformCursor *m_cursor; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp b/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp index 8b41465add..4b1cc4fdac 100644 --- a/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp +++ b/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp @@ -346,6 +346,8 @@ void QQnxScreenEventHandler::handleTouchEvent(screen_event_t event, int qnxType) qFatal("QQNX: failed to query event position, errno=%d", errno); } + QCursor::setPos(pos[0], pos[1]); + // get window coordinates of touch errno = 0; int windowPos[2]; -- cgit v1.2.3 From 51ae17d33d6cef2900f5d4edb46b22569a8ff6ad Mon Sep 17 00:00:00 2001 From: Jan Arve Saether Date: Wed, 12 Dec 2012 14:29:28 +0100 Subject: No reason to dynamically resolve NotifyWinEvent anymore It has been available in user32.dll since Windows2000/Windows Server 2003 Change-Id: Icbfc63e944bc9e8098e3b01fd57dc7aa45bcd345 Reviewed-by: Frederik Gladhorn --- .../platforms/windows/accessible/qwindowsaccessibility.cpp | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp index db2d5f949f..94a5dd6a68 100644 --- a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp +++ b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp @@ -162,21 +162,10 @@ void QWindowsAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *event) } } - typedef void (WINAPI *PtrNotifyWinEvent)(DWORD, HWND, LONG, LONG); - #if defined(Q_OS_WINCE) // ### TODO: check for NotifyWinEvent in CE 6.0 // There is no user32.lib nor NotifyWinEvent for CE return; #else - static PtrNotifyWinEvent ptrNotifyWinEvent = 0; - static bool resolvedNWE = false; - if (!resolvedNWE) { - resolvedNWE = true; - ptrNotifyWinEvent = (PtrNotifyWinEvent)QSystemLibrary::resolve(QLatin1String("user32"), "NotifyWinEvent"); - } - if (!ptrNotifyWinEvent) - return; - // An event has to be associated with a window, // so find the first parent that is a widget and that has a WId QAccessibleInterface *iface = event->accessibleInterface(); @@ -199,7 +188,7 @@ void QWindowsAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *event) int eventId = - (eventNum - 1); qAccessibleRecentSentEvents()->insert(eventId, qMakePair(event->object(), event->child())); - ptrNotifyWinEvent(event->type(), hWnd, OBJID_CLIENT, eventId ); + ::NotifyWinEvent(event->type(), hWnd, OBJID_CLIENT, eventId ); ++eventNum; } -- cgit v1.2.3 From 4cf112b641f7ea9fb1ba87cefcef7ee98b6b0831 Mon Sep 17 00:00:00 2001 From: Leonard Lee Date: Wed, 12 Dec 2012 15:29:02 +0100 Subject: Elaborate shortDayName(), etc using default locale. QDate::toString() should explain QDate::shortDayName() and QDate::shortMonthName() will be localized name using the default locale from the system. Task-number: QTBUG-28522 Change-Id: I027a72773b5772bf00344f14a4b522e41c9e63db Reviewed-by: Thiago Macieira --- src/corelib/tools/qdatetime.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 9ac4c1a87f..f84644b37d 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -549,8 +549,8 @@ int QDate::weekNumber(int *yearNumber) const \li 12 = "Dec" \endlist - The month names will be localized according to the system's locale - settings. + The month names will be localized according to the system's default + locale settings. Returns an empty string if the date is invalid. @@ -596,8 +596,8 @@ QString QDate::shortMonthName(int month, QDate::MonthNameType type) \li 12 = "December" \endlist - The month names will be localized according to the system's locale - settings. + The month names will be localized according to the system's default + locale settings. Returns an empty string if the date is invalid. @@ -638,8 +638,8 @@ QString QDate::longMonthName(int month, MonthNameType type) \li 7 = "Sun" \endlist - The day names will be localized according to the system's locale - settings. + The day names will be localized according to the system's default + locale settings. Returns an empty string if the date is invalid. @@ -680,8 +680,8 @@ QString QDate::shortDayName(int weekday, MonthNameType type) \li 7 = "Sunday" \endlist - The day names will be localized according to the system's locale - settings. + The day names will be localized according to the system's default + locale settings. Returns an empty string if the date is invalid. @@ -718,8 +718,8 @@ QString QDate::longDayName(int weekday, MonthNameType type) If the \a format is Qt::TextDate, the string is formatted in the default way. QDate::shortDayName() and QDate::shortMonthName() are used to generate the string, so the day and month names will - be localized names. An example of this formatting is - "Sat May 20 1995". + be localized names using the default locale from the system. An + example of this formatting is "Sat May 20 1995". If the \a format is Qt::ISODate, the string format corresponds to the ISO 8601 extended specification for representations of -- cgit v1.2.3 From d6f2d8dcb6dbee89fc55bd439ab4a837f4f9fb4c Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Sat, 24 Nov 2012 21:50:05 +0100 Subject: Make sure panels always gain focus when activated or tab is pressed. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This changes behavior, but I would argue it's a good change. If you create a panel and activate it (e.g., by simply showing it or reparenting it onto an already-visible item), you expect the panel to gain focus / which is sort of the whole point of activating it. Prior to this change, you had to have explicitly called setFocus() on one of the panel's children, which would give that item subfocus, for that item to auto- gain focus when the panel was activated. This change makes it more automatic. If the panel itself or any of the widgets in its focus chain can gain focus, they will gain focus when the panel is activated. So the new logic is - if the panel already has a focus item, so if someone explicitly set subfocus on an item before the panel is shown, that item gets focus. Otherwise, if the panel itself can gain focus (e.g., someone makes a line edit / text edit panel), it gains focus when activated. Otherwise, we search the focus chain until we find the first item that can gain focus. This last case is the file dialog case, where the dialog itself can't gain focus but typically the first item in the focus chain is the primary focus widget, such as the search field or the directory list view. The change also fixes this for the first Tab. If you clear focus on a panel, the user expects to be able to press Tab to regain focus. Prior to this change that didn't happen. Now, the panel or the first in the focus chain that can get focus gets focus on first tab. Task-number: QTBUG-28194 Change-Id: Id7ec1741d0d5eb4ea845469909c8d684e14017f1 Reviewed-by: Jan Arve Sæther --- src/widgets/graphicsview/qgraphicsscene.cpp | 33 +++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp index 769b488f39..139fad0163 100644 --- a/src/widgets/graphicsview/qgraphicsscene.cpp +++ b/src/widgets/graphicsview/qgraphicsscene.cpp @@ -771,9 +771,23 @@ void QGraphicsScenePrivate::setActivePanelHelper(QGraphicsItem *item, bool durin QEvent event(QEvent::WindowActivate); q->sendEvent(panel, &event); - // Set focus on the panel's focus item. - if (QGraphicsItem *focusItem = panel->focusItem()) + // Set focus on the panel's focus item, or itself if it's + // focusable, or on the first focusable item in the panel's + // focus chain as a last resort. + if (QGraphicsItem *focusItem = panel->focusItem()) { focusItem->setFocus(Qt::ActiveWindowFocusReason); + } else if (panel->flags() & QGraphicsItem::ItemIsFocusable) { + panel->setFocus(Qt::ActiveWindowFocusReason); + } else if (panel->isWidget()) { + QGraphicsWidget *fw = static_cast(panel)->d_func()->focusNext; + do { + if (fw->focusPolicy() & Qt::TabFocus) { + fw->setFocus(Qt::ActiveWindowFocusReason); + break; + } + fw = fw->d_func()->focusNext; + } while (fw != panel); + } } else if (q->isActive()) { // Activate the scene QEvent event(QEvent::WindowActivate); @@ -5328,6 +5342,21 @@ bool QGraphicsScene::focusNextPrevChild(bool next) setFocusItem(d->lastFocusItem, next ? Qt::TabFocusReason : Qt::BacktabFocusReason); return true; } + if (d->activePanel) { + if (d->activePanel->flags() & QGraphicsItem::ItemIsFocusable) { + setFocusItem(d->activePanel, next ? Qt::TabFocusReason : Qt::BacktabFocusReason); + return true; + } + if (d->activePanel->isWidget()) { + QGraphicsWidget *fw = static_cast(d->activePanel)->d_func()->focusNext; + do { + if (fw->focusPolicy() & Qt::TabFocus) { + setFocusItem(fw, next ? Qt::TabFocusReason : Qt::BacktabFocusReason); + return true; + } + } while (fw != d->activePanel); + } + } } if (!item && !d->tabFocusFirst) { // No widgets... -- cgit v1.2.3 From af8a6cdd87c27b4ed18d5e6238757ba8885f630d Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Thu, 29 Nov 2012 22:33:43 +0100 Subject: Add new signal: QGraphicsScene::focusItemChanged(). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This signal is emitted by QGraphicsScene whenever focus changes in the scene (i.e., when an item gains or loses input focus, or when focus passes from one item to another). You can connect to this signal if you need to keep track of when other items gain input focus. It is particularily useful for implementing virtual keyboards, input methods, and cursor items. Task-number: QTBUG-10570 Change-Id: I9cbbd9a2d15d6f568e1597c2c33ec049eb70f793 Reviewed-by: Jan Arve Sæther Reviewed-by: Yoann Lopes --- src/widgets/graphicsview/qgraphicsscene.cpp | 50 +++++++++++++++++++++++++---- src/widgets/graphicsview/qgraphicsscene.h | 1 + src/widgets/graphicsview/qgraphicsscene_p.h | 3 +- 3 files changed, 47 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp index 139fad0163..e14a98f332 100644 --- a/src/widgets/graphicsview/qgraphicsscene.cpp +++ b/src/widgets/graphicsview/qgraphicsscene.cpp @@ -742,12 +742,14 @@ void QGraphicsScenePrivate::setActivePanelHelper(QGraphicsItem *item, bool durin if (panel == activePanel || (!q->isActive() && !duringActivationEvent)) return; + QGraphicsItem *oldFocusItem = focusItem; + // Deactivate the last active panel. if (activePanel) { if (QGraphicsItem *fi = activePanel->focusItem()) { // Remove focus from the current focus item. if (fi == q->focusItem()) - q->setFocusItem(0, Qt::ActiveWindowFocusReason); + setFocusItemHelper(0, Qt::ActiveWindowFocusReason, /* emitFocusChanged = */ false); } QEvent event(QEvent::WindowDeactivate); @@ -775,14 +777,14 @@ void QGraphicsScenePrivate::setActivePanelHelper(QGraphicsItem *item, bool durin // focusable, or on the first focusable item in the panel's // focus chain as a last resort. if (QGraphicsItem *focusItem = panel->focusItem()) { - focusItem->setFocus(Qt::ActiveWindowFocusReason); + setFocusItemHelper(focusItem, Qt::ActiveWindowFocusReason, /* emitFocusChanged = */ false); } else if (panel->flags() & QGraphicsItem::ItemIsFocusable) { - panel->setFocus(Qt::ActiveWindowFocusReason); + setFocusItemHelper(panel, Qt::ActiveWindowFocusReason, /* emitFocusChanged = */ false); } else if (panel->isWidget()) { QGraphicsWidget *fw = static_cast(panel)->d_func()->focusNext; do { if (fw->focusPolicy() & Qt::TabFocus) { - fw->setFocus(Qt::ActiveWindowFocusReason); + setFocusItemHelper(fw, Qt::ActiveWindowFocusReason, /* emitFocusChanged = */ false); break; } fw = fw->d_func()->focusNext; @@ -796,13 +798,23 @@ void QGraphicsScenePrivate::setActivePanelHelper(QGraphicsItem *item, bool durin q->sendEvent(item, &event); } } + + emit q->focusItemChanged(focusItem, oldFocusItem, Qt::ActiveWindowFocusReason); } /*! \internal + + \a emitFocusChanged needs to be false when focus passes from one + item to another through setActivePanel(); i.e. when activation + passes from one panel to another, to avoid getting two focusChanged() + emissions; one focusChanged(0, lastFocus), then one + focusChanged(newFocus, 0). Instead setActivePanel() emits the signal + once itself: focusChanged(newFocus, oldFocus). */ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item, - Qt::FocusReason focusReason) + Qt::FocusReason focusReason, + bool emitFocusChanged) { Q_Q(QGraphicsScene); if (item == focusItem) @@ -818,10 +830,14 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item, // Set focus on the scene if an item requests focus. if (item) { q->setFocus(focusReason); - if (item == focusItem) + if (item == focusItem) { + if (emitFocusChanged) + emit q->focusItemChanged(focusItem, (QGraphicsItem *)0, focusReason); return; + } } + QGraphicsItem *oldFocusItem = focusItem; if (focusItem) { lastFocusItem = focusItem; @@ -862,6 +878,9 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item, QFocusEvent event(QEvent::FocusIn, focusReason); sendEvent(item, &event); } + + if (emitFocusChanged) + emit q->focusItemChanged(focusItem, oldFocusItem, focusReason); } /*! @@ -5436,6 +5455,25 @@ bool QGraphicsScene::focusNextPrevChild(bool next) \sa setSelectionArea(), selectedItems(), QGraphicsItem::setSelected() */ +/*! + \fn QGraphicsScene::focusChanged(QGraphicsItem *newFocusItem, QGraphicsItem *oldFocusItem, Qt::FocusReason reason) + + This signal is emitted by QGraphicsScene whenever focus changes in the + scene (i.e., when an item gains or loses input focus, or when focus + passes from one item to another). You can connect to this signal if you + need to keep track of when other items gain input focus. It is + particularily useful for implementing virtual keyboards, input methods, + and cursor items. + + \a oldFocusItem is a pointer to the item that previously had focus, or + 0 if no item had focus before the signal was emitted. \a newFocusItem + is a pointer to the item that gained input focus, or 0 if focus was lost. + \a reason is the reason for the focus change (e.g., if the scene was + deactivated while an input field had focus, \a oldFocusItem would point + to the input field item, \a newFocusItem would be 0, and \a reason would be + Qt::ActiveWindowFocusReason. +*/ + /*! \since 4.4 diff --git a/src/widgets/graphicsview/qgraphicsscene.h b/src/widgets/graphicsview/qgraphicsscene.h index 27337d3a2a..3f00b74f53 100644 --- a/src/widgets/graphicsview/qgraphicsscene.h +++ b/src/widgets/graphicsview/qgraphicsscene.h @@ -292,6 +292,7 @@ Q_SIGNALS: void changed(const QList ®ion); void sceneRectChanged(const QRectF &rect); void selectionChanged(); + void focusItemChanged(QGraphicsItem *newFocus, QGraphicsItem *oldFocus, Qt::FocusReason reason); private: Q_DECLARE_PRIVATE(QGraphicsScene) diff --git a/src/widgets/graphicsview/qgraphicsscene_p.h b/src/widgets/graphicsview/qgraphicsscene_p.h index 6799a835ac..bcb95c694a 100644 --- a/src/widgets/graphicsview/qgraphicsscene_p.h +++ b/src/widgets/graphicsview/qgraphicsscene_p.h @@ -157,7 +157,8 @@ public: int activationRefCount; int childExplicitActivation; void setActivePanelHelper(QGraphicsItem *item, bool duringActivationEvent); - void setFocusItemHelper(QGraphicsItem *item, Qt::FocusReason focusReason); + void setFocusItemHelper(QGraphicsItem *item, Qt::FocusReason focusReason, + bool emitFocusChanged = true); QList popupWidgets; void addPopup(QGraphicsWidget *widget); -- cgit v1.2.3 From 533105cadfde6d0113ea25481b9723e2b06de8e4 Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Tue, 11 Dec 2012 21:04:12 +0100 Subject: Deactivating an inactive panel no longer causes unwanted deactivation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QGraphicsItem::setActive() is by design not guarded against calls that do not change the current activation state of the item (e.g., calling setActive(true) on an active item or calling setActive(false) on an inactive item). This is to ensure that it's possible to set explicit activation state on items, either before they are added to a scene, or while the scene itself is inactive. Before this fix, calling setActive(false) on a panel item that is not currently active would by accident clear activation from any other panel that might have focus. After this fix, activation is only cleared if the item setActive() was called on itself is the active panel, or is the panel that will regain activation once the scene is reactivated. Task-number: QTBUG-28544 Change-Id: Ic4752f1e4400f9a0660bc968834747610212bb52 Reviewed-by: Bjørn Erik Nilsen Reviewed-by: Andreas Aardal Hanssen Reviewed-by: Yoann Lopes --- src/widgets/graphicsview/qgraphicsitem.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp index cd379e1b05..48430e60db 100644 --- a/src/widgets/graphicsview/qgraphicsitem.cpp +++ b/src/widgets/graphicsview/qgraphicsitem.cpp @@ -3202,16 +3202,20 @@ void QGraphicsItem::setActive(bool active) // Activate this item. d_ptr->scene->setActivePanel(this); } else { - // Deactivate this item, and reactivate the parent panel, - // or the last active panel (if any). - QGraphicsItem *nextToActivate = 0; - if (d_ptr->parent) - nextToActivate = d_ptr->parent->panel(); - if (!nextToActivate) - nextToActivate = d_ptr->scene->d_func()->lastActivePanel; - if (nextToActivate == this || isAncestorOf(nextToActivate)) - nextToActivate = 0; - d_ptr->scene->setActivePanel(nextToActivate); + QGraphicsItem *activePanel = d_ptr->scene->activePanel(); + QGraphicsItem *thisPanel = panel(); + if (!activePanel || activePanel == thisPanel) { + // Deactivate this item, and reactivate the parent panel, + // or the last active panel (if any). + QGraphicsItem *nextToActivate = 0; + if (d_ptr->parent) + nextToActivate = d_ptr->parent->panel(); + if (!nextToActivate) + nextToActivate = d_ptr->scene->d_func()->lastActivePanel; + if (nextToActivate == this || isAncestorOf(nextToActivate)) + nextToActivate = 0; + d_ptr->scene->setActivePanel(nextToActivate); + } } } } -- cgit v1.2.3 From 4b7be050581bfef8a064ba867489b7dd7ee7ae47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Mill=C3=A1n=20Soto?= Date: Mon, 24 Sep 2012 14:16:16 +0200 Subject: Change behaviour of selectRow, selectColumn, unselectRow, unselectColumn According to the comments of selectRow and selectColumn, the expected behaviour of this method was to select a row or a column and unselect any cell that were previously selected. However the actual behavior was to select only one cell and not deselect any cell. Moreover, according to the specification there's no simple way of selecting multiple rows or columns as when one of the methods is called for selecting one row or column the others should be unselected. The specification was changed not to require the rest of the cells to be deselected, although they might be deselected if the selectionMode requires that in order for the new row/column to be selected. The implementation of these methods was changed in QAccessibleTable and QAccessibleTree to select the whole row/column and take into acount selectionMode and selectionBehavior. tst_qaccessibility.cpp was modified to test the new behaviour of the methods. Change-Id: I29635d014792169302435e81704e02c16f951238 Reviewed-by: Frederik Gladhorn --- src/gui/accessible/qaccessible2.h | 4 +- src/plugins/accessible/widgets/itemviews.cpp | 125 ++++++++++++++++++++++++--- 2 files changed, 117 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/gui/accessible/qaccessible2.h b/src/gui/accessible/qaccessible2.h index e93324b4f8..6006e7846c 100644 --- a/src/gui/accessible/qaccessible2.h +++ b/src/gui/accessible/qaccessible2.h @@ -185,9 +185,9 @@ public: virtual bool isColumnSelected(int column) const = 0; // Returns a boolean value indicating whether the specified row is completely selected. virtual bool isRowSelected(int row) const = 0; - // Selects a row and unselects all previously selected rows. + // Selects a row and it might unselect all previously selected rows. virtual bool selectRow(int row) = 0; - // Selects a column and unselects all previously selected columns. + // Selects a column it might unselect all previously selected columns. virtual bool selectColumn(int column) = 0; // Unselects one row, leaving other selected rows selected (if any). virtual bool unselectRow(int row) = 0; diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp index 301838997f..7130979935 100644 --- a/src/plugins/accessible/widgets/itemviews.cpp +++ b/src/plugins/accessible/widgets/itemviews.cpp @@ -299,9 +299,28 @@ bool QAccessibleTable::selectRow(int row) if (!view()->model() || !view()->selectionModel()) return false; QModelIndex index = view()->model()->index(row, 0, view()->rootIndex()); - if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) + + if (!index.isValid() || view()->selectionBehavior() == QAbstractItemView::SelectColumns) + return false; + + switch (view()->selectionMode()) { + case QAbstractItemView::NoSelection: return false; - view()->selectionModel()->select(index, QItemSelectionModel::Select); + case QAbstractItemView::SingleSelection: + if (view()->selectionBehavior() != QAbstractItemView::SelectRows && columnCount() > 1 ) + return false; + view()->clearSelection(); + break; + case QAbstractItemView::ContiguousSelection: + if ((!row || !view()->selectionModel()->isRowSelected(row - 1, view()->rootIndex())) + && !view()->selectionModel()->isRowSelected(row + 1, view()->rootIndex())) + view()->clearSelection(); + break; + default: + break; + } + + view()->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows); return true; } @@ -310,9 +329,26 @@ bool QAccessibleTable::selectColumn(int column) if (!view()->model() || !view()->selectionModel()) return false; QModelIndex index = view()->model()->index(0, column, view()->rootIndex()); - if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) + + if (!index.isValid() || view()->selectionBehavior() == QAbstractItemView::SelectRows) + return false; + + switch (view()->selectionMode()) { + case QAbstractItemView::NoSelection: return false; - view()->selectionModel()->select(index, QItemSelectionModel::Select); + case QAbstractItemView::SingleSelection: + if (view()->selectionBehavior() != QAbstractItemView::SelectColumns && rowCount() > 1) + return false; + case QAbstractItemView::ContiguousSelection: + if ((!column || !view()->selectionModel()->isColumnSelected(column - 1, view()->rootIndex())) + && !view()->selectionModel()->isColumnSelected(column + 1, view()->rootIndex())) + view()->clearSelection(); + break; + default: + break; + } + + view()->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Columns); return true; } @@ -320,10 +356,35 @@ bool QAccessibleTable::unselectRow(int row) { if (!view()->model() || !view()->selectionModel()) return false; + QModelIndex index = view()->model()->index(row, 0, view()->rootIndex()); - if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) + if (!index.isValid()) return false; - view()->selectionModel()->select(index, QItemSelectionModel::Deselect); + + QItemSelection selection(index, index); + + switch (view()->selectionMode()) { + case QAbstractItemView::SingleSelection: + //In SingleSelection and ContiguousSelection once an item + //is selected, there's no way for the user to unselect all items + if (selectedRowCount() == 1) + return false; + break; + case QAbstractItemView::ContiguousSelection: + if (selectedRowCount() == 1) + return false; + + if ((!row || view()->selectionModel()->isRowSelected(row - 1, view()->rootIndex())) + && view()->selectionModel()->isRowSelected(row + 1, view()->rootIndex())) { + //If there are rows selected both up the current row and down the current rown, + //the ones which are down the current row will be deselected + selection = QItemSelection(index, view()->model()->index(rowCount() - 1, 0, view()->rootIndex())); + } + default: + break; + } + + view()->selectionModel()->select(selection, QItemSelectionModel::Deselect | QItemSelectionModel::Rows); return true; } @@ -331,10 +392,35 @@ bool QAccessibleTable::unselectColumn(int column) { if (!view()->model() || !view()->selectionModel()) return false; + QModelIndex index = view()->model()->index(0, column, view()->rootIndex()); - if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) + if (!index.isValid()) return false; - view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect); + + QItemSelection selection(index, index); + + switch (view()->selectionMode()) { + case QAbstractItemView::SingleSelection: + //In SingleSelection and ContiguousSelection once an item + //is selected, there's no way for the user to unselect all items + if (selectedColumnCount() == 1) + return false; + break; + case QAbstractItemView::ContiguousSelection: + if (selectedColumnCount() == 1) + return false; + + if ((!column || view()->selectionModel()->isColumnSelected(column - 1, view()->rootIndex())) + && view()->selectionModel()->isColumnSelected(column + 1, view()->rootIndex())) { + //If there are columns selected both at the left of the current row and at the right + //of the current rown, the ones which are at the right will be deselected + selection = QItemSelection(index, view()->model()->index(0, columnCount() - 1, view()->rootIndex())); + } + default: + break; + } + + view()->selectionModel()->select(selection, QItemSelectionModel::Deselect | QItemSelectionModel::Columns); return true; } @@ -576,9 +662,28 @@ bool QAccessibleTree::selectRow(int row) if (!view()->selectionModel()) return false; QModelIndex index = indexFromLogical(row); - if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection) + + if (!index.isValid() || view()->selectionBehavior() == QAbstractItemView::SelectColumns) return false; - view()->selectionModel()->select(index, QItemSelectionModel::Select); + + switch (view()->selectionMode()) { + case QAbstractItemView::NoSelection: + return false; + case QAbstractItemView::SingleSelection: + if ((view()->selectionBehavior() != QAbstractItemView::SelectRows) && (columnCount() > 1)) + return false; + view()->clearSelection(); + break; + case QAbstractItemView::ContiguousSelection: + if ((!row || !view()->selectionModel()->isRowSelected(row - 1, view()->rootIndex())) + && !view()->selectionModel()->isRowSelected(row + 1, view()->rootIndex())) + view()->clearSelection(); + break; + default: + break; + } + + view()->selectionModel()->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows); return true; } -- cgit v1.2.3 From e307d6074942eba356ecd4dceabf1def9a92719e Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Sun, 16 Dec 2012 22:40:41 +0100 Subject: Remove usage of qt_mac_get_scaleFactor() as it is no longer needed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit qt_mac_get_scaleFactor() uses a deprecated function, but as this function is no longer needed internally anyway, just remove it. Task-number: QTBUG-28574 Change-Id: I4e3cd2383ecc56aa6f9e3931a1806c62b1cedeb5 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoahelpers.h | 2 -- src/plugins/platforms/cocoa/qcocoahelpers.mm | 5 ----- src/plugins/platforms/cocoa/qpaintengine_mac.mm | 9 ++------- 3 files changed, 2 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.h b/src/plugins/platforms/cocoa/qcocoahelpers.h index b0222738e1..45bfd34e03 100644 --- a/src/plugins/platforms/cocoa/qcocoahelpers.h +++ b/src/plugins/platforms/cocoa/qcocoahelpers.h @@ -84,8 +84,6 @@ HIMutableShapeRef qt_mac_QRegionToHIMutableShape(const QRegion ®ion); OSStatus qt_mac_drawCGImage(CGContextRef inContext, const CGRect *inBounds, CGImageRef inImage); -CGFloat qt_mac_get_scalefactor(); - QChar qt_mac_qtKey2CocoaKey(Qt::Key key); Qt::Key qt_mac_cocoaKey2QtKey(QChar keyCode); diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm index 008d9da2cf..9783899742 100644 --- a/src/plugins/platforms/cocoa/qcocoahelpers.mm +++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm @@ -614,11 +614,6 @@ InvalidContext: return err; } -CGFloat qt_mac_get_scalefactor() -{ - return [[NSScreen mainScreen] userSpaceScaleFactor]; -} - Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum) { switch (buttonNum) { diff --git a/src/plugins/platforms/cocoa/qpaintengine_mac.mm b/src/plugins/platforms/cocoa/qpaintengine_mac.mm index 5b83477881..4ae4fac6c2 100644 --- a/src/plugins/platforms/cocoa/qpaintengine_mac.mm +++ b/src/plugins/platforms/cocoa/qpaintengine_mac.mm @@ -1376,13 +1376,8 @@ QCoreGraphicsPaintEngine::updateRenderHints(QPainter::RenderHints hints) { Q_D(QCoreGraphicsPaintEngine); CGContextSetShouldAntialias(d->hd, hints & QPainter::Antialiasing); - static const CGFloat ScaleFactor = qt_mac_get_scalefactor(); - if (ScaleFactor > 1.) { - CGContextSetInterpolationQuality(d->hd, kCGInterpolationHigh); - } else { - CGContextSetInterpolationQuality(d->hd, (hints & QPainter::SmoothPixmapTransform) ? - kCGInterpolationHigh : kCGInterpolationNone); - } + CGContextSetInterpolationQuality(d->hd, (hints & QPainter::SmoothPixmapTransform) ? + kCGInterpolationHigh : kCGInterpolationNone); bool textAntialiasing = (hints & QPainter::TextAntialiasing) == QPainter::TextAntialiasing; if (!textAntialiasing || d->disabledSmoothFonts) { d->disabledSmoothFonts = !textAntialiasing; -- cgit v1.2.3 From f7639c0a6d3ea0aef06594eec0bbbaafb85b0dbb Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 8 Dec 2012 05:36:49 +0200 Subject: Add QChar::Script enum ...where the values are not aliased to Common script. The old QUnicodeTables::Script enum was retained for compatibility reasons until Qt internals are updated to use QChar::script(). Using QChar::Script instead of QUnicodeTables::Script would improve both the text analysis (itemization, boundary finding) and the text shaping quality. This also a required step for switching to Hurfbuzz-NG. /* This adds 6668 more .rodata bytes */ Change-Id: I5aa3d12c550528d0052542436990f8d0779ea8e5 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/corelib/tools/qchar.cpp | 147 + src/corelib/tools/qchar.h | 128 + src/corelib/tools/qstring.h | 2 + src/corelib/tools/qunicodetables.cpp | 11977 +++++++++++++++++---------------- src/corelib/tools/qunicodetables_p.h | 2 +- 5 files changed, 6460 insertions(+), 5796 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index c66962d931..6af2521357 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -262,6 +262,132 @@ QT_BEGIN_NAMESPACE \sa category() */ +/*! + \enum QChar::Script + \since 5.1 + + This enum type defines the Unicode script property values. + + For details about the Unicode script property values see + \l{http://www.unicode.org/reports/tr24/}{Unicode Standard Annex #24}. + + In order to conform to C/C++ naming conventions "Script_" is prepended + to the codes used in the Unicode Standard. + + \value Script_Unknown For unassigned, private-use, noncharacter, and surrogate code points. + \value Script_Inherited For characters that may be used with multiple scripts + and that inherit their script from the preceding characters. + These include nonspacing marks, enclosing marks, + and zero width joiner/non-joiner characters. + \value Script_Common For characters that may be used with multiple scripts + and that do not inherit their script from the preceding characters. + + \value Script_Latin + \value Script_Greek + \value Script_Cyrillic + \value Script_Armenian + \value Script_Hebrew + \value Script_Arabic + \value Script_Syriac + \value Script_Thaana + \value Script_Devanagari + \value Script_Bengali + \value Script_Gurmukhi + \value Script_Gujarati + \value Script_Oriya + \value Script_Tamil + \value Script_Telugu + \value Script_Kannada + \value Script_Malayalam + \value Script_Sinhala + \value Script_Thai + \value Script_Lao + \value Script_Tibetan + \value Script_Myanmar + \value Script_Georgian + \value Script_Hangul + \value Script_Ethiopic + \value Script_Cherokee + \value Script_CanadianAboriginal + \value Script_Ogham + \value Script_Runic + \value Script_Khmer + \value Script_Mongolian + \value Script_Hiragana + \value Script_Katakana + \value Script_Bopomofo + \value Script_Han + \value Script_Yi + \value Script_OldItalic + \value Script_Gothic + \value Script_Deseret + \value Script_Tagalog + \value Script_Hanunoo + \value Script_Buhid + \value Script_Tagbanwa + \value Script_Coptic + \value Script_Limbu + \value Script_TaiLe + \value Script_LinearB + \value Script_Ugaritic + \value Script_Shavian + \value Script_Osmanya + \value Script_Cypriot + \value Script_Braille + \value Script_Buginese + \value Script_NewTaiLue + \value Script_Glagolitic + \value Script_Tifinagh + \value Script_SylotiNagri + \value Script_OldPersian + \value Script_Kharoshthi + \value Script_Balinese + \value Script_Cuneiform + \value Script_Phoenician + \value Script_PhagsPa + \value Script_Nko + \value Script_Sundanese + \value Script_Lepcha + \value Script_OlChiki + \value Script_Vai + \value Script_Saurashtra + \value Script_KayahLi + \value Script_Rejang + \value Script_Lycian + \value Script_Carian + \value Script_Lydian + \value Script_Cham + \value Script_TaiTham + \value Script_TaiViet + \value Script_Avestan + \value Script_EgyptianHieroglyphs + \value Script_Samaritan + \value Script_Lisu + \value Script_Bamum + \value Script_Javanese + \value Script_MeeteiMayek + \value Script_ImperialAramaic + \value Script_OldSouthArabian + \value Script_InscriptionalParthian + \value Script_InscriptionalPahlavi + \value Script_OldTurkic + \value Script_Kaithi + \value Script_Batak + \value Script_Brahmi + \value Script_Mandaic + \value Script_Chakma + \value Script_MeroiticCursive + \value Script_MeroiticHieroglyphs + \value Script_Miao + \value Script_Sharada + \value Script_SoraSompeng + \value Script_Takri + + \omitvalue ScriptCount + + \sa script() +*/ + /*! \enum QChar::Direction @@ -1158,6 +1284,27 @@ unsigned char QChar::combiningClass(uint ucs4) return (unsigned char) qGetProp(ucs4)->combiningClass; } +/*! + \fn QChar::Script QChar::script() const + \since 5.1 + + Returns the Unicode script property value for this character. +*/ + +/*! + \overload + \since 5.1 + + Returns the Unicode script property value for the character specified in + its UCS-4-encoded form as \a ucs4. +*/ +QChar::Script QChar::script(uint ucs4) +{ + if (ucs4 > LastValidCodePoint) + return QChar::Script_Unknown; + return (QChar::Script) qGetProp(ucs4)->script; +} + /*! \fn QChar::UnicodeVersion QChar::unicodeVersion() const diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h index aeb9848651..2aacbd08c0 100644 --- a/src/corelib/tools/qchar.h +++ b/src/corelib/tools/qchar.h @@ -137,6 +137,130 @@ public: Symbol_Other // So }; + enum Script + { + Script_Unknown, + Script_Inherited, + Script_Common, + + Script_Latin, + Script_Greek, + Script_Cyrillic, + Script_Armenian, + Script_Hebrew, + Script_Arabic, + Script_Syriac, + Script_Thaana, + Script_Devanagari, + Script_Bengali, + Script_Gurmukhi, + Script_Gujarati, + Script_Oriya, + Script_Tamil, + Script_Telugu, + Script_Kannada, + Script_Malayalam, + Script_Sinhala, + Script_Thai, + Script_Lao, + Script_Tibetan, + Script_Myanmar, + Script_Georgian, + Script_Hangul, + Script_Ethiopic, + Script_Cherokee, + Script_CanadianAboriginal, + Script_Ogham, + Script_Runic, + Script_Khmer, + Script_Mongolian, + Script_Hiragana, + Script_Katakana, + Script_Bopomofo, + Script_Han, + Script_Yi, + Script_OldItalic, + Script_Gothic, + Script_Deseret, + Script_Tagalog, + Script_Hanunoo, + Script_Buhid, + Script_Tagbanwa, + Script_Coptic, + + // Unicode 4.0 additions + Script_Limbu, + Script_TaiLe, + Script_LinearB, + Script_Ugaritic, + Script_Shavian, + Script_Osmanya, + Script_Cypriot, + Script_Braille, + + // Unicode 4.1 additions + Script_Buginese, + Script_NewTaiLue, + Script_Glagolitic, + Script_Tifinagh, + Script_SylotiNagri, + Script_OldPersian, + Script_Kharoshthi, + + // Unicode 5.0 additions + Script_Balinese, + Script_Cuneiform, + Script_Phoenician, + Script_PhagsPa, + Script_Nko, + + // Unicode 5.1 additions + Script_Sundanese, + Script_Lepcha, + Script_OlChiki, + Script_Vai, + Script_Saurashtra, + Script_KayahLi, + Script_Rejang, + Script_Lycian, + Script_Carian, + Script_Lydian, + Script_Cham, + + // Unicode 5.2 additions + Script_TaiTham, + Script_TaiViet, + Script_Avestan, + Script_EgyptianHieroglyphs, + Script_Samaritan, + Script_Lisu, + Script_Bamum, + Script_Javanese, + Script_MeeteiMayek, + Script_ImperialAramaic, + Script_OldSouthArabian, + Script_InscriptionalParthian, + Script_InscriptionalPahlavi, + Script_OldTurkic, + Script_Kaithi, + + // Unicode 6.0 additions + Script_Batak, + Script_Brahmi, + Script_Mandaic, + + // Unicode 6.1 additions + Script_Chakma, + Script_MeroiticCursive, + Script_MeroiticHieroglyphs, + Script_Miao, + Script_Sharada, + Script_SoraSompeng, + Script_Takri, + + ScriptCount + }; + enum Direction { DirL, DirR, DirEN, DirES, DirET, DirAN, DirCS, DirB, DirS, DirWS, DirON, @@ -231,6 +355,8 @@ public: inline QChar toTitleCase() const { return QChar::toTitleCase(ucs); } inline QChar toCaseFolded() const { return QChar::toCaseFolded(ucs); } + inline Script script() const { return QChar::script(ucs); } + inline UnicodeVersion unicodeVersion() const { return QChar::unicodeVersion(ucs); } #if QT_DEPRECATED_SINCE(5, 0) @@ -316,6 +442,8 @@ public: static uint QT_FASTCALL toTitleCase(uint ucs4); static uint QT_FASTCALL toCaseFolded(uint ucs4); + static Script QT_FASTCALL script(uint ucs4); + static UnicodeVersion QT_FASTCALL unicodeVersion(uint ucs4); static UnicodeVersion QT_FASTCALL currentUnicodeVersion(); diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 47cca0d280..b679f0f990 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -884,6 +884,8 @@ public: QChar::Decomposition decompositionTag() const { return QChar(*this).decompositionTag(); } uchar combiningClass() const { return QChar(*this).combiningClass(); } + inline QChar::Script script() const { return QChar(*this).script(); } + QChar::UnicodeVersion unicodeVersion() const { return QChar(*this).unicodeVersion(); } inline uchar cell() const { return QChar(*this).cell(); } diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp index 60754968ac..927fb7462b 100644 --- a/src/corelib/tools/qunicodetables.cpp +++ b/src/corelib/tools/qunicodetables.cpp @@ -70,109 +70,41 @@ static const unsigned short uc_property_trie[] = { 10224, 10256, 10288, 10320, 10352, 10384, 10416, 10448, 10480, 10480, 10512, 10544, 10544, 10576, 10608, 10640, 10672, 10704, 10736, 10704, 10768, 10800, 10832, 10864, - 10896, 10704, 10928, 10960, 10992, 10704, 10704, 11024, - 11056, 10704, 10704, 10704, 10704, 10704, 10704, 10704, - 10704, 10704, 10704, 10704, 10704, 10704, 10704, 10704, - 10704, 10704, 10704, 11088, 11120, 11152, 11152, 11184, - 11216, 11248, 11280, 11312, 11344, 11376, 11408, 11440, - 11472, 10704, 11504, 11536, 10704, 11568, 11600, 11632, - 11664, 11696, 11728, 11760, 11792, 11824, 11856, 11888, - 11920, 11952, 11984, 12016, 12048, 12080, 9872, 9872, - 12112, 12144, 12176, 12208, 12240, 12272, 12304, 12336, - 12368, 12400, 12432, 12464, 9872, 9872, 12496, 12528, - 12560, 12592, 12624, 12656, 12688, 12720, 12752, 12784, - 6512, 6512, 6512, 6512, 12816, 6512, 6512, 12848, - 12880, 12912, 12944, 12976, 13008, 13040, 13072, 13104, - - 13136, 13168, 13200, 13232, 13264, 13296, 13328, 13360, - 13392, 13424, 13456, 13488, 13520, 13552, 13584, 13616, - 13648, 13680, 13712, 13744, 13776, 13808, 13840, 13872, - 13904, 13936, 13968, 14000, 14032, 14064, 14096, 14128, - 14160, 14192, 14224, 14256, 14288, 14320, 14352, 14384, - 14160, 14160, 14160, 14160, 14416, 14448, 14480, 14512, - 14544, 14576, 14160, 14608, 14640, 14672, 14704, 14736, - 14768, 14800, 14832, 14864, 14896, 14928, 14960, 14992, - 15024, 15024, 15024, 15024, 15024, 15024, 15024, 15024, - 15056, 15056, 15056, 15056, 15088, 15120, 15152, 15184, - 15056, 15216, 15056, 15248, 15280, 15312, 15344, 15376, - 15408, 15440, 15472, 9872, 9872, 9872, 9872, 9872, - 15504, 15536, 15568, 15600, 15632, 15632, 15632, 15664, - 15696, 15728, 15760, 15792, 15824, 15856, 15856, 15888, - 15920, 15952, 9872, 9872, 15984, 16016, 16016, 16048, - 16016, 16016, 16016, 16016, 16016, 16016, 16080, 16112, - - 16144, 16176, 16208, 16240, 16272, 16304, 16336, 16368, - 16400, 16432, 16464, 16464, 16496, 16528, 16560, 16592, - 16624, 16656, 16688, 16720, 16656, 16752, 16784, 16816, - 16848, 16848, 16880, 16912, 16944, 16944, 16976, 17008, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17040, 17040, 17040, - 17040, 17040, 17040, 17040, 17040, 17072, 17104, 17104, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, + 10896, 10704, 10928, 10960, 10992, 11024, 11024, 11056, + 11088, 11120, 11120, 11120, 11120, 11120, 11120, 11120, + 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, + 11120, 11120, 11120, 11152, 11184, 11216, 11216, 11248, + 11280, 11312, 11344, 11376, 11408, 11440, 11472, 11504, + 11536, 11568, 11600, 11632, 11568, 11664, 11696, 11728, + 11760, 11792, 11824, 11856, 11888, 11920, 11952, 11984, + 12016, 12048, 12080, 12112, 12144, 12176, 9872, 9872, + 12208, 12240, 12272, 12304, 12336, 12368, 12400, 12432, + 12464, 12496, 12528, 12560, 9872, 9872, 12592, 12624, + 12656, 12688, 12720, 12752, 12784, 12816, 12848, 12880, + 6512, 6512, 6512, 6512, 12912, 6512, 6512, 12944, + 12976, 13008, 13040, 13072, 13104, 13136, 13168, 13200, + + 13232, 13264, 13296, 13328, 13360, 13392, 13424, 13456, + 13488, 13520, 13552, 13584, 13616, 13648, 13680, 13712, + 13744, 13776, 13808, 13840, 13872, 13904, 13936, 13968, + 14000, 14032, 14064, 14096, 14128, 14160, 14192, 14224, + 14256, 14288, 14320, 14352, 14384, 14416, 14448, 14480, + 14256, 14256, 14256, 14256, 14512, 14544, 14576, 14608, + 14640, 14672, 14256, 14704, 14736, 14768, 14800, 14832, + 14864, 14896, 14928, 14960, 14992, 15024, 15056, 15088, + 15120, 15120, 15120, 15120, 15120, 15120, 15120, 15120, + 15152, 15152, 15152, 15152, 15184, 15216, 15248, 15280, + 15152, 15312, 15152, 15344, 15376, 15408, 15440, 15472, + 15504, 15536, 15568, 9872, 9872, 9872, 9872, 9872, + 15600, 15632, 15664, 15696, 15728, 15728, 15728, 15760, + 15792, 15824, 15856, 15888, 15920, 15952, 15952, 15984, + 16016, 16048, 9872, 9872, 16080, 16112, 16112, 16144, + 16112, 16112, 16112, 16112, 16112, 16112, 16176, 16208, + + 16240, 16272, 16304, 16336, 16368, 16400, 16432, 16464, + 16496, 16528, 16560, 16560, 16592, 16624, 16656, 16688, + 16720, 16752, 16784, 16816, 16752, 16848, 16880, 16912, + 16944, 16944, 16976, 17008, 17040, 17040, 17072, 17104, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, @@ -199,674 +131,742 @@ static const unsigned short uc_property_trie[] = { 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 17136, 17136, 17136, 17136, 17168, 17200, 17232, - - 17264, 17296, 17296, 17296, 17296, 17296, 17296, 17296, - 17296, 17296, 17296, 17296, 17296, 17296, 17296, 17296, - 17296, 17296, 17296, 17296, 17296, 17296, 17296, 17296, - 17296, 17296, 17296, 17296, 17296, 17296, 17296, 17296, - 17296, 17296, 17296, 17296, 17328, 17360, 17392, 17424, - 12368, 12368, 12368, 12368, 12368, 12368, 12368, 12368, - 17456, 17488, 17520, 17552, 17584, 11600, 11600, 17616, - 17648, 17680, 17712, 17744, 17776, 17808, 9872, 17840, - 17872, 17904, 17936, 17968, 18000, 18032, 18064, 18096, - 18128, 18160, 18192, 18224, 18256, 18288, 18320, 9872, - 12368, 18352, 18384, 18416, 11952, 18448, 18480, 18512, - 18544, 18576, 9872, 9872, 9872, 9872, 11600, 18608, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - - 18672, 18704, 18736, 18768, 18800, 18832, 18640, 18672, - 18704, 18736, 18768, 18800, 18832, 18640, 18672, 18704, - 18736, 18768, 18800, 18832, 18640, 18672, 18704, 18736, - 18768, 18800, 18832, 18640, 18672, 18704, 18736, 18768, - 18800, 18832, 18640, 18672, 18704, 18736, 18768, 18800, - 18832, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18640, - 18672, 18704, 18736, 18768, 18800, 18864, 18896, 18928, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - 18960, 18960, 18960, 18960, 18960, 18960, 18960, 18960, - - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 18992, 18992, 18992, 18992, 18992, 18992, 18992, 18992, - 17136, 17136, 17136, 17136, 17136, 17136, 17136, 17136, - 17136, 19024, 19056, 19088, 19120, 19120, 19152, 17232, - 19184, 19216, 19248, 19280, 19280, 19312, 19344, 19280, - 19280, 19280, 19280, 19280, 19280, 19280, 19280, 19280, - 19280, 19376, 19408, 19280, 19440, 19280, 19472, 19504, - 19536, 19568, 19600, 19632, 19280, 19280, 19280, 19664, - 19696, 19728, 19760, 19792, 19824, 19856, 19888, 19920, - - 19952, 19984, 20016, 9872, 20048, 20048, 20048, 20080, - 20112, 20144, 20176, 20208, 20240, 9872, 20272, 20304, - 9872, 9872, 9872, 9872, 20336, 12368, 20368, 9872, - 20400, 20432, 20464, 9872, 20496, 15760, 20528, 9872, - 20560, 20592, 20624, 20048, 20656, 20688, 9872, 9872, + 17136, 17136, 17136, 17136, 17136, 17168, 17200, 17200, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 17232, 17232, 17232, 17232, 17264, 17296, 17328, + + 17360, 17392, 17392, 17392, 17392, 17392, 17392, 17392, + 17392, 17392, 17392, 17392, 17392, 17392, 17392, 17392, + 17392, 17392, 17392, 17392, 17392, 17392, 17392, 17392, + 17392, 17392, 17392, 17392, 17392, 17392, 17392, 17392, + 17392, 17392, 17392, 17392, 17424, 17456, 17488, 17520, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17584, 17616, 17648, 17680, 17712, 17744, 17744, 17776, + 17808, 17840, 17872, 17904, 17936, 17968, 9872, 18000, + 18032, 18064, 18096, 18128, 18160, 18192, 18224, 18256, + 18288, 18320, 18352, 18384, 18416, 18448, 18480, 9872, + 18512, 18544, 18576, 18608, 18640, 18672, 18704, 18736, + 18768, 18800, 9872, 9872, 9872, 9872, 18832, 18864, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + + 18928, 18960, 18992, 19024, 19056, 19088, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 18896, 18928, 18960, + 18992, 19024, 19056, 19088, 18896, 18928, 18960, 18992, + 19024, 19056, 19088, 18896, 18928, 18960, 18992, 19024, + 19056, 19088, 18896, 18928, 18960, 18992, 19024, 19056, + 19088, 18896, 18928, 18960, 18992, 19024, 19056, 19088, + 18896, 18928, 18960, 18992, 19024, 19056, 19088, 18896, + 18928, 18960, 18992, 19024, 19056, 19120, 19152, 19184, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + 19216, 19216, 19216, 19216, 19216, 19216, 19216, 19216, + + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 19248, 19248, 19248, 19248, 19248, 19248, 19248, 19248, + 17232, 17232, 17232, 17232, 17232, 17232, 17232, 17232, + 17232, 19280, 19312, 19344, 19376, 19376, 19408, 17328, + 19440, 19472, 19504, 19536, 19536, 19568, 19600, 19536, + 19536, 19536, 19536, 19536, 19536, 19536, 19536, 19536, + 19536, 19632, 19664, 19536, 19696, 19536, 19728, 19760, + 19792, 19824, 19856, 19888, 19536, 19536, 19536, 19920, + 19952, 19984, 20016, 20048, 20080, 20112, 20144, 20176, + + 20208, 20240, 20272, 9872, 20304, 20304, 20304, 20336, + 20368, 20400, 20432, 20464, 20496, 9872, 20528, 20560, + 9872, 9872, 9872, 9872, 20592, 20624, 20656, 9872, + 20688, 20720, 20752, 9872, 20784, 20816, 20848, 9872, + 20880, 20912, 20944, 20976, 21008, 21040, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9872, - 20720, 20752, 20784, 8368, 8368, 8368, 8368, 8368, - 20816, 20848, 8368, 8368, 20880, 20912, 8368, 8368, - 20944, 20976, 21008, 21040, 8368, 8368, 8368, 8368, - 21072, 21104, 21136, 21168, 8368, 8368, 8368, 8368, - 21072, 21072, 21200, 8368, 8368, 8368, 8368, 8368, + 21072, 21104, 21136, 8368, 8368, 8368, 8368, 8368, + 21168, 21200, 8368, 8368, 21232, 21264, 8368, 8368, + 21296, 21328, 21360, 21392, 8368, 8368, 8368, 8368, + 21424, 21456, 21488, 21520, 8368, 8368, 8368, 8368, + 21552, 21552, 21584, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, - 8368, 8368, 8368, 21232, 8368, 8368, 8368, 8368, + 8368, 8368, 8368, 21616, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, 8368, // 0x11000 - 0x110000 - 21264, 21520, 21776, 21776, 21776, 21776, 22032, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 22288, 22288, 22288, 22544, 22800, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 23056, 23056, 23312, 23568, 23824, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 24080, 24080, 24336, 21776, 21776, 21776, 21776, 24592, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 24848, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 25104, 25360, 25616, 25872, 26128, 26384, 26640, 26896, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 27152, 27152, 27152, 27152, 27152, 27152, 27408, 27152, - 27664, 27920, 28176, 28432, 28688, 28944, 29200, 29456, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 29968, 29968, - 29968, 29968, 29968, 29968, 29968, 29968, 30224, 30480, - 30480, 30480, 30480, 30480, 30480, 30480, 30480, 30480, - 30480, 30480, 30480, 30480, 30480, 30480, 30480, 30736, - 30992, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 29968, 29968, 31504, 31248, 31248, 31248, 31248, 31760, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31248, - 31248, 31248, 31248, 31248, 31248, 31248, 31248, 31760, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 32016, 32272, 32528, 32528, 32528, 32528, 32528, 32528, - 32528, 32528, 32528, 32528, 32528, 32528, 32528, 32528, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 21776, - 21776, 21776, 21776, 21776, 21776, 21776, 21776, 29712, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 33040, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 32784, - 32784, 32784, 32784, 32784, 32784, 32784, 32784, 33040, + 21648, 21904, 22160, 22160, 22160, 22160, 22416, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22672, 22672, 22672, 22928, 23184, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 23440, 23440, 23696, 23952, 24208, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 24464, 24464, 24720, 22160, 22160, 22160, 22160, 24976, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 25232, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 25488, 25744, 26000, 26256, 26512, 26768, 27024, 27280, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 27536, 27536, 27536, 27536, 27536, 27536, 27792, 27536, + 28048, 28304, 28560, 28816, 29072, 29328, 29584, 29840, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30352, 30352, + 30352, 30352, 30352, 30352, 30352, 30352, 30608, 30864, + 30864, 30864, 30864, 30864, 30864, 30864, 30864, 30864, + 30864, 30864, 30864, 30864, 30864, 30864, 30864, 31120, + 31376, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 30352, 30352, 31888, 31632, 31632, 31632, 31632, 32144, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 31632, + 31632, 31632, 31632, 31632, 31632, 31632, 31632, 32144, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 32400, 32656, 32912, 32912, 32912, 32912, 32912, 32912, + 32912, 32912, 32912, 32912, 32912, 32912, 32912, 32912, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160, + 22160, 22160, 22160, 22160, 22160, 22160, 22160, 30096, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33424, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33168, + 33168, 33168, 33168, 33168, 33168, 33168, 33168, 33424, 0, 0, 0, 0, 0, 0, 0, 0, @@ -979,575 +979,555 @@ static const unsigned short uc_property_trie[] = { 142, 142, 142, 142, 142, 142, 142, 142, 142, 143, 143, 144, 144, 144, 144, 144, - 142, 142, 42, 42, 42, 42, 143, 143, - 145, 143, 143, 143, 145, 143, 143, 143, + 145, 145, 42, 42, 42, 42, 143, 143, + 146, 143, 143, 143, 146, 143, 143, 143, 144, 144, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 146, + 42, 42, 42, 42, 42, 42, 42, 147, 142, 142, 142, 142, 142, 42, 42, 42, - 42, 42, 147, 147, 148, 147, 149, 150, - 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, - - 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 152, 153, 153, - 153, 153, 152, 154, 153, 153, 153, 153, - - 153, 155, 155, 153, 153, 153, 153, 155, - 155, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 156, 156, 156, 156, - 156, 153, 153, 153, 153, 151, 151, 151, - - 151, 151, 151, 151, 151, 157, 158, 159, - 159, 159, 158, 158, 158, 159, 159, 160, - 161, 161, 161, 162, 162, 162, 162, 161, - 163, 164, 164, 165, 166, 167, 167, 168, - - 169, 169, 170, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, - 172, 173, 172, 173, 143, 174, 172, 173, - 175, 175, 176, 177, 177, 177, 34, 175, - - 175, 175, 175, 175, 174, 42, 178, 61, - 179, 179, 179, 175, 180, 175, 181, 181, - 182, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, - - 183, 183, 175, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 184, 185, 185, 185, - 186, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, - - 187, 187, 188, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 189, 190, 190, 191, - 192, 193, 194, 194, 194, 195, 196, 197, - 198, 199, 200, 201, 200, 201, 200, 201, - - 200, 201, 67, 68, 67, 68, 67, 68, - 67, 68, 67, 68, 67, 68, 67, 68, - 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 209, 210, 212, 213, 213, 213, + 42, 42, 148, 148, 149, 150, 151, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, + + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 154, 155, 155, + 155, 155, 154, 156, 155, 155, 155, 155, + + 155, 157, 157, 155, 155, 155, 155, 157, + 157, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 158, 158, 158, 158, + 158, 155, 155, 155, 155, 153, 153, 153, + + 153, 153, 153, 153, 153, 159, 160, 161, + 161, 161, 160, 160, 160, 161, 161, 162, + 163, 163, 163, 164, 164, 164, 164, 163, + 165, 166, 166, 167, 168, 169, 169, 170, + + 171, 171, 172, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, + 174, 175, 174, 175, 143, 176, 174, 175, + 177, 177, 178, 179, 179, 179, 34, 177, + + 177, 177, 177, 177, 176, 42, 180, 61, + 181, 181, 181, 177, 182, 177, 183, 183, + 184, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, + + 185, 185, 177, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 186, 187, 187, 187, + 188, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, + + 189, 189, 190, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 191, 192, 192, 193, + 194, 195, 196, 196, 196, 197, 198, 199, + 200, 201, 202, 203, 202, 203, 202, 203, + + 202, 203, 204, 205, 204, 205, 204, 205, + 204, 205, 204, 205, 204, 205, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 213, 214, 216, 217, 217, 217, - 214, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 214, 215, 215, - 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, - - 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, - 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, - - 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 218, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 218, 219, 219, + 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, + + 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + + 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + 222, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 222, 223, 223, + + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 224, 225, 224, 225, + + 224, 225, 226, 227, 227, 153, 153, 228, + 229, 229, 230, 231, 232, 233, 232, 233, + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 224, 225, 224, 225, + + 234, 224, 225, 224, 225, 230, 231, 224, + 225, 230, 231, 224, 225, 230, 231, 235, + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 224, 225, 224, 225, + + 224, 225, 224, 225, 224, 225, 224, 225, + 224, 225, 224, 225, 232, 233, 224, 225, + 224, 225, 224, 225, 224, 225, 236, 237, + 224, 225, 238, 239, 238, 239, 238, 239, + + 230, 231, 230, 231, 230, 231, 230, 231, + 230, 231, 230, 231, 230, 231, 230, 231, + 238, 239, 238, 239, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + + 240, 241, 240, 241, 242, 243, 244, 245, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, + + 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 177, + 177, 247, 248, 248, 249, 250, 249, 248, + + 177, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, + + 251, 251, 251, 251, 251, 251, 251, 252, + 177, 253, 254, 177, 177, 177, 177, 255, + 256, 257, 258, 258, 258, 258, 257, 258, + 258, 258, 259, 257, 258, 258, 258, 258, + + 258, 258, 260, 257, 257, 257, 257, 257, + 258, 258, 257, 258, 258, 259, 261, 258, + 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, + + 278, 279, 280, 278, 258, 260, 281, 282, + 256, 256, 256, 256, 256, 256, 256, 256, + 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, + + 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 256, 256, 256, 256, 256, + 283, 283, 283, 284, 285, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + + 286, 286, 286, 286, 287, 288, 289, 289, + 290, 291, 291, 292, 19, 293, 294, 294, + 295, 295, 295, 295, 295, 295, 296, 296, + 297, 298, 299, 300, 288, 288, 301, 302, + + 303, 304, 305, 305, 305, 305, 306, 305, + 306, 305, 306, 306, 306, 306, 306, 305, + 305, 305, 305, 306, 306, 306, 306, 306, + 306, 306, 306, 307, 307, 307, 307, 307, + + 308, 306, 306, 306, 306, 306, 306, 306, + 305, 306, 306, 309, 310, 311, 312, 313, + 314, 315, 316, 160, 160, 161, 317, 295, + 295, 318, 318, 318, 319, 318, 318, 320, + + 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 335, + 336, 305, 305, 305, 304, 305, 305, 305, + 306, 306, 306, 306, 306, 306, 306, 306, + + 306, 306, 306, 306, 306, 306, 306, 306, + 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 306, 306, 306, 306, 306, 306, + + 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, + 337, 337, 306, 306, 306, 306, 306, 337, + + 305, 306, 306, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 306, 305, 306, 338, + 306, 306, 305, 305, 339, 305, 340, 340, + 340, 340, 340, 340, 340, 341, 342, 340, + + 340, 340, 340, 343, 340, 344, 344, 340, + 340, 342, 343, 340, 340, 343, 345, 345, + 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 337, 337, 337, 356, 356, 357, + + 358, 358, 358, 359, 359, 359, 359, 359, + 359, 359, 359, 359, 359, 359, 288, 360, + 361, 362, 363, 363, 363, 361, 361, 361, + 361, 361, 363, 363, 363, 363, 361, 363, + + 363, 363, 363, 363, 363, 363, 363, 363, + 361, 363, 361, 363, 361, 364, 364, 365, + 366, 367, 366, 366, 367, 366, 366, 367, + 367, 367, 366, 367, 367, 366, 367, 366, + + 366, 366, 367, 366, 367, 366, 367, 366, + 367, 366, 366, 288, 288, 365, 364, 364, + 368, 368, 368, 368, 368, 368, 368, 368, + 368, 369, 369, 369, 368, 368, 368, 368, - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 220, 221, 220, 221, - - 220, 221, 222, 223, 223, 151, 151, 224, - 225, 225, 226, 227, 228, 229, 228, 229, - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 220, 221, 220, 221, - - 230, 220, 221, 220, 221, 226, 227, 220, - 221, 226, 227, 220, 221, 226, 227, 231, - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 220, 221, 220, 221, - - 220, 221, 220, 221, 220, 221, 220, 221, - 220, 221, 220, 221, 228, 229, 220, 221, - 220, 221, 220, 221, 220, 221, 232, 233, - 220, 221, 234, 235, 234, 235, 234, 235, - - 226, 227, 226, 227, 226, 227, 226, 227, - 226, 227, 226, 227, 226, 227, 226, 227, - 234, 235, 234, 235, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - - 236, 237, 236, 237, 238, 239, 240, 241, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 175, - 175, 243, 244, 244, 245, 246, 245, 244, - - 175, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, - - 247, 247, 247, 247, 247, 247, 247, 248, - 175, 249, 250, 175, 175, 175, 175, 251, - 252, 253, 254, 254, 254, 254, 253, 254, - 254, 254, 255, 253, 254, 254, 254, 254, - - 254, 254, 256, 253, 253, 253, 253, 253, - 254, 254, 253, 254, 254, 255, 257, 254, - 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, - - 274, 275, 276, 274, 254, 256, 277, 278, - 252, 252, 252, 252, 252, 252, 252, 252, - 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, - - 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 252, 252, 252, 252, 252, - 279, 279, 279, 280, 281, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - - 282, 282, 282, 282, 283, 284, 285, 285, - 286, 287, 287, 288, 19, 289, 290, 290, - 291, 291, 291, 291, 291, 291, 292, 292, - 293, 294, 295, 296, 284, 284, 297, 298, - - 299, 300, 301, 301, 301, 301, 302, 301, - 302, 301, 302, 302, 302, 302, 302, 301, - 301, 301, 301, 302, 302, 302, 302, 302, - 302, 302, 302, 303, 303, 303, 303, 303, - - 304, 302, 302, 302, 302, 302, 302, 302, - 301, 302, 302, 305, 306, 307, 308, 309, - 310, 311, 312, 158, 158, 159, 313, 291, - 291, 314, 314, 314, 315, 314, 314, 316, - - 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 331, - 332, 301, 301, 301, 300, 301, 301, 301, - 302, 302, 302, 302, 302, 302, 302, 302, - - 302, 302, 302, 302, 302, 302, 302, 302, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 302, 302, 302, 302, 302, 302, - - 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, - 333, 333, 302, 302, 302, 302, 302, 333, - - 301, 302, 302, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 302, 301, 302, 334, - 302, 302, 301, 301, 335, 301, 336, 336, - 336, 336, 336, 336, 336, 337, 338, 336, - - 336, 336, 336, 339, 336, 340, 340, 336, - 336, 338, 339, 336, 336, 339, 341, 341, - 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 333, 333, 333, 352, 352, 353, - - 354, 354, 354, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 284, 356, - 357, 358, 359, 359, 359, 357, 357, 357, - 357, 357, 359, 359, 359, 359, 357, 359, - - 359, 359, 359, 359, 359, 359, 359, 359, - 357, 359, 357, 359, 357, 360, 360, 361, - 362, 363, 362, 362, 363, 362, 362, 363, - 363, 363, 362, 363, 363, 362, 363, 362, - - 362, 362, 363, 362, 363, 362, 363, 362, - 363, 362, 362, 284, 284, 361, 360, 360, - 364, 364, 364, 364, 364, 364, 364, 364, - 364, 365, 365, 365, 364, 364, 364, 364, - - 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 365, 365, 364, 303, 303, - 303, 366, 303, 366, 366, 303, 303, 303, - 366, 366, 303, 303, 303, 303, 303, 303, - - 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, - - 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 369, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - - 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 380, 380, 380, 380, - - 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 381, 381, 381, 381, 381, - 381, 381, 382, 381, 383, 383, 384, 385, - 386, 387, 388, 252, 252, 252, 252, 252, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 390, 390, - 390, 390, 391, 390, 390, 390, 390, 390, - - 390, 390, 390, 390, 391, 390, 390, 390, - 391, 390, 390, 390, 390, 390, 252, 252, - 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 252, - - 393, 394, 394, 394, 394, 394, 393, 394, - 394, 393, 394, 394, 394, 394, 394, 393, - 394, 394, 394, 394, 393, 394, 395, 395, - 395, 396, 396, 396, 252, 252, 397, 252, - - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - - 398, 284, 398, 398, 398, 398, 398, 398, - 398, 398, 399, 399, 399, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - - 284, 284, 284, 284, 400, 400, 401, 400, - 400, 401, 400, 400, 400, 401, 401, 401, - 402, 403, 404, 400, 400, 400, 401, 400, - 400, 401, 401, 400, 400, 400, 400, 284, - - 405, 406, 406, 407, 408, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, - - 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 410, 411, 412, 409, 407, 407, - - 407, 406, 406, 406, 406, 406, 406, 406, - 406, 407, 407, 407, 407, 413, 414, 411, - 409, 151, 153, 415, 415, 405, 410, 410, - 409, 409, 409, 409, 409, 409, 409, 409, - - 409, 409, 406, 406, 416, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 430, 430, 430, 430, - 175, 431, 431, 432, 432, 433, 432, 432, - - 175, 434, 435, 435, 175, 436, 436, 436, - 436, 436, 436, 436, 436, 175, 175, 436, - 436, 175, 175, 436, 436, 436, 436, 436, - 436, 436, 436, 436, 436, 436, 436, 436, - - 436, 436, 436, 436, 436, 436, 436, 436, - 436, 175, 436, 436, 436, 436, 436, 436, - 436, 175, 436, 175, 175, 175, 436, 436, - 436, 436, 175, 175, 437, 438, 439, 435, - - 435, 434, 434, 434, 434, 175, 175, 435, - 435, 175, 175, 435, 435, 440, 441, 175, - 175, 175, 175, 175, 175, 175, 175, 439, - 175, 175, 175, 175, 436, 436, 175, 436, - - 436, 436, 434, 434, 175, 175, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, - 436, 436, 452, 452, 453, 453, 453, 453, - 453, 454, 455, 456, 175, 175, 175, 175, - - 175, 457, 458, 459, 175, 460, 460, 460, - 460, 460, 460, 175, 175, 175, 175, 460, - 460, 175, 175, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 460, 460, - - 460, 460, 460, 460, 460, 460, 460, 460, - 460, 175, 460, 460, 460, 460, 460, 460, - 460, 175, 460, 460, 175, 460, 460, 175, - 460, 460, 175, 175, 461, 175, 462, 462, - - 462, 458, 458, 175, 175, 175, 175, 458, - 458, 175, 175, 458, 458, 463, 175, 175, - 175, 464, 175, 175, 175, 175, 175, 175, - 175, 460, 460, 460, 460, 175, 460, 175, - - 175, 175, 175, 175, 175, 175, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, - 458, 458, 460, 460, 460, 464, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 475, 475, 476, 175, 477, 477, 477, - 477, 477, 477, 477, 478, 477, 175, 477, - 477, 477, 175, 477, 477, 477, 477, 477, - 477, 477, 477, 477, 477, 477, 477, 477, - - 477, 477, 477, 477, 477, 477, 477, 477, - 477, 175, 477, 477, 477, 477, 477, 477, - 477, 175, 477, 477, 175, 477, 477, 477, - 477, 477, 175, 175, 479, 477, 476, 476, - - 476, 475, 475, 475, 475, 475, 175, 475, - 475, 476, 175, 476, 476, 480, 175, 175, - 477, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 477, 478, 481, 481, 175, 175, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 494, 495, 495, 175, 496, 496, 496, - 496, 496, 496, 496, 496, 175, 175, 496, - 496, 175, 175, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, - - 496, 496, 496, 496, 496, 496, 496, 496, - 496, 175, 496, 496, 496, 496, 496, 496, - 496, 175, 496, 496, 175, 497, 496, 496, - 496, 496, 175, 175, 498, 496, 499, 494, - - 495, 494, 494, 494, 500, 175, 175, 495, - 495, 175, 175, 495, 495, 501, 175, 175, - 175, 175, 175, 175, 175, 175, 494, 499, - 175, 175, 175, 175, 496, 496, 175, 496, - - 496, 496, 500, 500, 175, 175, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, - 512, 497, 513, 513, 513, 513, 513, 513, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 514, 515, 175, 515, 515, 515, - 515, 515, 515, 175, 175, 175, 515, 515, - 515, 175, 515, 515, 515, 515, 175, 175, - 175, 515, 515, 175, 515, 175, 515, 515, - - 175, 175, 175, 515, 515, 175, 175, 175, - 515, 515, 515, 175, 175, 175, 515, 515, - 515, 515, 515, 515, 515, 515, 516, 515, - 515, 515, 175, 175, 175, 175, 517, 518, - - 514, 518, 518, 175, 175, 175, 518, 518, - 518, 175, 518, 518, 518, 519, 175, 175, - 520, 175, 175, 175, 175, 175, 175, 517, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, - 531, 531, 531, 532, 532, 532, 532, 532, - 532, 533, 532, 175, 175, 175, 175, 175, - - 175, 534, 534, 534, 175, 535, 535, 535, - 535, 535, 535, 535, 535, 175, 535, 535, - 535, 175, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, - - 535, 535, 535, 535, 535, 535, 535, 535, - 535, 175, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 175, 535, 535, 535, - 535, 535, 175, 175, 175, 536, 537, 537, - - 537, 534, 534, 534, 534, 175, 537, 537, - 537, 175, 537, 537, 537, 538, 175, 175, - 175, 175, 175, 175, 175, 539, 540, 175, - 536, 536, 175, 175, 175, 175, 175, 175, - - 535, 535, 541, 541, 175, 175, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, - 175, 175, 175, 175, 175, 175, 175, 175, - 552, 552, 552, 552, 552, 552, 552, 553, - - 175, 175, 554, 554, 175, 555, 555, 555, - 555, 555, 555, 555, 555, 175, 555, 555, - 555, 175, 555, 555, 555, 555, 555, 555, - 555, 555, 555, 555, 555, 555, 555, 555, - - 555, 555, 555, 555, 555, 555, 555, 555, - 555, 175, 555, 555, 555, 555, 555, 555, - 555, 555, 555, 555, 175, 555, 555, 555, - 555, 555, 175, 175, 556, 557, 554, 558, - - 554, 554, 559, 554, 554, 175, 558, 554, - 554, 175, 554, 554, 560, 561, 175, 175, - 175, 175, 175, 175, 175, 559, 559, 175, - 175, 175, 175, 175, 175, 175, 555, 175, - - 555, 555, 562, 562, 175, 175, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, - 175, 573, 573, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 574, 574, 175, 575, 575, 575, - 575, 575, 575, 575, 575, 175, 575, 575, - 575, 175, 575, 575, 575, 575, 575, 575, - 575, 575, 575, 575, 575, 575, 575, 575, - - 575, 575, 575, 575, 575, 575, 575, 575, - 575, 576, 575, 575, 575, 575, 575, 575, - 575, 575, 575, 575, 575, 575, 575, 575, - 575, 575, 576, 175, 175, 577, 578, 574, - - 574, 579, 579, 579, 580, 175, 574, 574, - 574, 175, 574, 574, 574, 581, 576, 175, - 175, 175, 175, 175, 175, 175, 175, 578, - 175, 175, 175, 175, 175, 175, 175, 175, - - 575, 575, 580, 580, 175, 175, 582, 583, - 584, 585, 586, 587, 588, 589, 590, 591, - 592, 592, 592, 592, 592, 592, 175, 175, - 175, 593, 577, 577, 577, 577, 577, 577, - - 175, 175, 594, 594, 175, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 175, - 175, 175, 595, 595, 595, 595, 595, 595, - - 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 175, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 175, 595, 175, 175, - - 595, 595, 595, 595, 595, 595, 595, 175, - 175, 175, 596, 175, 175, 175, 175, 597, - 594, 594, 598, 598, 598, 175, 598, 175, - 594, 594, 594, 594, 594, 594, 594, 597, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 594, 594, 599, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 600, 600, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 600, 600, - - 600, 600, 600, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 600, 600, - 600, 601, 600, 602, 601, 601, 601, 601, - 603, 603, 604, 175, 175, 175, 175, 12, - - 600, 600, 600, 600, 600, 600, 605, 601, - 606, 606, 606, 606, 601, 601, 601, 607, - 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 618, 618, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 619, 619, 175, 619, 175, 175, 619, - 619, 175, 619, 175, 175, 619, 175, 175, - 175, 175, 175, 175, 619, 619, 619, 619, - 175, 619, 619, 619, 619, 619, 619, 619, - - 175, 619, 619, 619, 175, 619, 175, 619, - 175, 175, 619, 619, 175, 619, 619, 619, - 619, 620, 619, 621, 620, 620, 620, 620, - 622, 622, 175, 620, 620, 619, 175, 175, - - 619, 619, 619, 619, 619, 175, 623, 175, - 624, 624, 624, 624, 620, 620, 175, 175, - 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 175, 175, 619, 619, 635, 635, - - 636, 637, 637, 637, 638, 639, 638, 638, - 640, 638, 638, 641, 640, 642, 642, 642, - 642, 642, 640, 643, 642, 643, 643, 643, - 644, 644, 643, 643, 643, 643, 643, 643, - - 645, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 656, 644, 643, 644, - 643, 657, 658, 659, 658, 659, 660, 660, - - 636, 636, 636, 636, 636, 636, 636, 636, - 175, 636, 636, 636, 636, 636, 636, 636, - 636, 636, 636, 636, 636, 636, 636, 636, - 636, 636, 636, 636, 636, 636, 636, 636, - - 636, 636, 636, 636, 636, 636, 636, 636, - 636, 636, 661, 662, 662, 175, 175, 175, - 175, 663, 664, 665, 666, 665, 665, 665, - 665, 665, 664, 664, 664, 664, 665, 667, - - 664, 665, 668, 668, 669, 641, 668, 668, - 636, 636, 636, 636, 670, 671, 671, 671, - 665, 665, 665, 665, 665, 665, 672, 665, - 175, 665, 665, 665, 665, 665, 665, 665, - - 665, 665, 665, 665, 665, 665, 665, 665, - 665, 665, 665, 665, 665, 665, 672, 672, - 672, 665, 665, 665, 665, 665, 665, 665, - 672, 665, 672, 672, 672, 175, 673, 673, - - 674, 674, 674, 674, 674, 674, 675, 674, - 674, 674, 674, 674, 674, 175, 676, 674, - 677, 677, 678, 679, 680, 681, 681, 681, - 681, 682, 682, 175, 175, 175, 175, 175, - - 683, 683, 683, 683, 683, 683, 683, 683, - 683, 683, 683, 683, 683, 683, 683, 683, - 683, 683, 683, 683, 683, 683, 683, 683, - 683, 683, 683, 683, 683, 683, 683, 683, - - 683, 683, 684, 683, 683, 683, 683, 683, - 684, 683, 683, 685, 686, 687, 687, 687, - 687, 688, 687, 689, 689, 689, 687, 690, - 686, 691, 692, 693, 693, 689, 689, 684, - - 694, 695, 696, 697, 698, 699, 700, 701, - 702, 703, 704, 704, 705, 705, 705, 705, - 683, 683, 683, 683, 683, 683, 688, 688, - 687, 687, 684, 684, 684, 684, 689, 689, - - 689, 684, 685, 685, 685, 684, 684, 685, - 685, 685, 685, 685, 685, 685, 684, 684, - 684, 689, 689, 689, 689, 684, 684, 684, - 684, 684, 684, 684, 684, 684, 684, 684, - - 684, 684, 689, 685, 693, 689, 689, 685, - 685, 685, 685, 685, 685, 706, 684, 685, - 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 717, 717, 718, 719, 719, - - 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, - - 720, 720, 720, 720, 720, 720, 175, 721, - 175, 175, 175, 175, 175, 721, 175, 175, - 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 722, - - 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 723, - 723, 724, 724, 725, 726, 727, 727, 727, - - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 728, - - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 728, 728, 728, 728, - 728, 728, 729, 729, 729, 729, 729, 728, - - 730, 730, 730, 730, 730, 730, 730, 730, - 730, 730, 730, 730, 730, 730, 730, 730, - 730, 730, 730, 730, 730, 730, 730, 730, - 730, 730, 730, 730, 730, 730, 730, 730, - - 730, 730, 730, 731, 731, 731, 731, 731, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, + 368, 368, 368, 369, 369, 368, 307, 307, + 307, 370, 307, 370, 370, 307, 307, 307, + 370, 370, 307, 307, 307, 307, 307, 307, + + 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, + + 371, 371, 371, 371, 371, 371, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, + 372, 373, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + + 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, + + 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 385, 385, 385, 385, 385, + 385, 385, 386, 385, 387, 387, 388, 389, + 390, 391, 392, 256, 256, 256, 256, 256, + + 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 394, 394, + 394, 394, 395, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 395, 394, 394, 394, + 395, 394, 394, 394, 394, 394, 256, 256, + 396, 396, 396, 396, 396, 396, 396, 396, + 396, 396, 396, 396, 396, 396, 396, 256, + + 397, 398, 398, 398, 398, 398, 397, 398, + 398, 397, 398, 398, 398, 398, 398, 397, + 398, 398, 398, 398, 397, 398, 399, 399, + 399, 400, 400, 400, 256, 256, 401, 256, + + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + + 402, 288, 402, 402, 402, 402, 402, 402, + 402, 402, 403, 403, 403, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + + 288, 288, 288, 288, 404, 404, 405, 404, + 404, 405, 404, 404, 404, 405, 405, 405, + 406, 407, 408, 404, 404, 404, 405, 404, + 404, 405, 405, 404, 404, 404, 404, 288, + + 409, 410, 410, 411, 412, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, + + 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 414, 415, 416, 413, 411, 411, + + 411, 410, 410, 410, 410, 410, 410, 410, + 410, 411, 411, 411, 411, 417, 418, 415, + 413, 153, 155, 419, 419, 409, 414, 414, + 413, 413, 413, 413, 413, 413, 413, 413, + + 413, 413, 410, 410, 420, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 434, 434, 434, 434, + 177, 435, 435, 436, 436, 437, 436, 436, + + 177, 438, 439, 439, 177, 440, 440, 440, + 440, 440, 440, 440, 440, 177, 177, 440, + 440, 177, 177, 440, 440, 440, 440, 440, + 440, 440, 440, 440, 440, 440, 440, 440, + + 440, 440, 440, 440, 440, 440, 440, 440, + 440, 177, 440, 440, 440, 440, 440, 440, + 440, 177, 440, 177, 177, 177, 440, 440, + 440, 440, 177, 177, 441, 442, 443, 439, + + 439, 438, 438, 438, 438, 177, 177, 439, + 439, 177, 177, 439, 439, 444, 445, 177, + 177, 177, 177, 177, 177, 177, 177, 443, + 177, 177, 177, 177, 440, 440, 177, 440, + + 440, 440, 438, 438, 177, 177, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, + 440, 440, 456, 456, 457, 457, 457, 457, + 457, 458, 459, 460, 177, 177, 177, 177, + + 177, 461, 462, 463, 177, 464, 464, 464, + 464, 464, 464, 177, 177, 177, 177, 464, + 464, 177, 177, 464, 464, 464, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 464, + + 464, 464, 464, 464, 464, 464, 464, 464, + 464, 177, 464, 464, 464, 464, 464, 464, + 464, 177, 464, 464, 177, 464, 464, 177, + 464, 464, 177, 177, 465, 177, 466, 466, + + 466, 462, 462, 177, 177, 177, 177, 462, + 462, 177, 177, 462, 462, 467, 177, 177, + 177, 468, 177, 177, 177, 177, 177, 177, + 177, 464, 464, 464, 464, 177, 464, 177, + + 177, 177, 177, 177, 177, 177, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, + 462, 462, 464, 464, 464, 468, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 479, 479, 480, 177, 481, 481, 481, + 481, 481, 481, 481, 482, 481, 177, 481, + 481, 481, 177, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, + 481, 177, 481, 481, 481, 481, 481, 481, + 481, 177, 481, 481, 177, 481, 481, 481, + 481, 481, 177, 177, 483, 481, 480, 480, + + 480, 479, 479, 479, 479, 479, 177, 479, + 479, 480, 177, 480, 480, 484, 177, 177, + 481, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 481, 482, 485, 485, 177, 177, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 498, 499, 499, 177, 500, 500, 500, + 500, 500, 500, 500, 500, 177, 177, 500, + 500, 177, 177, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 500, 500, 500, 500, + 500, 177, 500, 500, 500, 500, 500, 500, + 500, 177, 500, 500, 177, 501, 500, 500, + 500, 500, 177, 177, 502, 500, 503, 498, + + 499, 498, 498, 498, 504, 177, 177, 499, + 499, 177, 177, 499, 499, 505, 177, 177, + 177, 177, 177, 177, 177, 177, 498, 503, + 177, 177, 177, 177, 500, 500, 177, 500, + + 500, 500, 504, 504, 177, 177, 506, 507, + 508, 509, 510, 511, 512, 513, 514, 515, + 516, 501, 517, 517, 517, 517, 517, 517, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 518, 519, 177, 519, 519, 519, + 519, 519, 519, 177, 177, 177, 519, 519, + 519, 177, 519, 519, 519, 519, 177, 177, + 177, 519, 519, 177, 519, 177, 519, 519, + + 177, 177, 177, 519, 519, 177, 177, 177, + 519, 519, 519, 177, 177, 177, 519, 519, + 519, 519, 519, 519, 519, 519, 520, 519, + 519, 519, 177, 177, 177, 177, 521, 522, + + 518, 522, 522, 177, 177, 177, 522, 522, + 522, 177, 522, 522, 522, 523, 177, 177, + 524, 177, 177, 177, 177, 177, 177, 521, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, + 535, 535, 535, 536, 536, 536, 536, 536, + 536, 537, 536, 177, 177, 177, 177, 177, + + 177, 538, 538, 538, 177, 539, 539, 539, + 539, 539, 539, 539, 539, 177, 539, 539, + 539, 177, 539, 539, 539, 539, 539, 539, + 539, 539, 539, 539, 539, 539, 539, 539, + + 539, 539, 539, 539, 539, 539, 539, 539, + 539, 177, 539, 539, 539, 539, 539, 539, + 539, 539, 539, 539, 177, 539, 539, 539, + 539, 539, 177, 177, 177, 540, 541, 541, + + 541, 538, 538, 538, 538, 177, 541, 541, + 541, 177, 541, 541, 541, 542, 177, 177, + 177, 177, 177, 177, 177, 543, 544, 177, + 540, 540, 177, 177, 177, 177, 177, 177, + + 539, 539, 545, 545, 177, 177, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, + 177, 177, 177, 177, 177, 177, 177, 177, + 556, 556, 556, 556, 556, 556, 556, 557, + + 177, 177, 558, 558, 177, 559, 559, 559, + 559, 559, 559, 559, 559, 177, 559, 559, + 559, 177, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 559, 559, 559, + + 559, 559, 559, 559, 559, 559, 559, 559, + 559, 177, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 177, 559, 559, 559, + 559, 559, 177, 177, 560, 561, 558, 562, + + 558, 558, 563, 558, 558, 177, 562, 558, + 558, 177, 558, 558, 564, 565, 177, 177, + 177, 177, 177, 177, 177, 563, 563, 177, + 177, 177, 177, 177, 177, 177, 559, 177, + + 559, 559, 566, 566, 177, 177, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, + 177, 577, 577, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 578, 578, 177, 579, 579, 579, + 579, 579, 579, 579, 579, 177, 579, 579, + 579, 177, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, + + 579, 579, 579, 579, 579, 579, 579, 579, + 579, 580, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 580, 177, 177, 581, 582, 578, + + 578, 583, 583, 583, 584, 177, 578, 578, + 578, 177, 578, 578, 578, 585, 580, 177, + 177, 177, 177, 177, 177, 177, 177, 582, + 177, 177, 177, 177, 177, 177, 177, 177, + + 579, 579, 584, 584, 177, 177, 586, 587, + 588, 589, 590, 591, 592, 593, 594, 595, + 596, 596, 596, 596, 596, 596, 177, 177, + 177, 597, 581, 581, 581, 581, 581, 581, + + 177, 177, 598, 598, 177, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 177, + 177, 177, 599, 599, 599, 599, 599, 599, + + 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 177, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 177, 599, 177, 177, + + 599, 599, 599, 599, 599, 599, 599, 177, + 177, 177, 600, 177, 177, 177, 177, 601, + 598, 598, 602, 602, 602, 177, 602, 177, + 598, 598, 598, 598, 598, 598, 598, 601, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 598, 598, 603, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, + + 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, + 604, 605, 604, 606, 605, 605, 605, 605, + 607, 607, 608, 177, 177, 177, 177, 12, + + 604, 604, 604, 604, 604, 604, 609, 605, + 610, 610, 610, 610, 605, 605, 605, 611, + 612, 613, 614, 615, 616, 617, 618, 619, + 620, 621, 622, 622, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 623, 623, 177, 623, 177, 177, 623, + 623, 177, 623, 177, 177, 623, 177, 177, + 177, 177, 177, 177, 623, 623, 623, 623, + 177, 623, 623, 623, 623, 623, 623, 623, + + 177, 623, 623, 623, 177, 623, 177, 623, + 177, 177, 623, 623, 177, 623, 623, 623, + 623, 624, 623, 625, 624, 624, 624, 624, + 626, 626, 177, 624, 624, 623, 177, 177, + + 623, 623, 623, 623, 623, 177, 627, 177, + 628, 628, 628, 628, 624, 624, 177, 177, + 629, 630, 631, 632, 633, 634, 635, 636, + 637, 638, 177, 177, 623, 623, 639, 639, + + 640, 641, 641, 641, 642, 643, 642, 642, + 644, 642, 642, 645, 644, 646, 646, 646, + 646, 646, 644, 647, 646, 647, 647, 647, + 648, 648, 647, 647, 647, 647, 647, 647, + + 649, 650, 651, 652, 653, 654, 655, 656, + 657, 658, 659, 659, 659, 659, 659, 659, + 659, 659, 659, 659, 660, 648, 647, 648, + 647, 661, 662, 663, 662, 663, 664, 664, + + 640, 640, 640, 640, 640, 640, 640, 640, + 177, 640, 640, 640, 640, 640, 640, 640, + 640, 640, 640, 640, 640, 640, 640, 640, + 640, 640, 640, 640, 640, 640, 640, 640, + + 640, 640, 640, 640, 640, 640, 640, 640, + 640, 640, 665, 666, 666, 177, 177, 177, + 177, 667, 668, 669, 670, 669, 669, 669, + 669, 669, 668, 668, 668, 668, 669, 671, + + 668, 669, 672, 672, 673, 645, 672, 672, + 640, 640, 640, 640, 674, 675, 675, 675, + 669, 669, 669, 669, 669, 669, 676, 669, + 177, 669, 669, 669, 669, 669, 669, 669, + + 669, 669, 669, 669, 669, 669, 669, 669, + 669, 669, 669, 669, 669, 669, 676, 676, + 676, 669, 669, 669, 669, 669, 669, 669, + 676, 669, 676, 676, 676, 177, 677, 677, + + 678, 678, 678, 678, 678, 678, 679, 678, + 678, 678, 678, 678, 678, 177, 680, 678, + 681, 681, 682, 683, 684, 685, 685, 685, + 685, 686, 686, 177, 177, 177, 177, 177, + + 687, 687, 687, 687, 687, 687, 687, 687, + 687, 687, 687, 687, 687, 687, 687, 687, + 687, 687, 687, 687, 687, 687, 687, 687, + 687, 687, 687, 687, 687, 687, 687, 687, + + 687, 687, 688, 687, 687, 687, 687, 687, + 688, 687, 687, 689, 690, 691, 691, 691, + 691, 692, 691, 693, 693, 693, 691, 694, + 690, 695, 696, 697, 697, 693, 693, 688, + + 698, 699, 700, 701, 702, 703, 704, 705, + 706, 707, 708, 708, 709, 709, 709, 709, + 687, 687, 687, 687, 687, 687, 692, 692, + 691, 691, 688, 688, 688, 688, 693, 693, + + 693, 688, 689, 689, 689, 688, 688, 689, + 689, 689, 689, 689, 689, 689, 688, 688, + 688, 693, 693, 693, 693, 688, 688, 688, + 688, 688, 688, 688, 688, 688, 688, 688, + + 688, 688, 693, 689, 697, 693, 693, 689, + 689, 689, 689, 689, 689, 710, 688, 689, + 711, 712, 713, 714, 715, 716, 717, 718, + 719, 720, 721, 721, 721, 722, 723, 723, + + 724, 724, 724, 724, 724, 724, 724, 724, + 724, 724, 724, 724, 724, 724, 724, 724, + 724, 724, 724, 724, 724, 724, 724, 724, + 724, 724, 724, 724, 724, 724, 724, 724, + + 724, 724, 724, 724, 724, 724, 177, 725, + 177, 177, 177, 177, 177, 725, 177, 177, + 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, + + 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 727, + 727, 728, 728, 729, 730, 731, 731, 731, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, @@ -1557,82 +1537,97 @@ static const unsigned short uc_property_trie[] = { 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 733, 733, 733, 733, 733, 733, - - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, + 732, 732, 733, 733, 733, 733, 733, 732, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 175, 734, 734, 734, 734, 175, 175, - 734, 734, 734, 734, 734, 734, 734, 175, - 734, 175, 734, 734, 734, 734, 175, 175, - - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 175, 734, 734, 734, 734, 175, 175, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 175, 734, 734, 734, 734, 175, 175, - 734, 734, 734, 734, 734, 734, 734, 175, - - 734, 175, 734, 734, 734, 734, 175, 175, - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 734, 734, 734, 734, 734, 734, 175, - 734, 734, 734, 734, 734, 734, 734, 734, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 175, 734, 734, 734, 734, 175, 175, - 734, 734, 734, 734, 734, 734, 734, 735, - - 734, 734, 734, 734, 734, 734, 734, 735, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 175, 175, 736, 736, 737, - - 738, 739, 740, 741, 741, 741, 741, 740, - 740, 742, 743, 744, 745, 746, 747, 748, - 749, 750, 751, 751, 751, 751, 751, 751, - 751, 751, 751, 751, 751, 175, 175, 175, - - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 752, 752, 752, 752, 752, 752, 752, 752, - 752, 752, 175, 175, 175, 175, 175, 175, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 734, 734, 734, 735, 735, 735, 735, 735, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 737, 737, 737, 737, 737, 737, + + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 177, 738, 738, 738, 738, 177, 177, + 738, 738, 738, 738, 738, 738, 738, 177, + 738, 177, 738, 738, 738, 738, 177, 177, + + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 177, 738, 738, 738, 738, 177, 177, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 177, 738, 738, 738, 738, 177, 177, + 738, 738, 738, 738, 738, 738, 738, 177, + + 738, 177, 738, 738, 738, 738, 177, 177, + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 738, 738, 738, 738, 738, 738, 177, + 738, 738, 738, 738, 738, 738, 738, 738, + + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 177, 738, 738, 738, 738, 177, 177, + 738, 738, 738, 738, 738, 738, 738, 739, + + 738, 738, 738, 738, 738, 738, 738, 739, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 738, 177, 177, 740, 740, 741, + + 742, 743, 744, 745, 745, 745, 745, 744, + 744, 746, 747, 748, 749, 750, 751, 752, + 753, 754, 755, 755, 755, 755, 755, 755, + 755, 755, 755, 755, 755, 177, 177, 177, + + 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 739, 739, 739, 739, 739, 739, + 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 177, 177, 177, 177, 177, 177, - 753, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, + 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 757, 757, 757, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 741, 740, 734, - 734, 734, 734, 734, 734, 734, 734, 754, - 754, 754, 754, 754, 754, 754, 754, 754, + 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, - 755, 756, 756, 756, 756, 756, 756, 756, - 756, 756, 756, 756, 756, 756, 756, 756, - 756, 756, 756, 756, 756, 756, 756, 756, - 756, 756, 756, 757, 758, 175, 175, 175, + 758, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, @@ -1640,372 +1635,392 @@ static const unsigned short uc_property_trie[] = { 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, - 759, 759, 759, 739, 739, 739, 760, 760, - 760, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 175, 761, 761, - 761, 761, 762, 762, 763, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 762, 762, 763, 764, 764, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 762, 762, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 175, 761, 761, - 761, 175, 762, 762, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 766, 766, 767, 766, - 766, 766, 766, 766, 766, 766, 767, 767, - - 767, 767, 767, 767, 767, 767, 766, 767, - 767, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 768, 766, 769, 769, 770, 771, - 769, 772, 769, 773, 765, 774, 175, 175, - - 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 175, 175, 175, 175, 175, 175, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 175, 175, 175, 175, 175, 175, - - 786, 786, 787, 788, 789, 789, 790, 786, - 787, 788, 786, 791, 791, 791, 792, 175, - 793, 794, 795, 796, 797, 798, 799, 800, - 801, 802, 175, 175, 175, 175, 175, 175, - - 734, 734, 734, 149, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, - 175, 175, 175, 175, 175, 175, 175, 175, - - 734, 734, 734, 734, 734, 734, 734, 734, - 734, 803, 804, 175, 175, 175, 175, 175, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 175, 175, 175, - - 806, 806, 806, 807, 807, 807, 807, 806, - 806, 807, 807, 807, 175, 175, 175, 175, - 807, 807, 806, 807, 807, 807, 807, 807, - 807, 808, 809, 810, 175, 175, 175, 175, - - 811, 175, 175, 175, 812, 812, 813, 814, - 815, 816, 817, 818, 819, 820, 821, 822, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 175, 175, - 823, 823, 823, 823, 823, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, - - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 825, 825, 175, 175, 175, 175, - 826, 826, 826, 826, 826, 827, 827, 827, - 826, 826, 827, 826, 826, 826, 826, 826, - - 826, 824, 824, 824, 824, 824, 824, 824, - 826, 826, 175, 175, 175, 175, 175, 175, - 828, 829, 830, 831, 832, 833, 834, 835, - 836, 837, 838, 175, 175, 175, 839, 839, - - 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, - - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 737, - 841, 842, 842, 842, 175, 175, 738, 738, - - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 843, 844, 843, - 844, 844, 844, 844, 844, 844, 844, 175, - - 845, 846, 844, 846, 846, 844, 844, 844, - 844, 844, 844, 844, 844, 843, 843, 843, - 843, 843, 843, 844, 844, 847, 847, 847, - 847, 847, 847, 847, 847, 175, 175, 848, - + 759, 759, 759, 759, 759, 760, 761, 759, + 759, 759, 759, 759, 759, 759, 759, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + + 763, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 765, 766, 177, 177, 177, + + 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, + + 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 768, 768, 768, 769, 769, + 769, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 770, 770, 770, 770, 770, 770, 770, 770, + 770, 770, 770, 770, 770, 177, 770, 770, + 770, 770, 771, 771, 772, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 773, 773, 773, 773, 773, 773, 773, 773, + 773, 773, 773, 773, 773, 773, 773, 773, + 773, 773, 774, 774, 775, 776, 776, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 778, 778, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 779, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 177, 779, 779, + 779, 177, 780, 780, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + + 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 781, 781, 782, 782, 783, 782, + 782, 782, 782, 782, 782, 782, 783, 783, + + 783, 783, 783, 783, 783, 783, 782, 783, + 783, 782, 782, 782, 782, 782, 782, 782, + 782, 782, 784, 782, 785, 785, 786, 787, + 785, 788, 785, 789, 781, 790, 177, 177, + + 791, 792, 793, 794, 795, 796, 797, 798, + 799, 800, 177, 177, 177, 177, 177, 177, + 801, 801, 801, 801, 801, 801, 801, 801, + 801, 801, 177, 177, 177, 177, 177, 177, + + 802, 802, 803, 804, 805, 806, 807, 802, + 808, 809, 802, 810, 810, 810, 811, 177, + 812, 813, 814, 815, 816, 817, 818, 819, + 820, 821, 177, 177, 177, 177, 177, 177, + + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + + 822, 822, 822, 823, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 822, 822, + 177, 177, 177, 177, 177, 177, 177, 177, + + 822, 822, 822, 822, 822, 822, 822, 822, + 822, 824, 825, 177, 177, 177, 177, 177, + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 177, 177, 177, + + 827, 827, 827, 828, 828, 828, 828, 827, + 827, 828, 828, 828, 177, 177, 177, 177, + 828, 828, 827, 828, 828, 828, 828, 828, + 828, 829, 830, 831, 177, 177, 177, 177, + + 832, 177, 177, 177, 833, 833, 834, 835, + 836, 837, 838, 839, 840, 841, 842, 843, + 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, + + 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 177, 177, + 844, 844, 844, 844, 844, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 845, 845, 845, 845, 845, 845, + + 845, 845, 845, 845, 845, 845, 845, 845, + 845, 845, 846, 846, 177, 177, 177, 177, + 847, 847, 847, 847, 847, 848, 848, 848, + 847, 847, 848, 847, 847, 847, 847, 847, + + 847, 845, 845, 845, 845, 845, 845, 845, + 847, 847, 177, 177, 177, 177, 177, 177, 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 175, 175, 175, 175, 175, 175, - 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 175, 175, 175, 175, 175, 175, - - 859, 859, 859, 859, 859, 859, 859, 860, - 861, 861, 861, 861, 859, 859, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 862, 862, 862, 862, 863, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 865, 863, 862, 862, - 862, 862, 862, 863, 862, 863, 863, 863, - - 863, 863, 862, 863, 866, 864, 864, 864, - 864, 864, 864, 864, 175, 175, 175, 175, - 867, 868, 869, 870, 871, 872, 873, 874, - 875, 876, 877, 877, 878, 879, 877, 877, - - 879, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 881, 882, 881, 881, 881, - 881, 881, 881, 881, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 175, 175, 175, - - 883, 883, 884, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 804, 884, 883, 883, 883, 883, 884, 884, - 883, 883, 885, 886, 887, 887, 804, 804, - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 898, 898, 898, 898, 898, 898, - - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - - 899, 899, 899, 899, 899, 899, 900, 901, - 902, 902, 901, 901, 901, 902, 901, 902, - 902, 902, 903, 903, 175, 175, 175, 175, - 175, 175, 175, 175, 904, 904, 904, 904, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 804, 804, 804, 804, 884, 884, 884, 884, - 884, 884, 884, 884, 883, 883, 883, 883, - 883, 883, 883, 883, 884, 884, 883, 905, - 175, 175, 175, 906, 906, 907, 907, 907, - - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 175, 175, 175, 804, 804, 804, - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 804, 804, 804, 804, 804, 804, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 908, 908, 908, 908, 908, 908, 906, 906, - - 909, 909, 909, 909, 909, 909, 909, 909, - 175, 175, 175, 175, 175, 175, 175, 175, - 910, 910, 910, 911, 912, 913, 913, 913, - 913, 913, 910, 910, 913, 913, 913, 913, - - 910, 914, 912, 912, 912, 912, 912, 912, - 912, 754, 754, 754, 754, 913, 754, 754, - 754, 754, 914, 887, 915, 898, 898, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 857, 858, 859, 177, 177, 177, 860, 860, + + 861, 861, 861, 861, 861, 861, 861, 861, + 861, 861, 861, 861, 861, 861, 861, 861, + 861, 861, 861, 861, 861, 861, 861, 861, + 861, 861, 861, 861, 861, 861, 861, 861, + + 862, 862, 862, 862, 862, 862, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 863, + 864, 865, 865, 865, 177, 177, 866, 866, + + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 868, 869, 868, + 869, 869, 869, 869, 869, 869, 869, 177, + + 870, 871, 869, 871, 871, 869, 869, 869, + 869, 869, 869, 869, 869, 868, 868, 868, + 868, 868, 868, 869, 869, 872, 872, 872, + 872, 872, 872, 872, 872, 177, 177, 873, + + 874, 875, 876, 877, 878, 879, 880, 881, + 882, 883, 177, 177, 177, 177, 177, 177, + 874, 875, 876, 877, 878, 879, 880, 881, + 882, 883, 177, 177, 177, 177, 177, 177, + + 884, 884, 884, 884, 884, 884, 884, 885, + 886, 886, 886, 886, 884, 884, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 887, 887, 887, 887, 888, 889, 889, 889, + 889, 889, 889, 889, 889, 889, 889, 889, + 889, 889, 889, 889, 889, 889, 889, 889, + 889, 889, 889, 889, 889, 889, 889, 889, + + 889, 889, 889, 889, 889, 889, 889, 889, + 889, 889, 889, 889, 889, 889, 889, 889, + 889, 889, 889, 889, 890, 888, 887, 887, + 887, 887, 887, 888, 887, 888, 888, 888, + + 888, 888, 887, 888, 891, 889, 889, 889, + 889, 889, 889, 889, 177, 177, 177, 177, + 892, 893, 894, 895, 896, 897, 898, 899, + 900, 901, 902, 902, 903, 904, 902, 902, + + 904, 905, 905, 905, 905, 905, 905, 905, + 905, 905, 905, 906, 907, 906, 906, 906, + 906, 906, 906, 906, 905, 905, 905, 905, + 905, 905, 905, 905, 905, 177, 177, 177, + + 908, 908, 909, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 910, + + 910, 909, 908, 908, 908, 908, 909, 909, + 908, 908, 911, 912, 913, 913, 910, 910, + 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 924, 924, 924, 924, 924, + + 925, 925, 925, 925, 925, 925, 925, 925, + 925, 925, 925, 925, 925, 925, 925, 925, + 925, 925, 925, 925, 925, 925, 925, 925, + 925, 925, 925, 925, 925, 925, 925, 925, + + 925, 925, 925, 925, 925, 925, 926, 927, + 928, 928, 927, 927, 927, 928, 927, 928, + 928, 928, 929, 929, 177, 177, 177, 177, + 177, 177, 177, 177, 930, 930, 930, 930, + + 931, 931, 931, 931, 931, 931, 931, 931, + 931, 931, 931, 931, 931, 931, 931, 931, + 931, 931, 931, 931, 931, 931, 931, 931, + 931, 931, 931, 931, 931, 931, 931, 931, + + 931, 931, 931, 931, 932, 932, 932, 932, + 932, 932, 932, 932, 933, 933, 933, 933, + 933, 933, 933, 933, 932, 932, 933, 934, + 177, 177, 177, 935, 935, 936, 936, 936, + + 937, 938, 939, 940, 941, 942, 943, 944, + 945, 946, 177, 177, 177, 931, 931, 931, + 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 957, 957, 957, 957, 957, + + 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 957, 957, 957, 957, 957, 957, + 958, 958, 958, 958, 958, 958, 959, 959, + + 960, 960, 960, 960, 960, 960, 960, 960, + 177, 177, 177, 177, 177, 177, 177, 177, + 961, 961, 961, 962, 963, 964, 964, 964, + 964, 964, 961, 961, 964, 964, 964, 964, + + 961, 965, 963, 963, 963, 963, 963, 963, + 963, 966, 966, 966, 966, 964, 966, 966, + 966, 966, 965, 967, 968, 969, 969, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 916, 916, - 916, 916, 916, 917, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 918, 918, 918, + 105, 105, 105, 105, 105, 105, 970, 970, + 970, 970, 970, 971, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, - 918, 918, 918, 918, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 919, 919, 919, + 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 972, 972, 972, + 972, 972, 972, 972, 972, 973, 973, 973, - 919, 919, 918, 918, 918, 918, 919, 919, - 919, 919, 919, 105, 106, 106, 106, 106, + 973, 973, 972, 972, 972, 972, 973, 973, + 973, 973, 973, 105, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 920, 921, 106, 106, 106, 922, 106, 106, + 974, 975, 106, 106, 106, 976, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 106, 106, 923, 923, 923, 923, 923, + 106, 106, 106, 977, 977, 977, 977, 977, - 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 923, 923, 923, 923, 924, + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 978, - 165, 165, 164, 165, 925, 925, 925, 925, - 925, 925, 926, 927, 927, 928, 929, 930, - 931, 927, 927, 927, 927, 927, 927, 927, - 927, 927, 927, 927, 927, 927, 927, 927, + 167, 167, 166, 167, 979, 979, 979, 979, + 979, 979, 980, 981, 981, 982, 983, 984, + 985, 981, 981, 981, 981, 981, 981, 981, + 981, 981, 981, 981, 981, 981, 981, 981, - 927, 927, 927, 927, 927, 927, 927, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 932, 913, 925, 926, + 981, 981, 981, 981, 981, 981, 981, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 986, 964, 979, 980, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, - 67, 68, 67, 68, 67, 68, 933, 934, - 935, 936, 937, 938, 939, 939, 940, 939, + 67, 68, 67, 68, 67, 68, 987, 988, + 989, 990, 991, 992, 993, 993, 994, 993, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, 67, 68, - 67, 68, 941, 942, 941, 942, 941, 942, - - 943, 943, 943, 943, 943, 943, 943, 943, - 944, 944, 944, 944, 944, 944, 944, 944, - 943, 943, 943, 943, 943, 943, 175, 175, - 944, 944, 944, 944, 944, 944, 175, 175, - - 943, 943, 943, 943, 943, 943, 943, 943, - 944, 944, 944, 944, 944, 944, 944, 944, - 943, 943, 943, 943, 943, 943, 943, 943, - 944, 944, 944, 944, 944, 944, 944, 944, - - 943, 943, 943, 943, 943, 943, 175, 175, - 944, 944, 944, 944, 944, 944, 175, 175, - 945, 943, 946, 943, 947, 943, 948, 943, - 175, 944, 175, 944, 175, 944, 175, 944, - - 943, 943, 943, 943, 943, 943, 943, 943, - 944, 944, 944, 944, 944, 944, 944, 944, - 949, 949, 950, 950, 950, 950, 951, 951, - 952, 952, 953, 953, 954, 954, 175, 175, - - 955, 956, 957, 958, 959, 960, 961, 962, - 963, 964, 965, 966, 967, 968, 969, 970, - 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 981, 982, 983, 984, 985, 986, - - 987, 988, 989, 990, 991, 992, 993, 994, - 995, 996, 997, 998, 999, 1000, 1001, 1002, - 943, 943, 1003, 1004, 1005, 175, 1006, 1007, - 944, 944, 1008, 1008, 1009, 174, 1010, 174, - - 174, 174, 1011, 1012, 1013, 175, 1014, 1015, - 1016, 1016, 1016, 1016, 1017, 174, 174, 174, - 943, 943, 1018, 182, 175, 175, 1019, 1020, - 944, 944, 1021, 1021, 175, 174, 174, 174, - - 943, 943, 1022, 186, 1023, 204, 1024, 1025, - 944, 944, 1026, 1026, 1027, 174, 174, 174, - 175, 175, 1028, 1029, 1030, 175, 1031, 1032, - 1033, 1033, 1034, 1034, 1035, 1036, 174, 175, - - 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1038, - 1037, 1037, 1037, 1039, 1040, 1041, 1042, 1043, - 1044, 1045, 1044, 1046, 1047, 1048, 14, 14, - 1049, 1050, 1051, 1052, 1052, 1053, 1051, 1052, - - 14, 14, 14, 14, 1054, 1055, 1055, 1056, - 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, - 13, 13, 13, 13, 13, 1065, 1065, 1065, - 14, 1066, 1067, 14, 1068, 1068, 14, 43, - - 43, 14, 14, 14, 1069, 16, 1070, 1071, - 1072, 1072, 786, 786, 786, 786, 1073, 1073, - 1073, 1073, 1074, 1075, 1076, 1077, 1078, 1073, - 1078, 1078, 1078, 1078, 1077, 1078, 1078, 1079, - - 1080, 1081, 1081, 1081, 1082, 1083, 1083, 1083, - 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084, - 1085, 1086, 175, 175, 1087, 1088, 1089, 1090, - 1091, 1092, 1093, 1093, 36, 16, 1070, 142, - - 1085, 62, 57, 58, 1087, 1088, 1089, 1090, - 1091, 1092, 1093, 1093, 36, 16, 1070, 175, - 923, 923, 923, 923, 923, 1094, 1094, 1094, - 1094, 1094, 1094, 1094, 1094, 175, 175, 175, + 67, 68, 995, 996, 995, 996, 995, 996, + + 997, 997, 997, 997, 997, 997, 997, 997, + 998, 998, 998, 998, 998, 998, 998, 998, + 997, 997, 997, 997, 997, 997, 177, 177, + 998, 998, 998, 998, 998, 998, 177, 177, + + 997, 997, 997, 997, 997, 997, 997, 997, + 998, 998, 998, 998, 998, 998, 998, 998, + 997, 997, 997, 997, 997, 997, 997, 997, + 998, 998, 998, 998, 998, 998, 998, 998, + + 997, 997, 997, 997, 997, 997, 177, 177, + 998, 998, 998, 998, 998, 998, 177, 177, + 999, 997, 1000, 997, 1001, 997, 1002, 997, + 177, 998, 177, 998, 177, 998, 177, 998, + + 997, 997, 997, 997, 997, 997, 997, 997, + 998, 998, 998, 998, 998, 998, 998, 998, + 1003, 1003, 1004, 1004, 1004, 1004, 1005, 1005, + 1006, 1006, 1007, 1007, 1008, 1008, 177, 177, + + 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, + 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, + 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, + 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, + + 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, + 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, + 997, 997, 1057, 1058, 1059, 177, 1060, 1061, + 998, 998, 1062, 1062, 1063, 176, 1064, 176, + + 176, 176, 1065, 1066, 1067, 177, 1068, 1069, + 1070, 1070, 1070, 1070, 1071, 176, 176, 176, + 997, 997, 1072, 184, 177, 177, 1073, 1074, + 998, 998, 1075, 1075, 177, 176, 176, 176, + + 997, 997, 1076, 188, 1077, 208, 1078, 1079, + 998, 998, 1080, 1080, 1081, 176, 176, 176, + 177, 177, 1082, 1083, 1084, 177, 1085, 1086, + 1087, 1087, 1088, 1088, 1089, 1090, 176, 177, + + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1092, + 1091, 1091, 1091, 1093, 1094, 1095, 1096, 1097, + 1098, 1099, 1098, 1100, 1101, 1102, 14, 14, + 1103, 1104, 1105, 1106, 1106, 1107, 1105, 1106, + + 14, 14, 14, 14, 1108, 1109, 1109, 1110, + 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, + 13, 13, 13, 13, 13, 1119, 1119, 1119, + 14, 1120, 1121, 14, 1122, 1122, 14, 43, + + 43, 14, 14, 14, 1123, 16, 1124, 1125, + 1126, 1126, 1127, 1127, 1127, 1127, 1128, 1128, + 1128, 1128, 1129, 1130, 1131, 1132, 1133, 1128, + 1133, 1133, 1133, 1133, 1132, 1133, 1133, 1134, + + 1135, 1136, 1136, 1136, 1137, 1138, 1138, 1138, + 1138, 1138, 1139, 1139, 1139, 1139, 1139, 1139, + 1140, 1141, 177, 177, 1142, 1143, 1144, 1145, + 1146, 1147, 1148, 1148, 36, 16, 1124, 142, + + 1140, 62, 57, 58, 1142, 1143, 1144, 1145, + 1146, 1147, 1148, 1148, 36, 16, 1124, 177, + 977, 977, 977, 977, 977, 1149, 1149, 1149, + 1149, 1149, 1149, 1149, 1149, 177, 177, 177, 12, 12, 12, 12, 12, 12, 12, 50, - 12, 12, 12, 1095, 1096, 1097, 1097, 1097, - 1098, 1098, 1099, 1099, 1099, 1099, 1100, 1101, - 1101, 1102, 1103, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 151, 151, 156, 156, 151, 151, 151, 151, - 156, 156, 156, 151, 151, 1104, 1104, 1104, - - 1104, 151, 1105, 1105, 1106, 1107, 1107, 171, - 1108, 171, 1107, 1109, 926, 926, 926, 926, - 927, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 51, 51, 1110, 1111, 51, 51, 51, 1110, - 51, 1111, 71, 1110, 1110, 1110, 71, 71, - 1110, 1110, 1110, 71, 51, 1110, 1112, 51, - 36, 1110, 1110, 1110, 1110, 1110, 51, 51, - - 51, 51, 51, 51, 1110, 51, 1113, 51, - 1110, 51, 1114, 1115, 1110, 1110, 1116, 71, - 1110, 1110, 1117, 1110, 71, 93, 93, 93, - 93, 141, 1118, 811, 106, 1119, 1120, 1120, - - 1074, 1074, 1074, 1074, 1074, 1120, 1119, 1119, - 1119, 1119, 1121, 1074, 752, 1122, 1123, 1124, - 1125, 1125, 1125, 64, 64, 64, 64, 64, + 12, 12, 12, 1150, 1151, 1152, 1152, 1152, + 1153, 1153, 1154, 1154, 1154, 1154, 1155, 1156, + 1156, 1157, 1158, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 153, 153, 158, 158, 153, 153, 153, 153, + 158, 158, 158, 153, 153, 1159, 1159, 1159, + + 1159, 153, 1160, 1160, 1161, 1162, 1162, 173, + 1163, 173, 1162, 1164, 980, 980, 980, 980, + 981, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 51, 51, 1165, 1166, 51, 51, 51, 1165, + 51, 1166, 1167, 1165, 1165, 1165, 1167, 1167, + 1165, 1165, 1165, 1167, 51, 1165, 1168, 51, + 36, 1165, 1165, 1165, 1165, 1165, 51, 51, + + 51, 51, 51, 51, 1165, 51, 1169, 51, + 1165, 51, 1170, 1171, 1165, 1165, 1172, 1167, + 1165, 1165, 1173, 1165, 1167, 1174, 1174, 1174, + 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1180, + + 1129, 1129, 1129, 1129, 1129, 1180, 1179, 1179, + 1179, 1179, 1181, 1129, 1182, 1183, 1184, 1185, + 1186, 1186, 1186, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, - 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, - 1128, 1128, 1128, 102, 113, 1129, 1129, 1129, - 1129, 1125, 175, 175, 175, 175, 175, 175, + 1189, 1189, 1189, 102, 113, 1190, 1190, 1190, + 1190, 1186, 177, 177, 177, 177, 177, 177, 36, 36, 36, 36, 36, 51, 51, 51, 51, 51, 36, 36, 51, 51, 51, 51, @@ -2020,134 +2035,134 @@ static const unsigned short uc_property_trie[] = { 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 1118, 1118, 1118, 1118, 1118, - 1118, 1118, 1118, 1118, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 51, 51, 51, 1176, 1176, 1176, 1176, 1176, + 1176, 1176, 1176, 1176, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 36, 36, 36, 36, 36, 36, 36, 36, - 1130, 1130, 1130, 1131, 1131, 1131, 36, 36, - 36, 36, 18, 56, 36, 1132, 36, 36, + 1191, 1191, 1191, 1192, 1192, 1192, 36, 36, + 36, 36, 18, 56, 36, 1193, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1133, 1134, 36, 36, + 36, 36, 36, 36, 1194, 1195, 36, 36, - 36, 36, 36, 1135, 36, 36, 36, 36, + 36, 36, 36, 1196, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 1133, 1134, 1133, 1134, 36, 36, + 36, 36, 1194, 1195, 1194, 1195, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1133, 1134, 1133, 1134, - 1133, 1134, 1133, 1134, 36, 36, 1133, 1134, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, + 36, 36, 36, 36, 1194, 1195, 1194, 1195, + 1194, 1195, 1194, 1195, 36, 36, 1194, 1195, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, - 1133, 1134, 1133, 1134, 36, 36, 36, 1133, - 1134, 1133, 1134, 36, 36, 36, 36, 36, - 1136, 36, 36, 36, 36, 36, 36, 36, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, + 1194, 1195, 1194, 1195, 36, 36, 36, 1194, + 1195, 1194, 1195, 36, 36, 36, 36, 36, + 1197, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 1133, 1134, 36, 36, 1137, 36, - 1138, 1139, 36, 1139, 36, 36, 36, 36, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, + 36, 36, 1194, 1195, 36, 36, 1198, 36, + 1199, 1200, 36, 1200, 36, 36, 36, 36, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 1133, 1134, 1133, 1134, 1140, 36, 36, - 1133, 1134, 36, 36, 36, 36, 1133, 1134, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, + 36, 1194, 1195, 1194, 1195, 1201, 36, 36, + 1194, 1195, 36, 36, 36, 36, 1194, 1195, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, - 1133, 1134, 1133, 1134, 1133, 1134, 1133, 1134, - 1133, 1134, 1133, 1134, 1133, 1134, 36, 36, - 1133, 1134, 1141, 1141, 1141, 1074, 1142, 1142, - 1074, 1074, 1143, 1143, 1143, 1144, 1144, 1074, + 1194, 1195, 1194, 1195, 1194, 1195, 1194, 1195, + 1194, 1195, 1194, 1195, 1194, 1195, 36, 36, + 1194, 1195, 1202, 1202, 1202, 1129, 1203, 1203, + 1129, 1129, 1204, 1204, 1204, 1205, 1205, 1129, - 51, 1118, 51, 51, 51, 51, 51, 51, - 1133, 1134, 1133, 1134, 51, 51, 51, 51, + 51, 1176, 51, 51, 51, 51, 51, 51, + 1194, 1195, 1194, 1195, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 1145, 1145, 51, 51, 51, 51, + 51, 51, 1206, 1206, 51, 51, 51, 51, 36, 36, 51, 51, 51, 51, 51, 51, - 51, 16, 1070, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1118, 1074, 1118, 1118, 1118, - - 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, - 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, - 1118, 1118, 1118, 1118, 1118, 1147, 1118, 1118, - 1118, 1118, 1118, 1074, 1074, 1074, 1074, 1074, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1121, 1121, 1121, 1121, - 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, - - 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, - 1121, 1121, 1121, 1121, 1121, 1121, 1121, 811, - 811, 752, 752, 752, 752, 752, 752, 752, - 752, 752, 752, 752, 1148, 1148, 1148, 1148, - - 1148, 1148, 1122, 1122, 1122, 1122, 1122, 1122, - 1149, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1151, 1151, 1151, 1151, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 51, 16, 1124, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1176, 1129, 1176, 1176, 1176, + + 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, + 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, + 1176, 1176, 1176, 1176, 1176, 1208, 1176, 1176, + 1176, 1176, 1176, 1129, 1129, 1129, 1129, 1129, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1177, + 1177, 1182, 1182, 1182, 1182, 1182, 1182, 1182, + 1182, 1182, 1182, 1182, 1209, 1209, 1209, 1209, + + 1209, 1209, 1183, 1183, 1183, 1183, 1183, 1183, + 1210, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1212, 1212, 1212, 1212, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 1118, 1118, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 51, 51, 51, 51, 51, 1176, 1176, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 51, 51, 51, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, - 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, - 1160, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 1152, 1153, 1154, 1155, - 1156, 1157, 1158, 1159, 1160, 64, 64, 64, + 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, + 1221, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 1213, 1214, 1215, 1216, + 1217, 1218, 1219, 1220, 1221, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 62, 57, 58, 1087, 1088, 1089, 1090, 1091, - 1092, 1161, 1161, 1161, 1161, 1161, 1161, 1161, - 1161, 1161, 1161, 1161, 1146, 1146, 1146, 1146, + 62, 57, 58, 1142, 1143, 1144, 1145, 1146, + 1147, 1222, 1222, 1222, 1222, 1222, 1222, 1222, + 1222, 1222, 1222, 1222, 1207, 1207, 1207, 1207, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1146, 1146, 1162, 1162, - 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1223, 1223, + 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, - 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, - 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, - 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, - 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, + 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, + 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, + 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, + 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, - 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, - 1163, 1163, 1164, 1165, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 1166, 1167, 1168, - 1169, 1170, 1171, 1172, 1173, 1174, 1165, 1175, + 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, + 1224, 1224, 1225, 1226, 1226, 1226, 1226, 1226, + 1226, 1226, 1226, 1226, 1226, 1227, 1228, 1229, + 1230, 1231, 1232, 1233, 1234, 1235, 1226, 1236, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1121, 1121, - 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, + 51, 51, 51, 51, 51, 51, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, @@ -2161,721 +2176,196 @@ static const unsigned short uc_property_trie[] = { 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1145, 1145, 1145, 1145, 51, 51, 51, 51, + 1206, 1206, 1206, 1206, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1176, 1176, 1121, 1121, - 1177, 1118, 1145, 1145, 1145, 1145, 1145, 1145, + 51, 51, 51, 51, 1237, 1237, 1181, 1181, + 1238, 1176, 1206, 1206, 1206, 1206, 1206, 1206, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 1145, 1145, 1145, 51, 51, 51, 51, + 51, 1206, 1206, 1206, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1145, 51, 51, 51, 51, 51, 51, 36, - 1118, 1118, 1121, 1121, 1121, 1121, 1121, 1121, - 1121, 1121, 1121, 1121, 1121, 1121, 752, 1177, - - 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, - 1121, 1121, 811, 811, 811, 811, 811, 811, - 811, 811, 752, 752, 752, 752, 752, 752, - 752, 752, 752, 752, 752, 1178, 1149, 1149, - - 811, 811, 752, 752, 752, 752, 752, 752, - 752, 752, 752, 752, 1179, 752, 752, 752, - 752, 752, 1122, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1180, 1180, 1180, - - 1181, 1181, 1181, 1181, 1180, 1180, 1180, 1180, - 1180, 1149, 1149, 1149, 1149, 1180, 1150, 1180, - 1180, 1180, 1149, 1180, 1180, 1149, 1149, 1149, - 1180, 1180, 1149, 1149, 1180, 1149, 1149, 1180, - - 1180, 1180, 1150, 1149, 1150, 1150, 1150, 1150, - 1149, 1149, 1180, 1149, 1149, 1149, 1149, 1149, - 1149, 1180, 1180, 1180, 1180, 1180, 1149, 1180, - 1180, 1180, 1180, 1149, 1149, 1180, 1180, 1180, - - 175, 1145, 1145, 1145, 1145, 1150, 51, 51, - 1145, 1145, 1151, 1151, 1145, 1145, 51, 51, + 1206, 51, 51, 51, 51, 51, 51, 36, + 1176, 1176, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1238, + + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1181, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1182, 1182, 1182, 1182, 1182, 1182, + 1182, 1182, 1182, 1182, 1182, 1239, 1210, 1210, + + 1177, 1177, 1182, 1182, 1182, 1182, 1182, 1182, + 1182, 1182, 1182, 1182, 1240, 1182, 1182, 1182, + 1182, 1182, 1183, 1239, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1239, 1241, 1241, 1241, + + 1242, 1242, 1242, 1242, 1241, 1241, 1241, 1241, + 1241, 1210, 1210, 1210, 1210, 1241, 1211, 1241, + 1241, 1241, 1210, 1241, 1241, 1210, 1210, 1210, + 1241, 1241, 1210, 1210, 1241, 1210, 1210, 1241, + + 1241, 1241, 1211, 1210, 1211, 1211, 1211, 1211, + 1210, 1210, 1241, 1210, 1210, 1210, 1210, 1210, + 1210, 1241, 1241, 1241, 1241, 1241, 1210, 1241, + 1241, 1241, 1241, 1210, 1210, 1241, 1241, 1241, + + 177, 1206, 1206, 1206, 1206, 1211, 51, 51, + 1206, 1206, 1212, 1212, 1206, 1206, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1150, 51, 51, 51, 51, 51, 51, 51, + 1211, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1150, 51, 1150, 51, - 51, 51, 51, 1150, 1150, 1150, 51, 1149, - 51, 51, 51, 1182, 1182, 1182, 1182, 1150, - - 1150, 51, 1183, 1183, 51, 51, 51, 51, - 1184, 1185, 1184, 1185, 1184, 1185, 1184, 1185, - 1184, 1185, 1184, 1185, 1184, 1185, 1152, 1153, - 1154, 1155, 1156, 1157, 1158, 1159, 1160, 64, - - 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, - 1160, 64, 1152, 1153, 1154, 1155, 1156, 1157, - 1158, 1159, 1160, 64, 51, 1150, 1150, 1150, + 51, 51, 51, 51, 1211, 51, 1211, 51, + 51, 51, 51, 1211, 1211, 1211, 51, 1210, + 51, 51, 51, 1243, 1243, 1243, 1243, 1211, + + 1211, 51, 1244, 1244, 51, 51, 51, 51, + 1245, 1246, 1245, 1246, 1245, 1246, 1245, 1246, + 1245, 1246, 1245, 1246, 1245, 1246, 1213, 1214, + 1215, 1216, 1217, 1218, 1219, 1220, 1221, 64, + + 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, + 1221, 64, 1213, 1214, 1215, 1216, 1217, 1218, + 1219, 1220, 1221, 64, 51, 1211, 1211, 1211, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1150, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 1150, - - 1186, 1186, 1186, 1187, 1188, 1189, 1190, 1148, - 1191, 1192, 1148, 1193, 1194, 1195, 1196, 1196, - 1074, 1074, 1074, 1074, 1074, 1197, 1198, 1074, - 1074, 1074, 1074, 1074, 1074, 1197, 1198, 1074, - - 1074, 1074, 1197, 1198, 1197, 1198, 1184, 1185, - 1184, 1185, 1184, 1185, 1199, 1200, 1199, 1200, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - - 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, - 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, - 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, - 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - - 1074, 1074, 1074, 1184, 1185, 1184, 1185, 1184, - 1185, 1184, 1185, 1184, 1185, 1201, 1202, 1203, - 1204, 1184, 1185, 1184, 1185, 1184, 1185, 1184, - 1185, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1205, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - - 1197, 1198, 1074, 1074, 1197, 1198, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1197, - 1198, 1197, 1198, 1074, 1197, 1198, 1074, 1074, - 1184, 1185, 1184, 1185, 1074, 1074, 1074, 1074, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1206, 1074, 1074, - 1197, 1198, 1074, 1074, 1184, 1185, 1074, 1074, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1197, 1198, 1197, 1198, 1074, - 1074, 1074, 1074, 1074, 1197, 1198, 1074, 1074, - 1074, 1074, 1074, 1074, 1197, 1198, 1074, 1074, - - 1074, 1074, 1074, 1074, 1197, 1198, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 1074, 1197, 1198, 1074, 1074, 1197, 1198, 1197, - - 1198, 1197, 1198, 1197, 1198, 1074, 1074, 1074, - 1074, 1074, 1074, 1197, 1198, 1074, 1074, 1074, - 1074, 1197, 1198, 1197, 1198, 1197, 1198, 1197, - 1198, 1197, 1198, 1197, 1198, 1074, 1074, 1074, - - 1074, 1197, 1198, 1074, 1074, 1074, 1197, 1198, - 1197, 1198, 1197, 1198, 1197, 1198, 1074, 1197, - 1198, 1074, 1074, 1197, 1198, 1074, 1074, 1074, - 1074, 1074, 1074, 1197, 1198, 1197, 1198, 1197, - - 1198, 1197, 1198, 1197, 1198, 1197, 1198, 1074, - 1074, 1074, 1074, 1074, 1074, 1197, 1198, 1197, - 1198, 1197, 1198, 1197, 1198, 1197, 1198, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1207, 1074, - - 1074, 1074, 1074, 1208, 1209, 1208, 1074, 1074, - 1074, 1074, 1074, 1074, 1197, 1198, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1197, - 1198, 1197, 1198, 1074, 1074, 1074, 1074, 1074, - - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 752, 752, - 752, 752, 752, 752, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1178, 1178, 1178, 1178, 1178, - - 1122, 1122, 1122, 1122, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - - 1194, 1194, 1194, 1194, 1194, 1178, 1178, 1194, - 1194, 1194, 1194, 1194, 1194, 175, 175, 175, - 1178, 1178, 1178, 1178, 1178, 1149, 1149, 1149, - 1149, 1149, 175, 175, 175, 175, 175, 175, - - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1210, 1210, 1210, 175, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, - - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 175, - - 117, 113, 1212, 1213, 1214, 1215, 1216, 117, - 113, 117, 113, 117, 113, 1217, 1218, 1219, - 1220, 939, 941, 942, 1221, 117, 113, 1221, - 939, 939, 939, 939, 1222, 1222, 1223, 1223, - - 108, 109, 108, 109, 108, 109, 108, 109, - 108, 109, 108, 109, 108, 109, 108, 109, - 108, 109, 108, 109, 108, 109, 108, 109, - 108, 109, 108, 109, 108, 109, 108, 109, - - 108, 109, 108, 109, 106, 752, 752, 752, - 752, 752, 752, 1224, 1225, 1224, 1225, 390, - 390, 390, 1226, 1227, 175, 175, 175, 175, - 175, 1228, 1078, 1078, 1078, 1229, 1228, 1078, - - 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, - 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, - 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, - 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, - - 1230, 1230, 1230, 1230, 1230, 1230, 175, 1231, - 175, 175, 175, 175, 175, 1231, 175, 175, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - - 735, 735, 735, 735, 735, 735, 898, 898, - 175, 175, 175, 175, 175, 175, 175, 1232, - 1233, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 1234, - - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 735, 735, 735, 735, 735, 735, 735, 175, - 735, 735, 735, 735, 735, 735, 735, 175, - 735, 735, 735, 735, 735, 735, 735, 175, - 735, 735, 735, 735, 735, 735, 735, 175, - - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - - 1235, 1235, 1236, 1237, 1236, 1237, 1235, 1235, - 1235, 1236, 1237, 1235, 1236, 1237, 1078, 1078, - 1078, 1078, 1078, 1078, 1078, 1078, 1077, 1238, - 1239, 1240, 1241, 1242, 1236, 1237, 1242, 1242, - - 1243, 1244, 1199, 1200, 1199, 1200, 1199, 1200, - 1199, 1200, 1240, 1240, 1240, 1240, 1245, 1246, - 1240, 1247, 1248, 1249, 1249, 1248, 1248, 1248, - 1248, 1248, 1250, 1250, 175, 175, 175, 175, - - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 175, 1251, 1251, 1251, 1251, 1251, - - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 175, 175, 175, 175, - - 1252, 1253, 1254, 1255, 1145, 1256, 1257, 1258, - 16, 1070, 16, 1070, 16, 1070, 16, 1070, - 16, 1070, 1145, 1145, 16, 1070, 16, 1070, - 16, 1070, 16, 1070, 1259, 1051, 1260, 1260, - - 1145, 1258, 1258, 1258, 1258, 1258, 1258, 1258, - 1258, 1258, 1261, 1262, 152, 1263, 1264, 1264, - 1265, 1266, 1266, 1266, 1266, 1266, 1145, 1145, - 1267, 1267, 1267, 1268, 1269, 1270, 1251, 1145, - - 175, 1271, 1257, 1271, 1257, 1271, 1257, 1271, - 1257, 1271, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - - 1257, 1257, 1257, 1271, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - - 1257, 1257, 1257, 1271, 1257, 1271, 1257, 1271, - 1257, 1257, 1257, 1257, 1257, 1257, 1271, 1257, - 1257, 1257, 1257, 1257, 1257, 1272, 1272, 175, - 175, 1273, 1273, 1274, 1274, 1275, 1275, 1276, - - 1277, 1278, 1279, 1278, 1279, 1278, 1279, 1278, - 1279, 1278, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - - 1279, 1279, 1279, 1278, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, - - 1279, 1279, 1279, 1278, 1279, 1278, 1279, 1278, - 1279, 1279, 1279, 1279, 1279, 1279, 1278, 1279, - 1279, 1279, 1279, 1279, 1279, 1278, 1278, 1279, - 1279, 1279, 1279, 1280, 1281, 1281, 1281, 1282, - - 175, 175, 175, 175, 175, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, - - 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 1284, 175, 175, - 175, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, - 1285, 1285, 1285, 1285, 1285, 1285, 1285, 175, - 1286, 1286, 1287, 1287, 1287, 1287, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1289, 1289, 1289, 175, 175, 175, 175, 175, + 1211, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 1211, + + 1247, 1247, 1247, 1248, 1249, 1250, 1251, 1209, + 1252, 1253, 1209, 1254, 1255, 1256, 1257, 1257, + 1129, 1129, 1129, 1129, 1129, 1258, 1259, 1129, + 1129, 1129, 1129, 1129, 1129, 1258, 1259, 1129, + + 1129, 1129, 1258, 1259, 1258, 1259, 1245, 1246, + 1245, 1246, 1245, 1246, 1260, 1261, 1260, 1261, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + + 1129, 1129, 1129, 1245, 1246, 1245, 1246, 1245, + 1246, 1245, 1246, 1245, 1246, 1263, 1264, 1265, + 1266, 1245, 1246, 1245, 1246, 1245, 1246, 1245, + 1246, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1267, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + + 1258, 1259, 1129, 1129, 1258, 1259, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1258, + 1259, 1258, 1259, 1129, 1258, 1259, 1129, 1129, + 1245, 1246, 1245, 1246, 1129, 1129, 1129, 1129, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1268, 1129, 1129, + 1258, 1259, 1129, 1129, 1245, 1246, 1129, 1129, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1258, 1259, 1258, 1259, 1129, + 1129, 1129, 1129, 1129, 1258, 1259, 1129, 1129, + 1129, 1129, 1129, 1129, 1258, 1259, 1129, 1129, + + 1129, 1129, 1129, 1129, 1258, 1259, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1258, 1259, 1129, 1129, 1258, 1259, 1258, + + 1259, 1258, 1259, 1258, 1259, 1129, 1129, 1129, + 1129, 1129, 1129, 1258, 1259, 1129, 1129, 1129, + 1129, 1258, 1259, 1258, 1259, 1258, 1259, 1258, + 1259, 1258, 1259, 1258, 1259, 1129, 1129, 1129, + + 1129, 1258, 1259, 1129, 1129, 1129, 1258, 1259, + 1258, 1259, 1258, 1259, 1258, 1259, 1129, 1258, + 1259, 1129, 1129, 1258, 1259, 1129, 1129, 1129, + 1129, 1129, 1129, 1258, 1259, 1258, 1259, 1258, + + 1259, 1258, 1259, 1258, 1259, 1258, 1259, 1129, + 1129, 1129, 1129, 1129, 1129, 1258, 1259, 1258, + 1259, 1258, 1259, 1258, 1259, 1258, 1259, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1269, 1129, + + 1129, 1129, 1129, 1270, 1271, 1270, 1129, 1129, + 1129, 1129, 1129, 1129, 1258, 1259, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1258, + 1259, 1258, 1259, 1129, 1129, 1129, 1129, 1129, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - - 1181, 1181, 1181, 1181, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, - 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, - - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1291, 1292, 1292, 175, - - 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, - 1287, 1287, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - - 1286, 1286, 1286, 1286, 1293, 1293, 1293, 1293, - 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, - 1176, 1295, 1295, 1295, 1295, 1295, 1295, 1295, - 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, - - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 1291, 1291, 1291, 1292, 1292, 1296, 1286, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1295, 1295, 1295, 1295, 1295, 1295, 1295, - 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1176, 1176, 1176, 1176, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 175, - - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1176, - 1176, 1176, 1176, 1286, 1286, 1286, 1286, 1286, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1176, 1176, - - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1176, + 1177, 1177, 1177, 1177, 1177, 1177, 1182, 1182, + 1182, 1182, 1182, 1182, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1239, 1239, 1239, 1239, 1239, + + 1183, 1183, 1183, 1183, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, + 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + + 1255, 1255, 1255, 1255, 1255, 1239, 1239, 1255, + 1255, 1255, 1255, 1255, 1255, 177, 177, 177, + 1239, 1239, 1239, 1239, 1239, 1210, 1210, 1210, + 1210, 1210, 177, 177, 177, 177, 177, 177, + + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, + 1272, 1272, 1272, 1272, 1272, 1272, 1272, 177, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 177, + + 117, 113, 1274, 1275, 1276, 1277, 1278, 117, + 113, 117, 113, 117, 113, 1279, 1280, 1281, + 1282, 993, 995, 996, 1283, 117, 113, 1283, + 993, 993, 993, 993, 1284, 1284, 1285, 1285, + + 1286, 1287, 1286, 1287, 1286, 1287, 1286, 1287, + 1286, 1287, 1286, 1287, 1286, 1287, 1286, 1287, + 1286, 1287, 1286, 1287, 1286, 1287, 1286, 1287, + 1286, 1287, 1286, 1287, 1286, 1287, 1286, 1287, + + 1286, 1287, 1286, 1287, 1288, 1289, 1289, 1289, + 1289, 1289, 1289, 1290, 1291, 1290, 1291, 1292, + 1292, 1292, 1293, 1294, 177, 177, 177, 177, + 177, 1295, 1296, 1296, 1296, 1297, 1295, 1296, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, - 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, - 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, - 1298, 1298, 1298, 1298, 1298, 1298, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - - 1257, 1257, 1257, 1257, 1257, 1257, 1300, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1300, 1300, 1301, 1301, 1301, 1301, - - 1301, 1301, 1301, 1301, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1303, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1304, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - - 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 175, 175, 175, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - - 1251, 1251, 1305, 1305, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1305, 1251, 1251, 1251, - 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - - 1251, 1305, 1251, 1251, 1251, 1305, 1251, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 1306, 1306, 1306, 1306, 1306, 1306, 1307, 1308, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 908, 1240, 1245, 1309, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 804, 804, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 236, 237, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - - 240, 241, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 1310, 224, - 1311, 1311, 1311, 1312, 1313, 1313, 1313, 1313, - 1313, 1313, 1313, 1313, 224, 224, 1312, 1314, - - 236, 237, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - 236, 237, 236, 237, 236, 237, 236, 237, - 175, 175, 175, 175, 175, 175, 175, 1313, - - 754, 754, 754, 754, 754, 754, 1315, 1315, - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 390, 390, 911, 1308, 1307, 1307, 1307, 1308, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, - 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, - 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1317, - 1317, 1317, 1317, 1246, 1246, 1246, 1246, 1246, - - 1318, 1318, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - 939, 939, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - - 941, 942, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - - 941, 942, 941, 942, 941, 942, 941, 942, - 941, 942, 941, 942, 941, 942, 941, 942, - 1222, 939, 939, 939, 939, 939, 939, 939, - 939, 941, 942, 941, 942, 1319, 941, 942, - - 941, 942, 941, 942, 941, 942, 941, 942, - 1246, 1320, 1320, 941, 942, 1321, 1322, 175, - 1323, 1324, 1226, 1227, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1323, 1324, 1323, 1324, 1323, 1324, 1323, 1324, - 1323, 1324, 1325, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1326, 1326, 1322, 804, 804, 804, 804, 804, - - 735, 735, 1327, 735, 735, 735, 1328, 735, - 735, 735, 735, 1327, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, 735, 735, 735, - - 735, 735, 735, 842, 842, 1327, 1327, 842, - 752, 752, 752, 752, 175, 175, 175, 175, - 1294, 1294, 1294, 1294, 1294, 1294, 681, 681, - 1100, 1329, 175, 175, 175, 175, 175, 175, - - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 1330, 1330, 1331, 1331, - 175, 175, 175, 175, 175, 175, 175, 175, - - 884, 884, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 884, 884, 884, 884, - 884, 884, 884, 884, 884, 884, 884, 884, - - 884, 884, 884, 884, 1332, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 906, 906, - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 175, 175, 175, 175, 175, 175, - - 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, - 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, - 1333, 1333, 431, 431, 431, 431, 431, 431, - 1334, 1334, 1334, 431, 175, 175, 175, 175, - - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 804, 804, 804, 804, 804, 804, 883, 883, - 883, 883, 883, 1335, 1335, 1335, 907, 906, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - - 804, 804, 804, 804, 804, 804, 804, 883, - 883, 883, 883, 883, 883, 883, 883, 883, - 883, 883, 884, 885, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 1336, - - 729, 729, 729, 729, 729, 729, 729, 729, - 729, 729, 729, 729, 729, 729, 729, 729, - 729, 729, 729, 729, 729, 729, 729, 729, - 729, 729, 729, 729, 729, 175, 175, 175, - - 1337, 1337, 1337, 914, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 1338, 914, 914, 1337, 1337, - 1337, 1337, 914, 914, 1337, 914, 914, 914, - - 1339, 911, 911, 911, 911, 911, 911, 1307, - 1308, 1308, 911, 911, 911, 911, 175, 1306, - 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 175, 175, 175, 175, 911, 911, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 883, 883, 883, 883, 883, 883, 884, - 884, 883, 883, 884, 884, 883, 883, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 804, 804, 804, 883, 804, 804, 804, 804, - 804, 804, 804, 804, 883, 884, 175, 175, - 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 175, 175, 1336, 906, 906, 906, - - 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, - 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, - 1341, 1340, 1340, 1340, 1340, 1340, 1340, 1342, - 1342, 1342, 1340, 717, 175, 175, 175, 175, - - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - 847, 825, 847, 847, 1343, 825, 825, 847, - 847, 825, 825, 825, 825, 825, 847, 847, - - 825, 847, 825, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 825, 825, 860, 859, 859, - - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 887, 1344, 1344, 887, 887, - 1345, 1345, 898, 1346, 1346, 887, 886, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 899, 899, 899, 899, 899, 899, 175, - 175, 899, 899, 899, 899, 899, 899, 175, - 175, 899, 899, 899, 899, 899, 899, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 899, 899, 899, 899, 899, 899, 899, 175, - 899, 899, 899, 899, 899, 899, 899, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 754, 754, 754, 914, 914, 1337, 914, 914, - 1337, 914, 914, 1308, 914, 1347, 175, 175, - 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 175, 175, 175, 175, 175, 175, - - 1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1348, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1348, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1348, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 1348, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, - - 1349, 1349, 1349, 1349, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 731, 731, 731, 731, 731, 731, 731, 731, - 731, 731, 731, 731, 731, 731, 731, 731, - - 731, 731, 731, 731, 731, 731, 731, 175, - 175, 175, 175, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 733, 733, 733, 733, - - 733, 733, 733, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 175, 175, 175, 175, - - 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, - 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, - 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, - 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, - - 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1303, 1303, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1302, 1302, 1302, 1299, 1299, + 1298, 1298, 1298, 1298, 1298, 1298, 177, 1299, + 177, 177, 177, 177, 177, 1299, 177, 177, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, @@ -2884,1886 +2374,2456 @@ static const unsigned short uc_property_trie[] = { 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, - 1300, 1300, 1299, 1299, 1299, 1299, 1299, 1299, - - 1352, 1353, 1354, 1355, 1356, 1357, 1357, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 1358, 1359, 1360, 1361, 1362, - 175, 175, 175, 175, 175, 1363, 1364, 279, - - 279, 279, 279, 279, 279, 279, 279, 279, - 279, 1365, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 252, - 279, 279, 279, 279, 279, 252, 279, 252, - - 279, 279, 252, 279, 279, 252, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 1366, 1366, 1366, 1366, 1366, 1366, - 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, - - 1366, 1366, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 1051, 1260, - - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, + 1300, 1300, 1300, 1300, 1300, 1300, 1301, 1301, + 177, 177, 177, 177, 177, 177, 177, 1302, + 1303, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 1304, + + 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 739, 739, 739, 739, 739, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 739, 739, 739, 739, 739, 739, 739, 177, + 739, 739, 739, 739, 739, 739, 739, 177, + 739, 739, 739, 739, 739, 739, 739, 177, + 739, 739, 739, 739, 739, 739, 739, 177, + + 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, + + 1305, 1305, 1306, 1307, 1306, 1307, 1305, 1305, + 1305, 1306, 1307, 1305, 1306, 1307, 1133, 1133, + 1133, 1133, 1133, 1133, 1133, 1133, 1132, 1308, + 1309, 1310, 1311, 1312, 1306, 1307, 1312, 1312, + + 1313, 1314, 1260, 1261, 1260, 1261, 1260, 1261, + 1260, 1261, 1310, 1310, 1310, 1310, 1315, 1316, + 1310, 1317, 1318, 1319, 1319, 1318, 1318, 1318, + 1318, 1318, 1320, 1320, 177, 177, 177, 177, + + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 177, 1321, 1321, 1321, 1321, 1321, + + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 1321, 1321, 1321, 1321, 1321, 1321, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, + 1322, 1322, 1322, 1322, 177, 177, 177, 177, + + 1323, 1324, 1325, 1326, 1206, 1327, 1328, 1329, + 16, 1124, 16, 1124, 16, 1124, 16, 1124, + 16, 1124, 1206, 1206, 16, 1124, 16, 1124, + 16, 1124, 16, 1124, 1330, 1105, 1331, 1331, + + 1206, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1332, 1333, 154, 1334, 1335, 1335, + 1336, 1337, 1337, 1337, 1337, 1337, 1206, 1206, + 1338, 1338, 1338, 1339, 1340, 1341, 1322, 1206, + + 177, 1342, 1343, 1342, 1343, 1342, 1343, 1342, + 1343, 1342, 1343, 1343, 1343, 1343, 1343, 1343, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, + + 1343, 1343, 1343, 1342, 1343, 1343, 1343, 1343, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, + 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, + + 1343, 1343, 1343, 1342, 1343, 1342, 1343, 1342, + 1343, 1343, 1343, 1343, 1343, 1343, 1342, 1343, + 1343, 1343, 1343, 1343, 1343, 1344, 1344, 177, + 177, 1345, 1345, 1346, 1346, 1347, 1347, 1348, + + 1349, 1350, 1351, 1350, 1351, 1350, 1351, 1350, + 1351, 1350, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 284, 284, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, + 1351, 1351, 1351, 1350, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, - 300, 300, 300, 300, 300, 300, 300, 300, - 284, 284, 284, 284, 284, 284, 284, 284, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1351, 1351, 1351, 1350, 1351, 1350, 1351, 1350, + 1351, 1351, 1351, 1351, 1351, 1351, 1350, 1351, + 1351, 1351, 1351, 1351, 1351, 1350, 1350, 1351, + 1351, 1351, 1351, 1352, 1353, 1354, 1354, 1355, + + 177, 177, 177, 177, 177, 1356, 1356, 1356, + 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, + 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, + 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, + + 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, + 1356, 1356, 1356, 1356, 1356, 1357, 177, 177, + 177, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, + 1358, 1358, 1358, 1358, 1358, 1358, 1358, 177, + 1359, 1359, 1360, 1360, 1360, 1360, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, + 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, + 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, + 1362, 1362, 1362, 177, 177, 177, 177, 177, + + 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, + 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + + 1242, 1242, 1242, 1242, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1365, 1365, 177, + + 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + 1360, 1360, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1366, 1366, 1366, 1366, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, + 1237, 1368, 1368, 1368, 1368, 1368, 1368, 1368, + 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, + + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1365, 1365, 1369, 1359, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1368, 1368, 1368, 1368, 1368, 1368, 1368, + 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1237, 1237, 1237, 1237, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 177, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1237, + 1237, 1237, 1237, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1237, 1237, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1237, + + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 1368, 811, 284, 284, - - 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, - 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, - 1370, 1371, 1372, 1373, 1374, 1228, 1228, 1375, - 1376, 1377, 175, 175, 175, 175, 175, 175, - - 151, 151, 151, 151, 927, 927, 927, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1255, 1378, 1378, 1379, 1379, 1051, 1260, 1051, - 1260, 1051, 1260, 1051, 1260, 1051, 1260, 1051, - - 1260, 1051, 1260, 1051, 1260, 1270, 1270, 1380, - 1381, 1255, 1255, 1255, 1255, 1379, 1379, 1379, - 1382, 1383, 1384, 175, 1385, 1386, 9, 9, - 1378, 16, 1070, 16, 1070, 16, 1070, 1387, - - 1255, 1255, 1388, 1389, 1390, 1391, 1392, 175, - 1255, 12, 13, 1255, 175, 175, 175, 175, - 300, 300, 300, 1393, 300, 284, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 284, 284, 1394, - - 175, 9, 1255, 1387, 12, 13, 1255, 1395, - 16, 1070, 1255, 1388, 1382, 1389, 1384, 1396, - 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, - 1405, 1406, 1386, 1385, 1407, 1392, 1408, 9, - - 1255, 1409, 1409, 1409, 1409, 1409, 1409, 1409, - 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, - 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, - 1409, 1409, 1409, 39, 1255, 46, 1410, 1379, - - 1410, 1411, 1411, 1411, 1411, 1411, 1411, 1411, - 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, - 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, - 1411, 1411, 1411, 39, 1392, 46, 1392, 1184, - - 1185, 1254, 16, 1070, 1253, 1280, 1412, 1278, - 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, - 1281, 1412, 1412, 1412, 1412, 1412, 1412, 1412, - 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + + 1373, 1373, 1373, 1373, 1373, 1373, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1375, 1375, 1375, 1375, + + 1375, 1375, 1375, 1375, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1377, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1379, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + + 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1378, + 1378, 1378, 1378, 1378, 1378, 177, 177, 177, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + + 1380, 1380, 1381, 1381, 1380, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1381, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + + 1380, 1381, 1380, 1380, 1380, 1381, 1380, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1383, 1383, 1383, 1383, 1383, 1383, 1384, 1385, + + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + 1386, 1386, 1386, 1386, 1387, 1388, 1389, 1390, + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + 1386, 1386, 1386, 1386, 1386, 1386, 1386, 1386, + + 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, + 1399, 1400, 1386, 1386, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + + 244, 245, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 1401, 228, + 1402, 1402, 1402, 1403, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 228, 228, 1403, 1405, + + 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + 240, 241, 240, 241, 240, 241, 240, 241, + 177, 177, 177, 177, 177, 177, 177, 1404, + + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + + 1406, 1406, 1406, 1406, 1406, 1406, 1407, 1407, + 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, + 1408, 1408, 1409, 1410, 1411, 1411, 1411, 1410, + 177, 177, 177, 177, 177, 177, 177, 177, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, - 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, - 1412, 1412, 1412, 1412, 1412, 1412, 1413, 1413, - - 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, - 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, - 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, - 1414, 1414, 1414, 1414, 1414, 1414, 1414, 175, - - 175, 175, 1414, 1414, 1414, 1414, 1414, 1414, - 175, 175, 1414, 1414, 1414, 1414, 1414, 1414, - 175, 175, 1414, 1414, 1414, 1414, 1414, 1414, - 175, 175, 1414, 1414, 1414, 175, 175, 175, - - 50, 12, 1392, 1410, 1145, 12, 12, 175, - 51, 36, 36, 36, 36, 51, 51, 175, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1415, 1415, 1415, 1416, 51, 1417, 1417, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 175, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - - 805, 805, 805, 805, 805, 805, 805, 175, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 175, 805, 805, 175, 805, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 175, 175, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 175, 175, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 175, 175, 175, 175, 175, - - 1418, 1419, 1418, 175, 175, 175, 175, 1420, - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - 1420, 1420, 1420, 1420, 175, 175, 175, 1421, - 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, - - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1422, 1422, 1423, 1423, 1423, - 1423, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1423, 175, 175, 175, 175, 175, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 930, 175, 175, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 175, 175, 175, - - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 804, 804, 804, 804, 804, 804, 804, - 804, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 175, - - 1426, 1426, 1426, 1426, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - - 1425, 1427, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1427, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 175, 1418, - - 735, 735, 735, 735, 175, 175, 175, 175, - 735, 735, 735, 735, 735, 735, 735, 735, - 1428, 1429, 1429, 1429, 1429, 1429, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1413, + 1413, 1413, 1413, 1316, 1316, 1316, 1316, 1316, + + 1414, 1414, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + 993, 993, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + + 995, 996, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + + 995, 996, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, + 1284, 993, 993, 993, 993, 993, 993, 993, + 993, 995, 996, 995, 996, 1415, 995, 996, + + 995, 996, 995, 996, 995, 996, 995, 996, + 1316, 1416, 1416, 995, 996, 1417, 1418, 177, + 1419, 1420, 1421, 1422, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1419, 1420, 1419, 1420, 1419, 1420, 1419, 1420, + 1419, 1420, 1423, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1424, 1424, 1418, 1425, 1425, 1425, 1425, 1425, + + 1426, 1426, 1427, 1426, 1426, 1426, 1428, 1426, + 1426, 1426, 1426, 1427, 1426, 1426, 1426, 1426, + 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, + 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, + + 1426, 1426, 1426, 1429, 1429, 1427, 1427, 1429, + 1430, 1430, 1430, 1430, 177, 177, 177, 177, + 1367, 1367, 1367, 1367, 1367, 1367, 685, 685, + 1155, 1431, 177, 177, 177, 177, 177, 177, - 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, - 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, - 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, - 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, - - 1430, 1430, 1430, 1430, 1430, 1430, 1431, 1431, + 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, - 1432, 1432, 1432, 1432, 1432, 1432, 1433, 1433, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 175, 175, - - 813, 814, 815, 816, 817, 818, 819, 820, - 821, 822, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1434, 1434, 1434, 1434, 1434, 1434, 252, 252, - 1434, 252, 1434, 1434, 1434, 1434, 1434, 1434, - 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, - 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, - - 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, - 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, - 1434, 1434, 1434, 1434, 1434, 1434, 252, 1434, - 1434, 252, 252, 252, 1434, 252, 252, 1434, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 252, 1435, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, + 1432, 1432, 1432, 1432, 1433, 1433, 1434, 1434, + 177, 177, 177, 177, 177, 177, 177, 177, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1438, 1438, - 1438, 1438, 1436, 1436, 252, 252, 252, 1439, - - 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, - 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, - 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, - 1440, 1440, 252, 252, 252, 252, 252, 1441, - - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, - 252, 252, 252, 252, 252, 252, 1442, 1442, - - 1443, 1327, 1327, 1327, 252, 1327, 1327, 252, - 252, 252, 252, 252, 1327, 841, 1327, 737, - 1443, 1443, 1443, 1443, 252, 1443, 1443, 1443, - 252, 1443, 1443, 1443, 1443, 1443, 1443, 1443, - - 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, - 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, - 1443, 1443, 1443, 1443, 252, 252, 252, 252, - 737, 1444, 841, 252, 252, 252, 252, 1328, - - 1445, 1446, 1447, 1448, 1449, 1449, 1449, 1449, - 252, 252, 252, 252, 252, 252, 252, 252, - 1450, 1450, 1450, 1450, 1450, 1450, 1451, 1451, - 1452, 252, 252, 252, 252, 252, 252, 252, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 1436, 1436, 392, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 252, 252, - 252, 1247, 1247, 1247, 1247, 1247, 1247, 1247, - - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 252, 252, + 1435, 1435, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 252, 252, 252, 252, 252, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 1435, 1435, 1435, 1435, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + + 1435, 1435, 1435, 1435, 1437, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 1438, 1438, + 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, + 1447, 1448, 177, 177, 177, 177, 177, 177, + + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 435, 435, 435, 435, 435, 435, + 1450, 1450, 1450, 435, 177, 177, 177, 177, + + 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, + 1459, 1460, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + + 1461, 1461, 1461, 1461, 1461, 1461, 1462, 1462, + 1462, 1462, 1462, 1463, 1463, 1463, 1464, 1465, + 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, + 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, + + 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1468, 1469, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 1470, + + 733, 733, 733, 733, 733, 733, 733, 733, + 733, 733, 733, 733, 733, 733, 733, 733, + 733, 733, 733, 733, 733, 733, 733, 733, + 733, 733, 733, 733, 733, 177, 177, 177, + + 1471, 1471, 1471, 1472, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1474, 1472, 1472, 1471, 1471, + 1471, 1471, 1472, 1472, 1471, 1472, 1472, 1472, + + 1475, 1476, 1476, 1476, 1476, 1476, 1476, 1477, + 1478, 1478, 1476, 1476, 1476, 1476, 177, 1479, + 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, + 1488, 1489, 177, 177, 177, 177, 1476, 1476, + + 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, + 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, + 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, + 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, + + 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1490, + 1490, 1491, 1491, 1491, 1491, 1491, 1491, 1492, + 1492, 1491, 1491, 1492, 1492, 1491, 1491, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1490, 1490, 1490, 1491, 1490, 1490, 1490, 1490, + 1490, 1490, 1490, 1490, 1491, 1492, 177, 177, + 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, + 1501, 1502, 177, 177, 1503, 1504, 1504, 1504, + + 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, + 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, + 1506, 1505, 1505, 1505, 1505, 1505, 1505, 1507, + 1507, 1507, 1505, 721, 177, 177, 177, 177, + + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1509, 1508, 1509, 1509, 1510, 1508, 1508, 1509, + 1509, 1508, 1508, 1508, 1508, 1508, 1509, 1509, + + 1508, 1509, 1508, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 1508, 1508, 1511, 1512, 1512, - 389, 389, 389, 389, 389, 389, 389, 389, - 389, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - - 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, - 1461, 1462, 1462, 1462, 1462, 1462, 1462, 1462, - 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, - 1462, 1462, 1462, 1462, 1462, 1462, 1462, 252, - - 901, 902, 901, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 902, 902, 902, 902, 902, 902, 902, 902, - 902, 902, 902, 902, 902, 902, 1234, 1463, - 1463, 904, 904, 904, 904, 904, 175, 175, - 175, 175, 1464, 1465, 1466, 1467, 1468, 1469, - 1470, 1471, 1472, 1473, 1473, 1473, 1473, 1473, - 1473, 1473, 1473, 1473, 1473, 1473, 1474, 1475, - 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1337, 1337, 914, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 914, 914, 914, 1337, 1337, 1337, 1337, 914, - 914, 1347, 1338, 911, 911, 1484, 1308, 1308, - 1308, 1308, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 175, 175, 175, 175, 175, 175, 175, - 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, - 1493, 1494, 175, 175, 175, 175, 175, 175, - - 1495, 1495, 1495, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 1344, - 1344, 1344, 1344, 1344, 887, 1344, 1344, 1344, - 1344, 1344, 1344, 886, 886, 175, 1485, 1486, - 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, - 1496, 1345, 1345, 1345, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1344, 1344, 887, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 887, 887, 887, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 887, - 1497, 898, 898, 898, 898, 1345, 1345, 909, - 1496, 175, 175, 175, 175, 175, 175, 175, - 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, - 1493, 1494, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 1344, 887, 1344, 887, 887, - 1344, 1344, 1344, 1344, 1344, 1344, 1497, 1498, - 175, 175, 175, 175, 175, 175, 175, 175, - 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, - 1493, 1494, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1499, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 879, 879, 879, 879, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 1500, 1500, 1500, 1501, 1501, 1501, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 1501, 754, 754, 754, 1500, 1501, - 1500, 1501, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 1500, 1501, 1501, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 754, 754, 754, 754, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, - 899, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 898, 898, 898, - 898, 898, 898, 898, 898, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 898, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 1344, - 1344, 1344, 1344, 1346, 1346, 1346, 1346, 1346, - 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1502, 1503, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 175, - 175, 1124, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1505, 1506, 1507, - 1507, 1507, 1504, 1504, 1504, 1508, 1505, 1505, - 1505, 1505, 1505, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1504, 1504, 1511, 1511, 1511, - 1511, 1511, 1510, 1510, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1511, 1511, 1511, 1511, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1504, 1504, 1504, 1504, 1504, 1504, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, - 1424, 1424, 1512, 1512, 1512, 1424, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 811, 811, 811, 811, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, - 1513, 1513, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 175, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 175, 1514, 1514, - 175, 175, 1514, 175, 175, 1514, 1514, 175, - 175, 1514, 1514, 1514, 1514, 175, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1515, 1515, - 1515, 1515, 175, 1515, 175, 1515, 1515, 1515, - 1515, 105, 1515, 1515, 175, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - - 1515, 1515, 1515, 1515, 1514, 1514, 175, 1514, - 1514, 1514, 1514, 175, 175, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 175, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 175, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 175, 1514, 1514, 1514, 1514, 175, - 1514, 1514, 1514, 1514, 1514, 175, 1514, 175, - 175, 175, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 175, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 106, 106, 175, 175, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1516, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1517, 1515, 1515, 1515, 1515, - 1515, 1515, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1516, 1515, 1515, 1515, 1515, - - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1517, 1515, 1515, - 1515, 1515, 1515, 1515, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1516, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1517, - 1515, 1515, 1515, 1515, 1515, 1515, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1516, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1517, 1515, 1515, 1515, 1515, 1515, 1515, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1516, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1517, 1515, 1515, 1515, 1515, - 1515, 1515, 1518, 1221, 175, 175, 1519, 1520, - 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, - 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, - 1527, 1528, 1519, 1520, 1521, 1522, 1523, 1524, - 1525, 1526, 1527, 1528, 1519, 1520, 1521, 1522, - 1523, 1524, 1525, 1526, 1527, 1528, 1519, 1520, - 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, - - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, - - 1529, 1529, 1529, 1529, 284, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 284, 1529, 1529, 284, 1529, 284, 284, 1529, - 284, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 284, 1529, 1529, 1529, 1529, - 284, 1529, 284, 1529, 284, 284, 284, 284, - 284, 284, 1529, 284, 284, 284, 284, 1529, - 284, 1529, 284, 1529, 284, 1529, 1529, 1529, - 284, 1529, 1529, 284, 1529, 284, 284, 1529, - 284, 1529, 284, 1529, 284, 1529, 284, 1529, - 284, 1529, 1529, 284, 1529, 284, 284, 1529, - 1529, 1529, 1529, 284, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 284, 1529, 1529, 1529, 1529, - 284, 1529, 1529, 1529, 1529, 284, 1529, 284, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 284, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 284, 284, 284, 284, - 284, 1529, 1529, 1529, 284, 1529, 1529, 1529, - 1529, 1529, 284, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, - 1530, 1530, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 284, 284, + 1513, 1513, 1513, 1514, 1515, 1515, 1514, 1514, + 1516, 1516, 1513, 1517, 1517, 1514, 1518, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 1519, 1519, 1519, 1519, 1519, 1519, 177, + 177, 1519, 1519, 1519, 1519, 1519, 1519, 177, + 177, 1519, 1519, 1519, 1519, 1519, 1519, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1519, 1519, 1519, 1519, 1519, 1519, 1519, 177, + 1519, 1519, 1519, 1519, 1519, 1519, 1519, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, + 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, + 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, + 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, + + 1520, 1520, 1520, 1521, 1521, 1522, 1521, 1521, + 1522, 1521, 1521, 1523, 1521, 1524, 177, 177, + 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, + 1533, 1534, 177, 177, 177, 177, 177, 177, + + 1535, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1535, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1535, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1535, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1535, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1535, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1535, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 1535, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, + + 1536, 1536, 1536, 1536, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 735, 735, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 175, 175, 175, 175, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, - 1181, 1181, 1181, 1181, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 175, - 175, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 175, - 175, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 175, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1531, 1531, 1532, 1533, 1534, 1535, 1536, 1537, - 1538, 1539, 1540, 175, 175, 175, 175, 175, - 681, 681, 681, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 175, - 1541, 681, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 681, 1541, 681, - 1541, 1541, 681, 1541, 1541, 1541, 681, 1541, - 1541, 1541, 681, 681, 681, 681, 681, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 681, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 681, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1542, 1542, 175, 175, 175, 175, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 681, 1541, 681, 681, 1541, 1541, 681, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 681, 681, 681, 681, 1541, 1541, - 681, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - - 1293, 1544, 1544, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, - 1293, 1293, 1544, 1544, 1544, 1544, 1544, 1544, - 1544, 1544, 1544, 175, 175, 175, 175, 175, - 1293, 1293, 1293, 1293, 1293, 1293, 1293, 1293, - 1293, 175, 175, 175, 175, 175, 175, 175, - 1544, 1544, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 175, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1150, 1150, 1151, - 1151, 1151, 1151, 1151, 1150, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 175, 1151, 1151, - 1151, 1151, 1151, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 175, - 1151, 175, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1150, 1151, 1150, 1151, 1150, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1150, - 1151, 1150, 1150, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 175, 1151, 1151, 1151, 1151, 175, 175, 175, - - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 175, 175, - 1542, 1542, 1542, 1542, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 1151, 1151, 1151, 1151, 1151, - - 1545, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1545, 1151, 1151, 1151, 1545, 1151, 1545, - 1151, 1545, 1151, 1545, 1151, 1151, 1151, 1545, - 1151, 1151, 1151, 1151, 1151, 1151, 1545, 1545, - 1151, 1151, 1151, 1151, 1545, 1151, 1545, 1545, - 1151, 1151, 1151, 1151, 1545, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 175, 175, 175, 175, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 1546, 1546, - - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1302, 1302, 1302, 1302, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, - 1503, 1503, 1503, 1503, 1503, 1503, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 1299, 1546, 1546, - - 1083, 1509, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 735, 735, 735, 735, 735, 735, 735, 177, + 177, 177, 177, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 177, 177, 177, 177, + + 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, + 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, + 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, + 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, + + 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, + 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, + 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, + 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, + + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 1373, 1373, 1373, 1373, 1373, 1377, 1377, + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + + 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, + 1539, 1539, 1539, 1376, 1376, 1376, 1372, 1372, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1374, 1374, 1372, 1372, 1372, 1372, 1372, 1372, + + 1540, 1541, 1542, 1543, 1544, 1545, 1545, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 1546, 1547, 1548, 1549, 1550, + 177, 177, 177, 177, 177, 1551, 1552, 283, + + 283, 283, 283, 283, 283, 283, 283, 283, + 283, 1553, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 256, + 283, 283, 283, 283, 283, 256, 283, 256, + + 283, 283, 256, 283, 283, 256, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + + 1554, 1554, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 1105, 1331, + + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 288, 288, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 288, 288, 288, 288, 288, 288, 288, 288, + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 1556, 1177, 288, 288, + + 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, + 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, + 1558, 1559, 1560, 1561, 1562, 1563, 1563, 1564, + 1565, 1566, 177, 177, 177, 177, 177, 177, + + 153, 153, 153, 153, 981, 981, 981, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1326, 1567, 1567, 1568, 1568, 1105, 1331, 1105, + 1331, 1105, 1331, 1105, 1331, 1105, 1331, 1105, + + 1331, 1105, 1331, 1105, 1331, 1341, 1341, 1569, + 1570, 1326, 1326, 1326, 1326, 1568, 1568, 1568, + 1571, 1572, 1573, 177, 1574, 1575, 9, 9, + 1567, 16, 1124, 16, 1124, 16, 1124, 1576, + + 1326, 1326, 1577, 1578, 1579, 1580, 1581, 177, + 1326, 12, 13, 1326, 177, 177, 177, 177, + 304, 304, 304, 1582, 304, 288, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 288, 288, 1583, + + 177, 9, 1326, 1576, 12, 13, 1326, 1584, + 16, 1124, 1326, 1577, 1571, 1578, 1573, 1585, + 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, + 1594, 1595, 1575, 1574, 1596, 1581, 1597, 9, + + 1326, 1598, 1598, 1598, 1598, 1598, 1598, 1598, + 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, + 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, + 1598, 1598, 1598, 39, 1326, 46, 1599, 1568, + + 1599, 1600, 1600, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 39, 1581, 46, 1581, 1245, + + 1246, 1325, 16, 1124, 1324, 1352, 1601, 1350, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, + 1353, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1602, 1602, + + 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, + 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, + 1603, 1603, 1603, 1603, 1603, 1603, 1603, 1603, + 1603, 1603, 1603, 1603, 1603, 1603, 1603, 177, + + 177, 177, 1603, 1603, 1603, 1603, 1603, 1603, + 177, 177, 1603, 1603, 1603, 1603, 1603, 1603, + 177, 177, 1603, 1603, 1603, 1603, 1603, 1603, + 177, 177, 1603, 1603, 1603, 177, 177, 177, + + 50, 12, 1581, 1599, 1206, 12, 12, 177, + 51, 36, 36, 36, 36, 51, 51, 177, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1604, 1604, 1604, 1605, 51, 1606, 1606, + + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 177, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 177, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 177, 1607, 1607, 177, 1607, + + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 177, 177, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 177, 177, + + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 1607, 1607, 1607, 1607, 1607, + 1607, 1607, 1607, 177, 177, 177, 177, 177, + + 1608, 1609, 1608, 177, 177, 177, 177, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 177, 177, 177, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1613, 1613, 1613, + 1613, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1613, 177, 177, 177, 177, 177, + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, + 1185, 1185, 1185, 1185, 1185, 984, 177, 177, + + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 177, 177, 177, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, + 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, + 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, + 1617, 1617, 1617, 1617, 1617, 1617, 1617, 177, + + 1618, 1618, 1618, 1618, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + + 1619, 1620, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1620, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 177, 1622, + + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + + 1623, 1623, 1623, 1623, 177, 177, 177, 177, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1624, 1625, 1625, 1625, 1625, 1625, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1626, 1626, 1627, 1627, + 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, + 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, + 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, + + 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, + 1628, 1628, 1628, 1628, 1628, 1628, 1629, 1629, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + + 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1631, 1631, 1631, 177, 177, + + 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, + 1640, 1641, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1642, 1642, 1642, 1642, 1642, 1642, 256, 256, + 1642, 256, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 256, 1642, + 1642, 256, 256, 256, 1642, 256, 256, 1642, + + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 256, 1644, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1647, 1647, + 1647, 1647, 1648, 1648, 256, 256, 256, 1649, + + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 256, 256, 256, 256, 256, 1651, + + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + + 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, + 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, + 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, + 256, 256, 256, 256, 256, 256, 1653, 1653, + + 1654, 1655, 1655, 1655, 256, 1655, 1655, 256, + 256, 256, 256, 256, 1655, 1656, 1655, 1657, + 1654, 1654, 1654, 1654, 256, 1654, 1654, 1654, + 256, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 256, 256, 256, 256, + 1657, 1658, 1656, 256, 256, 256, 256, 1659, + + 1660, 1661, 1662, 1663, 1664, 1664, 1664, 1664, + 256, 256, 256, 256, 256, 256, 256, 256, + 1665, 1665, 1665, 1665, 1665, 1665, 1666, 1666, + 1667, 256, 256, 256, 256, 256, 256, 256, + + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1669, 1669, 1670, + + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, + 1671, 1671, 1671, 1671, 1671, 1671, 256, 256, + 256, 1672, 1672, 1672, 1672, 1672, 1672, 1672, + + 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, + 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, + 1673, 1673, 1673, 1673, 1673, 1673, 256, 256, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + + 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, + 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, + 1675, 1675, 1675, 256, 256, 256, 256, 256, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + + 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, + 1686, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 256, + + 1688, 1689, 1688, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, + 1689, 1689, 1689, 1689, 1689, 1689, 1691, 1692, + 1692, 1693, 1693, 1693, 1693, 1693, 177, 177, + 177, 177, 1694, 1695, 1696, 1697, 1698, 1699, + 1700, 1701, 1702, 1703, 1703, 1703, 1703, 1703, + 1703, 1703, 1703, 1703, 1703, 1703, 1704, 1705, + 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1714, 1714, 1715, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1715, 1715, 1715, 1714, 1714, 1714, 1714, 1715, + 1715, 1717, 1718, 1719, 1719, 1720, 1721, 1721, + 1721, 1721, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 177, 177, 177, 177, 177, 177, 177, + 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, + 1731, 1732, 177, 177, 177, 177, 177, 177, + + 1733, 1733, 1733, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1735, + 1735, 1735, 1735, 1735, 1736, 1735, 1735, 1735, + 1735, 1735, 1735, 1737, 1737, 177, 1738, 1739, + 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, + 1748, 1749, 1749, 1749, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1750, 1750, 1751, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1751, 1751, 1751, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1751, + 1753, 1752, 1752, 1752, 1752, 1754, 1754, 1755, + 1756, 177, 177, 177, 177, 177, 177, 177, + 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, + 1765, 1766, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1768, 1769, 1768, 1769, 1769, + 1768, 1768, 1768, 1768, 1768, 1768, 1770, 1771, + 177, 177, 177, 177, 177, 177, 177, 177, + 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, + 1780, 1781, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1784, 1784, 1784, 1784, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1786, 1786, 1786, 1787, 1787, 1787, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1787, 1785, 1785, 1785, 1786, 1787, + 1786, 1787, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1786, 1787, 1787, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, + 1788, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1789, 1789, 1789, 1789, 1789, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1789, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 1791, + 1791, 1791, 1791, 1792, 1792, 1792, 1792, 1792, + 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1793, 1794, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 177, + 177, 1185, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1796, 1797, 1798, + 1798, 1798, 1795, 1795, 1795, 1799, 1796, 1796, + 1796, 1796, 1796, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1801, 1801, 1801, 1801, 1801, + 1801, 1801, 1801, 1795, 1795, 1802, 1802, 1802, + 1802, 1802, 1801, 1801, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1802, 1802, 1802, 1802, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, + 1614, 1614, 1803, 1803, 1803, 1614, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1546, 1546, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, + 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, + 1804, 1804, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 177, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 177, 1805, 1805, + 177, 177, 1805, 177, 177, 1805, 1805, 177, + 177, 1805, 1805, 1805, 1805, 177, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, + 1806, 1806, 177, 1806, 177, 1806, 1806, 1806, + 1806, 1807, 1806, 1806, 177, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + + 1806, 1806, 1806, 1806, 1805, 1805, 177, 1805, + 1805, 1805, 1805, 177, 177, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 177, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 177, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 177, 1805, 1805, 1805, 1805, 177, + 1805, 1805, 1805, 1805, 1805, 177, 1805, 177, + 177, 177, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 177, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1178, 1178, 177, 177, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1808, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1809, 1806, 1806, 1806, 1806, + 1806, 1806, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1808, 1806, 1806, 1806, 1806, + + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1809, 1806, 1806, + 1806, 1806, 1806, 1806, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1808, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1809, + 1806, 1806, 1806, 1806, 1806, 1806, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1808, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1809, 1806, 1806, 1806, 1806, 1806, 1806, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, + 1805, 1808, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1809, 1806, 1806, 1806, 1806, + 1806, 1806, 1810, 1811, 177, 177, 1812, 1813, + 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, + 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, + 1820, 1821, 1812, 1813, 1814, 1815, 1816, 1817, + 1818, 1819, 1820, 1821, 1812, 1813, 1814, 1815, + 1816, 1817, 1818, 1819, 1820, 1821, 1812, 1813, + 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, + + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, + + 1822, 1822, 1822, 1822, 288, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 288, 1822, 1822, 288, 1822, 288, 288, 1822, + 288, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 288, 1822, 1822, 1822, 1822, + 288, 1822, 288, 1822, 288, 288, 288, 288, + 288, 288, 1822, 288, 288, 288, 288, 1822, + 288, 1822, 288, 1822, 288, 1822, 1822, 1822, + 288, 1822, 1822, 288, 1822, 288, 288, 1822, + 288, 1822, 288, 1822, 288, 1822, 288, 1822, + 288, 1822, 1822, 288, 1822, 288, 288, 1822, + 1822, 1822, 1822, 288, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 288, 1822, 1822, 1822, 1822, + 288, 1822, 1822, 1822, 1822, 288, 1822, 288, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 288, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 288, 288, 288, 288, + 288, 1822, 1822, 1822, 288, 1822, 1822, 1822, + 1822, 1822, 288, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, + 1822, 1822, 1822, 1822, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + 1823, 1823, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, + + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 177, 177, 177, 177, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 1242, 1242, 1242, 1242, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 177, + 177, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 177, + 177, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 177, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1824, 1824, 1825, 1826, 1827, 1828, 1829, 1830, + 1831, 1832, 1833, 177, 177, 177, 177, 177, + 685, 685, 685, 685, 685, 685, 685, 685, + 685, 685, 685, 685, 685, 685, 685, 685, + 685, 685, 685, 685, 685, 685, 685, 685, + 685, 685, 685, 685, 685, 685, 685, 177, + 1834, 685, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 1834, 1834, 1834, 685, 1834, 685, + 1834, 1834, 685, 1834, 1834, 1834, 685, 1834, + 1834, 1834, 685, 685, 685, 685, 685, 1834, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 685, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 685, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 1835, 1835, 177, 177, 177, 177, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 685, 1834, 685, 685, 1834, 1834, 685, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 685, 685, 685, 685, 1834, 1834, + 685, 1834, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 1834, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 1836, 1836, + 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + + 1837, 1838, 1838, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, + 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, + 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, + 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, + 1366, 1366, 1838, 1838, 1838, 1838, 1838, 1838, + 1838, 1838, 1838, 177, 177, 177, 177, 177, + 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, + 1366, 177, 177, 177, 177, 177, 177, 177, + 1838, 1838, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 177, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1211, 1211, 1212, + 1212, 1212, 1212, 1212, 1211, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 177, 1212, 1212, + 1212, 1212, 1212, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 177, + 1212, 177, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1211, 1212, 1211, 1212, 1211, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1211, + 1212, 1211, 1211, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 177, 1212, 1212, 1212, 1212, 177, 177, 177, + + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 177, 177, + 1835, 1835, 1835, 1835, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 1212, 1212, 1212, 1212, 1212, + + 1839, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1839, 1212, 1212, 1212, 1839, 1212, 1839, + 1212, 1839, 1212, 1839, 1212, 1212, 1212, 1839, + 1212, 1212, 1212, 1212, 1212, 1212, 1839, 1839, + 1212, 1212, 1212, 1212, 1839, 1212, 1839, 1839, + 1212, 1212, 1212, 1212, 1839, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 177, 177, 177, 177, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 1840, 1840, + + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, + 1376, 1376, 1376, 1376, 1376, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, + 1372, 1372, 1372, 1372, 1372, 1372, 1840, 1840, + + 1138, 1800, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1840, 1840, }; #define GET_PROP_INDEX(ucs4) \ @@ -4775,488 +4835,427 @@ static const unsigned short uc_property_trie[] = { (uc_property_trie[uc_property_trie[ucs2>>5] + (ucs2 & 0x1f)]) static const Properties uc_properties[] = { - { 9, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 0 }, - { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 5, 17, 0 }, - { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 34, 0 }, - { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 5, 35, 0 }, - { 9, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 5, 35, 0 }, - { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 33, 0 }, - { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 0 }, - { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 32, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0 }, - { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 0 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 2, 0 }, - { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 11, 8, 0 }, - { 20, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 16, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 10, 8, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0 }, - { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 8, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 8, 0 }, - { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 21, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0 }, - { 22, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 2, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 0 }, - { 22, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0 }, - { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 0 }, - { 6, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 4, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 23, 10, 0, 0, -1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 17, 0 }, - { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0 }, - { 26, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0 }, - { 5, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 743, 743, 775, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 12, 0 }, - { 5, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 24, 10, 0, 0, -1, -16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 16, 13, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 121, 121, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 19, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -232, -232, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 98, 98, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -121, 0, 0, -121, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -300, -300, -268, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 195, 195, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 210, 0, 0, 210, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 206, 0, 0, 206, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 205, 0, 0, 205, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 79, 0, 0, 79, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 202, 0, 0, 202, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 203, 0, 0, 203, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 207, 0, 0, 207, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 97, 97, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 211, 0, 0, 211, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 209, 0, 0, 209, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 163, 163, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 213, 0, 0, 213, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 214, 0, 0, 214, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 218, 0, 0, 218, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 217, 0, 0, 217, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 219, 0, 0, 219, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 56, 56, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 2, 0, 1, 2, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 16, 0, 0, 0, -1, 0, 1, -1, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -2, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -79, -79, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 109, 109, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -97, 0, 0, -97, 0, 0, 0, 0, 4, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -56, 0, 0, -56, 0, 0, 0, 0, 4, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 4, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -130, 0, 0, -130, 0, 0, 0, 0, 6, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 10795, 0, 0, 10795, 0, 0, 0, 0, 8, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 8, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -163, 0, 0, -163, 0, 0, 0, 0, 8, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 10792, 0, 0, 10792, 0, 0, 0, 0, 8, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10815, 10815, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -195, 0, 0, -195, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 69, 0, 0, 69, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 71, 0, 0, 71, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10783, 10783, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10780, 10780, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10782, 10782, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -210, -210, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -206, -206, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -205, -205, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -202, -202, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -203, -203, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -207, -207, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 3, 3, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -209, -209, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -211, -211, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10743, 10743, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10749, 10749, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -213, -213, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -214, -214, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 10727, 10727, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -218, -218, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -69, -69, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -217, -217, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -71, -71, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -219, -219, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 0 }, - { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 18, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 232, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 202, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 240, 0, -1, 0, 0, 84, 84, 116, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 28 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 4, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 28 }, - { 0, 17, 232, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 28 }, - { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 4, 28 }, - { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 4, 28 }, - { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 4, 28 }, - { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 4, 28 }, - { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 28 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 1 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 1 }, + { 9, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 2 }, + { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 5, 17, 2 }, + { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 34, 2 }, + { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 5, 35, 2 }, + { 9, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 5, 35, 2 }, + { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 33, 2 }, + { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 2 }, + { 9, 8, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 21, 2 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 32, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 2 }, + { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 2 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 2, 2 }, + { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 11, 8, 2 }, + { 20, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 16, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 10, 8, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 2 }, + { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 8, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 8, 2 }, + { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 21, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 2 }, + { 22, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 2, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 2 }, + { 22, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 2 }, + { 9, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 2 }, + { 6, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 4, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 23, 10, 0, 0, -1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 17, 2 }, + { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 2 }, + { 26, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 2 }, + { 5, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 743, 743, 775, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 12, 2 }, + { 5, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 24, 10, 0, 0, -1, -16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 16, 13, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 121, 121, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 19, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -232, -232, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 98, 98, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -121, 0, 0, -121, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -300, -300, -268, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 195, 195, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 210, 0, 0, 210, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 206, 0, 0, 206, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 205, 0, 0, 205, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 79, 0, 0, 79, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 202, 0, 0, 202, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 203, 0, 0, 203, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 207, 0, 0, 207, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 97, 97, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 211, 0, 0, 211, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 209, 0, 0, 209, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 163, 163, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 213, 0, 0, 213, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 214, 0, 0, 214, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 218, 0, 0, 218, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 217, 0, 0, 217, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 219, 0, 0, 219, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 56, 56, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 2, 0, 1, 2, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 16, 0, 0, 0, -1, 0, 1, -1, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -2, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -79, -79, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 109, 109, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -97, 0, 0, -97, 0, 0, 0, 0, 4, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -56, 0, 0, -56, 0, 0, 0, 0, 4, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 4, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -130, 0, 0, -130, 0, 0, 0, 0, 6, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 10795, 0, 0, 10795, 0, 0, 0, 0, 8, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 8, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -163, 0, 0, -163, 0, 0, 0, 0, 8, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 10792, 0, 0, 10792, 0, 0, 0, 0, 8, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10815, 10815, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -195, 0, 0, -195, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 69, 0, 0, 69, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 71, 0, 0, 71, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10783, 10783, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10780, 10780, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10782, 10782, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -210, -210, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -206, -206, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -205, -205, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -202, -202, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -203, -203, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -207, -207, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 3, 3, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -209, -209, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -211, -211, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10743, 10743, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10749, 10749, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -213, -213, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -214, -214, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 10727, 10727, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -218, -218, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -69, -69, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -217, -217, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -71, -71, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -219, -219, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, + { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 18, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 36 }, + { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 232, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 202, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 240, 0, -1, 0, 0, 84, 84, 116, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 1 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 4, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 1 }, + { 0, 17, 232, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 1 }, + { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 4, 1 }, + { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 4, 1 }, + { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 4, 1 }, + { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 4, 1 }, + { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 1 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 4 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 4 }, { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 38, 0, 0, 38, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 37, 0, 0, 37, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 64, 0, 0, 64, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 63, 0, 0, 63, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 101, 101, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -38, -38, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -37, -37, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 105, 105, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -31, -31, 1, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -64, -64, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -63, -63, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 8, 0, 0, 8, 0, 0, 0, 0, 10, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -62, -62, -30, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -57, -57, -25, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -47, -47, -15, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -54, -54, -22, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -8, -8, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 6, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -86, -86, -54, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -80, -80, -48, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 7, 7, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -60, 0, 0, -60, 0, 0, 0, 0, 5, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -96, -96, -64, 0, 0, 0, 0, 5, 0, 7, 6, 12, 1 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 7, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -7, 0, 0, -7, 0, 0, 0, 0, 7, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -130, 0, 0, -130, 0, 0, 0, 0, 8, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, 80, 0, 0, 80, 0, 0, 0, 0, 4, 0, 7, 7, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 80, 0, 0, 80, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -80, -80, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -80, -80, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 2 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 2 }, - { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 6, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 4, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 15, 0, 0, 15, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -15, -15, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 8, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 9, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 11, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 11, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 12, 0, 7, 7, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 48, 0, 0, 48, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 3 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 3 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 12, 3 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, -48, -48, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 65, 62, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 12, 8, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 3 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 9, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 38, 0, 0, 38, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 37, 0, 0, 37, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 64, 0, 0, 64, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 63, 0, 0, 63, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 101, 101, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -38, -38, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -37, -37, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 105, 105, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -31, -31, 1, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -64, -64, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -63, -63, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 8, 0, 0, 8, 0, 0, 0, 0, 10, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -62, -62, -30, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -57, -57, -25, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -47, -47, -15, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -54, -54, -22, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -8, -8, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 6, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -86, -86, -54, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -80, -80, -48, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 7, 7, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -60, 0, 0, -60, 0, 0, 0, 0, 5, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -96, -96, -64, 0, 0, 0, 0, 5, 0, 7, 6, 12, 4 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 7, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -7, 0, 0, -7, 0, 0, 0, 0, 7, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -130, 0, 0, -130, 0, 0, 0, 0, 8, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, 80, 0, 0, 80, 0, 0, 0, 0, 4, 0, 7, 7, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 80, 0, 0, 80, 0, 0, 0, 0, 1, 0, 7, 7, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -80, -80, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -80, -80, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 5 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 5 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 5 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, + { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 6, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 4, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 15, 0, 0, 15, 0, 0, 0, 0, 1, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -15, -15, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 8, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 9, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 11, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 11, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 12, 0, 7, 7, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 5 }, + { 14, 0, 0, 0, -1, 0, 48, 0, 0, 48, 0, 0, 0, 0, 1, 0, 7, 7, 12, 6 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 6 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 6 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 12, 6 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, -48, -48, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 65, 62, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 12, 8, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 6 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 9, 6 }, { 13, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 4 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 4 }, - { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 4 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 4 }, - { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 4 }, - { 0, 17, 10, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 11, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 12, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 13, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 14, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 15, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 16, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 17, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 18, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 19, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 19, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 4 }, - { 0, 17, 20, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 21, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 22, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 20, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 4 }, - { 0, 17, 23, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 4 }, - { 0, 17, 24, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 0, 17, 25, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 4 }, - { 0, 17, 18, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 4 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 13, 4 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 4 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 12, 4 }, - { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 4, 4, 12, 5 }, - { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 4, 4, 12, 5 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 7 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 7 }, + { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 7 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 7 }, + { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 7 }, + { 0, 17, 10, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 11, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 12, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 13, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 14, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 15, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 16, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 17, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 18, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 19, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 19, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 7 }, + { 0, 17, 20, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 21, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 22, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 20, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 7 }, + { 0, 17, 23, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 7 }, + { 0, 17, 24, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 0, 17, 25, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 7 }, + { 0, 17, 18, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 7 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 13, 7 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 7 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 12, 7 }, + { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 4, 4, 12, 8 }, + { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 4, 4, 12, 8 }, { 13, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 5 }, - { 26, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 5 }, - { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 5 }, - { 27, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 10, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 10, 11, 8, 5 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 5 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 5 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, - { 0, 17, 30, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, - { 0, 17, 31, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, - { 0, 17, 32, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 0 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 5 }, - { 17, 13, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 0 }, - { 0, 17, 27, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 28, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 29, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 30, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 31, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 32, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 33, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 34, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 5 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 5 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 5 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 5 }, - { 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 3, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 0 }, - { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 5 }, - { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 9, 11, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 5 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 5 }, - { 0, 17, 35, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 5 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 5 }, - { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 5 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 5 }, - { 17, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 5 }, - { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 5 }, - { 29, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 5 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 5 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 12, 6 }, - { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 6 }, - { 10, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 4, 12, 6 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 6 }, - { 0, 17, 36, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 6 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 6 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 6 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 6 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 6 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 6 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 7 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 7 }, - { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 7 }, - { 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 3, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 27 }, - { 18, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 27 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 27 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 27 }, - { 17, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 27 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 27 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 27 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 11, 8, 27 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 6, 27 }, - { 17, 1, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 27 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 0 }, - { 17, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 18, 1, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 0 }, - { 18, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 5 }, - { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 5 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, - { 0, 17, 27, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, - { 0, 17, 28, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, - { 0, 17, 29, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 8 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 8 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 8 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 8 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 8 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 8 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 8 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 8 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 8 }, + { 26, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 8 }, + { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 8 }, + { 27, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 10, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 10, 11, 8, 8 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 8 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 8 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 8 }, + { 0, 17, 30, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 8 }, + { 0, 17, 31, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 8 }, + { 0, 17, 32, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 2 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 2 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 8 }, + { 17, 13, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 2 }, + { 0, 17, 27, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 28, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 29, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 30, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 31, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 32, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 33, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 34, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 8 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 8 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 8 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 8 }, + { 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 3, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 2 }, + { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 8 }, + { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 9, 11, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 8 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 8 }, + { 0, 17, 35, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 6, 8 }, { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 8 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 17, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 8 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 8 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 8 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 9 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 9 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 9 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 9 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 9 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 9 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 9 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 9 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 9 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 9 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 9 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 9 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 9 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 9, 9 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 10 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 10 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 4, 4, 21, 10 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 10 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 10 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 10 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 10 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 10 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 10 }, + { 10, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 8 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 8 }, + { 17, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 8 }, + { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 8 }, + { 29, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 8 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 8 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 12, 9 }, + { 25, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 9 }, + { 10, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 4, 12, 9 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 9 }, + { 0, 17, 36, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 9 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 9 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 9 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 9 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 9 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 9 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 10 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 10 }, + { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 10 }, + { 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 3, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 66 }, + { 18, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 66 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 66 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 66 }, + { 17, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 66 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 66 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 66 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 11, 8, 66 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 6, 66 }, + { 17, 1, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 66 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 82 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 82 }, + { 17, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 82 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 82 }, + { 18, 1, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 95 }, + { 18, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 95 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 95 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 95 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 95 }, + { 18, 13, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 8 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 8 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 8 }, + { 0, 17, 27, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 8 }, + { 0, 17, 28, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 8 }, + { 0, 17, 29, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 8 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 11 }, { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 11 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 11 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 11 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 11 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 11 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 11 }, { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 11 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 11 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 11 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 11 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 11 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 17, 2 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, @@ -5267,16 +5266,21 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 11 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 11 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 11 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 11 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 11 }, { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 12 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 12 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 12 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 12 }, { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 12 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 12 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 12 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 12 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 12 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 12 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, @@ -5287,16 +5291,20 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 12 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 12 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 12 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 12 }, { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 12 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 12 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 9, 12 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 13 }, { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 13 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 4, 4, 21, 13 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 13 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 13 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 13 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 13 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 13 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 13 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 13 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 13 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 13 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, @@ -5306,17 +5314,13 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 13 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 13 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 13 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 13 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 14 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 14 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 14 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 14 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, - { 0, 17, 84, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, - { 0, 17, 91, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 14 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 14 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 14 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, @@ -5327,17 +5331,16 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 14 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 14 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 14 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 14 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 14 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 15 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 15 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 15 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 15 }, - { 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 15 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 15 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 15 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, @@ -5348,16 +5351,16 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 15 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 15 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 16 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 15 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 15 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 16 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 16 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 16 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 16 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 16 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 16 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 16 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 16 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 16 }, { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 16 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 16 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 16 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, @@ -5367,22 +5370,38 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 16 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 16 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 16 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 21, 17 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 17 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 17 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 17 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 17 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 17 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 18 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 18 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 0, 8, 30, 18 }, - { 0, 17, 103, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 18 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 18 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 18 }, - { 0, 17, 107, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 18 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 18 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 16 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 16 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 9, 16 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 17 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 17 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 17 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 17 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 17 }, + { 0, 17, 84, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 17 }, + { 0, 17, 91, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 17 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 17 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 17 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 17 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 17 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 18 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 18 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 18 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 18 }, + { 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 18 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 18 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 18 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 18 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 18 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, @@ -5393,13 +5412,15 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 18 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 18 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 19 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 19 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 0, 8, 30, 19 }, - { 0, 17, 118, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 19 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 19 }, - { 0, 17, 122, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 18 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 4, 21, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 19 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 19 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 19 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 19 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 19 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, @@ -5410,920 +5431,1254 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 19 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 30, 19 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 7, 8, 12, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 18, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 18, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 20 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 20 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 20 }, - { 0, 17, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 13, 0, 20 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 13, 1, 20 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 4, 4, 21, 20 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 19 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 19 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 21, 20 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 20 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 20 }, - { 0, 17, 129, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 0, 17, 130, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 0, 17, 132, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 4, 4, 17, 20 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 20 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 20 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 20 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 20 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 20 }, { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 20 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 18, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 18, 20 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 20 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 4, 20 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 21 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 30, 21 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 30, 21 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 30, 21 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 21 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 30, 21 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 21 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 21 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 21 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 21 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 30, 21 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 21 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 17, 21 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 21 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 21 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 21 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 30, 21 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 21 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 30, 21 }, - { 14, 0, 0, 0, -1, 0, 7264, 0, 0, 7264, 0, 0, 0, 0, 1, 0, 7, 7, 12, 22 }, - { 14, 0, 0, 0, -1, 0, 7264, 0, 0, 7264, 0, 0, 0, 0, 13, 0, 7, 7, 12, 22 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 22 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 22 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 22 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 22 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 22 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 7, 8, 25, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 8, 7, 8, 25, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 7, 8, 26, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 9, 7, 8, 26, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 7, 8, 27, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 10, 7, 8, 27, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 17, 24 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 24 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 13, 0, 24 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 13, 1, 24 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 25 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 25 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 12, 17, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 26 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 26 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 30, 26 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 26 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 26 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 26 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 26 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 26 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 9, 26 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 30, 26 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 26 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 26 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 11, 6, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 6, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 4, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 0 }, - { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 4, 4, 21, 0 }, - { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 12, 6, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 30, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 30, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 30, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 4, 4, 30, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 0 }, - { 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 30, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 26 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 30, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 30, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 30, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 4, 4, 21, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 0 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 0 }, - { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 4, 4, 21, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 17, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 0 }, - { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 0 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 0 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 0 }, - { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 28 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 28 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 28 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 2 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 1 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 2 }, - { 15, 0, 0, 0, -1, 0, 0, 5, 5, 0, 0, 1, 1, 0, 8, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 3814, 3814, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 1 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 28 }, - { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 28 }, - { 0, 17, 214, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 28 }, - { 0, 17, 202, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 28 }, - { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 28 }, - { 15, 0, 0, 0, -1, 0, 0, 112, 112, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 115, 115, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 118, 118, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 121, 121, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 124, 124, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -59, -59, -58, 0, 0, 0, 0, 2, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -7615, 0, 0, -7615, 0, 0, 0, 0, 10, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 8, 8, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -8, 0, 0, -8, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 127, 127, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 134, 134, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 138, 138, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 74, 74, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 86, 86, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 100, 100, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 128, 128, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 112, 112, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 126, 126, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 176, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 179, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 182, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 185, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 188, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 191, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 194, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 197, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 176, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 179, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 182, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 185, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 188, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 191, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 194, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 197, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 200, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 203, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 206, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 209, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 212, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 215, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 218, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 221, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 200, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 203, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 206, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 209, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 212, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 215, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 218, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 221, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 224, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 227, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 230, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 233, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 236, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 239, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 242, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 245, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 224, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 227, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 230, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 233, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 236, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 239, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 242, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -8, 245, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 260, 257, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 248, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 266, 263, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 142, 142, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 297, 293, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -74, 0, 0, -74, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -9, 248, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, -7205, -7205, -7173, 0, 0, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 272, 269, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 251, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 278, 275, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 145, 145, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 305, 301, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -86, 0, 0, -86, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -9, 251, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 148, 148, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 152, 152, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 155, 155, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -100, 0, 0, -100, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 159, 159, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 163, 163, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 166, 166, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 169, 169, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -112, 0, 0, -112, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -7, 0, 0, -7, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 284, 281, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 254, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 290, 287, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 173, 173, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 313, 309, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -128, 0, 0, -128, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -126, 0, 0, -126, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 16, 0, 0, 0, -1, 0, -9, 254, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 1 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 17, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 4, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 4, 20, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 10, 18, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 10, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 10, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 17, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 19, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 23, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 0 }, - { 24, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 0 }, - { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 0 }, - { 23, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 24, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 10, 15, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 15, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 17, 0 }, - { 7, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 0 }, - { 8, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 0 }, - { 10, 11, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 10, 14, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 10, 16, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 10, 12, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 10, 15, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 6, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 4, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0 }, - { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 5, 0 }, - { 26, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 8, 0 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 12, 5, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 5, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 12, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 5, 17, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 4, 4, 22, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 4, 4, 12, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 4, 4, 12, 0 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 20 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 21 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 21 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 0, 8, 30, 21 }, + { 0, 17, 103, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 21 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 21 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 21 }, + { 0, 17, 107, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 21 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 21 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 21 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 21 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 22 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 22 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 0, 8, 30, 22 }, + { 0, 17, 118, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 22 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 30, 22 }, + { 0, 17, 122, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 30, 22 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 9, 11, 22 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 30, 22 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 7, 8, 12, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 18, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 18, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 23 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 11, 9, 11, 23 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 17, 23 }, + { 0, 17, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 13, 0, 23 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 13, 1, 23 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 4, 4, 21, 23 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 23 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 23 }, + { 0, 17, 129, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 0, 17, 130, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 0, 17, 132, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7, 4, 4, 17, 23 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 21, 23 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 23 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 23 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 23 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 18, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 18, 23 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 23 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 4, 23 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 24 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 30, 24 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 30, 24 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 30, 24 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 24 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 30, 24 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 24 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 24 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 24 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 24 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 30, 24 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 24 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 17, 24 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 24 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 30, 24 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 24 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 30, 24 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 24 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 30, 24 }, + { 14, 0, 0, 0, -1, 0, 7264, 0, 0, 7264, 0, 0, 0, 0, 1, 0, 7, 7, 12, 25 }, + { 14, 0, 0, 0, -1, 0, 7264, 0, 0, 7264, 0, 0, 0, 0, 13, 0, 7, 7, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 25 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 7, 8, 25, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 8, 7, 8, 25, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 7, 8, 26, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 9, 7, 8, 26, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 7, 8, 27, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 10, 7, 8, 27, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 27 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 27 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 27 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 27 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 27 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 27 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 12, 27 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 27 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 27 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 28 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 29 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 29 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 29 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 12, 29 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 29 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 17, 30 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 30 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 13, 0, 30 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 13, 1, 30 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 31 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 2 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 31 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 42 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 42 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 42 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 43 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 43 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 43 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 12, 17, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 44 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 44 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 45 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 45 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 32 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 32 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 4, 4, 30, 32 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 30, 32 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 32 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 32 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 30, 32 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 32 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 9, 32 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 30, 32 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 32 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 32 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 33 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 11, 6, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 6, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 33 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 18, 33 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 11, 6, 33 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 6, 33 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 33 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 4, 33 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 11, 9, 11, 33 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 33 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 12, 33 }, + { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 33 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 33 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 47 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 47 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 4, 4, 21, 47 }, + { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 47 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 47 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 47 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 47 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 12, 6, 47 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 47 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 30, 48 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 30, 56 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 56 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 30, 56 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 4, 4, 30, 56 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 11, 9, 11, 56 }, + { 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 56 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 30, 56 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 32 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 55 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 55 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 55 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 4, 4, 21, 55 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 55 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 78 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 30, 78 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 78 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 78 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 30, 78 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 78 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 78 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 78 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 78 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 78 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 30, 78 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 62 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 4, 4, 21, 62 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 62 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 62 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 4, 4, 21, 62 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 11, 9, 11, 62 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 17, 62 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 62 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 62 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 62 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 62 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 62 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 67 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 67 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 67 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 67 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 67 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 67 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 67 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 67 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 93 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 93 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 93 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 93 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 93 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 93 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 68 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 68 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 68 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 68 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 68 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 68 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 68 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 69 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 69 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 69 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 69 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 67 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 1 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 1 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 2 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 2 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 1 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 5 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 4 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 5 }, + { 15, 0, 0, 0, -1, 0, 0, 5, 5, 0, 0, 1, 1, 0, 8, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 3814, 3814, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 4 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 4, 4, 21, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 1 }, + { 0, 17, 234, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 1 }, + { 0, 17, 214, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 1 }, + { 0, 17, 202, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 1 }, + { 0, 17, 233, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 1 }, + { 15, 0, 0, 0, -1, 0, 0, 112, 112, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 115, 115, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 118, 118, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 121, 121, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 124, 124, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -59, -59, -58, 0, 0, 0, 0, 2, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -7615, 0, 0, -7615, 0, 0, 0, 0, 10, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 10, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 8, 8, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -8, 0, 0, -8, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 127, 127, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 130, 130, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 134, 134, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 138, 138, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 74, 74, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 86, 86, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 100, 100, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 128, 128, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 112, 112, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 126, 126, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 176, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 179, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 182, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 185, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 188, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 191, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 194, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 197, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 176, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 179, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 182, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 185, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 188, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 191, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 194, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 197, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 200, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 203, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 206, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 209, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 212, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 215, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 218, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 221, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 200, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 203, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 206, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 209, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 212, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 215, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 218, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 221, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 224, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 227, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 230, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 233, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 236, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 239, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 242, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 245, 8, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 224, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 227, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 230, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 233, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 236, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 239, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 242, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -8, 245, 0, -8, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 260, 257, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 248, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 266, 263, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 142, 142, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 297, 293, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -74, 0, 0, -74, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -9, 248, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, -7205, -7205, -7173, 0, 0, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 272, 269, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 251, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 278, 275, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 145, 145, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 305, 301, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -86, 0, 0, -86, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -9, 251, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 148, 148, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 152, 152, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 155, 155, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -100, 0, 0, -100, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 159, 159, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 163, 163, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 166, 166, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 169, 169, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -112, 0, 0, -112, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -7, 0, 0, -7, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 284, 281, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 254, 9, 0, 0, 1, 0, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 290, 287, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 173, 173, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 313, 309, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -128, 0, 0, -128, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -126, 0, 0, -126, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, -9, 254, 0, -9, 0, 1, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 18, 4 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 17, 2 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 4, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 4, 20, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 10, 18, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 10, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 10, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 17, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 17, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 19, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 23, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 2 }, + { 24, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 13, 3, 2 }, + { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 0, 2 }, + { 23, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 24, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 10, 15, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 15, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 0, 17, 2 }, + { 7, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 2 }, + { 8, 7, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 35, 2 }, + { 10, 11, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 10, 14, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 10, 16, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 10, 12, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 10, 15, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 6, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 4, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 2 }, + { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 5, 2 }, + { 26, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 8, 2 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 12, 5, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 12, 5, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 12, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 2 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 5, 17, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 4, 4, 22, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 4, 4, 12, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 4, 4, 12, 2 }, { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 12, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 0 }, - { 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 0 }, - { 5, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 10, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 9, 0 }, - { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 9, 0 }, - { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 28 }, - { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 28 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 28 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 28 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 28 }, - { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 0 }, - { 14, 0, 0, 0, -1, 0, -7517, 0, 0, -7517, 0, 0, 0, 0, 1, 0, 7, 7, 12, 1 }, - { 14, 0, 0, 0, -1, 0, -8383, 0, 0, -8383, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -8262, 0, 0, -8262, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 28, 0, 0, 28, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 7, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -28, -28, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 4, 0, 0, 0, -1, 0, 16, 0, 0, 16, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 4, 0, 0, 0, -1, 0, 0, -16, -16, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 0 }, - { 26, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 2016, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 1824, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 2104, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 2108, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 2106, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0 }, - { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 26, 0, 0, 26, 0, 0, 0, 0, 1, 0, 7, 7, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, -26, -26, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 0 }, - { 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 1, 0 }, - { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 1, 0 }, - { 21, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 0 }, - { 21, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 0 }, - { 26, 10, 0, 0, -1, -1824, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2016, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2104, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2106, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, -2108, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 48, 0, 0, 48, 0, 0, 0, 0, 8, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -48, -48, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10743, 0, 0, -10743, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -3814, 0, 0, -3814, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10727, 0, 0, -10727, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -10795, -10795, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -10792, -10792, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10780, 0, 0, -10780, 0, 0, 0, 0, 10, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10749, 0, 0, -10749, 0, 0, 0, 0, 10, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10783, 0, 0, -10783, 0, 0, 0, 0, 10, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10782, 0, 0, -10782, 0, 0, 0, 0, 11, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, -10815, 0, 0, -10815, 0, 0, 0, 0, 11, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 11, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 11, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 13, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -7264, -7264, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 22 }, - { 15, 0, 0, 0, -1, 0, 0, -7264, -7264, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 22 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 0 }, - { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 0 }, - { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 3, 0 }, - { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 3, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 6, 0 }, - { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 17, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 19, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0 }, - { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 14, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0 }, - { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0 }, - { 0, 17, 218, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 1, 0, 224, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 23 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 14, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 14, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 5, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 5, 0 }, - { 0, 17, 8, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 28 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 5, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 14, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 0, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 14, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 14, 23 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 8, 5, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 23 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 14, 23 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 0 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 14, 23 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 14, 0 }, - { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 14, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 5, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 2 }, - { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 21, 2 }, + { 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 3 }, + { 5, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 3 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 10, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 9, 2 }, + { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 21, 1 }, + { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 1 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 1 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 1 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 1 }, + { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 9, 2 }, + { 14, 0, 0, 0, -1, 0, -7517, 0, 0, -7517, 0, 0, 0, 0, 1, 0, 7, 7, 12, 4 }, + { 14, 0, 0, 0, -1, 0, -8383, 0, 0, -8383, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -8262, 0, 0, -8262, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 28, 0, 0, 28, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 6, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 6, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 7, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, -28, -28, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 3 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 4, 0, 0, 0, -1, 0, 16, 0, 0, 16, 0, 0, 0, 0, 1, 0, 7, 7, 12, 3 }, + { 4, 0, 0, 0, -1, 0, 0, -16, -16, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 3 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 3 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 3 }, + { 26, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 2016, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 1824, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 2104, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 2108, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 2106, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 2 }, + { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 26, 0, 0, 26, 0, 0, 0, 0, 1, 0, 7, 7, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, -26, -26, 0, 0, 0, 0, 0, 1, 0, 7, 6, 12, 2 }, + { 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 3, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 2 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 1, 2 }, + { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 21, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 1, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 12, 54 }, + { 21, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 2 }, + { 21, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 13, 1, 2 }, + { 26, 10, 0, 0, -1, -1824, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2016, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2104, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2106, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, -2108, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 48, 0, 0, 48, 0, 0, 0, 0, 8, 0, 7, 7, 12, 57 }, + { 15, 0, 0, 0, -1, 0, 0, -48, -48, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 57 }, + { 14, 0, 0, 0, -1, 0, -10743, 0, 0, -10743, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -3814, 0, 0, -3814, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10727, 0, 0, -10727, 0, 0, 0, 0, 9, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -10795, -10795, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -10792, -10792, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10780, 0, 0, -10780, 0, 0, 0, 0, 10, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10749, 0, 0, -10749, 0, 0, 0, 0, 10, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10783, 0, 0, -10783, 0, 0, 0, 0, 10, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10782, 0, 0, -10782, 0, 0, 0, 0, 11, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, -10815, 0, 0, -10815, 0, 0, 0, 0, 11, 0, 7, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 8, 0, 7, 7, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 46 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 46 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 11, 0, 7, 7, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 11, 0, 7, 6, 12, 46 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 46 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 13, 0, 7, 7, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 46 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 46 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 46 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 46 }, + { 15, 0, 0, 0, -1, 0, 0, -7264, -7264, 0, 0, 0, 0, 0, 8, 0, 7, 6, 12, 25 }, + { 15, 0, 0, 0, -1, 0, 0, -7264, -7264, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 25 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 58 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 58 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 58 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 17, 58 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 58 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 2 }, + { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 2 }, + { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 3, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 2 }, + { 23, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 3, 2 }, + { 24, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 13, 3, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 6, 2 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 2 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 7, 0, 0, 7, 1, 0, 0, 1, 10, 0, 7, 7, 12, 0 }, - { 28, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 9, 0, 0, 9, 1, 0, 0, 1, 12, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 12, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 11, 0, 0, 11, 1, 0, 0, 1, 13, 0, 7, 7, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 0 }, - { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 18, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 6, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 8 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 0 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 0 }, - { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 21 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 21 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 21 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 17, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 0 }, - { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 11, 7, 8, 23, 23 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 12, 7, 8, 24, 23 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 17, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 19, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 37 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 2 }, + { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 14, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 5, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 2 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 37 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 2 }, + { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 2 }, + { 0, 17, 218, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 228, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 0, 17, 222, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 1, 0, 224, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 26 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 14, 2 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 14, 37 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 5, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 5, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 5, 34 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 34 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 5, 34 }, + { 0, 17, 8, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 1 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 5, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 5, 34 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 14, 34 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 0, 5, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 5, 35 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 14, 35 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 5, 2 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 5, 35 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 8, 14, 35 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 14, 36 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 14, 36 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 14, 26 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 14, 36 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 14, 36 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 6, 8, 5, 35 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 26 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 14, 26 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 2 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 14, 26 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 14, 35 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 14, 37 }, + { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 14, 38 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 5, 38 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 38 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 38 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 83 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 83 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 83 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 83 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 70 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 70 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 70 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 6, 70 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 70 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 70 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 5 }, + { 2, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 5 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 5 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 5 }, + { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 5 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 84 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 84 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 84 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 84 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 84 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 84 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 2 }, + { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 7, 0, 0, 7, 1, 0, 0, 1, 10, 0, 7, 7, 12, 3 }, + { 28, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 9, 0, 0, 9, 1, 0, 0, 1, 12, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 12, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 12, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 13, 0, 7, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 11, 0, 0, 11, 1, 0, 0, 1, 13, 0, 7, 7, 12, 3 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 6, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 59 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 59 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 59 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 4, 4, 21, 59 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 59 }, + { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 65 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 18, 65 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 12, 6, 65 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 71 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 71 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 71 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 71 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 71 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 11 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 11 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 72 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 72 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 72 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 72 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 17, 72 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 72 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 73 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 73 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 73 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 73 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 73 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 85 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 85 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 85 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 85 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 85 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 85 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 85 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 85 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 85 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 85 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 77 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 4, 4, 21, 77 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 4, 4, 21, 77 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 9, 11, 77 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 77 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 12, 17, 77 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 24 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 24 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 24 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 79 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 79 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 30, 79 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 30, 79 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 30, 79 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 86 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 86 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 86 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 17, 86 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 86 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 86 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 27 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 86 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 86 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 86 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 86 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 86 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 9, 11, 86 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 11, 7, 8, 23, 26 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 12, 7, 8, 24, 26 }, { 11, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 31, 0 }, { 12, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 25, 22, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 31, 28, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 37, 34, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 44, 40, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 52, 48, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 59, 56, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 71, 68, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 77, 74, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 83, 80, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 89, 86, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 95, 92, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 13, 4 }, - { 0, 17, 26, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 4 }, - { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 4 }, - { 28, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 5 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 14, 37 }, + { 15, 0, 0, 0, -1, 0, 0, 25, 22, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 31, 28, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 37, 34, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 44, 40, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 52, 48, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 59, 56, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 71, 68, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 77, 74, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 83, 80, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 89, 86, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 95, 92, 0, 0, 1, 1, 0, 1, 0, 7, 6, 12, 6 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 8, 13, 7 }, + { 0, 17, 26, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 21, 7 }, + { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 7 }, + { 28, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 8 }, { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0 }, - { 27, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 10, 5 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 28 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 10, 11, 8, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 11, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 9, 11, 8, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 10, 0, 8, 0 }, - { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 15, 0 }, - { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 0 }, - { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 14, 0 }, - { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 13, 0, 0 }, - { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 13, 1, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 11, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 10, 1, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 5, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 11, 5, 0 }, - { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 20, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 0 }, - { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 5 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 22, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 0, 14, 0 }, - { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 14, 0 }, - { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 12, 0 }, - { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 5, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 23 }, - { 10, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 4, 21, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 29, 0 }, + { 27, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 10, 8 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 4, 21, 1 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 10, 11, 8, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 11, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 9, 11, 8, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 10, 0, 8, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 2 }, + { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 13, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 15, 2 }, + { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 2 }, + { 19, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 14, 2 }, + { 21, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 13, 0, 2 }, + { 22, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 13, 1, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 11, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 10, 1, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 10, 0, 5, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 9, 11, 5, 2 }, + { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 26, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 20, 3, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 14, 2 }, + { 26, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 26, 10, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, 8, 12, 8 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 22, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 0, 14, 2 }, + { 25, 6, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 26, 10, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 26, 10, 0, 0, -1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 14, 0, 0, 0, -1, 0, 32, 0, 0, 32, 0, 0, 0, 0, 1, 0, 7, 7, 14, 3 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 14, 2 }, + { 15, 0, 0, 0, -1, 0, 0, -32, -32, 0, 0, 0, 0, 0, 1, 0, 7, 6, 14, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 8, 12, 35 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 5, 2 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 8, 12, 26 }, + { 10, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 4, 21, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 29, 2 }, { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 17, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 17, 0 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0 }, - { 4, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 1 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 1 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 1 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 8, 12, 0 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 8, 12, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 40, 0, 0, 40, 0, 0, 0, 0, 5, 0, 7, 7, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 40, 0, 0, 40, 0, 0, 0, 0, 7, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -40, -40, 0, 0, 0, 0, 0, 5, 0, 7, 6, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, -40, -40, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 0 }, - { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 0 }, - { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 0 }, - { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 0 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 0 }, - { 5, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 5, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 5, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 5, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 12, 17, 0 }, - { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0 }, - { 5, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 5, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 5 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 17, 0 }, - { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 0 }, - { 10, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 4, 4, 12, 0 }, - { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 0 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 0 }, - { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 17, 0 }, - { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 0 }, - { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 0 }, - { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 0, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 1, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 6, 8, 14, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 14, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0 }, - { 1, 0, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 0 }, - { 1, 0, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 4, 4, 21, 0 }, - { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 28 }, - { 1, 0, 226, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 4, 4, 21, 0 }, - { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 4, 4, 21, 0 }, - { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 28 }, - { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 1 }, - { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 7, 12, 0 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 6, 12, 0 }, - { 26, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 0 }, - { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 7, 12, 0 }, - { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 0 }, - { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 5 }, - { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 5 }, - { 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 5, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 5, 0, 28, 0 }, - { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0 }, - { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 14, 0 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 49 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 17, 2 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 17, 2 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 12, 2 }, + { 4, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 4 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 4 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 4 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 74 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 75 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 8, 12, 39 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 39 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 8, 12, 40 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 8, 12, 40 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 50 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 17, 50 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 60 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 60 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 60 }, + { 14, 0, 0, 0, -1, 0, 40, 0, 0, 40, 0, 0, 0, 0, 5, 0, 7, 7, 12, 41 }, + { 14, 0, 0, 0, -1, 0, 40, 0, 0, 40, 0, 0, 0, 0, 7, 0, 7, 7, 12, 41 }, + { 15, 0, 0, 0, -1, 0, 0, -40, -40, 0, 0, 0, 0, 0, 5, 0, 7, 6, 12, 41 }, + { 15, 0, 0, 0, -1, 0, 0, -40, -40, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 41 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 51 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 52 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 11, 9, 11, 52 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 8, 12, 53 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 87 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 87 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 87 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 64 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 64 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 64 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 64 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 7, 8, 12, 76 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 76 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 98 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 97 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 8, 12, 61 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 61 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 61 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 61 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 61 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 61 }, + { 5, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 5, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 5, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 5, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 17, 61 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 12, 17, 61 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 61 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 88 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 88 }, + { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 88 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 80 }, + { 25, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 17, 80 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 89 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 89 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 90 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 90 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 91 }, + { 5, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 5, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 8 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 4, 4, 21, 94 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 94 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 94 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 21, 94 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 17, 94 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 94 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 11, 9, 11, 94 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 92 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 4, 4, 21, 92 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 92 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 92 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 4, 4, 21, 92 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 92 }, + { 10, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 4, 4, 12, 92 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 17, 92 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 101 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 101 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 96 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 96 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 96 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 96 }, + { 0, 17, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 96 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 96 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 17, 96 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 17, 96 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 100 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 100 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 100 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 17, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 17, 100 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 100 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 102 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 102 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 102 }, + { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 102 }, + { 0, 17, 7, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 102 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 11, 9, 11, 102 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 63 }, + { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 8, 12, 63 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 63 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 12, 81 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 0, 81 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 8, 1, 81 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 8, 12, 84 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 99 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 7, 4, 4, 21, 99 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 4, 4, 21, 99 }, + { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 99 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 6, 8, 14, 35 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 14, 34 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 2 }, + { 1, 0, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 2 }, + { 1, 0, 216, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 4, 4, 21, 2 }, + { 0, 17, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 1 }, + { 1, 0, 226, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 4, 4, 21, 2 }, + { 10, 18, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 4, 4, 21, 2 }, + { 0, 17, 220, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 4, 21, 1 }, + { 0, 17, 230, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 21, 4 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 7, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 7, 6, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 6, 12, 2 }, + { 26, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 12, 2 }, + { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 7, 12, 2 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 7, 6, 12, 2 }, + { 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 11, 9, 11, 2 }, + { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 7, 8, 12, 8 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 8 }, + { 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 5, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 5, 0, 28, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 14, 34 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 14, 2 }, { 13, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 0 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 8, 14, 0 }, - { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 28 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 14, 37 }, + { 0, 17, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 4, 4, 21, 1 }, { 12, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 0 } }; @@ -6371,7 +6726,39 @@ Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4) Q_CORE_EXPORT Script QT_FASTCALL script(uint ucs4) { - return (Script)qGetProp(ucs4)->script; + switch (qGetProp(ucs4)->script) { + case QChar::Script_Inherited: return Inherited; + case QChar::Script_Common: return Common; + case QChar::Script_Arabic: return Arabic; + case QChar::Script_Armenian: return Armenian; + case QChar::Script_Bengali: return Bengali; + case QChar::Script_Cyrillic: return Cyrillic; + case QChar::Script_Devanagari: return Devanagari; + case QChar::Script_Georgian: return Georgian; + case QChar::Script_Greek: return Greek; + case QChar::Script_Gujarati: return Gujarati; + case QChar::Script_Gurmukhi: return Gurmukhi; + case QChar::Script_Hangul: return Hangul; + case QChar::Script_Hebrew: return Hebrew; + case QChar::Script_Kannada: return Kannada; + case QChar::Script_Khmer: return Khmer; + case QChar::Script_Lao: return Lao; + case QChar::Script_Malayalam: return Malayalam; + case QChar::Script_Myanmar: return Myanmar; + case QChar::Script_Ogham: return Ogham; + case QChar::Script_Oriya: return Oriya; + case QChar::Script_Runic: return Runic; + case QChar::Script_Sinhala: return Sinhala; + case QChar::Script_Syriac: return Syriac; + case QChar::Script_Tamil: return Tamil; + case QChar::Script_Telugu: return Telugu; + case QChar::Script_Thaana: return Thaana; + case QChar::Script_Thai: return Thai; + case QChar::Script_Tibetan: return Tibetan; + case QChar::Script_Nko: return Nko; + default: break; + }; + return Common; } diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h index 9c02791acc..0aa8c1f784 100644 --- a/src/corelib/tools/qunicodetables_p.h +++ b/src/corelib/tools/qunicodetables_p.h @@ -83,7 +83,7 @@ struct Properties { ushort wordBreakClass : 8; /* 4 used */ ushort sentenceBreakClass : 8; /* 4 used */ ushort lineBreakClass : 8; /* 6 used */ - ushort script : 8; /* 5 used */ + ushort script : 8; /* 7 used */ }; Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4); -- cgit v1.2.3 From 96ff3fbb66867cb973ea216c7ced1258f6f1fcfa Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 20 Dec 2012 15:59:28 +0100 Subject: QMessageBox: Add property 'textInteractionFlags'. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ia7a4801599f18a1202aa89f54e48066e3d271bfb Reviewed-by: Thorbjørn Lund Martsum Reviewed-by: Jens Bache-Wiig --- src/widgets/dialogs/qmessagebox.cpp | 24 ++++++++++++++++++++++++ src/widgets/dialogs/qmessagebox.h | 4 ++++ 2 files changed, 28 insertions(+) (limited to 'src') diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp index e2e15870db..1bab8b7785 100644 --- a/src/widgets/dialogs/qmessagebox.cpp +++ b/src/widgets/dialogs/qmessagebox.cpp @@ -1224,6 +1224,30 @@ void QMessageBox::setTextFormat(Qt::TextFormat format) d->updateSize(); } +/*! + \property QMessageBox::textInteractionFlags + \since 5.1 + + Specifies how the label of the message box should interact with user + input. + + The default value depends on the style. + + \sa QStyle::SH_MessageBox_TextInteractionFlags +*/ + +Qt::TextInteractionFlags QMessageBox::textInteractionFlags() const +{ + Q_D(const QMessageBox); + return d->label->textInteractionFlags(); +} + +void QMessageBox::setTextInteractionFlags(Qt::TextInteractionFlags flags) +{ + Q_D(QMessageBox); + d->label->setTextInteractionFlags(flags); +} + /*! \reimp */ diff --git a/src/widgets/dialogs/qmessagebox.h b/src/widgets/dialogs/qmessagebox.h index 927da83741..fdcfdc8779 100644 --- a/src/widgets/dialogs/qmessagebox.h +++ b/src/widgets/dialogs/qmessagebox.h @@ -69,6 +69,7 @@ class Q_WIDGETS_EXPORT QMessageBox : public QDialog Q_PROPERTY(QString detailedText READ detailedText WRITE setDetailedText) #endif Q_PROPERTY(QString informativeText READ informativeText WRITE setInformativeText) + Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags WRITE setTextInteractionFlags) public: enum Icon { @@ -186,6 +187,9 @@ public: Qt::TextFormat textFormat() const; void setTextFormat(Qt::TextFormat format); + void setTextInteractionFlags(Qt::TextInteractionFlags flags); + Qt::TextInteractionFlags textInteractionFlags() const; + static StandardButton information(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton); -- cgit v1.2.3 From b8623461d101d3f00603d36b2820b22da4d6708d Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Fri, 21 Dec 2012 12:59:45 +0100 Subject: Fix typo in QWidget::setLayout() documentation. Change-Id: I4882f01b980d7b89e54be2eeacc3a83fd014d0fe Reviewed-by: Giuseppe D'Angelo --- src/widgets/kernel/qwidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index ace25fa78b..55326e2ef9 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -9100,7 +9100,7 @@ QLayout *QWidget::layout() const existing layout manager (returned by layout()) before you can call setLayout() with the new layout. - If \a layout is the layout manger on a different widget, setLayout() + If \a layout is the layout manager on a different widget, setLayout() will reparent the layout and make it the layout manager for this widget. Example: -- cgit v1.2.3 From dde09c429ae8b7ad0df4e4b36b8459d2b85a1219 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Fri, 21 Dec 2012 15:23:28 +0100 Subject: Make distance fields rendering work with Opentype CFF fonts If the font has a CFF table, GDI will not label it as TMPF_TRUETYPE, however, we can still use GetFontData to get the SFNT tables. This is required to get the maxp table which contains the glyph count, which is required to use the font with the distance-field renderer. Task-number: QTBUG-28746 Change-Id: I3ca1e3d96ea53c453e6fa422b33d1f1f5050a82c Reviewed-by: Konstantin Ritt --- src/plugins/platforms/windows/qwindowsfontengine.cpp | 13 ++++++++++++- src/plugins/platforms/windows/qwindowsfontengine.h | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsfontengine.cpp b/src/plugins/platforms/windows/qwindowsfontengine.cpp index 578a0cd20b..e51d6d4e7e 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.cpp +++ b/src/plugins/platforms/windows/qwindowsfontengine.cpp @@ -155,9 +155,20 @@ static OUTLINETEXTMETRIC *getOutlineTextMetric(HDC hdc) return otm; } +bool QWindowsFontEngine::hasCFFTable() const +{ + HDC hdc = m_fontEngineData->hdc; + SelectObject(hdc, hfont); + return GetFontData(hdc, MAKE_TAG('C', 'F', 'F', ' '), 0, 0, 0) != GDI_ERROR; +} + void QWindowsFontEngine::getCMap() { ttf = (bool)(tm.tmPitchAndFamily & TMPF_TRUETYPE); + + // TMPF_TRUETYPE is not set for fonts with CFF tables + cffTable = !ttf && hasCFFTable(); + HDC hdc = m_fontEngineData->hdc; SelectObject(hdc, hfont); bool symb = false; @@ -1041,7 +1052,7 @@ void QWindowsFontEngine::getUnscaledGlyph(glyph_t glyph, QPainterPath *path, gly bool QWindowsFontEngine::getSfntTableData(uint tag, uchar *buffer, uint *length) const { - if (!ttf) + if (!ttf && !cffTable) return false; HDC hdc = m_fontEngineData->hdc; SelectObject(hdc, hfont); diff --git a/src/plugins/platforms/windows/qwindowsfontengine.h b/src/plugins/platforms/windows/qwindowsfontengine.h index b1aeb94b18..b1e41e89d1 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.h +++ b/src/plugins/platforms/windows/qwindowsfontengine.h @@ -145,6 +145,7 @@ public: private: QWindowsNativeImage *drawGDIGlyph(HFONT font, glyph_t, int margin, const QTransform &xform, QImage::Format mask_format); + bool hasCFFTable() const; const QSharedPointer m_fontEngineData; @@ -155,6 +156,7 @@ private: uint stockFont : 1; uint ttf : 1; uint hasOutline : 1; + uint cffTable : 1; TEXTMETRIC tm; int lw; const unsigned char *cmap; -- cgit v1.2.3 From 9b0fab6b62df98519ebfab117f14b9d3465d8c68 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Fri, 21 Dec 2012 18:35:58 +0200 Subject: Update Qt internals to use QChar::Script ...and remove the outdated QUnicodeTables::Script enum. QFontEngineData now has one extra slot that never used (engines[QChar::Script_Inherited]). engines[QChar::Script_Unknown], if accessed, would be set with a Box engine instance, and could be used as a minor optimization some time later. In order to preserve the existing behavior, we map all scripts up to Latin to Common. Change-Id: Ide4182a0f8447b4bf25713ecc3fe8097b8fed040 Reviewed-by: Pierre Rossi Reviewed-by: Konstantin Ritt --- src/corelib/tools/qharfbuzz_p.h | 77 +++++++++++- src/corelib/tools/qtextboundaryfinder.cpp | 11 +- src/corelib/tools/qunicodetables.cpp | 37 ------ src/corelib/tools/qunicodetables_p.h | 111 ---------------- src/corelib/tools/qunicodetools.cpp | 6 +- src/gui/painting/qpaintbuffer.cpp | 2 +- src/gui/painting/qpainter.cpp | 4 +- src/gui/text/qfont.cpp | 35 +++--- src/gui/text/qfont_p.h | 3 +- src/gui/text/qfont_qpa.cpp | 2 +- src/gui/text/qfontdatabase.cpp | 87 +++++++------ src/gui/text/qfontdatabase_qpa.cpp | 12 +- src/gui/text/qfontengine_qpa.cpp | 4 +- src/gui/text/qfontmetrics.cpp | 96 +++++++------- src/gui/text/qplatformfontdatabase.cpp | 7 +- src/gui/text/qplatformfontdatabase.h | 6 +- src/gui/text/qtextengine.cpp | 31 ++--- .../fontdatabases/basic/qbasicfontdatabase.cpp | 8 +- .../fontdatabases/basic/qbasicfontdatabase_p.h | 4 +- .../fontconfig/qfontconfigdatabase.cpp | 139 ++++++++++++++------- .../fontconfig/qfontconfigdatabase_p.h | 6 +- .../fontdatabases/mac/qcoretextfontdatabase.mm | 10 +- .../fontdatabases/mac/qcoretextfontdatabase_p.h | 4 +- .../platforms/windows/qwindowsfontdatabase.cpp | 14 +-- .../platforms/windows/qwindowsfontdatabase.h | 4 +- .../platforms/windows/qwindowsfontdatabase_ft.cpp | 10 +- .../platforms/windows/qwindowsfontdatabase_ft.h | 4 +- .../platforms/windows/qwindowsfontengine.cpp | 3 +- 28 files changed, 348 insertions(+), 389 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qharfbuzz_p.h b/src/corelib/tools/qharfbuzz_p.h index 8330921323..9efbdcb692 100644 --- a/src/corelib/tools/qharfbuzz_p.h +++ b/src/corelib/tools/qharfbuzz_p.h @@ -53,11 +53,86 @@ #ifndef QHARFBUZZ_P_H #define QHARFBUZZ_P_H -#include +#include + #include QT_BEGIN_NAMESPACE +static inline HB_Script script_to_hbscript(uchar script) +{ + switch (script) { + case QChar::Script_Inherited: return HB_Script_Inherited; + case QChar::Script_Common: return HB_Script_Common; + case QChar::Script_Arabic: return HB_Script_Arabic; + case QChar::Script_Armenian: return HB_Script_Armenian; + case QChar::Script_Bengali: return HB_Script_Bengali; + case QChar::Script_Cyrillic: return HB_Script_Cyrillic; + case QChar::Script_Devanagari: return HB_Script_Devanagari; + case QChar::Script_Georgian: return HB_Script_Georgian; + case QChar::Script_Greek: return HB_Script_Greek; + case QChar::Script_Gujarati: return HB_Script_Gujarati; + case QChar::Script_Gurmukhi: return HB_Script_Gurmukhi; + case QChar::Script_Hangul: return HB_Script_Hangul; + case QChar::Script_Hebrew: return HB_Script_Hebrew; + case QChar::Script_Kannada: return HB_Script_Kannada; + case QChar::Script_Khmer: return HB_Script_Khmer; + case QChar::Script_Lao: return HB_Script_Lao; + case QChar::Script_Malayalam: return HB_Script_Malayalam; + case QChar::Script_Myanmar: return HB_Script_Myanmar; + case QChar::Script_Ogham: return HB_Script_Ogham; + case QChar::Script_Oriya: return HB_Script_Oriya; + case QChar::Script_Runic: return HB_Script_Runic; + case QChar::Script_Sinhala: return HB_Script_Sinhala; + case QChar::Script_Syriac: return HB_Script_Syriac; + case QChar::Script_Tamil: return HB_Script_Tamil; + case QChar::Script_Telugu: return HB_Script_Telugu; + case QChar::Script_Thaana: return HB_Script_Thaana; + case QChar::Script_Thai: return HB_Script_Thai; + case QChar::Script_Tibetan: return HB_Script_Tibetan; + case QChar::Script_Nko: return HB_Script_Nko; + default: break; + }; + return HB_Script_Common; +} + +static inline uchar hbscript_to_script(uchar script) +{ + switch (script) { + case HB_Script_Inherited: return QChar::Script_Inherited; + case HB_Script_Common: return QChar::Script_Common; + case HB_Script_Arabic: return QChar::Script_Arabic; + case HB_Script_Armenian: return QChar::Script_Armenian; + case HB_Script_Bengali: return QChar::Script_Bengali; + case HB_Script_Cyrillic: return QChar::Script_Cyrillic; + case HB_Script_Devanagari: return QChar::Script_Devanagari; + case HB_Script_Georgian: return QChar::Script_Georgian; + case HB_Script_Greek: return QChar::Script_Greek; + case HB_Script_Gujarati: return QChar::Script_Gujarati; + case HB_Script_Gurmukhi: return QChar::Script_Gurmukhi; + case HB_Script_Hangul: return QChar::Script_Hangul; + case HB_Script_Hebrew: return QChar::Script_Hebrew; + case HB_Script_Kannada: return QChar::Script_Kannada; + case HB_Script_Khmer: return QChar::Script_Khmer; + case HB_Script_Lao: return QChar::Script_Lao; + case HB_Script_Malayalam: return QChar::Script_Malayalam; + case HB_Script_Myanmar: return QChar::Script_Myanmar; + case HB_Script_Ogham: return QChar::Script_Ogham; + case HB_Script_Oriya: return QChar::Script_Oriya; + case HB_Script_Runic: return QChar::Script_Runic; + case HB_Script_Sinhala: return QChar::Script_Sinhala; + case HB_Script_Syriac: return QChar::Script_Syriac; + case HB_Script_Tamil: return QChar::Script_Tamil; + case HB_Script_Telugu: return QChar::Script_Telugu; + case HB_Script_Thaana: return QChar::Script_Thaana; + case HB_Script_Thai: return QChar::Script_Thai; + case HB_Script_Tibetan: return QChar::Script_Tibetan; + case HB_Script_Nko: return QChar::Script_Nko; + default: break; + }; + return QChar::Script_Common; +} + Q_CORE_EXPORT HB_Bool qShapeItem(HB_ShaperItem *item); // ### temporary diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp index 968a580725..3ffb59b3df 100644 --- a/src/corelib/tools/qtextboundaryfinder.cpp +++ b/src/corelib/tools/qtextboundaryfinder.cpp @@ -41,7 +41,6 @@ #include #include -#include #include QT_BEGIN_NAMESPACE @@ -61,15 +60,15 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int // correctly assign script, isTab and isObject to the script analysis const ushort *uc = unicode; const ushort *e = uc + length; - int script = QUnicodeTables::Common; - int lastScript = QUnicodeTables::Common; + uchar script = QChar::Script_Common; + uchar lastScript = QChar::Script_Common; const ushort *start = uc; while (uc < e) { - int s = QUnicodeTables::script(*uc); - if (s != QUnicodeTables::Inherited) + int s = QChar::script(*uc); + if (s != QChar::Script_Inherited) script = s; if (*uc == QChar::ObjectReplacementCharacter || *uc == QChar::LineSeparator || *uc == 9) - script = QUnicodeTables::Common; + script = QChar::Script_Common; if (script != lastScript) { if (uc != start) { QUnicodeTools::ScriptItem item; diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp index 927fb7462b..8b85ff7565 100644 --- a/src/corelib/tools/qunicodetables.cpp +++ b/src/corelib/tools/qunicodetables.cpp @@ -6724,43 +6724,6 @@ Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4) return (LineBreakClass)qGetProp(ucs4)->lineBreakClass; } -Q_CORE_EXPORT Script QT_FASTCALL script(uint ucs4) -{ - switch (qGetProp(ucs4)->script) { - case QChar::Script_Inherited: return Inherited; - case QChar::Script_Common: return Common; - case QChar::Script_Arabic: return Arabic; - case QChar::Script_Armenian: return Armenian; - case QChar::Script_Bengali: return Bengali; - case QChar::Script_Cyrillic: return Cyrillic; - case QChar::Script_Devanagari: return Devanagari; - case QChar::Script_Georgian: return Georgian; - case QChar::Script_Greek: return Greek; - case QChar::Script_Gujarati: return Gujarati; - case QChar::Script_Gurmukhi: return Gurmukhi; - case QChar::Script_Hangul: return Hangul; - case QChar::Script_Hebrew: return Hebrew; - case QChar::Script_Kannada: return Kannada; - case QChar::Script_Khmer: return Khmer; - case QChar::Script_Lao: return Lao; - case QChar::Script_Malayalam: return Malayalam; - case QChar::Script_Myanmar: return Myanmar; - case QChar::Script_Ogham: return Ogham; - case QChar::Script_Oriya: return Oriya; - case QChar::Script_Runic: return Runic; - case QChar::Script_Sinhala: return Sinhala; - case QChar::Script_Syriac: return Syriac; - case QChar::Script_Tamil: return Tamil; - case QChar::Script_Telugu: return Telugu; - case QChar::Script_Thaana: return Thaana; - case QChar::Script_Thai: return Thai; - case QChar::Script_Tibetan: return Tibetan; - case QChar::Script_Nko: return Nko; - default: break; - }; - return Common; -} - static const ushort specialCaseMap[] = { 0x0, // placeholder diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h index 0aa8c1f784..bcad1d5fe3 100644 --- a/src/corelib/tools/qunicodetables_p.h +++ b/src/corelib/tools/qunicodetables_p.h @@ -89,113 +89,6 @@ struct Properties { Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4); Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2); -// See http://www.unicode.org/reports/tr24/tr24-5.html -enum Script { - Common, - Greek, - Cyrillic, - Armenian, - Hebrew, - Arabic, - Syriac, - Thaana, - Devanagari, - Bengali, - Gurmukhi, - Gujarati, - Oriya, - Tamil, - Telugu, - Kannada, - Malayalam, - Sinhala, - Thai, - Lao, - Tibetan, - Myanmar, - Georgian, - Hangul, - Ogham, - Runic, - Khmer, - Nko, - Inherited, - ScriptCount = Inherited, - Latin = Common, - Ethiopic = Common, - Cherokee = Common, - CanadianAboriginal = Common, - Mongolian = Common, - Hiragana = Common, - Katakana = Common, - Bopomofo = Common, - Han = Common, - Yi = Common, - OldItalic = Common, - Gothic = Common, - Deseret = Common, - Tagalog = Common, - Hanunoo = Common, - Buhid = Common, - Tagbanwa = Common, - Limbu = Common, - TaiLe = Common, - LinearB = Common, - Ugaritic = Common, - Shavian = Common, - Osmanya = Common, - Cypriot = Common, - Braille = Common, - Buginese = Common, - Coptic = Common, - NewTaiLue = Common, - Glagolitic = Common, - Tifinagh = Common, - SylotiNagri = Common, - OldPersian = Common, - Kharoshthi = Common, - Balinese = Common, - Cuneiform = Common, - Phoenician = Common, - PhagsPa = Common, - Sundanese = Common, - Lepcha = Common, - OlChiki = Common, - Vai = Common, - Saurashtra = Common, - KayahLi = Common, - Rejang = Common, - Lycian = Common, - Carian = Common, - Lydian = Common, - Cham = Common, - TaiTham = Common, - TaiViet = Common, - Avestan = Common, - EgyptianHieroglyphs = Common, - Samaritan = Common, - Lisu = Common, - Bamum = Common, - Javanese = Common, - MeeteiMayek = Common, - ImperialAramaic = Common, - OldSouthArabian = Common, - InscriptionalParthian = Common, - InscriptionalPahlavi = Common, - OldTurkic = Common, - Kaithi = Common, - Batak = Common, - Brahmi = Common, - Mandaic = Common, - Chakma = Common, - MeroiticCursive = Common, - MeroiticHieroglyphs = Common, - Miao = Common, - Sharada = Common, - SoraSompeng = Common, - Takri = Common -}; - enum GraphemeBreakClass { GraphemeBreak_Other, GraphemeBreak_CR, @@ -274,10 +167,6 @@ Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4); inline LineBreakClass lineBreakClass(QChar ch) { return lineBreakClass(ch.unicode()); } -Q_CORE_EXPORT Script QT_FASTCALL script(uint ucs4); -inline Script script(QChar ch) -{ return script(ch.unicode()); } - } // namespace QUnicodeTables QT_END_NAMESPACE diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index e86fef61e7..8bafb692ca 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -44,7 +44,7 @@ #include "qunicodetables_p.h" #include "qvarlengtharray.h" -#include +#include "qharfbuzz_p.h" #define FLAG(x) (1 << (x)) @@ -615,7 +615,7 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, HB_ScriptItem item; item.pos = items[start].position; item.length = items[i].position - items[start].position; - item.script = (HB_Script)items[start].script; + item.script = script_to_hbscript(items[start].script); item.bidiLevel = 0; // unused scriptItems.append(item); start = i; @@ -624,7 +624,7 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, HB_ScriptItem item; item.pos = items[start].position; item.length = length - items[start].position; - item.script = (HB_Script)items[start].script; + item.script = script_to_hbscript(items[start].script); item.bidiLevel = 0; // unused scriptItems.append(item); } diff --git a/src/gui/painting/qpaintbuffer.cpp b/src/gui/painting/qpaintbuffer.cpp index d7b16114b8..382f6489a7 100644 --- a/src/gui/painting/qpaintbuffer.cpp +++ b/src/gui/painting/qpaintbuffer.cpp @@ -1752,7 +1752,7 @@ void QPainterReplayer::process(const QPaintBufferCommand &cmd) QRawFont rawFont; QRawFontPrivate *rawFontD = QRawFontPrivate::get(rawFont); QFontPrivate *fontD = QFontPrivate::get(font); - rawFontD->fontEngine = fontD->engineForScript(QUnicodeTables::Common); + rawFontD->fontEngine = fontD->engineForScript(QChar::Script_Common); rawFontD->fontEngine->ref.ref(); QGlyphRun glyphs; diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 8ec9c1648f..9d5d4ebc95 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -5738,7 +5738,7 @@ void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText return; } - QFontEngine *fe = staticText_d->font.d->engineForScript(QUnicodeTables::Common); + QFontEngine *fe = staticText_d->font.d->engineForScript(QChar::Script_Common); if (fe->type() == QFontEngine::Multi) fe = static_cast(fe)->engine(0); bool supportsTransformations = d->extended->supportsTransformations(fe, @@ -5845,7 +5845,7 @@ void QPainter::drawText(const QPointF &p, const QString &str, int tf, int justif int len = str.length(); int numGlyphs = len; QVarLengthGlyphLayoutArray glyphs(len); - QFontEngine *fontEngine = d->state->font.d->engineForScript(QUnicodeTables::Common); + QFontEngine *fontEngine = d->state->font.d->engineForScript(QChar::Script_Common); if (!fontEngine->stringToCMap(str.data(), len, &glyphs, &numGlyphs, 0)) { glyphs.resize(numGlyphs); if (!fontEngine->stringToCMap(str.data(), len, &glyphs, &numGlyphs, 0)) diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp index 2bc63cbd10..cec4d77fd4 100644 --- a/src/gui/text/qfont.cpp +++ b/src/gui/text/qfont.cpp @@ -55,7 +55,6 @@ #include "qthread.h" #include "qthreadstorage.h" -#include #include "qfont_p.h" #include #include @@ -207,8 +206,8 @@ extern QMutex *qt_fontdatabase_mutex(); QFontEngine *QFontPrivate::engineForScript(int script) const { QMutexLocker locker(qt_fontdatabase_mutex()); - if (script >= QUnicodeTables::Inherited) - script = QUnicodeTables::Common; + if (script <= QChar::Script_Latin) + script = QChar::Script_Common; if (engineData && engineData->fontCache != QFontCache::instance()) { // throw out engineData that came from a different thread engineData->ref.deref(); @@ -319,12 +318,12 @@ void QFontPrivate::resolve(uint mask, const QFontPrivate *other) QFontEngineData::QFontEngineData() : ref(1), fontCache(QFontCache::instance()) { - memset(engines, 0, QUnicodeTables::ScriptCount * sizeof(QFontEngine *)); + memset(engines, 0, QChar::ScriptCount * sizeof(QFontEngine *)); } QFontEngineData::~QFontEngineData() { - for (int i = 0; i < QUnicodeTables::ScriptCount; ++i) { + for (int i = 0; i < QChar::ScriptCount; ++i) { if (engines[i]) engines[i]->ref.deref(); engines[i] = 0; @@ -1667,7 +1666,7 @@ void QFont::setRawMode(bool enable) */ bool QFont::exactMatch() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return (d->rawMode ? engine->type() != QFontEngine::Box @@ -2363,7 +2362,7 @@ QFontInfo &QFontInfo::operator=(const QFontInfo &fi) */ QString QFontInfo::family() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->fontDef.family; } @@ -2378,7 +2377,7 @@ QString QFontInfo::family() const */ QString QFontInfo::styleName() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->fontDef.styleName; } @@ -2390,7 +2389,7 @@ QString QFontInfo::styleName() const */ int QFontInfo::pointSize() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->fontDef.pointSize); } @@ -2402,7 +2401,7 @@ int QFontInfo::pointSize() const */ qreal QFontInfo::pointSizeF() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->fontDef.pointSize; } @@ -2414,7 +2413,7 @@ qreal QFontInfo::pointSizeF() const */ int QFontInfo::pixelSize() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->fontDef.pixelSize; } @@ -2426,7 +2425,7 @@ int QFontInfo::pixelSize() const */ bool QFontInfo::italic() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->fontDef.style != QFont::StyleNormal; } @@ -2438,7 +2437,7 @@ bool QFontInfo::italic() const */ QFont::Style QFontInfo::style() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return (QFont::Style)engine->fontDef.style; } @@ -2450,7 +2449,7 @@ QFont::Style QFontInfo::style() const */ int QFontInfo::weight() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->fontDef.weight; @@ -2515,7 +2514,7 @@ bool QFontInfo::strikeOut() const */ bool QFontInfo::fixedPitch() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); #ifdef Q_OS_MAC if (!engine->fontDef.fixedPitchComputed) { @@ -2539,7 +2538,7 @@ bool QFontInfo::fixedPitch() const */ QFont::StyleHint QFontInfo::styleHint() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return (QFont::StyleHint) engine->fontDef.styleHint; } @@ -2567,7 +2566,7 @@ bool QFontInfo::rawMode() const */ bool QFontInfo::exactMatch() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return (d->rawMode ? engine->type() != QFontEngine::Box @@ -2675,7 +2674,7 @@ void QFontCache::clear() end = engineDataCache.end(); while (it != end) { QFontEngineData *data = it.value(); - for (int i = 0; i < QUnicodeTables::ScriptCount; ++i) { + for (int i = 0; i < QChar::ScriptCount; ++i) { if (data->engines[i]) { data->engines[i]->ref.deref(); data->engines[i] = 0; diff --git a/src/gui/text/qfont_p.h b/src/gui/text/qfont_p.h index ad8ba0758f..878a8f0f9e 100644 --- a/src/gui/text/qfont_p.h +++ b/src/gui/text/qfont_p.h @@ -57,7 +57,6 @@ #include "QtCore/qmap.h" #include "QtCore/qobject.h" #include "QtCore/qstringlist.h" -#include #include #include "private/qfixed_p.h" @@ -143,7 +142,7 @@ public: QAtomicInt ref; QFontCache *fontCache; - QFontEngine *engines[QUnicodeTables::ScriptCount]; + QFontEngine *engines[QChar::ScriptCount]; }; diff --git a/src/gui/text/qfont_qpa.cpp b/src/gui/text/qfont_qpa.cpp index 9a3b4cdee9..e7be179941 100644 --- a/src/gui/text/qfont_qpa.cpp +++ b/src/gui/text/qfont_qpa.cpp @@ -72,7 +72,7 @@ QString QFont::defaultFamily() const { QPlatformFontDatabase *fontDB = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); const QStringList fallbacks = fontDB->fallbacksForFamily(QString(), QFont::StyleNormal - , QFont::StyleHint(d->request.styleHint), QUnicodeTables::Common); + , QFont::StyleHint(d->request.styleHint), QChar::Script_Common); if (!fallbacks.isEmpty()) return fallbacks.first(); return QString(); diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index b59966012c..e87e6eb83b 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -48,7 +48,6 @@ #include "qmutex.h" #include "qfile.h" #include "qfileinfo.h" -#include "private/qunicodetables_p.h" #include "qfontengine_p.h" #include @@ -614,48 +613,48 @@ QtFontFamily *QFontDatabasePrivate::family(const QString &f, bool create) static const int scriptForWritingSystem[] = { - QUnicodeTables::Common, // Any - QUnicodeTables::Latin, // Latin - QUnicodeTables::Greek, // Greek - QUnicodeTables::Cyrillic, // Cyrillic - QUnicodeTables::Armenian, // Armenian - QUnicodeTables::Hebrew, // Hebrew - QUnicodeTables::Arabic, // Arabic - QUnicodeTables::Syriac, // Syriac - QUnicodeTables::Thaana, // Thaana - QUnicodeTables::Devanagari, // Devanagari - QUnicodeTables::Bengali, // Bengali - QUnicodeTables::Gurmukhi, // Gurmukhi - QUnicodeTables::Gujarati, // Gujarati - QUnicodeTables::Oriya, // Oriya - QUnicodeTables::Tamil, // Tamil - QUnicodeTables::Telugu, // Telugu - QUnicodeTables::Kannada, // Kannada - QUnicodeTables::Malayalam, // Malayalam - QUnicodeTables::Sinhala, // Sinhala - QUnicodeTables::Thai, // Thai - QUnicodeTables::Lao, // Lao - QUnicodeTables::Tibetan, // Tibetan - QUnicodeTables::Myanmar, // Myanmar - QUnicodeTables::Georgian, // Georgian - QUnicodeTables::Khmer, // Khmer - QUnicodeTables::Common, // SimplifiedChinese - QUnicodeTables::Common, // TraditionalChinese - QUnicodeTables::Common, // Japanese - QUnicodeTables::Hangul, // Korean - QUnicodeTables::Common, // Vietnamese - QUnicodeTables::Common, // Yi - QUnicodeTables::Common, // Tagalog - QUnicodeTables::Common, // Hanunoo - QUnicodeTables::Common, // Buhid - QUnicodeTables::Common, // Tagbanwa - QUnicodeTables::Common, // Limbu - QUnicodeTables::Common, // TaiLe - QUnicodeTables::Common, // Braille - QUnicodeTables::Common, // Symbol - QUnicodeTables::Ogham, // Ogham - QUnicodeTables::Runic, // Runic - QUnicodeTables::Nko // Nko + QChar::Script_Common, // Any + QChar::Script_Latin, // Latin + QChar::Script_Greek, // Greek + QChar::Script_Cyrillic, // Cyrillic + QChar::Script_Armenian, // Armenian + QChar::Script_Hebrew, // Hebrew + QChar::Script_Arabic, // Arabic + QChar::Script_Syriac, // Syriac + QChar::Script_Thaana, // Thaana + QChar::Script_Devanagari, // Devanagari + QChar::Script_Bengali, // Bengali + QChar::Script_Gurmukhi, // Gurmukhi + QChar::Script_Gujarati, // Gujarati + QChar::Script_Oriya, // Oriya + QChar::Script_Tamil, // Tamil + QChar::Script_Telugu, // Telugu + QChar::Script_Kannada, // Kannada + QChar::Script_Malayalam, // Malayalam + QChar::Script_Sinhala, // Sinhala + QChar::Script_Thai, // Thai + QChar::Script_Lao, // Lao + QChar::Script_Tibetan, // Tibetan + QChar::Script_Myanmar, // Myanmar + QChar::Script_Georgian, // Georgian + QChar::Script_Khmer, // Khmer + QChar::Script_Han, // SimplifiedChinese + QChar::Script_Han, // TraditionalChinese + QChar::Script_Han, // Japanese + QChar::Script_Hangul, // Korean + QChar::Script_Latin, // Vietnamese + QChar::Script_Yi, // Yi + QChar::Script_Tagalog, // Tagalog + QChar::Script_Hanunoo, // Hanunoo + QChar::Script_Buhid, // Buhid + QChar::Script_Tagbanwa, // Tagbanwa + QChar::Script_Limbu, // Limbu + QChar::Script_TaiLe, // TaiLe + QChar::Script_Braille, // Braille + QChar::Script_Common, // Symbol + QChar::Script_Ogham, // Ogham + QChar::Script_Runic, // Runic + QChar::Script_Nko // Nko }; int qt_script_for_writing_system(QFontDatabase::WritingSystem writingSystem) @@ -1072,7 +1071,7 @@ static void match(int script, const QFontDef &request, uint score_adjust = 0; - bool supported = (script == QUnicodeTables::Common); + bool supported = (script == QChar::Script_Common); for (int ws = 1; !supported && ws < QFontDatabase::WritingSystemsCount; ++ws) { if (scriptForWritingSystem[ws] != script) continue; diff --git a/src/gui/text/qfontdatabase_qpa.cpp b/src/gui/text/qfontdatabase_qpa.cpp index 22aacf1dcd..366f995790 100644 --- a/src/gui/text/qfontdatabase_qpa.cpp +++ b/src/gui/text/qfontdatabase_qpa.cpp @@ -103,7 +103,7 @@ Q_GUI_EXPORT void qt_registerAliasToFontFamily(const QString &familyName, const f->aliases.push_back(alias); } -static QStringList fallbackFamilies(const QString &family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) +static QStringList fallbackFamilies(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) { QStringList retList = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fallbacksForFamily(family,style,styleHint,script); QFontDatabasePrivate *db = privateDb(); @@ -174,7 +174,7 @@ QFontEngine *loadSingleEngine(int script, QFontCache::Key key(def,script); QFontEngine *engine = QFontCache::instance()->findEngine(key); if (!engine) { - engine = pfdb->fontEngine(def,QUnicodeTables::Script(script),size->handle); + engine = pfdb->fontEngine(def, QChar::Script(script), size->handle); if (engine) { QFontCache::Key key(def,script); QFontCache::instance()->instance()->insertEngine(key,engine); @@ -199,7 +199,7 @@ QFontEngine *loadEngine(int script, const QFontDef &request, QFont::StyleHint styleHint = QFont::StyleHint(request.styleHint); if (styleHint == QFont::AnyStyle && request.fixedPitch) styleHint = QFont::TypeWriter; - family->fallbackFamilies = fallbackFamilies(family->name,fontStyle,styleHint,QUnicodeTables::Script(script)); + family->fallbackFamilies = fallbackFamilies(family->name, fontStyle, styleHint, QChar::Script(script)); family->askedForFallback = true; } @@ -209,7 +209,7 @@ QFontEngine *loadEngine(int script, const QFontDef &request, fallbacks = family->fallbackFamilies; QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); - QFontEngineMulti *pfMultiEngine = pfdb->fontEngineMulti(engine, QUnicodeTables::Script(script)); + QFontEngineMulti *pfMultiEngine = pfdb->fontEngineMulti(engine, QChar::Script(script)); pfMultiEngine->setFallbackFamiliesList(fallbacks); engine = pfMultiEngine; @@ -321,7 +321,7 @@ QFontDatabase::findFont(int script, const QFontPrivate *fp, + fallbackFamilies(request.family, QFont::Style(request.style), QFont::StyleHint(request.styleHint), - QUnicodeTables::Script(script)); + QChar::Script(script)); for (int i = 0; !engine && i < fallbacks.size(); i++) { QFontDef def = request; @@ -426,7 +426,7 @@ void QFontDatabase::load(const QFontPrivate *d, int script) } if (fe->symbol || (d->request.styleStrategy & QFont::NoFontMerging)) { - for (int i = 0; i < QUnicodeTables::ScriptCount; ++i) { + for (int i = 0; i < QChar::ScriptCount; ++i) { if (!d->engineData->engines[i]) { d->engineData->engines[i] = fe; fe->ref.ref(); diff --git a/src/gui/text/qfontengine_qpa.cpp b/src/gui/text/qfontengine_qpa.cpp index c6e8a53284..c1325a900a 100644 --- a/src/gui/text/qfontengine_qpa.cpp +++ b/src/gui/text/qfontengine_qpa.cpp @@ -710,7 +710,7 @@ void QFontEngineMultiQPA::ensureFallbackFamiliesQueried() if (fallbacksQueried) return; QStringList fallbacks = QGuiApplicationPrivate::instance()->platformIntegration()->fontDatabase()->fallbacksForFamily(engine(0)->fontDef.family, QFont::Style(engine(0)->fontDef.style) - , QFont::AnyStyle, QUnicodeTables::Script(script)); + , QFont::AnyStyle, QChar::Script(script)); setFallbackFamiliesList(fallbacks); } @@ -762,7 +762,7 @@ QFontEngine* QFontEngineMultiQPA::createMultiFontEngine(QFontEngine *fe, int scr it++; } if (!engine) { - engine = QGuiApplicationPrivate::instance()->platformIntegration()->fontDatabase()->fontEngineMulti(fe, QUnicodeTables::Script(script)); + engine = QGuiApplicationPrivate::instance()->platformIntegration()->fontDatabase()->fontEngineMulti(fe, QChar::Script(script)); QFontCache::instance()->insertEngine(key, engine, /* insertMulti */ !faceIsLocal); } Q_ASSERT(engine); diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp index d0de086f22..0cde6e5020 100644 --- a/src/gui/text/qfontmetrics.cpp +++ b/src/gui/text/qfontmetrics.cpp @@ -45,7 +45,6 @@ #include "qfont_p.h" #include "qfontengine_p.h" -#include #include @@ -262,7 +261,7 @@ bool QFontMetrics::operator ==(const QFontMetrics &other) const */ int QFontMetrics::ascent() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->ascent()); } @@ -280,7 +279,7 @@ int QFontMetrics::ascent() const */ int QFontMetrics::descent() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->descent()); } @@ -295,7 +294,7 @@ int QFontMetrics::descent() const */ int QFontMetrics::height() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->ascent()) + qRound(engine->descent()); } @@ -309,7 +308,7 @@ int QFontMetrics::height() const */ int QFontMetrics::leading() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->leading()); } @@ -323,7 +322,7 @@ int QFontMetrics::leading() const */ int QFontMetrics::lineSpacing() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->leading()) + qRound(engine->ascent()) + qRound(engine->descent()); } @@ -340,7 +339,7 @@ int QFontMetrics::lineSpacing() const */ int QFontMetrics::minLeftBearing() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->minLeftBearing()); } @@ -357,7 +356,7 @@ int QFontMetrics::minLeftBearing() const */ int QFontMetrics::minRightBearing() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->minRightBearing()); } @@ -367,7 +366,7 @@ int QFontMetrics::minRightBearing() const */ int QFontMetrics::maxWidth() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->maxCharWidth()); } @@ -378,10 +377,10 @@ int QFontMetrics::maxWidth() const */ int QFontMetrics::xHeight() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); if (d->capital == QFont::SmallCaps) - return qRound(d->smallCapsFontPrivate()->engineForScript(QUnicodeTables::Common)->ascent()); + return qRound(d->smallCapsFontPrivate()->engineForScript(QChar::Script_Common)->ascent()); return qRound(engine->xHeight()); } @@ -392,7 +391,7 @@ int QFontMetrics::xHeight() const */ int QFontMetrics::averageCharWidth() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->averageCharWidth()); } @@ -403,7 +402,7 @@ int QFontMetrics::averageCharWidth() const */ bool QFontMetrics::inFont(QChar ch) const { - const int script = QUnicodeTables::script(ch); + const int script = ch.script(); QFontEngine *engine = d->engineForScript(script); Q_ASSERT(engine != 0); if (engine->type() == QFontEngine::Box) @@ -417,7 +416,7 @@ bool QFontMetrics::inFont(QChar ch) const */ bool QFontMetrics::inFontUcs4(uint ucs4) const { - const int script = QUnicodeTables::script(ucs4); + const int script = QChar::script(ucs4); QFontEngine *engine = d->engineForScript(script); Q_ASSERT(engine != 0); if (engine->type() == QFontEngine::Box) @@ -439,7 +438,7 @@ bool QFontMetrics::inFontUcs4(uint ucs4) const */ int QFontMetrics::leftBearing(QChar ch) const { - const int script = QUnicodeTables::script(ch); + const int script = ch.script(); QFontEngine *engine; if (d->capital == QFont::SmallCaps && ch.isLower()) engine = d->smallCapsFontPrivate()->engineForScript(script); @@ -474,7 +473,7 @@ int QFontMetrics::leftBearing(QChar ch) const */ int QFontMetrics::rightBearing(QChar ch) const { - const int script = QUnicodeTables::script(ch); + const int script = ch.script(); QFontEngine *engine; if (d->capital == QFont::SmallCaps && ch.isLower()) engine = d->smallCapsFontPrivate()->engineForScript(script); @@ -530,7 +529,7 @@ int QFontMetrics::width(const QString &text, int len, int flags) const // Skip harfbuzz complex shaping, only use advances int numGlyphs = len; QVarLengthGlyphLayoutArray glyphs(numGlyphs); - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, 0)) { glyphs.resize(numGlyphs); if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, 0)) @@ -577,7 +576,7 @@ int QFontMetrics::width(QChar ch) const if (QChar::category(ch.unicode()) == QChar::Mark_NonSpacing) return 0; - const int script = QUnicodeTables::script(ch); + const int script = ch.script(); QFontEngine *engine; if (d->capital == QFont::SmallCaps && ch.isLower()) engine = d->smallCapsFontPrivate()->engineForScript(script); @@ -607,14 +606,13 @@ int QFontMetrics::width(QChar ch) const */ int QFontMetrics::charWidth(const QString &text, int pos) const { + int width = 0; if (pos < 0 || pos > (int)text.length()) - return 0; - - QChar ch = text.unicode()[pos]; - const int script = QUnicodeTables::script(ch); - int width; + return width; - if (script != QUnicodeTables::Common) { + QChar ch = text.at(pos); + const int script = ch.script(); + if (script != QChar::Script_Common) { // complex script shaping. Have to do some hard work int from = qMax(0, pos - 8); int to = qMin(text.length(), pos + 8); @@ -623,9 +621,7 @@ int QFontMetrics::charWidth(const QString &text, int pos) const layout.ignoreBidi = true; layout.itemize(); width = qRound(layout.width(pos-from, 1)); - } else if (QChar::category(ch.unicode()) == QChar::Mark_NonSpacing) { - width = 0; - } else { + } else if (ch.category() != QChar::Mark_NonSpacing) { QFontEngine *engine; if (d->capital == QFont::SmallCaps && ch.isLower()) engine = d->smallCapsFontPrivate()->engineForScript(script); @@ -694,7 +690,7 @@ QRect QFontMetrics::boundingRect(const QString &text) const */ QRect QFontMetrics::boundingRect(QChar ch) const { - const int script = QUnicodeTables::script(ch); + const int script = ch.script(); QFontEngine *engine; if (d->capital == QFont::SmallCaps && ch.isLower()) engine = d->smallCapsFontPrivate()->engineForScript(script); @@ -895,7 +891,7 @@ QString QFontMetrics::elidedText(const QString &text, Qt::TextElideMode mode, in */ int QFontMetrics::underlinePos() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->underlinePosition()); } @@ -931,7 +927,7 @@ int QFontMetrics::strikeOutPos() const */ int QFontMetrics::lineWidth() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return qRound(engine->lineThickness()); } @@ -1129,7 +1125,7 @@ bool QFontMetricsF::operator ==(const QFontMetricsF &other) const */ qreal QFontMetricsF::ascent() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->ascent().toReal(); } @@ -1148,7 +1144,7 @@ qreal QFontMetricsF::ascent() const */ qreal QFontMetricsF::descent() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->descent().toReal(); } @@ -1163,7 +1159,7 @@ qreal QFontMetricsF::descent() const */ qreal QFontMetricsF::height() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return (engine->ascent() + engine->descent()).toReal(); @@ -1178,7 +1174,7 @@ qreal QFontMetricsF::height() const */ qreal QFontMetricsF::leading() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->leading().toReal(); } @@ -1192,7 +1188,7 @@ qreal QFontMetricsF::leading() const */ qreal QFontMetricsF::lineSpacing() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return (engine->leading() + engine->ascent() + engine->descent()).toReal(); } @@ -1209,7 +1205,7 @@ qreal QFontMetricsF::lineSpacing() const */ qreal QFontMetricsF::minLeftBearing() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->minLeftBearing(); } @@ -1226,7 +1222,7 @@ qreal QFontMetricsF::minLeftBearing() const */ qreal QFontMetricsF::minRightBearing() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->minRightBearing(); } @@ -1236,7 +1232,7 @@ qreal QFontMetricsF::minRightBearing() const */ qreal QFontMetricsF::maxWidth() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->maxCharWidth(); } @@ -1247,10 +1243,10 @@ qreal QFontMetricsF::maxWidth() const */ qreal QFontMetricsF::xHeight() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); if (d->capital == QFont::SmallCaps) - return d->smallCapsFontPrivate()->engineForScript(QUnicodeTables::Common)->ascent().toReal(); + return d->smallCapsFontPrivate()->engineForScript(QChar::Script_Common)->ascent().toReal(); return engine->xHeight().toReal(); } @@ -1261,7 +1257,7 @@ qreal QFontMetricsF::xHeight() const */ qreal QFontMetricsF::averageCharWidth() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->averageCharWidth().toReal(); } @@ -1272,7 +1268,7 @@ qreal QFontMetricsF::averageCharWidth() const */ bool QFontMetricsF::inFont(QChar ch) const { - const int script = QUnicodeTables::script(ch); + const int script = ch.script(); QFontEngine *engine = d->engineForScript(script); Q_ASSERT(engine != 0); if (engine->type() == QFontEngine::Box) @@ -1288,7 +1284,7 @@ bool QFontMetricsF::inFont(QChar ch) const */ bool QFontMetricsF::inFontUcs4(uint ucs4) const { - const int script = QUnicodeTables::script(ucs4); + const int script = QChar::script(ucs4); QFontEngine *engine = d->engineForScript(script); Q_ASSERT(engine != 0); if (engine->type() == QFontEngine::Box) @@ -1310,7 +1306,7 @@ bool QFontMetricsF::inFontUcs4(uint ucs4) const */ qreal QFontMetricsF::leftBearing(QChar ch) const { - const int script = QUnicodeTables::script(ch); + const int script = ch.script(); QFontEngine *engine; if (d->capital == QFont::SmallCaps && ch.isLower()) engine = d->smallCapsFontPrivate()->engineForScript(script); @@ -1345,7 +1341,7 @@ qreal QFontMetricsF::leftBearing(QChar ch) const */ qreal QFontMetricsF::rightBearing(QChar ch) const { - const int script = QUnicodeTables::script(ch); + const int script = ch.script(); QFontEngine *engine; if (d->capital == QFont::SmallCaps && ch.isLower()) engine = d->smallCapsFontPrivate()->engineForScript(script); @@ -1414,10 +1410,10 @@ qreal QFontMetricsF::width(const QString &text) const */ qreal QFontMetricsF::width(QChar ch) const { - if (QChar::category(ch.unicode()) == QChar::Mark_NonSpacing) + if (ch.category() == QChar::Mark_NonSpacing) return 0.; - const int script = QUnicodeTables::script(ch); + const int script = ch.script(); QFontEngine *engine; if (d->capital == QFont::SmallCaps && ch.isLower()) engine = d->smallCapsFontPrivate()->engineForScript(script); @@ -1482,7 +1478,7 @@ QRectF QFontMetricsF::boundingRect(const QString &text) const */ QRectF QFontMetricsF::boundingRect(QChar ch) const { - const int script = QUnicodeTables::script(ch); + const int script = ch.script(); QFontEngine *engine; if (d->capital == QFont::SmallCaps && ch.isLower()) engine = d->smallCapsFontPrivate()->engineForScript(script); @@ -1682,7 +1678,7 @@ QString QFontMetricsF::elidedText(const QString &text, Qt::TextElideMode mode, q */ qreal QFontMetricsF::underlinePos() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->underlinePosition().toReal(); } @@ -1717,7 +1713,7 @@ qreal QFontMetricsF::strikeOutPos() const */ qreal QFontMetricsF::lineWidth() const { - QFontEngine *engine = d->engineForScript(QUnicodeTables::Common); + QFontEngine *engine = d->engineForScript(QChar::Script_Common); Q_ASSERT(engine != 0); return engine->lineThickness().toReal(); } diff --git a/src/gui/text/qplatformfontdatabase.cpp b/src/gui/text/qplatformfontdatabase.cpp index 6fd145d921..f3e573e313 100644 --- a/src/gui/text/qplatformfontdatabase.cpp +++ b/src/gui/text/qplatformfontdatabase.cpp @@ -276,8 +276,7 @@ void QPlatformFontDatabase::populateFontDatabase() option to fall back to the fonts given by \a fallbacks if \a fontEngine does not support a certain character. */ -QFontEngineMulti *QPlatformFontDatabase::fontEngineMulti(QFontEngine *fontEngine, - QUnicodeTables::Script script) +QFontEngineMulti *QPlatformFontDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) { return new QFontEngineMultiQPA(fontEngine, script); } @@ -286,7 +285,7 @@ QFontEngineMulti *QPlatformFontDatabase::fontEngineMulti(QFontEngine *fontEngine Returns the font engine that can be used to render the font described by the font definition, \a fontDef, in the specified \a script. */ -QFontEngine *QPlatformFontDatabase::fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle) +QFontEngine *QPlatformFontDatabase::fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle) { Q_UNUSED(script); Q_UNUSED(handle); @@ -310,7 +309,7 @@ QFontEngine *QPlatformFontDatabase::fontEngine(const QByteArray &fontData, qreal Returns a list of alternative fonts for the specified \a family and \a style and \a script using the \a styleHint given. */ -QStringList QPlatformFontDatabase::fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const +QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const { Q_UNUSED(family); Q_UNUSED(style); diff --git a/src/gui/text/qplatformfontdatabase.h b/src/gui/text/qplatformfontdatabase.h index 8c2e4cf5f7..fe7782be8f 100644 --- a/src/gui/text/qplatformfontdatabase.h +++ b/src/gui/text/qplatformfontdatabase.h @@ -98,9 +98,9 @@ class Q_GUI_EXPORT QPlatformFontDatabase public: virtual ~QPlatformFontDatabase(); virtual void populateFontDatabase(); - virtual QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QUnicodeTables::Script script); - virtual QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle); - virtual QStringList fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const; + virtual QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script); + virtual QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle); + virtual QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const; virtual QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName); virtual void releaseHandle(void *handle); diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 82cff6a043..6a749cfe84 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -51,7 +51,6 @@ #include "qfont_p.h" #include "qfontengine_p.h" #include "qstring.h" -#include #include "qtextdocument_p.h" #include "qrawfont.h" #include "qrawfont_p.h" @@ -134,7 +133,7 @@ private: // along, and nothing else. if (m_analysis[i].bidiLevel == m_analysis[start].bidiLevel && m_analysis[i].flags == m_analysis[start].flags - && (m_analysis[i].script == m_analysis[start].script || m_string[i] == QLatin1Char('.')) + && (script_to_hbscript(m_analysis[i].script) == script_to_hbscript(m_analysis[start].script) || m_string[i] == QLatin1Char('.')) && m_analysis[i].flags < QScriptAnalysis::SpaceTabOrObject && i - start < MaxItemLength) continue; @@ -1004,7 +1003,7 @@ void QTextEngine::shapeTextWithHarfbuzz(int item) const memset(&entire_shaper_item, 0, sizeof(entire_shaper_item)); entire_shaper_item.string = reinterpret_cast(layoutData->string.constData()); entire_shaper_item.stringLength = layoutData->string.length(); - entire_shaper_item.item.script = (HB_Script)si.analysis.script; + entire_shaper_item.item.script = script_to_hbscript(si.analysis.script); entire_shaper_item.item.pos = si.position; entire_shaper_item.item.length = length(item); entire_shaper_item.item.bidiLevel = si.analysis.bidiLevel; @@ -1348,42 +1347,44 @@ void QTextEngine::itemize() const const ushort *uc = reinterpret_cast(layoutData->string.unicode()); const ushort *e = uc + length; - int lastScript = QUnicodeTables::Common; + uchar lastScript = QChar::Script_Common; while (uc < e) { switch (*uc) { case QChar::ObjectReplacementCharacter: - analysis->script = QUnicodeTables::Common; + analysis->script = QChar::Script_Common; analysis->flags = QScriptAnalysis::Object; break; case QChar::LineSeparator: if (analysis->bidiLevel % 2) --analysis->bidiLevel; - analysis->script = QUnicodeTables::Common; + analysis->script = QChar::Script_Common; analysis->flags = QScriptAnalysis::LineOrParagraphSeparator; if (option.flags() & QTextOption::ShowLineAndParagraphSeparators) *const_cast(uc) = 0x21B5; // visual line separator break; case QChar::Tabulation: - analysis->script = QUnicodeTables::Common; + analysis->script = QChar::Script_Common; analysis->flags = QScriptAnalysis::Tab; analysis->bidiLevel = control.baseLevel(); break; case QChar::Space: case QChar::Nbsp: if (option.flags() & QTextOption::ShowTabsAndSpaces) { - analysis->script = QUnicodeTables::Common; + analysis->script = QChar::Script_Common; analysis->flags = QScriptAnalysis::Space; analysis->bidiLevel = control.baseLevel(); break; } // fall through default: - int script = QUnicodeTables::script(*uc); - analysis->script = script == QUnicodeTables::Inherited ? lastScript : script; + analysis->script = QChar::script(*uc); + if (analysis->script == QChar::Script_Inherited) + analysis->script = lastScript; analysis->flags = QScriptAnalysis::None; break; } lastScript = analysis->script; + analysis->script = hbscript_to_script(script_to_hbscript(analysis->script)); // retain the old behavior ++uc; ++analysis; } @@ -2033,9 +2034,9 @@ void QScriptLine::setDefaultHeight(QTextEngine *eng) QPaintDevice *pdev = eng->block.docHandle()->layout()->paintDevice(); if (pdev) f = QFont(f, pdev); - e = f.d->engineForScript(QUnicodeTables::Common); + e = f.d->engineForScript(QChar::Script_Common); } else { - e = eng->fnt.d->engineForScript(QUnicodeTables::Common); + e = eng->fnt.d->engineForScript(QChar::Script_Common); } QFixed other_ascent = e->ascent(); @@ -2419,7 +2420,7 @@ QString QTextEngine::elidedText(Qt::TextElideMode mode, const QFixed &width, int { QChar ellipsisChar(0x2026); - QFontEngine *fe = fnt.d->engineForScript(QUnicodeTables::Common); + QFontEngine *fe = fnt.d->engineForScript(QChar::Script_Common); QGlyphLayoutArray<1> ellipsisGlyph; { @@ -2866,8 +2867,8 @@ int QTextEngine::positionInLigature(const QScriptItem *si, int end, int clusterStart = -1; int clusterLength = 0; - if (si->analysis.script != QUnicodeTables::Common && - si->analysis.script != QUnicodeTables::Greek) { + if (si->analysis.script != QChar::Script_Common && + si->analysis.script != QChar::Script_Greek) { if (glyph_pos == -1) return si->position + end; else { diff --git a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp index dd6f04f74d..d0755711de 100644 --- a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp +++ b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp @@ -217,8 +217,8 @@ QSupportedWritingSystems QBasicFontDatabase::determineWritingSystemsFromTrueType static inline bool scriptRequiresOpenType(int script) { - return ((script >= QUnicodeTables::Syriac && script <= QUnicodeTables::Sinhala) - || script == QUnicodeTables::Khmer || script == QUnicodeTables::Nko); + return ((script >= QChar::Script_Syriac && script <= QChar::Script_Sinhala) + || script == QChar::Script_Khmer || script == QChar::Script_Nko); } void QBasicFontDatabase::populateFontDatabase() @@ -242,7 +242,7 @@ void QBasicFontDatabase::populateFontDatabase() } } -QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *usrPtr) +QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, QChar::Script script, void *usrPtr) { QFontEngineFT *engine; FontFile *fontfile = static_cast (usrPtr); @@ -337,7 +337,7 @@ QFontEngine *QBasicFontDatabase::fontEngine(const QByteArray &fontData, qreal pi return fe; } -QStringList QBasicFontDatabase::fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const +QStringList QBasicFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const { Q_UNUSED(family); Q_UNUSED(style); diff --git a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h index 8236f50eb4..3b66a5a985 100644 --- a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h +++ b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h @@ -58,9 +58,9 @@ class QBasicFontDatabase : public QPlatformFontDatabase { public: void populateFontDatabase(); - QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle); + QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle); QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference); - QStringList fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const; + QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const; QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName); void releaseHandle(void *handle); diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index cf6ff11acd..784602b596 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -75,10 +75,11 @@ static inline bool requiresOpenType(int writingSystem) return ((writingSystem >= QFontDatabase::Syriac && writingSystem <= QFontDatabase::Sinhala) || writingSystem == QFontDatabase::Khmer || writingSystem == QFontDatabase::Nko); } + static inline bool scriptRequiresOpenType(int script) { - return ((script >= QUnicodeTables::Syriac && script <= QUnicodeTables::Sinhala) - || script == QUnicodeTables::Khmer || script == QUnicodeTables::Nko); + return ((script >= QChar::Script_Syriac && script <= QChar::Script_Sinhala) + || script == QChar::Script_Khmer || script == QChar::Script_Nko); } static int getFCWeight(int fc_weight) @@ -97,14 +98,17 @@ static int getFCWeight(int fc_weight) } static const char *specialLanguages[] = { - "en", // Common + "", // Unknown + "", // Inherited + "", // Common + "en", // Latin "el", // Greek "ru", // Cyrillic "hy", // Armenian "he", // Hebrew "ar", // Arabic "syr", // Syriac - "div", // Thaana + "dv", // Thaana "hi", // Devanagari "bn", // Bengali "pa", // Gurmukhi @@ -121,45 +125,85 @@ static const char *specialLanguages[] = { "my", // Myanmar "ka", // Georgian "ko", // Hangul - "", // Ogham - "", // Runic + "am", // Ethiopic + "chr", // Cherokee + "cr", // CanadianAboriginal + "sga", // Ogham + "non", // Runic "km", // Khmer - "" // N'Ko + "mn", // Mongolian + "ja", // Hiragana + "ja", // Katakana + "zh", // Bopomofo + "zh", // Han + "ii", // Yi + "ett", // OldItalic + "got", // Gothic + "en", // Deseret + "fil", // Tagalog + "hnn", // Hanunoo + "bku", // Buhid + "tbw", // Tagbanwa + "cop", // Coptic + "lif", // Limbu + "tdd", // TaiLe + "grc", // LinearB + "uga", // Ugaritic + "en", // Shavian + "so", // Osmanya + "grc", // Cypriot + "", // Braille + "bug", // Buginese + "khb", // NewTaiLue + "cu", // Glagolitic + "shi", // Tifinagh + "syl", // SylotiNagri + "peo", // OldPersian + "pra", // Kharoshthi + "ban", // Balinese + "akk", // Cuneiform + "phn", // Phoenician + "lzh", // PhagsPa + "man", // Nko + "su", // Sundanese + "lep", // Lepcha + "sat", // OlChiki + "vai", // Vai + "saz", // Saurashtra + "eky", // KayahLi + "rej", // Rejang + "xlc", // Lycian + "xcr", // Carian + "xld", // Lydian + "cjm", // Cham + "nod", // TaiTham + "blt", // TaiViet + "ae", // Avestan + "egy", // EgyptianHieroglyphs + "smp", // Samaritan + "lis", // Lisu + "bax", // Bamum + "jv", // Javanese + "mni", // MeeteiMayek + "arc", // ImperialAramaic + "xsa", // OldSouthArabian + "xpr", // InscriptionalParthian + "pal", // InscriptionalPahlavi + "otk", // OldTurkic + "bh", // Kaithi + "bbc", // Batak + "pra", // Brahmi + "myz", // Mandaic + "ccp", // Chakma + "xmr", // MeroiticCursive + "xmr", // MeroiticHieroglyphs + "hmd", // Miao + "sa", // Sharada + "srb", // SoraSompeng + "doi" // Takri }; enum { SpecialLanguageCount = sizeof(specialLanguages) / sizeof(const char *) }; -static const ushort specialChars[] = { - 0, // English - 0, // Greek - 0, // Cyrillic - 0, // Armenian - 0, // Hebrew - 0, // Arabic - 0, // Syriac - 0, // Thaana - 0, // Devanagari - 0, // Bengali - 0, // Gurmukhi - 0, // Gujarati - 0, // Oriya - 0, // Tamil - 0xc15, // Telugu - 0xc95, // Kannada - 0xd15, // Malayalam - 0xd9a, // Sinhala - 0, // Thai - 0, // Lao - 0, // Tibetan - 0x1000, // Myanmar - 0, // Georgian - 0, // Hangul - 0x1681, // Ogham - 0x16a0, // Runic - 0, // Khmer - 0x7ca // N'Ko -}; -enum { SpecialCharCount = sizeof(specialChars) / sizeof(ushort) }; - // this could become a list of all languages used for each writing // system, instead of using the single most common language. static const char *languageForWritingSystem[] = { @@ -194,9 +238,9 @@ static const char *languageForWritingSystem[] = { "ko", // Korean "vi", // Vietnamese 0, // Symbol - 0, // Ogham - 0, // Runic - 0 // N'Ko + "sga", // Ogham + "non", // Runic + "man" // N'Ko }; enum { LanguageCount = sizeof(languageForWritingSystem) / sizeof(const char *) }; @@ -477,13 +521,12 @@ void QFontconfigDatabase::populateFontDatabase() // QApplication::setFont(font); } -QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, - QUnicodeTables::Script script) +QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) { return new QFontEngineMultiFontConfig(fontEngine, script); } -QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables::Script script, void *usrPtr) +QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QChar::Script script, void *usrPtr) { if (!usrPtr) return 0; @@ -601,7 +644,7 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables:: return engine; } -QStringList QFontconfigDatabase::fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const +QStringList QFontconfigDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const { QStringList fallbackFamilies; FcPattern *pattern = FcPatternCreate(); @@ -621,8 +664,8 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString family, const slant_value = FC_SLANT_OBLIQUE; FcPatternAddInteger(pattern, FC_SLANT, slant_value); - if (script != QUnicodeTables::Common && *specialLanguages[script] != '\0') { - Q_ASSERT(script < QUnicodeTables::ScriptCount); + Q_ASSERT(uint(script) < SpecialLanguageCount); + if (*specialLanguages[script] != '\0') { FcLangSet *ls = FcLangSetCreate(); FcLangSetAdd(ls, (const FcChar8*)specialLanguages[script]); FcPatternAddLangSet(pattern, FC_LANG, ls); diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h index dfae207333..7570be7135 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h @@ -51,9 +51,9 @@ class QFontconfigDatabase : public QBasicFontDatabase { public: void populateFontDatabase(); - QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QUnicodeTables::Script script); - QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle); - QStringList fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const; + QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script); + QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle); + QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const; QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName); QString resolveFontFamilyAlias(const QString &family) const; QFont defaultFont() const; diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index 99a316bef3..ef0c1b5103 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -85,9 +85,9 @@ static const char *languageForWritingSystem[] = { "ko", // Korean "vi", // Vietnamese 0, // Symbol - 0, // Ogham - 0, // Runic - 0 // N'Ko + "sga", // Ogham + "non", // Runic + "man" // N'Ko }; enum { LanguageCount = sizeof(languageForWritingSystem) / sizeof(const char *) }; @@ -325,7 +325,7 @@ void QCoreTextFontDatabase::releaseHandle(void *handle) CFRelease(CTFontDescriptorRef(handle)); } -QFontEngine *QCoreTextFontDatabase::fontEngine(const QFontDef &f, QUnicodeTables::Script script, void *usrPtr) +QFontEngine *QCoreTextFontDatabase::fontEngine(const QFontDef &f, QChar::Script script, void *usrPtr) { Q_UNUSED(script); @@ -375,7 +375,7 @@ QFontEngine *QCoreTextFontDatabase::fontEngine(const QByteArray &fontData, qreal return fontEngine; } -QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const +QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const { Q_UNUSED(family); Q_UNUSED(style); diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h index 310102f805..59b5acee39 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h @@ -52,9 +52,9 @@ public: QCoreTextFontDatabase(); ~QCoreTextFontDatabase(); void populateFontDatabase(); - QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle); + QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle); QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference); - QStringList fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const; + QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const; #ifndef Q_OS_IOS QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName); #endif diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp index 76fe5f1a43..5a1b4f1522 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp @@ -1132,9 +1132,7 @@ QWindowsFontDatabase::~QWindowsFontDatabase() removeApplicationFonts(); } -QFontEngine * QWindowsFontDatabase::fontEngine(const QFontDef &fontDef, - QUnicodeTables::Script script, - void *handle) +QFontEngine * QWindowsFontDatabase::fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle) { QFontEngine *fe = QWindowsFontDatabase::createEngine(script, fontDef, 0, QWindowsContext::instance()->defaultDPI(), false, @@ -1187,7 +1185,7 @@ QFontEngine *QWindowsFontDatabase::fontEngine(const QByteArray &fontData, qreal request.styleStrategy = QFont::NoFontMerging | QFont::PreferMatch; request.hintingPreference = hintingPreference; - fontEngine = QWindowsFontDatabase::createEngine(QUnicodeTables::Common, request, 0, + fontEngine = QWindowsFontDatabase::createEngine(QChar::Script_Common, request, 0, QWindowsContext::instance()->defaultDPI(), false, QStringList(), m_fontEngineData); @@ -1300,7 +1298,7 @@ QFontEngine *QWindowsFontDatabase::fontEngine(const QByteArray &fontData, qreal return fontEngine; } -QStringList QWindowsFontDatabase::fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const +QStringList QWindowsFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const { QStringList result = QPlatformFontDatabase::fallbacksForFamily(family, style, styleHint, script); if (!result.isEmpty()) @@ -1538,8 +1536,8 @@ HFONT QWindowsFontDatabase::systemFont() static inline bool scriptRequiresOpenType(int script) { - return ((script >= QUnicodeTables::Syriac && script <= QUnicodeTables::Sinhala) - || script == QUnicodeTables::Khmer || script == QUnicodeTables::Nko); + return ((script >= QChar::Script_Syriac && script <= QChar::Script_Sinhala) + || script == QChar::Script_Khmer || script == QChar::Script_Nko); } static const char *other_tryFonts[] = { @@ -1850,7 +1848,7 @@ QFontEngine *QWindowsFontDatabase::createEngine(int script, const QFontDef &requ directWriteFont->Release(); #endif - if(script == QUnicodeTables::Common + if (script == QChar::Script_Common && !(request.styleStrategy & QFont::NoFontMerging)) { QFontDatabase db; if (!db.writingSystems(request.family).contains(QFontDatabase::Symbol)) { diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.h b/src/plugins/platforms/windows/qwindowsfontdatabase.h index 94327f723d..3325daf4cf 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.h +++ b/src/plugins/platforms/windows/qwindowsfontdatabase.h @@ -78,9 +78,9 @@ public: ~QWindowsFontDatabase(); virtual void populateFontDatabase(); - virtual QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle); + virtual QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle); virtual QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference); - virtual QStringList fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const; + virtual QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const; virtual QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName); virtual void releaseHandle(void *handle); virtual QString fontDir() const; diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp index 4c3d412b8e..d30c1f984d 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp @@ -362,7 +362,7 @@ void QWindowsFontDatabaseFT::populate(const QString &family) ReleaseDC(0, dummy); } -QFontEngine * QWindowsFontDatabaseFT::fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle) +QFontEngine * QWindowsFontDatabaseFT::fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle) { QFontEngine *fe = QBasicFontDatabase::fontEngine(fontDef, script, handle); if (QWindowsContext::verboseFonts) @@ -430,9 +430,9 @@ static const char *kr_tryFonts[] = { static const char **tryFonts = 0; -QStringList QWindowsFontDatabaseFT::fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const +QStringList QWindowsFontDatabaseFT::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const { - if(script == QUnicodeTables::Common) { + if (script == QChar::Script_Common) { // && !(request.styleStrategy & QFont::NoFontMerging)) { QFontDatabase db; if (!db.writingSystems(family).contains(QFontDatabase::Symbol)) { @@ -518,8 +518,8 @@ HFONT QWindowsFontDatabaseFT::systemFont() static inline bool scriptRequiresOpenType(int script) { - return ((script >= QUnicodeTables::Syriac && script <= QUnicodeTables::Sinhala) - || script == QUnicodeTables::Khmer || script == QUnicodeTables::Nko); + return ((script >= QChar::Script_Syriac && script <= QChar::Script_Sinhala) + || script == QChar::Script_Khmer || script == QChar::Script_Nko); } static inline int verticalDPI() diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.h b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.h index f48b87a251..17820335ec 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.h +++ b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.h @@ -52,10 +52,10 @@ class QWindowsFontDatabaseFT : public QBasicFontDatabase { public: void populateFontDatabase(); - QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle); + QFontEngine *fontEngine(const QFontDef &fontDef, QChar::Script script, void *handle); QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference); - QStringList fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const; + QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const; virtual QString fontDir() const; virtual QFont defaultFont() const; diff --git a/src/plugins/platforms/windows/qwindowsfontengine.cpp b/src/plugins/platforms/windows/qwindowsfontengine.cpp index e51d6d4e7e..6937e6bce3 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.cpp +++ b/src/plugins/platforms/windows/qwindowsfontengine.cpp @@ -66,7 +66,6 @@ #include #include -#include #include #include @@ -1269,7 +1268,7 @@ QFontEngine *QWindowsFontEngine::cloneWithSize(qreal pixelSize) const request.styleStrategy |= QFont::NoFontMerging; QFontEngine *fontEngine = - QWindowsFontDatabase::createEngine(QUnicodeTables::Common, request, 0, + QWindowsFontDatabase::createEngine(QChar::Script_Common, request, 0, QWindowsContext::instance()->defaultDPI(), false, QStringList(), m_fontEngineData); -- cgit v1.2.3 From f4b4b4414e202fb2873579ed3f50aa9e20710c02 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sun, 18 Nov 2012 10:36:56 -0800 Subject: Add QDBusArgument template overloads for QPair Change-Id: Ic7c199b20f9b3f34ae8a16b6062b3a3d8722f063 Reviewed-by: Frederik Gladhorn --- src/dbus/qdbusargument.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src') diff --git a/src/dbus/qdbusargument.h b/src/dbus/qdbusargument.h index 9687f21051..97b5a69613 100644 --- a/src/dbus/qdbusargument.h +++ b/src/dbus/qdbusargument.h @@ -397,6 +397,23 @@ inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantHash &map) return arg; } +template +inline QDBusArgument &operator<<(QDBusArgument &arg, const QPair &pair) +{ + arg.beginStructure(); + arg << pair.first << pair.second; + arg.endStructure(); + return arg; +} + +template +inline const QDBusArgument &operator>>(const QDBusArgument &arg, QPair &pair) +{ + arg.beginStructure(); + arg >> pair.first >> pair.second; + arg.endStructure(); + return arg; +} QT_END_NAMESPACE -- cgit v1.2.3 From 7ee9551b62b050f7e9aefdc19e19bac5ba263507 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 23 May 2012 21:10:31 +0200 Subject: Add support for multiple arguments to QSharedPointer::create() Requires C++11 rvalue references and variadic templates so we can implement perfect forwarding. Change-Id: I62e47d1ffd0c61e8386f9f246aa79031b7430b46 Reviewed-by: Olivier Goffart --- src/corelib/tools/qsharedpointer.cpp | 31 +++++++++++++++++++++++++++++++ src/corelib/tools/qsharedpointer.h | 3 +++ src/corelib/tools/qsharedpointer_impl.h | 27 +++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp index 167771027e..c9456c44c2 100644 --- a/src/corelib/tools/qsharedpointer.cpp +++ b/src/corelib/tools/qsharedpointer.cpp @@ -604,6 +604,37 @@ \sa qSharedPointerObjectCast() */ +/*! + \fn QSharedPointer QSharedPointer::create() + \since 4.6 + + Creates a QSharedPointer object and allocates a new item of type \tt T. The + QSharedPointer internals and the object are allocated in one single memory + allocation, which could help reduce memory fragmentation in a long-running + application. + + This function calls the default constructor for type \tt T. +*/ + +/*! + \fn QSharedPointer QSharedPointer::create(...) + \overload + \since 5.1 + + Creates a QSharedPointer object and allocates a new item of type \tt T. The + QSharedPointer internals and the object are allocated in one single memory + allocation, which could help reduce memory fragmentation in a long-running + application. + + This function will attempt to call a constructor for type \tt T that can + accept all the arguments passed. Arguments will be perfectly-forwarded. + + \note This function is only available with a C++11 compiler that supports + perfect forwarding of an arbitrary number of arguments. If the compiler + does not support the necessary C++11 features, you must use the overload + that calls the default constructor. +*/ + /*! \fn QWeakPointer QSharedPointer::toWeakRef() const diff --git a/src/corelib/tools/qsharedpointer.h b/src/corelib/tools/qsharedpointer.h index cfc5cadbb0..a430153bca 100644 --- a/src/corelib/tools/qsharedpointer.h +++ b/src/corelib/tools/qsharedpointer.h @@ -95,6 +95,9 @@ public: template QSharedPointer dynamicCast() const; template QSharedPointer constCast() const; template QSharedPointer objectCast() const; + + static inline QSharedPointer create(); + static inline QSharedPointer create(...); }; template diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h index 6f3e577e55..6393cc3970 100644 --- a/src/corelib/tools/qsharedpointer_impl.h +++ b/src/corelib/tools/qsharedpointer_impl.h @@ -62,6 +62,10 @@ QT_END_HEADER #include // for qobject_cast #include // for qHash +#if defined(Q_COMPILER_RVALUE_REFS) && defined(Q_COMPILER_VARIADIC_TEMPLATES) +# include // for std::forward +#endif + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -389,6 +393,28 @@ public: QWeakPointer toWeakRef() const; +#if defined(Q_COMPILER_RVALUE_REFS) && defined(Q_COMPILER_VARIADIC_TEMPLATES) + template + static QSharedPointer create(Args && ...arguments) + { + typedef QtSharedPointer::ExternalRefCountWithContiguousData Private; +# ifdef QT_SHAREDPOINTER_TRACK_POINTERS + typename Private::DestroyerFn destroy = &Private::safetyCheckDeleter; +# else + typename Private::DestroyerFn destroy = &Private::deleter; +# endif + QSharedPointer result(Qt::Uninitialized); + result.d = Private::create(&result.value, destroy); + + // now initialize the data + new (result.data()) T(std::forward(arguments)...); + result.d->setQObjectShared(result.value, true); +# ifdef QT_SHAREDPOINTER_TRACK_POINTERS + internalSafetyCheckAdd(result.d, result.value); +# endif + return result; + } +#else static inline QSharedPointer create() { typedef QtSharedPointer::ExternalRefCountWithContiguousData Private; @@ -408,6 +434,7 @@ public: result.d->setQObjectShared(result.value, true); return result; } +#endif private: explicit QSharedPointer(Qt::Initialization) {} -- cgit v1.2.3 From 3f374afaae93a7804ee367098719c8a178d906f8 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 28 Dec 2012 15:34:54 +0100 Subject: Get the default flags from the direct-base, not the indirect. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QStringListModel inherits QAbstractListModel. Change-Id: I942321b2e5949f54041e11089f4131a646618b9e Reviewed-by: Thorbjørn Lund Martsum Reviewed-by: Stephen Kelly --- src/corelib/itemmodels/qstringlistmodel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/itemmodels/qstringlistmodel.cpp b/src/corelib/itemmodels/qstringlistmodel.cpp index 641dfb28f9..f3da06775a 100644 --- a/src/corelib/itemmodels/qstringlistmodel.cpp +++ b/src/corelib/itemmodels/qstringlistmodel.cpp @@ -170,9 +170,9 @@ QVariant QStringListModel::data(const QModelIndex &index, int role) const Qt::ItemFlags QStringListModel::flags(const QModelIndex &index) const { if (!index.isValid()) - return QAbstractItemModel::flags(index) | Qt::ItemIsDropEnabled; + return QAbstractListModel::flags(index) | Qt::ItemIsDropEnabled; - return QAbstractItemModel::flags(index) | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled; + return QAbstractListModel::flags(index) | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled; } /*! -- cgit v1.2.3 From 818c544d6be0daf399ad69222b196e75e6b54505 Mon Sep 17 00:00:00 2001 From: Morten Johan Sorvig Date: Thu, 13 Dec 2012 14:54:47 +0100 Subject: Cache accessibility plugins. Profiling shows that the cost of QAcccessible:: queryAccessibleInterface is dominated by plugin loading. (json parsing etc.) Cache QAccessiblePlugin per class. Also cache the fact that no plugin is found for a certain class. This speeds up the average queryAccessibleInterface call by a factor of 10X Change-Id: Iab6d052dec499a2203d1dcc4672a8a543b279239 Reviewed-by: Frederik Gladhorn --- src/gui/accessible/qaccessible.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp index f55037c37a..28a3afbbf0 100644 --- a/src/gui/accessible/qaccessible.cpp +++ b/src/gui/accessible/qaccessible.cpp @@ -51,6 +51,7 @@ #include #include +#include #include QT_BEGIN_NAMESPACE @@ -430,6 +431,8 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, #endif Q_GLOBAL_STATIC(QList, qAccessibleFactories) +typedef QHash QAccessiblePluginsHash; +Q_GLOBAL_STATIC(QAccessiblePluginsHash, qAccessiblePlugins); QAccessible::UpdateHandler QAccessible::updateHandler = 0; QAccessible::RootObjectHandler QAccessible::rootObjectHandler = 0; @@ -580,9 +583,13 @@ QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object) if (!object) return 0; + // Create a QAccessibleInterface for the object class. Start by the most + // derived class and walk up the class hierarchy. const QMetaObject *mo = object->metaObject(); while (mo) { const QString cn = QLatin1String(mo->className()); + + // Check if the class has a InterfaceFactory installed. for (int i = qAccessibleFactories()->count(); i > 0; --i) { InterfaceFactory factory = qAccessibleFactories()->at(i - 1); if (QAccessibleInterface *iface = factory(cn, object)) @@ -590,8 +597,21 @@ QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object) } #ifndef QT_NO_ACCESSIBILITY #ifndef QT_NO_LIBRARY - if (QAccessibleInterface * iface = qLoadPlugin1(loader(), cn, object)) - return iface; + // Find a QAccessiblePlugin (factory) for the class name. If there's + // no entry in the cache try to create it using the plugin loader. + if (!qAccessiblePlugins()->contains(cn)) { + QAccessiblePlugin *factory = 0; // 0 means "no plugin found". This is cached as well. + const int index = loader()->indexOf(cn); + if (index != -1) + factory = qobject_cast(loader()->instance(index)); + qAccessiblePlugins()->insert(cn, factory); + } + + // At this point the cache should contain a valid factory pointer or 0: + Q_ASSERT(qAccessiblePlugins()->contains(cn)); + QAccessiblePlugin *factory = qAccessiblePlugins()->value(cn); + if (factory) + return factory->create(cn, object); #endif #endif mo = mo->superClass(); -- cgit v1.2.3 From cc378774b86d732a1758260eca690637e99c1ac2 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Fri, 16 Nov 2012 11:39:26 +0200 Subject: Move ForceIntegerMetrics testing out of the loop Change-Id: I5732999dee63568eb83e5186cf5bf8c63709724e Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qfontengine_ft.cpp | 7 +++++-- src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index fe72df64bd..b9a7e69c9d 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -1558,12 +1558,15 @@ void QFontEngineFT::recalcAdvances(QGlyphLayout *glyphs, QFontEngine::ShaperFlag glyphs->advances_x[i] = design ? QFixed::fromFixed(face->glyph->linearHoriAdvance >> 10) : QFixed::fromFixed(face->glyph->metrics.horiAdvance).round(); } - if (fontDef.styleStrategy & QFont::ForceIntegerMetrics) - glyphs->advances_x[i] = glyphs->advances_x[i].round(); glyphs->advances_y[i] = 0; } if (face) unlockFace(); + + if (fontDef.styleStrategy & QFont::ForceIntegerMetrics) { + for (int i = 0; i < glyphs->numGlyphs; ++i) + glyphs->advances_x[i] = glyphs->advances_x[i].round(); + } } glyph_metrics_t QFontEngineFT::boundingBox(const QGlyphLayout &glyphs) diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp index add36c78cf..f7ba0d237d 100644 --- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp +++ b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp @@ -371,10 +371,12 @@ void QWindowsFontEngineDirectWrite::recalcAdvances(QGlyphLayout *glyphs, QFontEn if (SUCCEEDED(hr)) { for (int i=0; inumGlyphs; ++i) { glyphs->advances_x[i] = DESIGN_TO_LOGICAL(glyphMetrics[i].advanceWidth); - if (fontDef.styleStrategy & QFont::ForceIntegerMetrics) - glyphs->advances_x[i] = glyphs->advances_x[i].round(); glyphs->advances_y[i] = 0; } + if (fontDef.styleStrategy & QFont::ForceIntegerMetrics) { + for (int i = 0; i < glyphs->numGlyphs; ++i) + glyphs->advances_x[i] = glyphs->advances_x[i].round(); + } } else { qErrnoWarning("%s: GetDesignGlyphMetrics failed", __FUNCTION__); } -- cgit v1.2.3 From 1b9fdb9b31c65e1f876fd7b45f21bf0e83bb02cc Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 22 Dec 2012 19:47:20 +0200 Subject: Skip FcCharSetHasChar() call ...if writing system is already known to be supported Change-Id: Id7ea11e92507a283b2fba2ad944dd0a9772e484d Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index 784602b596..128ef396db 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -443,7 +443,7 @@ void QFontconfigDatabase::populateFontDatabase() // some languages are not supported by FontConfig, we rather check the // charset to detect these for (int i = 1; i < SampleCharCount; ++i) { - if (!sampleCharForWritingSystem[i]) + if (!sampleCharForWritingSystem[i] || writingSystems.supported(QFontDatabase::WritingSystem(i))) continue; if (FcCharSetHasChar(cs, sampleCharForWritingSystem[i])) writingSystems.setSupported(QFontDatabase::WritingSystem(i)); -- cgit v1.2.3 From 0f014fcde824d191eef003cd52ea70485499d845 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 29 Dec 2011 20:17:19 -0200 Subject: Mark several template functions as static. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no reason those function shouldn't be static. This produces no change in code, except that the functions may be better optimised. Change-Id: Ia60b81d4e29a36190a453e8c7c8102c8f547e1a9 Reviewed-by: Samuel Rødal --- src/gui/painting/qdrawhelper.cpp | 2 +- src/gui/painting/qdrawhelper_p.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 0f8fde1d9c..a5486ecae9 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -5368,7 +5368,7 @@ void qBlendTexture(int count, const QSpan *spans, void *userData) proc(count, spans, userData); } -template +template Q_STATIC_TEMPLATE_FUNCTION inline void qt_bitmapblit_template(QRasterBuffer *rasterBuffer, int x, int y, DST color, const uchar *map, diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h index 439882a3cf..0b984b39bd 100644 --- a/src/gui/painting/qdrawhelper_p.h +++ b/src/gui/painting/qdrawhelper_p.h @@ -382,7 +382,7 @@ static inline qreal qRadialDeterminant(qreal a, qreal b, qreal c) return (b * b) - (4 * a * c); } -template +template Q_STATIC_TEMPLATE_FUNCTION const uint * QT_FASTCALL qt_fetch_radial_gradient_template(uint *buffer, const Operator *op, const QSpanData *data, int y, int x, int length) { @@ -687,7 +687,7 @@ inline quint24::operator uint() const return data[2] | (data[1] << 8) | (data[0] << 16); } -template +template Q_STATIC_TEMPLATE_FUNCTION void qt_memfill(T *dest, T value, int count); template<> inline void qt_memfill(quint32 *dest, quint32 color, int count) @@ -728,7 +728,7 @@ inline void qt_memfill(T *dest, T value, int count) } } -template +template Q_STATIC_TEMPLATE_FUNCTION inline void qt_rectfill(T *dest, T value, int x, int y, int width, int height, int stride) { -- cgit v1.2.3 From 28a21d98ef8d880a6dd86ee19dd803424bb5eae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Sun, 4 Nov 2012 18:17:14 +0100 Subject: QAbstractItemView - allow deselect in single selection mode. This patch allows single selection to be cleared with the normal control modifier. This affects e.g QTreeView and QListView. Task-number: QTBUG-8836 Change-Id: I7fd50b987acc3552b36657409568192763257536 Reviewed-by: Stephen Kelly --- src/widgets/itemviews/qabstractitemview.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index 57c3b44aaa..ab98bf6438 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -3816,13 +3816,31 @@ QItemSelectionModel::SelectionFlags QAbstractItemView::selectionCommand(const QM const QEvent *event) const { Q_D(const QAbstractItemView); + Qt::KeyboardModifiers keyModifiers = Qt::NoModifier; + if (event) { + switch (event->type()) { + case QEvent::MouseButtonDblClick: + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseMove: + case QEvent::KeyPress: + case QEvent::KeyRelease: + keyModifiers = (static_cast(event))->modifiers(); + break; + default: + keyModifiers = QApplication::keyboardModifiers(); + } + } switch (d->selectionMode) { case NoSelection: // Never update selection model return QItemSelectionModel::NoUpdate; case SingleSelection: // ClearAndSelect on valid index otherwise NoUpdate if (event && event->type() == QEvent::MouseButtonRelease) return QItemSelectionModel::NoUpdate; - return QItemSelectionModel::ClearAndSelect|d->selectionBehaviorFlags(); + if ((keyModifiers & Qt::ControlModifier) && d->selectionModel->isSelected(index)) + return QItemSelectionModel::Deselect | d->selectionBehaviorFlags(); + else + return QItemSelectionModel::ClearAndSelect | d->selectionBehaviorFlags(); case MultiSelection: return d->multiSelectionCommand(index, event); case ExtendedSelection: -- cgit v1.2.3 From 2d8910cbeda8e88223fa386e4398f13b455fd7ca Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 15 Mar 2012 09:02:19 +0000 Subject: Introduce QRegularExpressionValidator QRegularExpression counterpart for QRegExpValidator. Change-Id: Ib391e73dd49e32aeb9b48e6f2217b67a17a83a11 Reviewed-by: David Faure Reviewed-by: Gunnar Sletta --- .../doc/snippets/code/src_gui_util_qvalidator.cpp | 43 ++++++ src/gui/util/qvalidator.cpp | 154 +++++++++++++++++++++ src/gui/util/qvalidator.h | 33 +++++ 3 files changed, 230 insertions(+) (limited to 'src') diff --git a/src/gui/doc/snippets/code/src_gui_util_qvalidator.cpp b/src/gui/doc/snippets/code/src_gui_util_qvalidator.cpp index f571705558..c39a4dec99 100644 --- a/src/gui/doc/snippets/code/src_gui_util_qvalidator.cpp +++ b/src/gui/doc/snippets/code/src_gui_util_qvalidator.cpp @@ -133,3 +133,46 @@ s = "README.1ST"; v.validate(s, pos); // Returns Acceptable s = "read me.txt"; v.validate(s, pos); // Returns Invalid s = "readm"; v.validate(s, pos); // Returns Intermediate //! [4] + +//! [5] +// regexp: optional '-' followed by between 1 and 3 digits +QRegularExpression rx("-?\\d{1,3}"); +QValidator *validator = new QRegularExpressionValidator(rx, this); + +QLineEdit *edit = new QLineEdit(this); +edit->setValidator(validator); +//! [5] + +//! [6] +// integers 1 to 9999 +QRegularExpression re("[1-9]\\d{0,3}"); +// the validator treats the regexp as "^[1-9]\\d{0,3}$" +QRegularExpressionValidator v(re, 0); +QString s; +int pos = 0; + +s = "0"; v.validate(s, pos); // returns Invalid +s = "12345"; v.validate(s, pos); // returns Invalid +s = "1"; v.validate(s, pos); // returns Acceptable + +re.setPattern("\\S+"); // one or more non-whitespace characters +v.setRegularExpression(re); +s = "myfile.txt"; v.validate(s, pos); // Returns Acceptable +s = "my file.txt"; v.validate(s, pos); // Returns Invalid + +// A, B or C followed by exactly five digits followed by W, X, Y or Z +re.setPattern("[A-C]\\d{5}[W-Z]"); +v.setRegularExpression(re); +s = "a12345Z"; v.validate(s, pos); // Returns Invalid +s = "A12345Z"; v.validate(s, pos); // Returns Acceptable +s = "B12"; v.validate(s, pos); // Returns Intermediate + +// match most 'readme' files +re.setPattern("read\\S?me(\.(txt|asc|1st))?"); +re.setPatternOptions(QRegularExpression::CaseInsensitiveOption); +v.setRegularExpression(re); +s = "readme"; v.validate(s, pos); // Returns Acceptable +s = "README.1ST"; v.validate(s, pos); // Returns Acceptable +s = "read me.txt"; v.validate(s, pos); // Returns Invalid +s = "readm"; v.validate(s, pos); // Returns Intermediate +//! [6] diff --git a/src/gui/util/qvalidator.cpp b/src/gui/util/qvalidator.cpp index 6231a097d3..0d38ebaf14 100644 --- a/src/gui/util/qvalidator.cpp +++ b/src/gui/util/qvalidator.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtGui module of the Qt Toolkit. @@ -906,6 +907,159 @@ void QRegExpValidator::setRegExp(const QRegExp& rx) #endif +#ifndef QT_NO_REGEXP + +/*! + \class QRegularExpressionValidator + \brief The QRegularExpressionValidator class is used to check a string + against a regular expression. + + \since 5.1 + + QRegularExpressionValidator uses a regular expression (regexp) to + determine whether an input string is \l Acceptable, \l + Intermediate, or \l Invalid. The regexp can either be supplied + when the QRegularExpressionValidator is constructed, or at a later time. + + If the regexp partially matches against the string, the result is + considered \l Intermediate. For example, "" and "A" are \l Intermediate for + the regexp \b{[A-Z][0-9]} (whereas "_" would be \l Invalid). + + QRegularExpressionValidator automatically wraps the regular expression in + the \c{\\A} and \c{\\z} anchors; in other words, it always attempts to do + an exact match. + + Example of use: + \snippet code/src_gui_util_qvalidator.cpp 5 + + Below we present some examples of validators. In practice they would + normally be associated with a widget as in the example above. + + \snippet code/src_gui_util_qvalidator.cpp 6 + + \sa QRegularExpression, QIntValidator, QDoubleValidator, QRegExpValidator +*/ + +class QRegularExpressionValidatorPrivate : public QValidatorPrivate +{ + Q_DECLARE_PUBLIC(QRegularExpressionValidator) + +public: + QRegularExpression origRe; // the one set by the user + QRegularExpression usedRe; // the one actually used + void setRegularExpression(const QRegularExpression &re); +}; + +/*! + Constructs a validator with a \a parent object that accepts + any string (including an empty one) as valid. +*/ + +QRegularExpressionValidator::QRegularExpressionValidator(QObject *parent) + : QValidator(*new QRegularExpressionValidatorPrivate, parent) +{ + // origRe in the private will be an empty QRegularExpression, + // and therefore this validator will match any string. +} + +/*! + Constructs a validator with a \a parent object that + accepts all strings that match the regular expression \a re. +*/ + +QRegularExpressionValidator::QRegularExpressionValidator(const QRegularExpression &re, QObject *parent) + : QValidator(*new QRegularExpressionValidatorPrivate, parent) +{ + Q_D(QRegularExpressionValidator); + d->setRegularExpression(re); +} + + +/*! + Destroys the validator. +*/ + +QRegularExpressionValidator::~QRegularExpressionValidator() +{ +} + +/*! + Returns \l Acceptable if \a input is matched by the regular expression for + this validator, \l Intermediate if it has matched partially (i.e. could be + a valid match if additional valid characters are added), and \l Invalid if + \a input is not matched. + + In case the \a input is not matched, the \a pos parameter is set to + the length of the \a input parameter; otherwise, it is not modified. + + For example, if the regular expression is \b{\\w\\d\\d} (word-character, + digit, digit) then "A57" is \l Acceptable, "E5" is \l Intermediate, and + "+9" is \l Invalid. + + \sa QRegularExpression::match() +*/ + +QValidator::State QRegularExpressionValidator::validate(QString &input, int &pos) const +{ + Q_D(const QRegularExpressionValidator); + + // We want a validator with an empty QRegularExpression to match anything; + // since we're going to do an exact match (by using d->usedRe), first check if the rx is empty + // (and, if so, accept the input). + if (d->origRe.pattern().isEmpty()) + return Acceptable; + + const QRegularExpressionMatch m = d->usedRe.match(input, 0, QRegularExpression::PartialPreferCompleteMatch); + if (m.hasMatch()) { + return Acceptable; + } else if (m.hasPartialMatch()) { + return Intermediate; + } else { + pos = input.size(); + return Invalid; + } +} + +/*! + \property QRegularExpressionValidator::regularExpression + \brief the regular expression used for validation + + By default, this property contains a regular expression with an empty + pattern (which therefore matches any string). +*/ + +QRegularExpression QRegularExpressionValidator::regularExpression() const +{ + Q_D(const QRegularExpressionValidator); + return d->origRe; +} + +void QRegularExpressionValidator::setRegularExpression(const QRegularExpression &re) +{ + Q_D(QRegularExpressionValidator); + d->setRegularExpression(re); +} + +/*! + \internal + + Sets \a re as the regular expression. It wraps the regexp that's actually used + between \\A and \\z, therefore forcing an exact match. +*/ +void QRegularExpressionValidatorPrivate::setRegularExpression(const QRegularExpression &re) +{ + Q_Q(QRegularExpressionValidator); + + if (origRe != re) { + usedRe = origRe = re; // copies also the pattern options + usedRe.setPattern(QStringLiteral("\\A(?:") + re.pattern() + QStringLiteral(")\\z")); + emit q->regularExpressionChanged(re); + emit q->changed(); + } +} + +#endif // QT_NO_REGEXP + QT_END_NAMESPACE #endif // QT_NO_VALIDATOR diff --git a/src/gui/util/qvalidator.h b/src/gui/util/qvalidator.h index e4aa55d578..53acdfb31e 100644 --- a/src/gui/util/qvalidator.h +++ b/src/gui/util/qvalidator.h @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtGui module of the Qt Toolkit. @@ -45,6 +46,7 @@ #include #include #include +#include #include QT_BEGIN_HEADER @@ -195,6 +197,37 @@ private: #endif // QT_NO_REGEXP +#ifndef QT_NO_REGEXP + +class QRegularExpressionValidatorPrivate; + +class Q_GUI_EXPORT QRegularExpressionValidator : public QValidator +{ + Q_OBJECT + Q_PROPERTY(QRegularExpression regularExpression READ regularExpression WRITE setRegularExpression NOTIFY regularExpressionChanged) + +public: + explicit QRegularExpressionValidator(QObject *parent = 0); + explicit QRegularExpressionValidator(const QRegularExpression &re, QObject *parent = 0); + ~QRegularExpressionValidator(); + + virtual QValidator::State validate(QString &input, int &pos) const Q_DECL_OVERRIDE; + + QRegularExpression regularExpression() const; + +public Q_SLOTS: + void setRegularExpression(const QRegularExpression &re); + +Q_SIGNALS: + void regularExpressionChanged(const QRegularExpression &re); + +private: + Q_DISABLE_COPY(QRegularExpressionValidator) + Q_DECLARE_PRIVATE(QRegularExpressionValidator) +}; + +#endif // QT_NO_REGEXP + #endif // QT_NO_VALIDATOR QT_END_NAMESPACE -- cgit v1.2.3 From 6769e0783ac0fc54aa542232b24166afc082412e Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Wed, 2 Jan 2013 15:23:15 +0100 Subject: Fix the \since version for QSharedPointer::create(). It is not relevant that it has been part of the class since Qt 4.6. It has always been internal until now. The release where it became public API (5.1) is what is relevant. Change-Id: Ib740f3ed6df190884a94fb2c11dd74cd7edb7b1a Reviewed-by: Venugopal Shivashankar Reviewed-by: Lars Knoll --- src/corelib/tools/qsharedpointer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp index c9456c44c2..5455904021 100644 --- a/src/corelib/tools/qsharedpointer.cpp +++ b/src/corelib/tools/qsharedpointer.cpp @@ -606,7 +606,7 @@ /*! \fn QSharedPointer QSharedPointer::create() - \since 4.6 + \since 5.1 Creates a QSharedPointer object and allocates a new item of type \tt T. The QSharedPointer internals and the object are allocated in one single memory -- cgit v1.2.3 From 21d607c81af0cd285e9bb3869ac3cd18358f1c8f Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 3 Jan 2013 01:22:47 +0100 Subject: Automatically register method types in QSignalSpy. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I3655291dca6dbd3d8d09ee835b85983caa911b64 Reviewed-by: Jędrzej Nowacki --- src/testlib/qsignalspy.h | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/testlib/qsignalspy.h b/src/testlib/qsignalspy.h index b8e542a3c9..904fe81cf0 100644 --- a/src/testlib/qsignalspy.h +++ b/src/testlib/qsignalspy.h @@ -97,7 +97,7 @@ public: return; } sig = ba; - initArgs(mo->method(sigIndex)); + initArgs(mo->method(sigIndex), obj); } inline bool isValid() const { return !sig.isEmpty(); } @@ -130,11 +130,24 @@ public: private: void initArgs(const QMetaMethod &member) + { + initArgs(member, 0); + } + + void initArgs(const QMetaMethod &member, const QObject *obj) { const QList params = member.parameterTypes(); args.reserve(params.size()); for (int i = 0; i < params.count(); ++i) { - const int tp = QMetaType::type(params.at(i).constData()); + int tp = QMetaType::type(params.at(i).constData()); + if (tp == QMetaType::UnknownType && obj) { + void *argv[] = { &tp, &i }; + QMetaObject::metacall(const_cast(obj), + QMetaObject::RegisterMethodArgumentMetaType, + member.methodIndex(), argv); + if (tp == -1) + tp = QMetaType::UnknownType; + } if (tp == QMetaType::UnknownType) { Q_ASSERT(tp != QMetaType::Void); // void parameter => metaobject is corrupt qWarning("Don't know how to handle '%s', use qRegisterMetaType to register it.", -- cgit v1.2.3 From 79f0a29abf3b2947da7848c8501061fdf7e91b76 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Fri, 16 Nov 2012 20:13:44 +0200 Subject: Get rid of pre-QPA leftovers Change-Id: I61a393baa387f2f90dc652d6a9df1c41c3730611 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qabstractfontengine_p.h | 108 ----------------------------- src/gui/text/qfontengine_qpf.cpp | 4 +- src/gui/text/qrawfont_ft.cpp | 129 ----------------------------------- 3 files changed, 1 insertion(+), 240 deletions(-) delete mode 100644 src/gui/text/qabstractfontengine_p.h delete mode 100644 src/gui/text/qrawfont_ft.cpp (limited to 'src') diff --git a/src/gui/text/qabstractfontengine_p.h b/src/gui/text/qabstractfontengine_p.h deleted file mode 100644 index 847b6d64a5..0000000000 --- a/src/gui/text/qabstractfontengine_p.h +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QABSTRACTFONTENGINE_P_H -#define QABSTRACTFONTENGINE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qfontengine_p.h" -#include "qabstractfontengine_qws.h" - -QT_BEGIN_NAMESPACE - -class QCustomFontEngine; - -class QProxyFontEngine : public QFontEngine -{ - Q_OBJECT -public: - QProxyFontEngine(QAbstractFontEngine *engine, const QFontDef &def); - virtual ~QProxyFontEngine(); - - virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const; - virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const; - virtual QImage alphaMapForGlyph(glyph_t); - virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs, QPainterPath *path, QTextItem::RenderFlags flags); - virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs); - virtual glyph_metrics_t boundingBox(glyph_t glyph); - - virtual QFixed ascent() const; - virtual QFixed descent() const; - virtual QFixed leading() const; - virtual QFixed xHeight() const; - virtual QFixed averageCharWidth() const; - virtual QFixed lineThickness() const; - virtual QFixed underlinePosition() const; - virtual qreal maxCharWidth() const; - virtual qreal minLeftBearing() const; - virtual qreal minRightBearing() const; - virtual int glyphCount() const; - - virtual bool canRender(const QChar *string, int len); - - virtual Type type() const { return Proxy; } - virtual const char *name() const { return "proxy engine"; } - - virtual void draw(QPaintEngine *, qreal, qreal, const QTextItemInt &); - - inline QAbstractFontEngine::Capabilities capabilities() const - { return engineCapabilities; } - - bool drawAsOutline() const; - -private: - QAbstractFontEngine *engine; - QAbstractFontEngine::Capabilities engineCapabilities; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/gui/text/qfontengine_qpf.cpp b/src/gui/text/qfontengine_qpf.cpp index 93ff7b6bdb..10523b29f9 100644 --- a/src/gui/text/qfontengine_qpf.cpp +++ b/src/gui/text/qfontengine_qpf.cpp @@ -666,9 +666,7 @@ void QFontEngineQPF::draw(QPaintEngine *p, qreal _x, qreal _y, const QTextItemIn void QFontEngineQPF::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags) { - if (renderingFontEngine && - (renderingFontEngine->type() != QFontEngine::Proxy - || static_cast(renderingFontEngine)->capabilities() & QAbstractFontEngine::CanOutlineGlyphs)) { + if (renderingFontEngine && renderingFontEngine->type() != QFontEngine::Proxy) { renderingFontEngine->addOutlineToPath(x, y, glyphs, path, flags); return; } diff --git a/src/gui/text/qrawfont_ft.cpp b/src/gui/text/qrawfont_ft.cpp deleted file mode 100644 index 34d6eb0e3d..0000000000 --- a/src/gui/text/qrawfont_ft.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include - -#if !defined(QT_NO_RAWFONT) - -#include "qrawfont_p.h" -#include "qfontengine_ft_p.h" -#include "quuid.h" - - -QT_BEGIN_NAMESPACE - -class QFontEngineFTRawFont - - : public QFontEngineFT - -{ -public: - QFontEngineFTRawFont(const QFontDef &fontDef) - : QFontEngineFT(fontDef) - { - } - - void updateFamilyNameAndStyle() - { - fontDef.family = QString::fromUtf8(freetype->face->family_name); - - if (freetype->face->style_flags & FT_STYLE_FLAG_ITALIC) - fontDef.style = QFont::StyleItalic; - - if (freetype->face->style_flags & FT_STYLE_FLAG_BOLD) - fontDef.weight = QFont::Bold; - } - - bool initFromData(const QByteArray &fontData) - { - FaceId faceId; - faceId.filename = ""; - faceId.index = 0; - faceId.uuid = QUuid::createUuid().toByteArray(); - - return init(faceId, true, Format_None, fontData); - } -}; - - -void QRawFontPrivate::platformCleanUp() -{ - // Font engine handles all resources -} - -void QRawFontPrivate::platformLoadFromData(const QByteArray &fontData, qreal pixelSize, - QFont::HintingPreference hintingPreference) -{ - Q_ASSERT(fontEngine == 0); - - QFontDef fontDef; - fontDef.pixelSize = pixelSize; - - QFontEngineFTRawFont *fe = new QFontEngineFTRawFont(fontDef); - if (!fe->initFromData(fontData)) { - delete fe; - return; - } - - fe->updateFamilyNameAndStyle(); - - switch (hintingPreference) { - case QFont::PreferNoHinting: - fe->setDefaultHintStyle(QFontEngineFT::HintNone); - break; - case QFont::PreferFullHinting: - fe->setDefaultHintStyle(QFontEngineFT::HintFull); - break; - case QFont::PreferVerticalHinting: - fe->setDefaultHintStyle(QFontEngineFT::HintLight); - break; - default: - // Leave it as it is - break; - } - - fontEngine = fe; - fontEngine->ref.ref(); -} - -QT_END_NAMESPACE - -#endif // QT_NO_RAWFONT -- cgit v1.2.3 From 59eb393cf57015a4dfea94617c863aafb096afa7 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 14 Oct 2012 16:29:39 +0100 Subject: Rename QRegularExpression-related feature defs to QT_NO_REGULAREXPRESSION MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QRegExp and QRegularExpression are totally independent, therefore using two different defines is the right thing to do. Also, document the new define in qfeatures.{txt,h}. Change-Id: Ice4826ea543f4b22f1cc27bf31ed6e043d0c43b0 Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira Reviewed-by: Jędrzej Nowacki --- src/corelib/global/qfeatures.h | 3 +++ src/corelib/global/qfeatures.txt | 7 +++++++ src/corelib/kernel/qmetatype.cpp | 8 ++++---- src/corelib/kernel/qmetatype_p.h | 2 +- src/corelib/kernel/qobject.cpp | 4 ++-- src/corelib/kernel/qobject.h | 4 ++-- src/corelib/kernel/qvariant.cpp | 10 ++++++---- src/corelib/kernel/qvariant.h | 20 +++++++++++--------- src/corelib/tools/qregularexpression.h | 4 ++-- src/corelib/tools/qstring.cpp | 26 ++++++++++++++++---------- src/corelib/tools/qstring.h | 8 ++++---- src/corelib/tools/qstringlist.cpp | 12 ++++++------ src/corelib/tools/qstringlist.h | 12 ++++++------ src/gui/util/qvalidator.cpp | 9 ++++----- src/gui/util/qvalidator.h | 4 ++-- 15 files changed, 76 insertions(+), 57 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h index a63d3a3b3d..da5ef4687b 100644 --- a/src/corelib/global/qfeatures.h +++ b/src/corelib/global/qfeatures.h @@ -154,6 +154,9 @@ // Properties //#define QT_NO_PROPERTIES +// QRegularExpression +//#define QT_NO_REGULAREXPRESSION + // Resize Handler //#define QT_NO_RESIZEHANDLER diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt index ad1ca5a6d5..25fd28c4cd 100644 --- a/src/corelib/global/qfeatures.txt +++ b/src/corelib/global/qfeatures.txt @@ -28,6 +28,13 @@ Requires: Name: CssParser SeeAlso: ??? +Feature: REGULAREXPRESSION +Description: Perl-compatible regular expression APIs +Section: Kernel +Requires: +Name: QRegularExpression +SeeAlso: ??? + Feature: CONCURRENT Description: Provides a high-level multi-threaded APIs Section: Kernel diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 6194f20912..8a04b06c42 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -943,11 +943,11 @@ bool QMetaType::save(QDataStream &stream, int type, const void *data) break; #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION case QMetaType::QRegularExpression: stream << *static_cast(data); break; -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION case QMetaType::QEasingCurve: stream << *static_cast(data); break; @@ -1166,11 +1166,11 @@ bool QMetaType::load(QDataStream &stream, int type, void *data) break; #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION case QMetaType::QRegularExpression: stream >> *static_cast< NS(QRegularExpression)*>(data); break; -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION case QMetaType::QEasingCurve: stream >> *static_cast< NS(QEasingCurve)*>(data); break; diff --git a/src/corelib/kernel/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h index 351baa9aaa..f31392e00d 100644 --- a/src/corelib/kernel/qmetatype_p.h +++ b/src/corelib/kernel/qmetatype_p.h @@ -221,7 +221,7 @@ template<> struct TypeDefinition { static const bool IsAvailable = fals #ifdef QT_NO_REGEXP template<> struct TypeDefinition { static const bool IsAvailable = false; }; #endif -#if defined(QT_BOOTSTRAPPED) || defined(QT_NO_REGEXP) +#if defined(QT_BOOTSTRAPPED) || defined(QT_NO_REGULAREXPRESSION) template<> struct TypeDefinition { static const bool IsAvailable = false; }; #endif #ifdef QT_NO_SHORTCUT diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 9091b5579e..28b0b66ba8 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -1690,7 +1690,7 @@ void qt_qFindChildren_helper(const QObject *parent, const QRegExp &re, } #endif // QT_NO_REGEXP -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION /*! \internal */ @@ -1712,7 +1712,7 @@ void qt_qFindChildren_helper(const QObject *parent, const QRegularExpression &re qt_qFindChildren_helper(obj, re, mo, list, options); } } -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION /*! \internal diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h index e9316c98f0..36aded2cdb 100644 --- a/src/corelib/kernel/qobject.h +++ b/src/corelib/kernel/qobject.h @@ -73,7 +73,7 @@ class QWidget; #ifndef QT_NO_REGEXP class QRegExp; #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION class QRegularExpression; #endif #ifndef QT_NO_USERDATA @@ -187,7 +187,7 @@ public: } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION template inline QList findChildren(const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const { diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 26deeba6a2..a88b7d2b1f 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -1529,10 +1529,13 @@ QVariant::QVariant(const QLocale &l) QVariant::QVariant(const QRegExp ®Exp) : d(RegExp) { v_construct(&d, regExp); } +#endif // QT_NO_REGEXP #ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGULAREXPRESSION QVariant::QVariant(const QRegularExpression &re) : d(RegularExpression) { v_construct(&d, re); } +#endif QVariant::QVariant(const QUuid &uuid) : d(Uuid) { v_construct(&d, uuid); } @@ -1552,7 +1555,6 @@ QVariant::QVariant(const QJsonDocument &jsonDocument) : d(QMetaType::QJsonDocument) { v_construct(&d, jsonDocument); } #endif // QT_BOOTSTRAPPED -#endif // QT_NO_REGEXP /*! Returns the storage type of the value stored in the variant. @@ -2214,6 +2216,7 @@ QRegExp QVariant::toRegExp() const } #endif +#ifndef QT_BOOTSTRAPPED /*! \fn QRegularExpression QVariant::toRegularExpression() const \since 5.0 @@ -2223,13 +2226,12 @@ QRegExp QVariant::toRegExp() const \sa canConvert(), convert() */ -#ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION QRegularExpression QVariant::toRegularExpression() const { return qVariantToHelper(d, handlerManager); } -#endif +#endif // QT_NO_REGULAREXPRESSION /*! \since 5.0 diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 86b43cf69a..692af9afc6 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -76,8 +76,10 @@ class QRect; class QRectF; #ifndef QT_NO_REGEXP class QRegExp; -class QRegularExpression; #endif // QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION +class QRegularExpression; +#endif // QT_NO_REGULAREXPRESSION class QTextFormat; class QTextLength; class QUrl; @@ -240,11 +242,11 @@ class Q_CORE_EXPORT QVariant QVariant(const QLocale &locale); #ifndef QT_NO_REGEXP QVariant(const QRegExp ®Exp); -#ifndef QT_BOOTSRAPPED - QVariant(const QRegularExpression &re); -#endif // QT_BOOTSTRAPPED #endif // QT_NO_REGEXP #ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGULAREXPRESSION + QVariant(const QRegularExpression &re); +#endif // QT_NO_REGULAREXPRESSION QVariant(const QUrl &url); QVariant(const QEasingCurve &easing); QVariant(const QUuid &uuid); @@ -253,7 +255,7 @@ class Q_CORE_EXPORT QVariant QVariant(const QJsonObject &jsonObject); QVariant(const QJsonArray &jsonArray); QVariant(const QJsonDocument &jsonDocument); -#endif +#endif // QT_BOOTSTRAPPED QVariant& operator=(const QVariant &other); #ifdef Q_COMPILER_RVALUE_REFS @@ -313,11 +315,11 @@ class Q_CORE_EXPORT QVariant QLocale toLocale() const; #ifndef QT_NO_REGEXP QRegExp toRegExp() const; -#ifndef QT_BOOTSTRAPPED - QRegularExpression toRegularExpression() const; -#endif // QT_BOOTSTRAPPED #endif // QT_NO_REGEXP #ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGULAREXPRESSION + QRegularExpression toRegularExpression() const; +#endif // QT_NO_REGULAREXPRESSION QUrl toUrl() const; QEasingCurve toEasingCurve() const; QUuid toUuid() const; @@ -326,7 +328,7 @@ class Q_CORE_EXPORT QVariant QJsonObject toJsonObject() const; QJsonArray toJsonArray() const; QJsonDocument toJsonDocument() const; -#endif +#endif // QT_BOOTSTRAPPED #ifndef QT_NO_DATASTREAM void load(QDataStream &ds); diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index 4c95a5b3a0..e312b10ff1 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -42,7 +42,7 @@ #ifndef QREGULAREXPRESSION_H #define QREGULAREXPRESSION_H -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION #include #include @@ -241,6 +241,6 @@ QT_END_NAMESPACE QT_END_HEADER -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QREGULAREXPRESSION_H diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 6db4fed0f8..10ef6b34dd 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -2762,13 +2762,17 @@ int QString::lastIndexOf(const QStringRef &str, int from, Qt::CaseSensitivity cs str.size(), cs); } -#ifndef QT_NO_REGEXP + +#if !(defined(QT_NO_REGEXP) && defined(QT_NO_REGULAREXPRESSION)) struct QStringCapture { int pos; int len; int no; }; +#endif + +#ifndef QT_NO_REGEXP /*! \overload replace() @@ -2925,7 +2929,7 @@ QString& QString::replace(const QRegExp &rx, const QString &after) } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION #ifndef QT_BOOTSTRAPPED /*! \overload replace() @@ -3055,7 +3059,7 @@ QString &QString::replace(const QRegularExpression &re, const QString &after) return *this; } #endif // QT_BOOTSTRAPPED -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION /*! Returns the number of (potentially overlapping) occurrences of @@ -3256,7 +3260,7 @@ int QString::count(const QRegExp& rx) const } #endif // QT_NO_REGEXP -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION #ifndef QT_BOOTSTRAPPED /*! \overload indexOf() @@ -3366,7 +3370,7 @@ int QString::count(const QRegularExpression &re) const return count; } #endif // QT_BOOTSTRAPPED -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION /*! \fn int QString::count() const @@ -3487,7 +3491,7 @@ QString QString::section(const QString &sep, int start, int end, SectionFlags fl return ret; } -#ifndef QT_NO_REGEXP +#if !(defined(QT_NO_REGEXP) && defined(QT_NO_REGULAREXPRESSION)) class qt_section_chunk { public: qt_section_chunk(int l, QString s) { length = l; string = s; } @@ -3537,7 +3541,9 @@ static QString extractSections(const QList §ions, return ret; } +#endif +#ifndef QT_NO_REGEXP /*! \overload section() @@ -3575,7 +3581,7 @@ QString QString::section(const QRegExp ®, int start, int end, SectionFlags fl } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION #ifndef QT_BOOTSTRAPPED /*! \overload section() @@ -3621,7 +3627,7 @@ QString QString::section(const QRegularExpression &re, int start, int end, Secti return extractSections(sections, start, end, flags); } #endif // QT_BOOTSTRAPPED -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION /*! Returns a substring that contains the \a n leftmost characters @@ -6416,7 +6422,7 @@ QStringList QString::split(const QRegExp &rx, SplitBehavior behavior) const } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION #ifndef QT_BOOTSTRAPPED /*! \overload @@ -6470,7 +6476,7 @@ QStringList QString::split(const QRegularExpression &re, SplitBehavior behavior) return list; } #endif // QT_BOOTSTRAPPED -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION /*! \enum QString::NormalizationForm diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index b679f0f990..574285fa1e 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -335,7 +335,7 @@ public: inline bool contains(QRegExp &rx) const { return indexOf(rx) != -1; } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION int indexOf(const QRegularExpression &re, int from = 0) const; int lastIndexOf(const QRegularExpression &re, int from = -1) const; bool contains(const QRegularExpression &re) const; @@ -356,7 +356,7 @@ public: #ifndef QT_NO_REGEXP QString section(const QRegExp ®, int start, int end = -1, SectionFlags flags = SectionDefault) const; #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION QString section(const QRegularExpression &re, int start, int end = -1, SectionFlags flags = SectionDefault) const; #endif QString left(int n) const Q_REQUIRED_RESULT; @@ -432,7 +432,7 @@ public: inline QString &remove(const QRegExp &rx) { return replace(rx, QString()); } #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION QString &replace(const QRegularExpression &re, const QString &after); inline QString &remove(const QRegularExpression &re) { return replace(re, QString()); } @@ -447,7 +447,7 @@ public: #ifndef QT_NO_REGEXP QStringList split(const QRegExp &sep, SplitBehavior behavior = KeepEmptyParts) const Q_REQUIRED_RESULT; #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION QStringList split(const QRegularExpression &sep, SplitBehavior behavior = KeepEmptyParts) const Q_REQUIRED_RESULT; #endif enum NormalizationForm { diff --git a/src/corelib/tools/qstringlist.cpp b/src/corelib/tools/qstringlist.cpp index d56f531e52..35ff2d3d84 100644 --- a/src/corelib/tools/qstringlist.cpp +++ b/src/corelib/tools/qstringlist.cpp @@ -320,7 +320,7 @@ QStringList QtPrivate::QStringList_filter(const QStringList *that, const QRegExp #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION /*! \fn QStringList QStringList::filter(const QRegularExpression &re) const \overload @@ -338,7 +338,7 @@ QStringList QtPrivate::QStringList_filter(const QStringList *that, const QRegula } return res; } -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED /*! @@ -395,7 +395,7 @@ void QtPrivate::QStringList_replaceInStrings(QStringList *that, const QRegExp &r #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION /*! \fn QStringList &QStringList::replaceInStrings(const QRegularExpression &re, const QString &after) \overload @@ -424,7 +424,7 @@ void QtPrivate::QStringList_replaceInStrings(QStringList *that, const QRegularEx for (int i = 0; i < that->size(); ++i) (*that)[i].replace(re, after); } -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED /*! @@ -619,7 +619,7 @@ int QtPrivate::QStringList_lastIndexOf(const QStringList *that, QRegExp &rx, int #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION /*! \fn int QStringList::indexOf(const QRegularExpression &re, int from) const \overload @@ -676,7 +676,7 @@ int QtPrivate::QStringList_lastIndexOf(const QStringList *that, const QRegularEx } return -1; } -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED /*! diff --git a/src/corelib/tools/qstringlist.h b/src/corelib/tools/qstringlist.h index 2448081004..9f7e41d800 100644 --- a/src/corelib/tools/qstringlist.h +++ b/src/corelib/tools/qstringlist.h @@ -99,12 +99,12 @@ public: #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION inline QStringList filter(const QRegularExpression &re) const; inline QStringList &replaceInStrings(const QRegularExpression &re, const QString &after); inline int indexOf(const QRegularExpression &re, int from = 0) const; inline int lastIndexOf(const QRegularExpression &re, int from = -1) const; -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED #if !defined(Q_NO_USING_KEYWORD) @@ -141,12 +141,12 @@ namespace QtPrivate { #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION void Q_CORE_EXPORT QStringList_replaceInStrings(QStringList *that, const QRegularExpression &rx, const QString &after); QStringList Q_CORE_EXPORT QStringList_filter(const QStringList *that, const QRegularExpression &re); int Q_CORE_EXPORT QStringList_indexOf(const QStringList *that, const QRegularExpression &re, int from); int Q_CORE_EXPORT QStringList_lastIndexOf(const QStringList *that, const QRegularExpression &re, int from); -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED } @@ -220,7 +220,7 @@ inline int QStringList::lastIndexOf(QRegExp &rx, int from) const #endif #ifndef QT_BOOTSTRAPPED -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION inline QStringList &QStringList::replaceInStrings(const QRegularExpression &rx, const QString &after) { QtPrivate::QStringList_replaceInStrings(this, rx, after); @@ -241,7 +241,7 @@ inline int QStringList::lastIndexOf(const QRegularExpression &rx, int from) cons { return QtPrivate::QStringList_lastIndexOf(this, rx, from); } -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_BOOTSTRAPPED #ifndef QT_NO_DATASTREAM diff --git a/src/gui/util/qvalidator.cpp b/src/gui/util/qvalidator.cpp index 0d38ebaf14..645e7ceeda 100644 --- a/src/gui/util/qvalidator.cpp +++ b/src/gui/util/qvalidator.cpp @@ -502,9 +502,6 @@ void QIntValidator::setTop(int top) setRange(bottom(), top); } - -#ifndef QT_NO_REGEXP - /*! \internal */ @@ -521,6 +518,8 @@ QValidator::QValidator(QValidatorPrivate &d, QObject *parent) { } +#ifndef QT_NO_REGEXP + class QDoubleValidatorPrivate : public QValidatorPrivate { Q_DECLARE_PUBLIC(QDoubleValidator) @@ -907,7 +906,7 @@ void QRegExpValidator::setRegExp(const QRegExp& rx) #endif -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION /*! \class QRegularExpressionValidator @@ -1058,7 +1057,7 @@ void QRegularExpressionValidatorPrivate::setRegularExpression(const QRegularExpr } } -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION QT_END_NAMESPACE diff --git a/src/gui/util/qvalidator.h b/src/gui/util/qvalidator.h index 53acdfb31e..459af44ffc 100644 --- a/src/gui/util/qvalidator.h +++ b/src/gui/util/qvalidator.h @@ -197,7 +197,7 @@ private: #endif // QT_NO_REGEXP -#ifndef QT_NO_REGEXP +#ifndef QT_NO_REGULAREXPRESSION class QRegularExpressionValidatorPrivate; @@ -226,7 +226,7 @@ private: Q_DECLARE_PRIVATE(QRegularExpressionValidator) }; -#endif // QT_NO_REGEXP +#endif // QT_NO_REGULAREXPRESSION #endif // QT_NO_VALIDATOR -- cgit v1.2.3 From 6ecc3e76e822b1545bcbfa78f5caf94156a026d2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 10 Dec 2012 12:00:53 +0100 Subject: Add API dealing with QMargins to QRect. - Addition of a QMargin to a QRect. - Removal of a QMargin from a QRect. - Remove implementation from Windows platform plugin. Change-Id: Iae54bc13e94a7ece48853b1d3f3de2bfc154d2dd Reviewed-by: Oliver Wolff Reviewed-by: Mitch Curtis --- src/corelib/tools/qmargins.cpp | 59 ++++++++++++++++++++++++ src/corelib/tools/qmargins.h | 37 ++++++++++++++- src/corelib/tools/qrect.h | 6 +++ src/plugins/platforms/windows/qwindowswindow.cpp | 2 +- src/plugins/platforms/windows/qwindowswindow.h | 11 ----- 5 files changed, 102 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qmargins.cpp b/src/corelib/tools/qmargins.cpp index 6929433bb5..214466194a 100644 --- a/src/corelib/tools/qmargins.cpp +++ b/src/corelib/tools/qmargins.cpp @@ -157,6 +157,65 @@ QT_BEGIN_NAMESPACE Returns true if \a m1 and \a m2 are different; otherwise returns false. */ +/*! + \fn QRect operator+(const QRect &rectangle, const QMargins &margins) + \relates QRect + + Returns the \a rectangle grown by the \a margins. + + \since 5.1 +*/ + +/*! + \fn QRect operator+(const QMargins &margins, const QRect &rectangle) + \relates QRect + \overload + + Returns the \a rectangle grown by the \a margins. + + \since 5.1 +*/ + +/*! + \fn QRect QRect::marginsAdded(const QMargins &margins) const + + Returns a rectangle grown by the \a margins. + + \sa operator+=(), marginsRemoved(), operator-=() + + \since 5.1 +*/ + +/*! + \fn QRect QRect::operator+=(const QMargins &margins) const + + Adds the \a margins to the rectangle, growing it. + + \sa marginsAdded(), marginsRemoved(), operator-=() + + \since 5.1 +*/ + +/*! + \fn QRect QRect::marginsRemoved(const QMargins &margins) const + + Removes the \a margins from the rectangle, shrinking it. + + \sa marginsAdded(), operator+=(), operator-=() + + \since 5.1 +*/ + +/*! + \fn QRect QRect::operator -=(const QMargins &margins) const + + Returns a rectangle shrunk by the \a margins. + + \sa marginsRemoved(), operator+=(), marginsAdded() + + \since 5.1 +*/ + /***************************************************************************** QMargins stream functions *****************************************************************************/ diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h index 8ceccd4419..a933a60fed 100644 --- a/src/corelib/tools/qmargins.h +++ b/src/corelib/tools/qmargins.h @@ -42,7 +42,7 @@ #ifndef QMARGINS_H #define QMARGINS_H -#include +#include QT_BEGIN_HEADER @@ -142,6 +142,41 @@ Q_DECL_CONSTEXPR inline bool operator!=(const QMargins &m1, const QMargins &m2) m1.m_bottom != m2.m_bottom; } +Q_DECL_CONSTEXPR inline QRect operator+(const QRect &rectangle, const QMargins &margins) +{ + return QRect(QPoint(rectangle.left() - margins.left(), rectangle.top() - margins.top()), + QPoint(rectangle.right() + margins.right(), rectangle.bottom() + margins.bottom())); +} + +Q_DECL_CONSTEXPR inline QRect operator+(const QMargins &margins, const QRect &rectangle) +{ + return QRect(QPoint(rectangle.left() - margins.left(), rectangle.top() - margins.top()), + QPoint(rectangle.right() + margins.right(), rectangle.bottom() + margins.bottom())); +} + +inline QRect QRect::marginsAdded(const QMargins &margins) const +{ + return *this + margins; +} + +inline QRect QRect::marginsRemoved(const QMargins &margins) const +{ + return QRect(QPoint(x1 + margins.left(), y1 + margins.top()), + QPoint(x2 - margins.right(), y2 - margins.bottom())); +} + +inline QRect &QRect::operator+=(const QMargins &margins) +{ + *this = marginsAdded(margins); + return *this; +} + +inline QRect &QRect::operator-=(const QMargins &margins) +{ + *this = marginsRemoved(margins); + return *this; +} + #ifndef QT_NO_DEBUG_STREAM Q_CORE_EXPORT QDebug operator<<(QDebug, const QMargins &); #endif diff --git a/src/corelib/tools/qrect.h b/src/corelib/tools/qrect.h index 6e1a819ef3..39b5602abf 100644 --- a/src/corelib/tools/qrect.h +++ b/src/corelib/tools/qrect.h @@ -53,6 +53,7 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE +class QMargins; class Q_CORE_EXPORT QRect { @@ -139,6 +140,11 @@ public: inline QRect intersected(const QRect &other) const; bool intersects(const QRect &r) const; + inline QRect marginsAdded(const QMargins &margins) const; + inline QRect marginsRemoved(const QMargins &margins) const; + inline QRect &operator+=(const QMargins &margins); + inline QRect &operator-=(const QMargins &margins); + #if QT_DEPRECATED_SINCE(5, 0) QT_DEPRECATED QRect unite(const QRect &r) const { return united(r); } QT_DEPRECATED QRect intersect(const QRect &r) const { return intersected(r); } diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index 3831c6b10e..97aeadacd3 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -1118,7 +1118,7 @@ QRect QWindowsWindow::frameGeometry_sys() const QRect QWindowsWindow::geometry_sys() const { - return frameGeometry_sys() - frameMargins(); + return frameGeometry_sys().marginsRemoved(frameMargins()); } /*! diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h index 978d1d5a53..7af1e2f718 100644 --- a/src/plugins/platforms/windows/qwindowswindow.h +++ b/src/plugins/platforms/windows/qwindowswindow.h @@ -283,17 +283,6 @@ private: HICON m_iconBig; }; -// Conveniences for window frames. -inline QRect operator+(const QRect &r, const QMargins &m) -{ - return r.adjusted(-m.left(), -m.top(), m.right(), m.bottom()); -} - -inline QRect operator-(const QRect &r, const QMargins &m) -{ - return r.adjusted(m.left(), m.top(), -m.right(), -m.bottom()); -} - // Debug QDebug operator<<(QDebug d, const RECT &r); #ifndef Q_OS_WINCE // maybe available on some SDKs revisit WM_GETMINMAXINFO/WM_NCCALCSIZE -- cgit v1.2.3 From bc5a2336ab9a681411a81a53d8639b4b79f80073 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 10 Dec 2012 16:53:16 +0100 Subject: Provide operators for QMargins. Provide addition/subtraction for QMargins as well as multiplication and division for int/qreal similar to QPoint. Add unary minus. Change-Id: If4eb831cfd610b34b5ca361619b1636031811d0a Reviewed-by: Oliver Wolff Reviewed-by: Mitch Curtis --- src/corelib/tools/qmargins.cpp | 175 +++++++++++++++++++++++++++++++++++++++++ src/corelib/tools/qmargins.h | 92 ++++++++++++++++++++++ 2 files changed, 267 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qmargins.cpp b/src/corelib/tools/qmargins.cpp index 214466194a..e30675dc63 100644 --- a/src/corelib/tools/qmargins.cpp +++ b/src/corelib/tools/qmargins.cpp @@ -216,6 +216,181 @@ QT_BEGIN_NAMESPACE \since 5.1 */ +/*! + \fn const QMargins operator+(const QMargins &m1, const QMargins &m2) + \relates QMargins + + Returns a QMargins object that is the sum of the given margins, \a m1 + and \a m2; each component is added separately. + + \sa QMargins::operator+=(), QMargins::operator-=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator-(const QMargins &m1, const QMargins &m2) + \relates QMargins + + Returns a QMargins object that is formed by subtracting \a m2 from + \a m1; each component is subtracted separately. + + \sa QMargins::operator+=(), QMargins::operator-=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator*(const QMargins &margins, int factor) + \relates QMargins + + Returns a QMargins object that is formed by multiplying each component + of the given \a margins by \a factor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator*(int factor, const QMargins &margins) + \relates QMargins + \overload + + Returns a QMargins object that is formed by multiplying each component + of the given \a margins by \a factor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator*(const QMargins &margins, qreal factor) + \relates QMargins + \overload + + Returns a QMargins object that is formed by multiplying each component + of the given \a margins by \a factor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator*(qreal factor, const QMargins &margins) + \relates QMargins + \overload + + Returns a QMargins object that is formed by multiplying each component + of the given \a margins by \a factor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator/(const QMargins &margins, int divisor) + \relates QMargins + + Returns a QMargins object that is formed by dividing the components of + the given \a margins by the given \a divisor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn const QMargins operator/(const QMargins &, qreal) + \relates QMargins + \overload + + Returns a QMargins object that is formed by dividing the components of + the given \a margins by the given \a divisor. + + \sa QMargins::operator*=(), QMargins::operator/=() + + \since 5.1 +*/ + +/*! + \fn QMargins operator-(const QMargins &margins) + \relates QMargins + + Returns a QMargin object that is formed by negating all components of \a margins. + + \since 5.1 +*/ + +/*! + \fn QMargins &operator+=(const QMargins &margins) + + Add each component of \a margins to the respective component of this object + and returns a reference to it. + + \sa operator-=() + + \since 5.1 +*/ + +/*! + \fn QMargins &operator-=(const QMargins &margins) + + Subtract each component of \a margins from the respective component of this object + and returns a reference to it. + + \sa operator+=() + + \since 5.1 +*/ + +/*! + \fn QMargins &operator*=(int factor) + + Multiplies each component of this object by \a factor + and returns a reference to it. + + \sa operator/=() + + \since 5.1 +*/ + +/*! + \fn QMargins &operator*=(qreal factor) + \overload + + Multiplies each component of this object by \a factor + and returns a reference to it. + + \sa operator/=() + + \since 5.1 +*/ + +/*! + \fn QMargins &operator/=(int divisor) + + Divides each component of this object by \a divisor + and returns a reference to it. + + \sa operator*=() + + \since 5.1 +*/ + +/*! + \fn QMargins &operator/=(qreal divisor) + + \overload + + \sa operator*=() + + \since 5.1 +*/ + /***************************************************************************** QMargins stream functions *****************************************************************************/ diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h index a933a60fed..dd6fb0261a 100644 --- a/src/corelib/tools/qmargins.h +++ b/src/corelib/tools/qmargins.h @@ -67,6 +67,15 @@ public: void setRight(int right); void setBottom(int bottom); + QMargins &operator+=(const QMargins &margins); + QMargins &operator-=(const QMargins &margins); + QMargins &operator+=(int); + QMargins &operator-=(int); + QMargins &operator*=(int); + QMargins &operator/=(int); + QMargins &operator*=(qreal); + QMargins &operator/=(qreal); + private: int m_left; int m_top; @@ -177,6 +186,89 @@ inline QRect &QRect::operator-=(const QMargins &margins) return *this; } +Q_DECL_CONSTEXPR inline QMargins operator+(const QMargins &m1, const QMargins &m2) +{ + return QMargins(m1.left() + m2.left(), m1.top() + m2.top(), + m1.right() + m2.right(), m1.bottom() + m2.bottom()); +} + +Q_DECL_CONSTEXPR inline QMargins operator-(const QMargins &m1, const QMargins &m2) +{ + return QMargins(m1.left() - m2.left(), m1.top() - m2.top(), + m1.right() - m2.right(), m1.bottom() - m2.bottom()); +} + +Q_DECL_CONSTEXPR inline QMargins operator*(const QMargins &margins, int factor) +{ + return QMargins(margins.left() * factor, margins.top() * factor, + margins.right() * factor, margins.bottom() * factor); +} + +Q_DECL_CONSTEXPR inline QMargins operator*(int factor, const QMargins &margins) +{ + return QMargins(margins.left() * factor, margins.top() * factor, + margins.right() * factor, margins.bottom() * factor); +} + +Q_DECL_CONSTEXPR inline QMargins operator*(const QMargins &margins, qreal factor) +{ + return QMargins(qRound(margins.left() * factor), qRound(margins.top() * factor), + qRound(margins.right() * factor), qRound(margins.bottom() * factor)); +} + +Q_DECL_CONSTEXPR inline QMargins operator*(qreal factor, const QMargins &margins) +{ + return QMargins(qRound(margins.left() * factor), qRound(margins.top() * factor), + qRound(margins.right() * factor), qRound(margins.bottom() * factor)); +} + +Q_DECL_CONSTEXPR inline QMargins operator/(const QMargins &margins, int divisor) +{ + return QMargins(margins.left() / divisor, margins.top() / divisor, + margins.right() / divisor, margins.bottom() / divisor); +} + +Q_DECL_CONSTEXPR inline QMargins operator/(const QMargins &margins, qreal divisor) +{ + return QMargins(qRound(margins.left() / divisor), qRound(margins.top() / divisor), + qRound(margins.right() / divisor), qRound(margins.bottom() / divisor)); +} + +inline QMargins &QMargins::operator+=(const QMargins &margins) +{ + return *this = *this + margins; +} + +inline QMargins &QMargins::operator-=(const QMargins &margins) +{ + return *this = *this - margins; +} + +inline QMargins &QMargins::operator*=(int factor) +{ + return *this = *this * factor; +} + +inline QMargins &QMargins::operator/=(int divisor) +{ + return *this = *this / divisor; +} + +inline QMargins &QMargins::operator*=(qreal factor) +{ + return *this = *this * factor; +} + +inline QMargins &QMargins::operator/=(qreal divisor) +{ + return *this = *this / divisor; +} + +Q_DECL_CONSTEXPR inline QMargins operator-(const QMargins &margins) +{ + return QMargins(-margins.left(), -margins.top(), -margins.right(), -margins.bottom()); +} + #ifndef QT_NO_DEBUG_STREAM Q_CORE_EXPORT QDebug operator<<(QDebug, const QMargins &); #endif -- cgit v1.2.3 From 998899cf3a2501d3bf30ad06ce47a2cf81e1d60b Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 16 Dec 2012 15:05:19 +0100 Subject: Introduce QRegularExpression::NoMatch match type This match type doesn't do any match at all; it's only necessary to properly introduce default constructors for QRegularExpressionMatch and QRegularExpressionMatchIterator (since they return the match type that created them). Change-Id: Ibfe92459c7fdd23129cf3afe073cd443c461ddeb Reviewed-by: Lars Knoll --- src/corelib/tools/qregularexpression.cpp | 17 +++++++++++++++++ src/corelib/tools/qregularexpression.h | 4 +++- 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 5c6b3ff044..1585389d22 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Giuseppe D'Angelo . +** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** @@ -725,6 +726,13 @@ QT_BEGIN_NAMESPACE that (in this text) there are other characters beyond the end of the subject string. This can lead to surprising results; see the discussion in the \l{partial matching} section for more details. + + \value NoMatch + No matching is done. This value is returned as the match type by a + default constructed QRegularExpressionMatch or + QRegularExpressionMatchIterator. Using this match type is not very + useful for the user, as no matching ever happens. This enum value + has been introduced in Qt 5.1. */ /*! @@ -1200,6 +1208,15 @@ QRegularExpressionMatchPrivate *QRegularExpressionPrivate::doMatch(const QString return new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions, 0); } + // skip optimizing and doing the actual matching if NoMatch type was requested + if (matchType == QRegularExpression::NoMatch) { + QRegularExpressionMatchPrivate *priv = new QRegularExpressionMatchPrivate(re, subject, + matchType, matchOptions, + 0); + priv->isValid = true; + return priv; + } + QRegularExpressionMatchPrivate *priv = new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions, capturingCount); diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index e312b10ff1..57d03a34e5 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2012 Giuseppe D'Angelo . +** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -99,7 +100,8 @@ public: enum MatchType { NormalMatch = 0, PartialPreferCompleteMatch, - PartialPreferFirstMatch + PartialPreferFirstMatch, + NoMatch }; enum MatchOption { -- cgit v1.2.3 From f5fd53460387411a3ed192595562fc2cfd92a2b6 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 17 Dec 2012 09:41:36 +0100 Subject: Fix frame of Aero-Style wizards. Add custom frames which are added to the system frame to the platform plugin. Make them settable when creating a platform window using dynamic properties and per window properties of the platform native interface. Use this in favor of the native event handling changing the frame in wizard_win.cpp since that caused the frame/backing store sizes of the QWindow to be wrong. Task-number: QTBUG-28099 Change-Id: Idd6416cf1b0eb629f56663088b0ce17162e1739d Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/qwindowscontext.cpp | 9 +- .../platforms/windows/qwindowsintegration.cpp | 42 ++++++++++ src/plugins/platforms/windows/qwindowswindow.cpp | 98 ++++++++++++++++++---- src/plugins/platforms/windows/qwindowswindow.h | 9 ++ src/widgets/dialogs/qwizard.cpp | 6 +- src/widgets/dialogs/qwizard_win.cpp | 67 +++++---------- src/widgets/dialogs/qwizard_win_p.h | 2 +- 7 files changed, 164 insertions(+), 69 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index 28269e8653..40aa446a66 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -783,7 +783,7 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message, d->m_creationContext->obtainedGeometry.moveTo(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); return true; case QtWindows::CalculateSize: - return false; + return QWindowsGeometryHint::handleCalculateSize(d->m_creationContext->customMargins, msg, result); default: break; } @@ -818,12 +818,7 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message, platformWindow->getSizeHints(reinterpret_cast(lParam)); return true;// maybe available on some SDKs revisit WM_NCCALCSIZE case QtWindows::CalculateSize: - // NCCALCSIZE_PARAMS structure if wParam==TRUE - if (wParam && QWindowsContext::verboseWindows) { - const NCCALCSIZE_PARAMS *ncp = reinterpret_cast(lParam); - qDebug() << platformWindow->window() << *ncp; - } - break; + return QWindowsGeometryHint::handleCalculateSize(platformWindow->customMargins(), msg, result); #endif case QtWindows::ExposeEvent: return platformWindow->handleWmPaint(hwnd, message, wParam, lParam); diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index f5ad442e68..30d399f556 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -75,6 +75,7 @@ #include #include +#include QT_BEGIN_NAMESPACE @@ -109,6 +110,11 @@ public: void *eventProc) const; bool asyncExpose() const; void setAsyncExpose(bool value); + + QVariantMap windowProperties(QPlatformWindow *window) const; + QVariant windowProperty(QPlatformWindow *window, const QString &name) const; + QVariant windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) const; + void setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value); }; void *QWindowsNativeInterface::nativeResourceForWindow(const QByteArray &resource, QWindow *window) @@ -145,6 +151,37 @@ void *QWindowsNativeInterface::nativeResourceForBackingStore(const QByteArray &r return 0; } +static const char customMarginPropertyC[] = "WindowsCustomMargins"; + +QVariant QWindowsNativeInterface::windowProperty(QPlatformWindow *window, const QString &name) const +{ + QWindowsWindow *platformWindow = static_cast(window); + if (name == QLatin1String(customMarginPropertyC)) + return qVariantFromValue(platformWindow->customMargins()); + return QVariant(); +} + +QVariant QWindowsNativeInterface::windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) const +{ + const QVariant result = windowProperty(window, name); + return result.isValid() ? result : defaultValue; +} + +void QWindowsNativeInterface::setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value) +{ + QWindowsWindow *platformWindow = static_cast(window); + if (name == QLatin1String(customMarginPropertyC)) + platformWindow->setCustomMargins(qvariant_cast(value)); +} + +QVariantMap QWindowsNativeInterface::windowProperties(QPlatformWindow *window) const +{ + QVariantMap result; + const QString customMarginProperty = QLatin1String(customMarginPropertyC); + result.insert(customMarginProperty, windowProperty(window, customMarginProperty)); + return result; +} + #ifndef QT_NO_OPENGL void *QWindowsNativeInterface::nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context) { @@ -356,6 +393,11 @@ QPlatformWindow *QWindowsIntegration::createPlatformWindow(QWindow *window) cons QWindowsWindow::WindowData requested; requested.flags = window->flags(); requested.geometry = window->geometry(); + // Apply custom margins (see QWindowsWindow::setCustomMargins())). + const QVariant customMarginsV = window->property("_q_windowsCustomMargins"); + if (customMarginsV.isValid()) + requested.customMargins = qvariant_cast(customMarginsV); + const QWindowsWindow::WindowData obtained = QWindowsWindow::WindowData::create(window, requested, window->title()); if (QWindowsContext::verboseIntegration || QWindowsContext::verboseWindows) diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index 97aeadacd3..50fd7a0792 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -274,7 +274,7 @@ struct WindowCreationData tool(false), embedded(false) {} void fromWindow(const QWindow *w, const Qt::WindowFlags flags, unsigned creationFlags = 0); - inline WindowData create(const QWindow *w, const QRect &geometry, QString title) const; + inline WindowData create(const QWindow *w, const WindowData &data, QString title) const; inline void applyWindowFlags(HWND hwnd) const; void initialize(HWND h, bool frameChange, qreal opacityLevel) const; @@ -416,7 +416,7 @@ void WindowCreationData::fromWindow(const QWindow *w, const Qt::WindowFlags flag } QWindowsWindow::WindowData - WindowCreationData::create(const QWindow *w, const QRect &geometry, QString title) const + WindowCreationData::create(const QWindow *w, const WindowData &data, QString title) const { typedef QSharedPointer QWindowCreationContextPtr; @@ -442,24 +442,25 @@ QWindowsWindow::WindowData const wchar_t *titleUtf16 = reinterpret_cast(title.utf16()); const wchar_t *classNameUtf16 = reinterpret_cast(windowClassName.utf16()); - // Capture events before CreateWindowEx() returns. - const QWindowCreationContextPtr context(new QWindowCreationContext(w, geometry, style, exStyle)); + // Capture events before CreateWindowEx() returns. The context is cleared in + // the QWindowsWindow constructor. + const QWindowCreationContextPtr context(new QWindowCreationContext(w, data.geometry, data.customMargins, style, exStyle)); QWindowsContext::instance()->setWindowCreationContext(context); if (QWindowsContext::verboseWindows) qDebug().nospace() << "CreateWindowEx: " << w << *this << " class=" <frameWidth << 'x' << context->frameHeight - << '+' << context->frameX << '+' << context->frameY; + << '+' << context->frameX << '+' << context->frameY + << " custom margins: " << context->customMargins; result.hwnd = CreateWindowEx(exStyle, classNameUtf16, titleUtf16, style, context->frameX, context->frameY, context->frameWidth, context->frameHeight, parentHandle, NULL, appinst, NULL); - QWindowsContext::instance()->setWindowCreationContext(QWindowCreationContextPtr()); if (QWindowsContext::verboseWindows) qDebug().nospace() << "CreateWindowEx: returns " << w << ' ' << result.hwnd << " obtained geometry: " @@ -473,6 +474,7 @@ QWindowsWindow::WindowData result.geometry = context->obtainedGeometry; result.frame = context->margins; result.embedded = embedded; + result.customMargins = context->customMargins; return result; } @@ -511,6 +513,8 @@ void WindowCreationData::initialize(HWND hwnd, bool frameChange, qreal opacityLe qWarning() << "QWidget: Incompatible window flags: the window can't be on top and on bottom at the same time"; } else if (flags & Qt::WindowStaysOnBottomHint) { SetWindowPos(hwnd, HWND_BOTTOM, 0, 0, 0, 0, swpFlags); + } else if (frameChange) { // Force WM_NCCALCSIZE with wParam=1 in case of custom margins. + SetWindowPos(hwnd, 0, 0, 0, 0, 0, swpFlags); } if (flags & (Qt::CustomizeWindowHint|Qt::WindowTitleHint)) { HMENU systemMenu = GetSystemMenu(hwnd, FALSE); @@ -571,6 +575,33 @@ QMargins QWindowsGeometryHint::frame(DWORD style, DWORD exStyle) return result; } +bool QWindowsGeometryHint::handleCalculateSize(const QMargins &customMargins, const MSG &msg, LRESULT *result) +{ +#ifndef Q_OS_WINCE + // NCCALCSIZE_PARAMS structure if wParam==TRUE + if (!msg.wParam || customMargins.isNull()) + return false; + *result = DefWindowProc(msg.hwnd, msg.message, msg.wParam, msg.lParam); + NCCALCSIZE_PARAMS *ncp = reinterpret_cast(msg.lParam); + const RECT oldClientArea = ncp->rgrc[0]; + ncp->rgrc[0].left += customMargins.left(); + ncp->rgrc[0].top += customMargins.top(); + ncp->rgrc[0].right -= customMargins.right(); + ncp->rgrc[0].bottom -= customMargins.bottom(); + result = 0; + if (QWindowsContext::verboseWindows) + qDebug() << __FUNCTION__ << oldClientArea << '+' << customMargins << "-->" + << ncp->rgrc[0] << ' ' << ncp->rgrc[1] << ' ' << ncp->rgrc[2] + << ' ' << ncp->lppos->cx << ',' << ncp->lppos->cy; + return true; +#else + Q_UNUSED(customMargins) + Q_UNUSED(msg) + Q_UNUSED(result) + return false; +#endif +} + #ifndef Q_OS_WINCE void QWindowsGeometryHint::applyToMinMaxInfo(HWND hwnd, MINMAXINFO *mmi) const { @@ -637,10 +668,11 @@ bool QWindowsGeometryHint::positionIncludesFrame(const QWindow *w) QWindowCreationContext::QWindowCreationContext(const QWindow *w, const QRect &geometry, + const QMargins &cm, DWORD style_, DWORD exStyle_) : geometryHint(w), style(style_), exStyle(exStyle_), requestedGeometry(geometry), obtainedGeometry(geometry), - margins(QWindowsGeometryHint::frame(style, exStyle)), + margins(QWindowsGeometryHint::frame(style, exStyle)), customMargins(cm), frameX(CW_USEDEFAULT), frameY(CW_USEDEFAULT), frameWidth(CW_USEDEFAULT), frameHeight(CW_USEDEFAULT) { @@ -651,14 +683,16 @@ QWindowCreationContext::QWindowCreationContext(const QWindow *w, if (geometry.isValid()) { frameX = geometry.x(); frameY = geometry.y(); - frameWidth = margins.left() + geometry.width() + margins.right(); - frameHeight = margins.top() + geometry.height() + margins.bottom(); + const QMargins effectiveMargins = margins + customMargins; + frameWidth = effectiveMargins.left() + geometry.width() + effectiveMargins.right(); + frameHeight = effectiveMargins.top() + geometry.height() + effectiveMargins.bottom(); const bool isDefaultPosition = !frameX && !frameY && w->isTopLevel(); if (!QWindowsGeometryHint::positionIncludesFrame(w) && !isDefaultPosition) { - frameX -= margins.left(); - frameY -= margins.top(); + frameX -= effectiveMargins.left(); + frameY -= effectiveMargins.top(); } } + if (QWindowsContext::verboseWindows) qDebug().nospace() << __FUNCTION__ << ' ' << w << geometry @@ -666,7 +700,8 @@ QWindowCreationContext::QWindowCreationContext(const QWindow *w, << " frame: " << frameWidth << 'x' << frameHeight << '+' << frameX << '+' << frameY << " min" << geometryHint.minimumSize - << " max" << geometryHint.maximumSize; + << " max" << geometryHint.maximumSize + << " custom margins " << customMargins; } /*! @@ -713,6 +748,8 @@ QWindowsWindow::QWindowsWindow(QWindow *aWindow, const WindowData &data) : { if (aWindow->surfaceType() == QWindow::OpenGLSurface) setFlag(OpenGLSurface); + // Clear the creation context as the window can be found in QWindowsContext's map. + QWindowsContext::instance()->setWindowCreationContext(QSharedPointer()); QWindowsContext::instance()->addWindow(m_data.hwnd, this); if (aWindow->isTopLevel()) { switch (aWindow->type()) { @@ -826,8 +863,9 @@ QWindowsWindow::WindowData { WindowCreationData creationData; creationData.fromWindow(w, parameters.flags); - WindowData result = creationData.create(w, parameters.geometry, title); - creationData.initialize(result.hwnd, false, 1); + WindowData result = creationData.create(w, parameters, title); + // Force WM_NCCALCSIZE (with wParam=1) via SWP_FRAMECHANGED for custom margin. + creationData.initialize(result.hwnd, !parameters.customMargins.isNull(), 1); return result; } @@ -1452,7 +1490,7 @@ QMargins QWindowsWindow::frameMargins() const m_data.frame = QWindowsGeometryHint::frame(style(), exStyle()); clearFlag(FrameDirty); } - return m_data.frame; + return m_data.frame + m_data.customMargins; } void QWindowsWindow::setOpacity(qreal level) @@ -1808,4 +1846,32 @@ void QWindowsWindow::setWindowIcon(const QIcon &icon) } } +/*! + \brief Sets custom margins to be added to the default margins determined by + the windows style in the handling of the WM_NCCALCSIZE message. + + This is currently used to give the Aero-style QWizard a smaller top margin. + The property can be set using QPlatformNativeInterface::setWindowProperty() or, + before platform window creation, by setting a dynamic property + on the QWindow (see QWindowsIntegration::createPlatformWindow()). +*/ + +void QWindowsWindow::setCustomMargins(const QMargins &newCustomMargins) +{ + if (newCustomMargins != m_data.customMargins) { + const QMargins oldCustomMargins = m_data.customMargins; + m_data.customMargins = newCustomMargins; + // Re-trigger WM_NCALCSIZE with wParam=1 by passing SWP_FRAMECHANGED + const QRect currentFrameGeometry = frameGeometry_sys(); + const QPoint topLeft = currentFrameGeometry.topLeft(); + QRect newFrame = currentFrameGeometry.marginsRemoved(oldCustomMargins) + m_data.customMargins; + newFrame.moveTo(topLeft); + setFlag(FrameDirty); + if (QWindowsContext::verboseWindows) + qDebug() << __FUNCTION__ << oldCustomMargins << "->" << newCustomMargins + << currentFrameGeometry << "->" << newFrame; + SetWindowPos(m_data.hwnd, 0, newFrame.x(), newFrame.y(), newFrame.width(), newFrame.height(), SWP_NOZORDER | SWP_FRAMECHANGED); + } +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h index 7af1e2f718..4e82938cf4 100644 --- a/src/plugins/platforms/windows/qwindowswindow.h +++ b/src/plugins/platforms/windows/qwindowswindow.h @@ -69,6 +69,7 @@ struct QWindowsGeometryHint QWindowsGeometryHint() {} explicit QWindowsGeometryHint(const QWindow *w); static QMargins frame(DWORD style, DWORD exStyle); + static bool handleCalculateSize(const QMargins &customMargins, const MSG &msg, LRESULT *result); #ifndef Q_OS_WINCE //MinMax maybe define struct if not available void applyToMinMaxInfo(DWORD style, DWORD exStyle, MINMAXINFO *mmi) const; void applyToMinMaxInfo(HWND hwnd, MINMAXINFO *mmi) const; @@ -89,6 +90,7 @@ struct QWindowsGeometryHint struct QWindowCreationContext { QWindowCreationContext(const QWindow *w, const QRect &r, + const QMargins &customMargins, DWORD style, DWORD exStyle); #ifndef Q_OS_WINCE //MinMax maybe define struct if not available void applyToMinMaxInfo(MINMAXINFO *mmi) const @@ -101,6 +103,7 @@ struct QWindowCreationContext QRect requestedGeometry; QRect obtainedGeometry; QMargins margins; + QMargins customMargins; // User-defined, additional frame for WM_NCCALCSIZE int frameX; // Passed on to CreateWindowEx(), including frame. int frameY; int frameWidth; @@ -137,6 +140,7 @@ public: Qt::WindowFlags flags; QRect geometry; QMargins frame; // Do not use directly for windows, see FrameDirty. + QMargins customMargins; // User-defined, additional frame for NCCALCSIZE HWND hwnd; bool embedded; @@ -190,6 +194,9 @@ public: void setFrameStrutEventsEnabled(bool enabled); bool frameStrutEventsEnabled() const { return testFlag(FrameStrutEventsEnabled); } + QMargins customMargins() const { return m_data.customMargins; } + void setCustomMargins(const QMargins &m); + #ifdef QT_OPENGL_ES_2 EGLSurface eglSurfaceHandle() const { return m_eglSurface;} EGLSurface ensureEglSurfaceHandle(const QWindowsEGLStaticContextPtr &staticContext, EGLConfig config); @@ -353,4 +360,6 @@ inline void QWindowsWindow::destroyIcon() QT_END_NAMESPACE +Q_DECLARE_METATYPE(QMargins) + #endif // QWINDOWSWINDOW_H diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index 241e9f678a..654ce9cc6b 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -1557,7 +1557,7 @@ void QWizardPrivate::handleAeroStyleChange() _q_updateButtonStates(); if (q->isVisible()) - vistaHelper->setWindowPosHack(); + vistaHelper->updateCustomMargins(); inHandleAeroStyleChange = false; } @@ -2922,6 +2922,10 @@ QWidget *QWizard::sideWidget() const void QWizard::setVisible(bool visible) { Q_D(QWizard); +#if !defined(QT_NO_STYLE_WINDOWSVISTA) + if (visible) + d->vistaHelper->updateCustomMargins(); +#endif if (visible) { if (d->current == -1) restart(); diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp index c78202e866..e328a5f498 100644 --- a/src/widgets/dialogs/qwizard_win.cpp +++ b/src/widgets/dialogs/qwizard_win.cpp @@ -49,7 +49,9 @@ #include "qwizard.h" #include "qpaintengine.h" #include "qapplication.h" +#include #include +#include #include // Note, these tests are duplicates in qwindowsxpstyle_p.h. @@ -66,6 +68,8 @@ #include +Q_DECLARE_METATYPE(QMargins) + QT_BEGIN_NAMESPACE //DWM related @@ -265,6 +269,24 @@ QVistaHelper::~QVistaHelper() --instanceCount; } +void QVistaHelper::updateCustomMargins() +{ + if (QWindow *window = wizard->windowHandle()) { + // Reduce top frame to zero since we paint it ourselves. + const QMargins customMargins = vistaState() == VistaAero ? + QMargins(0, -titleBarSize(), 0, 0) : QMargins(); + const QVariant customMarginsV = qVariantFromValue(customMargins); + // The dynamic property takes effect when creating the platform window. + window->setProperty("_q_windowsCustomMargins", customMarginsV); + // If a platform window exists, change via native interface. + if (QPlatformWindow *platformWindow = window->handle()) { + QGuiApplication::platformNativeInterface()-> + setWindowProperty(platformWindow, QStringLiteral("WindowsCustomMargins"), + customMarginsV); + } + } +} + bool QVistaHelper::isCompositionEnabled() { bool value = is_vista; @@ -402,13 +424,6 @@ bool QVistaHelper::winEvent(MSG* msg, long* result) } break; } -// case WM_NCCALCSIZE: { #fixme: If the frame size is changed, it needs to be communicated to the QWindow. -// NCCALCSIZE_PARAMS* lpncsp = (NCCALCSIZE_PARAMS*)msg->lParam; -// *result = DefWindowProc(msg->hwnd, msg->message, msg->wParam, msg->lParam); -// lpncsp->rgrc[0].top -= (vistaState() == VistaAero ? titleBarSize() : 0); -// -// break; -// } default: LRESULT lResult; // Pass to DWM to handle @@ -449,38 +464,6 @@ void QVistaHelper::mouseEvent(QEvent *event) } } -// The following hack ensures that the titlebar is updated correctly -// when the wizard style changes to and from AeroStyle. Specifically, -// this function causes a Windows message of type WM_NCCALCSIZE to -// be triggered. -void QVistaHelper::setWindowPosHack() -{ - const int x = wizard->geometry().x(); // ignored by SWP_NOMOVE - const int y = wizard->geometry().y(); // ignored by SWP_NOMOVE - const int w = wizard->width(); - const int h = wizard->height(); - HWND handle = QApplicationPrivate::getHWNDForWidget(wizard); - SetWindowPos(handle, 0, x, y, w, h, SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED); -} - -// The following hack allows any QWidget subclass to access -// QWidgetPrivate::topData() without being declared as a -// friend by QWidget. -class QHackWidget : public QWidget -{ -public: - Q_DECLARE_PRIVATE(QWidget) - QTLWExtra* topData() { return d_func()->topData(); } -}; - -void QVistaHelper::collapseTopFrameStrut() -{ - QTLWExtra *top = ((QHackWidget *)wizard)->d_func()->topData(); - int x1, y1, x2, y2; - top->frameStrut.getCoords(&x1, &y1, &x2, &y2); - top->frameStrut.setCoords(x1, 0, x2, y2); -} - bool QVistaHelper::handleWinEvent(MSG *message, long *result) { if (message->message == WIZ_WM_THEMECHANGED || message->message == WIZ_WM_DWMCOMPOSITIONCHANGED) @@ -489,12 +472,8 @@ bool QVistaHelper::handleWinEvent(MSG *message, long *result) bool status = false; if (wizard->wizardStyle() == QWizard::AeroStyle && vistaState() == VistaAero) { status = winEvent(message, result); - if (message->message == WM_NCCALCSIZE) { -// if (status) #fixme -// collapseTopFrameStrut(); - } else if (message->message == WM_NCPAINT) { + if (message->message == WM_NCPAINT) wizard->update(); - } } return status; } diff --git a/src/widgets/dialogs/qwizard_win_p.h b/src/widgets/dialogs/qwizard_win_p.h index 8f1c0d6b01..610812dd60 100644 --- a/src/widgets/dialogs/qwizard_win_p.h +++ b/src/widgets/dialogs/qwizard_win_p.h @@ -87,6 +87,7 @@ public: QVistaHelper(QWizard *wizard); ~QVistaHelper(); enum TitleBarChangeType { NormalTitleBar, ExtendedTitleBar }; + void updateCustomMargins(); bool setDWMTitleBar(TitleBarChangeType type); void setTitleBarIconAndCaptionVisible(bool visible); void mouseEvent(QEvent *event); @@ -96,7 +97,6 @@ public: QVistaBackButton *backButton() const { return backButton_; } void disconnectBackButton() { if (backButton_) backButton_->disconnect(); } void hideBackButton() { if (backButton_) backButton_->hide(); } - void setWindowPosHack(); QColor basicWindowFrameColor(); enum VistaState { VistaAero, VistaBasic, Classic, Dirty }; static VistaState vistaState(); -- cgit v1.2.3 From 5fb6331a17a5c43b91daddf4a30e46ccbd1419b5 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 12 Dec 2012 11:22:36 +0100 Subject: Fix title bar height of Aero wizard on Windows 8. Windows 8 no longer allows for negative values to WM_NCCALCSIZE to shrink the title bar. Task-number: QTBUG-28435 Change-Id: I2e2e5e6aea9cc6781be4e9b06c9547e1e5ec86cb Reviewed-by: Miikka Heikkinen Reviewed-by: Oliver Wolff Reviewed-by: Joerg Bornemann --- src/widgets/dialogs/qwizard_win.cpp | 15 +++++++++++++++ src/widgets/dialogs/qwizard_win_p.h | 6 ++---- 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp index e328a5f498..45484b906b 100644 --- a/src/widgets/dialogs/qwizard_win.cpp +++ b/src/widgets/dialogs/qwizard_win.cpp @@ -271,6 +271,8 @@ QVistaHelper::~QVistaHelper() void QVistaHelper::updateCustomMargins() { + if (QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS8) + return; // Negative margins are not supported on Windows 8. if (QWindow *window = wizard->windowHandle()) { // Reduce top frame to zero since we paint it ourselves. const QMargins customMargins = vistaState() == VistaAero ? @@ -768,6 +770,19 @@ int QVistaHelper::titleOffset() return leftMargin() + iconOffset; } +int QVistaHelper::topOffset() +{ + if (vistaState() != VistaAero) + return titleBarSize() + 3; + static const int aeroOffset = + QSysInfo::WindowsVersion == QSysInfo::WV_WINDOWS7 ? + QStyleHelper::dpiScaled(4) : QStyleHelper::dpiScaled(13); + int result = aeroOffset; + if (QSysInfo::WindowsVersion < QSysInfo::WV_WINDOWS8) + result += titleBarSize(); + return result; +} + QT_END_NAMESPACE #endif // QT_NO_STYLE_WINDOWSVISTA diff --git a/src/widgets/dialogs/qwizard_win_p.h b/src/widgets/dialogs/qwizard_win_p.h index 610812dd60..4dbb71f94b 100644 --- a/src/widgets/dialogs/qwizard_win_p.h +++ b/src/widgets/dialogs/qwizard_win_p.h @@ -105,10 +105,8 @@ public: return int(QStyleHelper::dpiScaled( QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS7 ? 4 : 6)); } - static int topOffset() { - static int aeroOffset = QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS7 ? - QStyleHelper::dpiScaled(4) : QStyleHelper::dpiScaled(13); - return (titleBarSize() + (vistaState() == VistaAero ? aeroOffset : 3)); } + static int topOffset(); + private: static HFONT getCaptionFont(HANDLE hTheme); bool drawTitleText(QPainter *painter, const QString &text, const QRect &rect, HDC hdc); -- cgit v1.2.3 From 8927084d0acfea2bb3fc8a932069c1d5ceb001d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 10 Jan 2013 15:09:32 +0100 Subject: Refactor paint/font-engine shouldDrawCachedGlyphs and supportsTransformations Some cruft had built up over time, and this is an attempt at cleaning up the naming and use of these functions, and should not have any behavioral effects. The function supportsTransformations() has been renamed in QPaintEngineEx to reflect its use, which is to decide if QPainter needs to pre-transform the coordinates of the static text before asking the paint-engine to draw it. The new name is requiresPretransformedGlyphPositions(). The OpenGL and CoreGraphics (Mac) paint engines keep their behavior of not needing pre-transformed text, while the raster engine needs this when using cached glyphs. The base-class implementation assumes that all transforms that include a projection will need pre-transform, which is also the case for the raster engine. All decisions in the paint engines about whether or not to use the glyph cache when drawing text are now deferred to the function shouldDrawCachedGlyphs(), which has been refactored for the GL paint engine(s) to share more logic. All implementations call the base class implementation, which ensures that large font sizes will not be cached. The raster engine will in addition ask the font engine whether or not it can produce glyphs for the glyph-cache with the given transform. This is the only remaining instance of the supportsTransformations() function, and will for all font engines except the CoreText engine support affine transformations. The CoreText engine on the other hand only supports translations (for now). Change-Id: I8fb5e43e3de3ef62a526a79a6dfeda7f9546771d Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/opengl/qopenglpaintengine.cpp | 23 ++++++++------- src/gui/opengl/qopenglpaintengine_p.h | 3 +- src/gui/painting/qpaintengine_raster.cpp | 34 +++++++++++++--------- src/gui/painting/qpaintengine_raster_p.h | 4 +-- src/gui/painting/qpaintengineex.cpp | 9 ++---- src/gui/painting/qpaintengineex_p.h | 2 +- src/gui/painting/qpainter.cpp | 24 ++++++++------- src/gui/text/qfontengine.cpp | 4 +-- src/gui/text/qfontengine_p.h | 2 +- .../gl2paintengineex/qpaintengineex_opengl2.cpp | 22 +++++++------- .../gl2paintengineex/qpaintengineex_opengl2_p.h | 3 +- .../fontdatabases/mac/qfontengine_coretext.mm | 4 +-- .../fontdatabases/mac/qfontengine_coretext_p.h | 2 +- src/plugins/platforms/cocoa/qpaintengine_mac_p.h | 2 -- 14 files changed, 73 insertions(+), 65 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp index 624eeaffd9..6238564eeb 100644 --- a/src/gui/opengl/qopenglpaintengine.cpp +++ b/src/gui/opengl/qopenglpaintengine.cpp @@ -1407,11 +1407,9 @@ void QOpenGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem) ensureActive(); QPainterState *s = state(); - float det = s->matrix.determinant(); - // don't try to cache huge fonts or vastly transformed fonts QFontEngine *fontEngine = textItem->fontEngine(); - if (shouldDrawCachedGlyphs(fontEngine, s->matrix) && det >= 0.25f && det <= 4.f) { + if (shouldDrawCachedGlyphs(fontEngine, s->matrix)) { QFontEngineGlyphCache::Type glyphType = fontEngine->glyphFormat >= 0 ? QFontEngineGlyphCache::Type(textItem->fontEngine()->glyphFormat) : d->glyphCacheType; @@ -1461,13 +1459,6 @@ void QOpenGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &text QTransform::TransformationType txtype = s->matrix.type(); - float det = s->matrix.determinant(); - bool drawCached = txtype < QTransform::TxProject; - - // don't try to cache huge fonts or vastly transformed fonts - if (!shouldDrawCachedGlyphs(ti.fontEngine, s->matrix) || det < 0.25f || det > 4.f) - drawCached = false; - QFontEngineGlyphCache::Type glyphType = ti.fontEngine->glyphFormat >= 0 ? QFontEngineGlyphCache::Type(ti.fontEngine->glyphFormat) : d->glyphCacheType; @@ -1482,7 +1473,7 @@ void QOpenGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &text } } - if (drawCached) { + if (shouldDrawCachedGlyphs(ti.fontEngine, s->matrix)) { QVarLengthArray positions; QVarLengthArray glyphs; QTransform matrix = QTransform::fromTranslate(p.x(), p.y()); @@ -1531,6 +1522,16 @@ namespace { // #define QT_OPENGL_DRAWCACHEDGLYPHS_INDEX_ARRAY_VBO +bool QOpenGL2PaintEngineEx::shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &t) const +{ + float det = t.determinant(); + + // Don't try to cache huge fonts or vastly transformed fonts + return t.type() < QTransform::TxProject + && QPaintEngineEx::shouldDrawCachedGlyphs(fontEngine, t) + && det >= 0.25f && det <= 4.f; +} + void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyphType, QStaticTextItem *staticTextItem) { diff --git a/src/gui/opengl/qopenglpaintengine_p.h b/src/gui/opengl/qopenglpaintengine_p.h index e06d9f561d..125db00238 100644 --- a/src/gui/opengl/qopenglpaintengine_p.h +++ b/src/gui/opengl/qopenglpaintengine_p.h @@ -157,7 +157,8 @@ public: void setRenderTextActive(bool); bool isNativePaintingActive() const; - bool supportsTransformations(QFontEngine *, const QTransform &) const { return true; } + bool requiresPretransformedGlyphPositions(QFontEngine *, const QTransform &) const { return false; } + bool shouldDrawCachedGlyphs(QFontEngine *, const QTransform &) const; private: Q_DISABLE_COPY(QOpenGL2PaintEngineEx) diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index 0e9129f8c0..53fdd42b8a 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -3010,13 +3010,15 @@ void QRasterPaintEngine::drawStaticTextItem(QStaticTextItem *textItem) ensurePen(); ensureRasterState(); + QTransform matrix = state()->matrix; + QFontEngine *fontEngine = textItem->fontEngine(); - if (!supportsTransformations(fontEngine)) { + if (shouldDrawCachedGlyphs(fontEngine, matrix)) { drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->glyphPositions, fontEngine); - } else if (state()->matrix.type() < QTransform::TxProject) { + } else if (matrix.type() < QTransform::TxProject) { bool invertible; - QTransform invMat = state()->matrix.inverted(&invertible); + QTransform invMat = matrix.inverted(&invertible); if (!invertible) return; @@ -3055,7 +3057,7 @@ void QRasterPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textIte QRasterPaintEngineState *s = state(); QTransform matrix = s->matrix; - if (!supportsTransformations(ti.fontEngine)) { + if (shouldDrawCachedGlyphs(ti.fontEngine, matrix)) { QVarLengthArray positions; QVarLengthArray glyphs; @@ -3299,21 +3301,25 @@ void QRasterPaintEngine::releaseDC(HDC) const /*! \internal */ -bool QRasterPaintEngine::supportsTransformations(QFontEngine *fontEngine) const +bool QRasterPaintEngine::requiresPretransformedGlyphPositions(QFontEngine *fontEngine, const QTransform &m) const { - const QTransform &m = state()->matrix; - return supportsTransformations(fontEngine, m); + // Cached glyphs always require pretransformed positions + if (shouldDrawCachedGlyphs(fontEngine, m)) + return true; + + // Otherwise let the base-class decide based on the transform + return QPaintEngineEx::requiresPretransformedGlyphPositions(fontEngine, m); } -/*! - \internal -*/ -bool QRasterPaintEngine::supportsTransformations(QFontEngine *fontEngine, const QTransform &m) const +bool QRasterPaintEngine::shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &m) const { - if (fontEngine->supportsTransformations(m)) - return true; + // The font engine might not support filling the glyph cache + // with the given transform applied, in which case we need to + // fall back to the QPainterPath code-path. + if (!fontEngine->supportsTransformation(m)) + return false; - return !shouldDrawCachedGlyphs(fontEngine, m); + return QPaintEngineEx::shouldDrawCachedGlyphs(fontEngine, m); } /*! diff --git a/src/gui/painting/qpaintengine_raster_p.h b/src/gui/painting/qpaintengine_raster_p.h index 8fb72edabd..440ddd9ef9 100644 --- a/src/gui/painting/qpaintengine_raster_p.h +++ b/src/gui/painting/qpaintengine_raster_p.h @@ -231,8 +231,8 @@ public: QPoint coordinateOffset() const; - bool supportsTransformations(QFontEngine *fontEngine) const; - bool supportsTransformations(QFontEngine *fontEngine, const QTransform &m) const; + bool requiresPretransformedGlyphPositions(QFontEngine *fontEngine, const QTransform &m) const; + bool shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &m) const; protected: QRasterPaintEngine(QRasterPaintEnginePrivate &d, QPaintDevice *); diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp index 2c41ab9ff2..872197ab75 100644 --- a/src/gui/painting/qpaintengineex.cpp +++ b/src/gui/painting/qpaintengineex.cpp @@ -1081,14 +1081,9 @@ void QPaintEngineEx::drawStaticTextItem(QStaticTextItem *staticTextItem) } } -bool QPaintEngineEx::supportsTransformations(QFontEngine *fontEngine, const QTransform &m) const +bool QPaintEngineEx::requiresPretransformedGlyphPositions(QFontEngine *, const QTransform &t) const { - Q_UNUSED(fontEngine); - - if (!m.isAffine()) - return true; - - return false; + return t.type() >= QTransform::TxProject; } bool QPaintEngineEx::shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &m) const diff --git a/src/gui/painting/qpaintengineex_p.h b/src/gui/painting/qpaintengineex_p.h index de43b7782c..257bc7a65a 100644 --- a/src/gui/painting/qpaintengineex_p.h +++ b/src/gui/painting/qpaintengineex_p.h @@ -164,7 +164,7 @@ public: IsEmulationEngine = 0x02 // If set, this object is a QEmulationEngine. }; virtual uint flags() const {return 0;} - virtual bool supportsTransformations(QFontEngine *fontEngine, const QTransform &m) const; + virtual bool requiresPretransformedGlyphPositions(QFontEngine *fontEngine, const QTransform &m) const; virtual bool shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &m) const; protected: diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 9d5d4ebc95..1a97839ef8 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -5552,13 +5552,13 @@ void QPainter::drawGlyphRun(const QPointF &position, const QGlyphRun &glyphRun) QVarLengthArray fixedPointPositions(count); QRawFontPrivate *fontD = QRawFontPrivate::get(font); - bool supportsTransformations = d->extended - ? d->extended->supportsTransformations(fontD->fontEngine, d->state->matrix) - : d->engine->type() == QPaintEngine::CoreGraphics || d->state->matrix.isAffine(); + bool engineRequiresPretransformedGlyphPositions = d->extended + ? d->extended->requiresPretransformedGlyphPositions(fontD->fontEngine, d->state->matrix) + : d->engine->type() != QPaintEngine::CoreGraphics && !d->state->matrix.isAffine(); for (int i=0; istate->transform().map(processedPosition); fixedPointPositions[i] = QFixedPoint::fromPointF(processedPosition); } @@ -5741,14 +5741,18 @@ void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText QFontEngine *fe = staticText_d->font.d->engineForScript(QChar::Script_Common); if (fe->type() == QFontEngine::Multi) fe = static_cast(fe)->engine(0); - bool supportsTransformations = d->extended->supportsTransformations(fe, - d->state->matrix); - if (supportsTransformations && !staticText_d->untransformedCoordinates) { - staticText_d->untransformedCoordinates = true; - staticText_d->needsRelayout = true; - } else if (!supportsTransformations && staticText_d->untransformedCoordinates) { + + bool engineRequiresPretransform = d->extended->requiresPretransformedGlyphPositions(fe, d->state->matrix); + if (staticText_d->untransformedCoordinates && engineRequiresPretransform) { + // The coordinates are untransformed, and the engine can't deal with that + // nativly, so we have to pre-transform the static text. staticText_d->untransformedCoordinates = false; staticText_d->needsRelayout = true; + } else if (!staticText_d->untransformedCoordinates && !engineRequiresPretransform) { + // The coordinates are already transformed, but the engine can handle that + // nativly, so undo the transform of the static text. + staticText_d->untransformedCoordinates = true; + staticText_d->needsRelayout = true; } // Don't recalculate entire layout because of translation, rather add the dx and dy diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 0f0ad290fd..0b727619cd 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -268,9 +268,9 @@ QFixed QFontEngine::averageCharWidth() const return bb.xoff; } -bool QFontEngine::supportsTransformations(const QTransform &transform) const +bool QFontEngine::supportsTransformation(const QTransform &transform) const { - return (transform.type() >= QTransform::TxProject); + return transform.type() <= QTransform::TxProject; } void QFontEngine::getGlyphPositions(const QGlyphLayout &glyphs, const QTransform &matrix, QTextItem::RenderFlags flags, diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h index 3321ca3b93..741b1c2bb7 100644 --- a/src/gui/text/qfontengine_p.h +++ b/src/gui/text/qfontengine_p.h @@ -241,7 +241,7 @@ public: return canRender(utf16, utf16len); } - virtual bool supportsTransformations(const QTransform &transform) const; + virtual bool supportsTransformation(const QTransform &transform) const; virtual Type type() const = 0; diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 7284efa53b..ebff94da77 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -626,6 +626,16 @@ bool QGL2PaintEngineEx::isNativePaintingActive() const { return d->nativePaintingActive; } +bool QGL2PaintEngineEx::shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &t) const +{ + float det = t.determinant(); + + // Don't try to cache huge fonts or vastly transformed fonts + return t.type() < QTransform::TxProject + && QPaintEngineEx::shouldDrawCachedGlyphs(fontEngine, t) + && det >= 0.25f && det <= 4.f; +} + void QGL2PaintEngineExPrivate::transferMode(EngineMode newMode) { if (newMode == mode) @@ -1439,11 +1449,10 @@ void QGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem) ensureActive(); QPainterState *s = state(); - float det = s->matrix.determinant(); // don't try to cache huge fonts or vastly transformed fonts QFontEngine *fontEngine = textItem->fontEngine(); - if (shouldDrawCachedGlyphs(fontEngine, s->matrix) && det >= 0.25f && det <= 4.f) { + if (shouldDrawCachedGlyphs(fontEngine, s->matrix)) { QFontEngineGlyphCache::Type glyphType = fontEngine->glyphFormat >= 0 ? QFontEngineGlyphCache::Type(textItem->fontEngine()->glyphFormat) : d->glyphCacheType; @@ -1497,13 +1506,6 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem QTransform::TransformationType txtype = s->matrix.type(); - float det = s->matrix.determinant(); - bool drawCached = txtype < QTransform::TxProject; - - // don't try to cache huge fonts or vastly transformed fonts - if (!shouldDrawCachedGlyphs(ti.fontEngine, s->matrix) || det < 0.25f || det > 4.f) - drawCached = false; - QFontEngineGlyphCache::Type glyphType = ti.fontEngine->glyphFormat >= 0 ? QFontEngineGlyphCache::Type(ti.fontEngine->glyphFormat) : d->glyphCacheType; @@ -1519,7 +1521,7 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem } } - if (drawCached) { + if (shouldDrawCachedGlyphs(ti.fontEngine, s->matrix)) { QVarLengthArray positions; QVarLengthArray glyphs; QTransform matrix = QTransform::fromTranslate(p.x(), p.y()); diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h index f2dc5af768..dd09046bc9 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h @@ -155,7 +155,8 @@ public: void setRenderTextActive(bool); bool isNativePaintingActive() const; - bool supportsTransformations(QFontEngine *, const QTransform &) const { return true; } + bool requiresPretransformedGlyphPositions(QFontEngine *, const QTransform &) const { return false; } + bool shouldDrawCachedGlyphs(QFontEngine *, const QTransform &) const; private: Q_DISABLE_COPY(QGL2PaintEngineEx) }; diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm index 1087d18891..ace4c982fd 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm @@ -600,9 +600,9 @@ QFontEngine *QCoreTextFontEngine::cloneWithSize(qreal pixelSize) const return new QCoreTextFontEngine(cgFont, newFontDef); } -bool QCoreTextFontEngine::supportsTransformations(const QTransform &transform) const +bool QCoreTextFontEngine::supportsTransformation(const QTransform &transform) const { - return transform.type() > QTransform::TxTranslate; + return transform.type() <= QTransform::TxTranslate; } QT_END_NAMESPACE diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h index 6c5c557b13..bd52234f41 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h @@ -103,7 +103,7 @@ public: virtual qreal minLeftBearing() const; virtual QFixed emSquareSize() const; - bool supportsTransformations(const QTransform &transform) const; + bool supportsTransformation(const QTransform &transform) const; virtual QFontEngine *cloneWithSize(qreal pixelSize) const; virtual int glyphMargin(QFontEngineGlyphCache::Type type) { Q_UNUSED(type); return 0; } diff --git a/src/plugins/platforms/cocoa/qpaintengine_mac_p.h b/src/plugins/platforms/cocoa/qpaintengine_mac_p.h index 120ceae5c6..ef9878a98a 100644 --- a/src/plugins/platforms/cocoa/qpaintengine_mac_p.h +++ b/src/plugins/platforms/cocoa/qpaintengine_mac_p.h @@ -122,8 +122,6 @@ public: void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode) { QPaintEngine::drawPolygon(points, pointCount, mode); } - bool supportsTransformations(qreal, const QTransform &) const { return true; }; - protected: friend class QMacPrintEngine; friend class QMacPrintEnginePrivate; -- cgit v1.2.3 From 527a87eda836fa66b351cdd7077613c72cabadbb Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Fri, 11 Jan 2013 13:05:04 +0100 Subject: Fix regression in perspective-transformed text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change 8927084d0acfea2bb3fc8a932069c1d5ceb001d0 made a mistake in reversing the boolean logic of the type >= TxProject logic, causing us to try to use the font engine for perspective transformations instead of falling back to QPainterPath. Change-Id: Ideb59751ace23ab83f8ebd4f02dbe6c1724644a5 Reviewed-by: aavit Reviewed-by: Tor Arne Vestbø --- src/gui/text/qfontengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 0b727619cd..f5b327ca94 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -270,7 +270,7 @@ QFixed QFontEngine::averageCharWidth() const bool QFontEngine::supportsTransformation(const QTransform &transform) const { - return transform.type() <= QTransform::TxProject; + return transform.type() < QTransform::TxProject; } void QFontEngine::getGlyphPositions(const QGlyphLayout &glyphs, const QTransform &matrix, QTextItem::RenderFlags flags, -- cgit v1.2.3 From 9fa5191b6eca7fc96b4720d9b892b0e2a8ff1469 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Fri, 4 Jan 2013 14:55:36 +0100 Subject: QPA, Cocoa: Add platform popup menus Also, allow to set menu-wide font (instead of per menu item), and minimum width. Change-Id: I5f83f260602f55b9409ad69abf670afb59b2d33a Reviewed-by: Paul Olav Tvete --- src/gui/kernel/qplatformmenu.h | 10 +++++++++ src/plugins/platforms/cocoa/qcocoamenu.h | 6 ++++- src/plugins/platforms/cocoa/qcocoamenu.mm | 37 +++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/kernel/qplatformmenu.h b/src/gui/kernel/qplatformmenu.h index 7e7ccdb294..785adedce3 100644 --- a/src/gui/kernel/qplatformmenu.h +++ b/src/gui/kernel/qplatformmenu.h @@ -103,6 +103,16 @@ public: virtual void setText(const QString &text) = 0; virtual void setEnabled(bool enabled) = 0; virtual void setVisible(bool visible) = 0; + virtual void setMinimumWidth(int width) { Q_UNUSED(width); } + virtual void setFont(const QFont &font) { Q_UNUSED(font); } + + virtual void showPopup(const QWindow *parentWindow, QPoint pos, const QPlatformMenuItem *item) + { + Q_UNUSED(parentWindow); + Q_UNUSED(pos); + Q_UNUSED(item); + setVisible(true); + } virtual QPlatformMenuItem *menuItemAt(int position) const = 0; virtual QPlatformMenuItem *menuItemForTag(quintptr tag) const = 0; diff --git a/src/plugins/platforms/cocoa/qcocoamenu.h b/src/plugins/platforms/cocoa/qcocoamenu.h index 3afe089225..7407916cfc 100644 --- a/src/plugins/platforms/cocoa/qcocoamenu.h +++ b/src/plugins/platforms/cocoa/qcocoamenu.h @@ -71,11 +71,15 @@ public: void syncMenuItem(QPlatformMenuItem *menuItem); void setEnabled(bool enabled); void setVisible(bool visible); + void showPopup(const QWindow *parentWindow, QPoint pos, const QPlatformMenuItem *item); + void syncSeparatorsCollapsible(bool enable); void syncModalState(bool modal); - virtual void setText(const QString &text); + void setText(const QString &text); + void setMinimumWidth(int width); + void setFont(const QFont &font); void setParentItem(QCocoaMenuItem* item); diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm index 676f0683fa..afd007b36a 100644 --- a/src/plugins/platforms/cocoa/qcocoamenu.mm +++ b/src/plugins/platforms/cocoa/qcocoamenu.mm @@ -47,6 +47,7 @@ #include #include "qcocoaapplication.h" #include "qcocoamenuloader.h" +#include "qcocoawindow.h" static inline QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *getMenuLoader() { @@ -133,6 +134,20 @@ void QCocoaMenu::setText(const QString &text) [m_nativeItem setTitle:QCFString::toNSString(stripped)]; } +void QCocoaMenu::setMinimumWidth(int width) +{ + m_nativeMenu.minimumWidth = width; +} + +void QCocoaMenu::setFont(const QFont &font) +{ + if (font.resolve()) { + NSFont *customMenuFont = [NSFont fontWithName:QCFString::toNSString(font.family()) + size:font.pointSize()]; + m_nativeMenu.font = customMenuFont; + } +} + void QCocoaMenu::insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before) { QCocoaAutoReleasePool pool; @@ -290,6 +305,28 @@ void QCocoaMenu::setVisible(bool visible) [m_nativeItem setSubmenu:(visible ? m_nativeMenu : nil)]; } +void QCocoaMenu::showPopup(const QWindow *parentWindow, QPoint pos, const QPlatformMenuItem *item) +{ + QCocoaWindow *cocoaWindow = static_cast(parentWindow->handle()); + NSView *view = cocoaWindow->contentView(); + NSMenuItem *nsItem = item ? ((QCocoaMenuItem *)item)->nsItem() : nil; + NSPoint nsPos = NSMakePoint(pos.x(), pos.y()); + [m_nativeMenu popUpMenuPositioningItem:nsItem atLocation:nsPos inView:view]; + + // The call above blocks and swallows the mouse release event, so we send a + // synthetic one to bring back any QQuickMouseArea back to a more normal state. + NSEvent *releaseEvent = [NSEvent mouseEventWithType:NSLeftMouseUp + location:nsPos + modifierFlags:0 + timestamp:0 + windowNumber:view.window.windowNumber + context:[NSGraphicsContext currentContext] + eventNumber:0 + clickCount:0 + pressure:1.0]; + [view.window sendEvent:releaseEvent]; +} + QPlatformMenuItem *QCocoaMenu::menuItemAt(int position) const { return m_menuItems.at(position); -- cgit v1.2.3 From f156e578d7f4b05f44a6e84b2173f1e69b856442 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 7 Dec 2012 22:15:49 -0600 Subject: Ensure raster pixmap cache key is the same as that of pixmap.toImage() This is done to support texture uploads in an image provider. It ensures we can load the texture using QImage in the image provider, and when it is later painted as a pixmap, the cacheKey will be identical (assuming no format conversion was required). Change-Id: I54229511ed91ce5430cc478af5aff0d96685a2da Reviewed-by: Gunnar Sletta --- src/gui/image/qpixmap_raster.cpp | 2 ++ src/gui/image/qplatformpixmap.cpp | 5 +++++ src/gui/image/qplatformpixmap.h | 1 + 3 files changed, 8 insertions(+) (limited to 'src') diff --git a/src/gui/image/qpixmap_raster.cpp b/src/gui/image/qpixmap_raster.cpp index 5c188f0362..30463f3c0d 100644 --- a/src/gui/image/qpixmap_raster.cpp +++ b/src/gui/image/qpixmap_raster.cpp @@ -353,7 +353,9 @@ void QRasterPlatformPixmap::createPixmapForImage(QImage &sourceImage, Qt::ImageC is_null = (w <= 0 || h <= 0); image.d->devicePixelRatio = sourceImage.devicePixelRatio(); + //ensure the pixmap and the image resulting from toImage() have the same cacheKey(); setSerialNumber(image.cacheKey() >> 32); + setDetachNumber(image.d->detach_no); } QImage* QRasterPlatformPixmap::buffer() diff --git a/src/gui/image/qplatformpixmap.cpp b/src/gui/image/qplatformpixmap.cpp index 2e12ae2e91..1d147e3d3c 100644 --- a/src/gui/image/qplatformpixmap.cpp +++ b/src/gui/image/qplatformpixmap.cpp @@ -173,6 +173,11 @@ void QPlatformPixmap::setSerialNumber(int serNo) ser_no = serNo; } +void QPlatformPixmap::setDetachNumber(int detNo) +{ + detach_no = detNo; +} + QImage QPlatformPixmap::toImage(const QRect &rect) const { if (rect.contains(QRect(0, 0, w, h))) diff --git a/src/gui/image/qplatformpixmap.h b/src/gui/image/qplatformpixmap.h index af3abecaf8..d54f31099e 100644 --- a/src/gui/image/qplatformpixmap.h +++ b/src/gui/image/qplatformpixmap.h @@ -132,6 +132,7 @@ public: protected: void setSerialNumber(int serNo); + void setDetachNumber(int detNo); int w; int h; int d; -- cgit v1.2.3 From 08bc730b4199bad839543fe17a5464cf8d547ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Mill=C3=A1n=20Soto?= Date: Mon, 24 Sep 2012 11:42:33 +0200 Subject: Implement QAccessibleActionInterface in QAccessibleTableCell MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implemented QAccessibleActionInterface in QAccessibleTableCell to allow selecting and unselecting table cells, as there was no way of selecting or deselecting a simple cell using accessible tools. tst_qaccessibility.cpp was modified to test the new methods. Change-Id: I7bdfe0b363a9813d4a7c62e96b6c924b163f2121 Reviewed-by: Jan Arve Sæther Reviewed-by: Frederik Gladhorn --- src/plugins/accessible/widgets/itemviews.cpp | 85 ++++++++++++++++++++++++++++ src/plugins/accessible/widgets/itemviews.h | 10 +++- 2 files changed, 94 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp index 7130979935..92ba03753a 100644 --- a/src/plugins/accessible/widgets/itemviews.cpp +++ b/src/plugins/accessible/widgets/itemviews.cpp @@ -700,6 +700,8 @@ void *QAccessibleTableCell::interface_cast(QAccessible::InterfaceType t) { if (t == QAccessible::TableCellInterface) return static_cast(this); + if (t == QAccessible::ActionInterface) + return static_cast(this); return 0; } @@ -773,6 +775,89 @@ bool QAccessibleTableCell::isSelected() const return view->selectionModel()->isSelected(m_index); } +QStringList QAccessibleTableCell::actionNames() const +{ + QStringList names; + names << toggleAction(); + return names; +} + +void QAccessibleTableCell::doAction(const QString& actionName) +{ + if (actionName == toggleAction()) { + if (isSelected()) + unselectCell(); + else + selectCell(); + } +} + +QStringList QAccessibleTableCell::keyBindingsForAction(const QString& actionName) const +{ + return QStringList(); +} + + +void QAccessibleTableCell::selectCell() +{ + QAbstractItemView::SelectionMode selectionMode = view->selectionMode(); + if (!m_index.isValid() || (selectionMode == QAbstractItemView::NoSelection)) + return; + + QSharedPointer cellTable(table()->tableInterface()); + + switch (view->selectionBehavior()) { + case QAbstractItemView::SelectItems: + break; + case QAbstractItemView::SelectColumns: + if (cellTable.data()) + cellTable->selectColumn(m_index.column()); + return; + case QAbstractItemView::SelectRows: + if (cellTable.data()) + cellTable->selectRow(m_index.row()); + return; + } + + if (selectionMode == QAbstractItemView::SingleSelection) { + view->clearSelection(); + } + + view->selectionModel()->select(m_index, QItemSelectionModel::Select); +} + +void QAccessibleTableCell::unselectCell() +{ + + QAbstractItemView::SelectionMode selectionMode = view->selectionMode(); + if (!m_index.isValid() || (selectionMode & QAbstractItemView::NoSelection)) + return; + + QSharedPointer cellTable(table()->tableInterface()); + + switch (view->selectionBehavior()) { + case QAbstractItemView::SelectItems: + break; + case QAbstractItemView::SelectColumns: + if (cellTable.data()) + cellTable->unselectColumn(m_index.column()); + return; + case QAbstractItemView::SelectRows: + if (cellTable.data()) + cellTable->unselectRow(m_index.row()); + return; + } + + //If the mode is not MultiSelection or ExtendedSelection and only + //one cell is selected it cannot be unselected by the user + if ((selectionMode != QAbstractItemView::MultiSelection) + && (selectionMode != QAbstractItemView::ExtendedSelection) + && (view->selectionModel()->selectedIndexes().count() <= 1)) + return; + + view->selectionModel()->select(m_index, QItemSelectionModel::Deselect); +} + void QAccessibleTableCell::rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const { *row = m_index.row(); diff --git a/src/plugins/accessible/widgets/itemviews.h b/src/plugins/accessible/widgets/itemviews.h index 5ae13a8035..99c995dba8 100644 --- a/src/plugins/accessible/widgets/itemviews.h +++ b/src/plugins/accessible/widgets/itemviews.h @@ -159,7 +159,7 @@ private: QModelIndex indexFromLogical(int row, int column = 0) const; }; -class QAccessibleTableCell: public QAccessibleInterface, public QAccessibleTableCellInterface +class QAccessibleTableCell: public QAccessibleInterface, public QAccessibleTableCellInterface, public QAccessibleActionInterface { public: QAccessibleTableCell(QAbstractItemView *view, const QModelIndex &m_index, QAccessible::Role role); @@ -192,6 +192,11 @@ public: virtual void rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const; virtual QAccessibleInterface* table() const; + //action interface + virtual QStringList actionNames() const; + virtual void doAction(const QString &actionName); + virtual QStringList keyBindingsForAction(const QString &actionName) const; + private: QHeaderView *verticalHeader() const; QHeaderView *horizontalHeader() const; @@ -199,6 +204,9 @@ private: QModelIndex m_index; QAccessible::Role m_role; + void selectCell(); + void unselectCell(); + friend class QAccessibleTable; friend class QAccessibleTree; }; -- cgit v1.2.3 From 1df2b9ee2376e132a6bf9596097351f0c79e6b73 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Mon, 7 Jan 2013 16:52:26 +0100 Subject: QNetworkAccessManager: return default configuration if without session ... instead of a zero configuration. That is documented already for QNetworkAccessManager::setConfiguration(). Task-number: QTBUG-28973 Change-Id: Idba5be990745069667a50c85286cf530580d4efe Reviewed-by: Lorn Potter Reviewed-by: Shane Kearns --- src/network/access/qnetworkaccessmanager.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index a1a7a7dd96..2c05e705db 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -834,10 +834,12 @@ QNetworkConfiguration QNetworkAccessManager::configuration() const Q_D(const QNetworkAccessManager); QSharedPointer session(d->getNetworkSession()); - if (session) + if (session) { return session->configuration(); - else - return QNetworkConfiguration(); + } else { + QNetworkConfigurationManager manager; + return manager.defaultConfiguration(); + } } /*! @@ -860,13 +862,12 @@ QNetworkConfiguration QNetworkAccessManager::activeConfiguration() const Q_D(const QNetworkAccessManager); QSharedPointer networkSession(d->getNetworkSession()); + QNetworkConfigurationManager manager; if (networkSession) { - QNetworkConfigurationManager manager; - return manager.configurationFromIdentifier( networkSession->sessionProperty(QLatin1String("ActiveConfiguration")).toString()); } else { - return QNetworkConfiguration(); + return manager.defaultConfiguration(); } } -- cgit v1.2.3 From 0ae529c911fa5dadfa8d8cb666597483c966187e Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 16 Dec 2012 20:18:13 +0100 Subject: Avoid a QVector allocation in QRegularExpressionMatchPrivate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Explicitely pass the number of capturing groups for which the offsets should be reserved in the capturedOffsets vector, instead of relying on it adding 1 (for the implicit capturing group #0). In case 0 is passed, don't allocate any space for that vector. This is being used in case of NoMatch match type or failing match (invalid regexp, out of bounds offset, etc.). Change-Id: I0ec7646d5bd53e7a7973177100b163a5e5030307 Reviewed-by: Jędrzej Nowacki Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 1585389d22..06c696e1e2 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -842,7 +842,7 @@ struct QRegularExpressionMatchPrivate : QSharedData const QString &subject, QRegularExpression::MatchType matchType, QRegularExpression::MatchOptions matchOptions, - int capturingCount); + int capturingCount = 0); QRegularExpressionMatch nextMatch() const; @@ -1201,25 +1201,25 @@ QRegularExpressionMatchPrivate *QRegularExpressionPrivate::doMatch(const QString QRegularExpression re(*const_cast(this)); if (offset < 0 || offset > subject.length()) - return new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions, 0); + return new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions); if (!compiledPattern) { qWarning("QRegularExpressionPrivate::doMatch(): called on an invalid QRegularExpression object"); - return new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions, 0); + return new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions); } // skip optimizing and doing the actual matching if NoMatch type was requested if (matchType == QRegularExpression::NoMatch) { QRegularExpressionMatchPrivate *priv = new QRegularExpressionMatchPrivate(re, subject, - matchType, matchOptions, - 0); + matchType, matchOptions); priv->isValid = true; return priv; } + // capturingCount doesn't include the implicit "0" capturing group QRegularExpressionMatchPrivate *priv = new QRegularExpressionMatchPrivate(re, subject, matchType, matchOptions, - capturingCount); + capturingCount + 1); // this is mutex protected const pcre16_extra *currentStudyData = const_cast(this)->optimizePattern(); @@ -1328,8 +1328,10 @@ QRegularExpressionMatchPrivate::QRegularExpressionMatchPrivate(const QRegularExp hasMatch(false), hasPartialMatch(false), isValid(false) { Q_ASSERT(capturingCount >= 0); - const int captureOffsetsCount = (capturingCount + 1) * 3; - capturedOffsets.resize(captureOffsetsCount); + if (capturingCount > 0) { + const int captureOffsetsCount = capturingCount * 3; + capturedOffsets.resize(captureOffsetsCount); + } } -- cgit v1.2.3 From 65fba49d639fe2499d66374486f16269e669daf0 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 16 Dec 2012 20:47:47 +0100 Subject: Introduce default ctors for QRegularExpressionMatch(Iterator) This allows to put them in containers, and to enable subsequent features for QString. Change-Id: I3b3fe695ffe6930331ed9f670738376722e0fc36 Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 40 ++++++++++++++++++++++++++++++++ src/corelib/tools/qregularexpression.h | 2 ++ 2 files changed, 42 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 06c696e1e2..e3f39a2662 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1657,6 +1657,26 @@ QString QRegularExpression::escape(const QString &str) return result; } +/*! + \since 5.1 + + Constructs a valid, empty QRegularExpressionMatch object. The regular + expression is set to a default-constructed one; the match type to + QRegularExpression::NoMatch and the match options to + QRegularExpression::NoMatchOption. + + The object will report no match through the hasMatch() and the + hasPartialMatch() member functions. +*/ +QRegularExpressionMatch::QRegularExpressionMatch() + : d(new QRegularExpressionMatchPrivate(QRegularExpression(), + QString(), + QRegularExpression::NoMatch, + QRegularExpression::NoMatchOption)) +{ + d->isValid = true; +} + /*! Destroys the match result. */ @@ -2000,6 +2020,26 @@ QRegularExpressionMatchIterator::QRegularExpressionMatchIterator(QRegularExpress { } +/*! + \since 5.1 + + Constructs an empty, valid QRegularExpressionMatchIterator object. The + regular expression is set to a default-constructed one; the match type to + QRegularExpression::NoMatch and the match options to + QRegularExpression::NoMatchOption. + + Invoking the hasNext() member function on the constructed object will + return false, as the iterator is not iterating on a valid sequence of + matches. +*/ +QRegularExpressionMatchIterator::QRegularExpressionMatchIterator() + : d(new QRegularExpressionMatchIteratorPrivate(QRegularExpression(), + QRegularExpression::NoMatch, + QRegularExpression::NoMatchOption, + QRegularExpressionMatch())) +{ +} + /*! Destroys the QRegularExpressionMatchIterator object. */ diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index 57d03a34e5..a5c273e4a2 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -154,6 +154,7 @@ struct QRegularExpressionMatchPrivate; class Q_CORE_EXPORT QRegularExpressionMatch { public: + QRegularExpressionMatch(); ~QRegularExpressionMatch(); QRegularExpressionMatch(const QRegularExpressionMatch &match); QRegularExpressionMatch &operator=(const QRegularExpressionMatch &match); @@ -211,6 +212,7 @@ struct QRegularExpressionMatchIteratorPrivate; class Q_CORE_EXPORT QRegularExpressionMatchIterator { public: + QRegularExpressionMatchIterator(); ~QRegularExpressionMatchIterator(); QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator); QRegularExpressionMatchIterator &operator=(const QRegularExpressionMatchIterator &iterator); -- cgit v1.2.3 From 9110d4f1ed65f02d8bbcb81ed0634d5a38c2bf9f Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 14 Oct 2012 17:10:43 +0100 Subject: QString::contains overload that returns the match results This convenience overload allows one to write QRegularExpression re1, re2, ...; QRegularExpressionMatch match; QString subject; if (subject.contains(re1, &match)) { // ... } else if (subject.contains(re2, &match)) { // ... } // .. One can then inspect the results of a successful match in each block (as well as extracting the captured substrings, etc.). Change-Id: I0fb8be8b577656e8db994198f8105c26c4fe67b0 Reviewed-by: Lars Knoll Reviewed-by: Thiago Macieira --- src/corelib/tools/qstring.cpp | 27 +++++++++++++++++++++++++++ src/corelib/tools/qstring.h | 2 ++ 2 files changed, 29 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 10ef6b34dd..a3036a3f24 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -3339,6 +3339,33 @@ bool QString::contains(const QRegularExpression &re) const return match.hasMatch(); } +/*! + \overload contains() + \since 5.1 + + Returns true if the regular expression \a re matches somewhere in this + string; otherwise returns false. + + If the match is successful and \a match is not a null pointer, it also + writes the results of the match into the QRegularExpressionMatch object + pointed by \a match. + + \sa QRegularExpression::match() +*/ + +bool QString::contains(const QRegularExpression &re, QRegularExpressionMatch *match) const +{ + if (!re.isValid()) { + qWarning("QString::contains: invalid QRegularExpresssion object"); + return false; + } + QRegularExpressionMatch m = re.match(*this); + bool hasMatch = m.hasMatch(); + if (hasMatch && match) + *match = m; + return hasMatch; +} + /*! \overload count() \since 5.0 diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 574285fa1e..b7a08928b3 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -72,6 +72,7 @@ QT_BEGIN_NAMESPACE class QCharRef; class QRegExp; class QRegularExpression; +class QRegularExpressionMatch; class QString; class QStringList; class QTextCodec; @@ -339,6 +340,7 @@ public: int indexOf(const QRegularExpression &re, int from = 0) const; int lastIndexOf(const QRegularExpression &re, int from = -1) const; bool contains(const QRegularExpression &re) const; + bool contains(const QRegularExpression &re, QRegularExpressionMatch *match) const; int count(const QRegularExpression &re) const; #endif -- cgit v1.2.3 From dc131e3a5378d84026941e6626db524688b988f4 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 11 Jan 2013 11:25:28 -0800 Subject: Make QDBusPendingReply behave like QDBusReply when dealing with errors QDBusReply allows one to extract a QVariant and the type reply from an error reply and getting a default-constructed value. This is useful when a valid reply can never contain the default-constructed value (0, false, empty strings, empty arrays, etc.), so it simplifies error checking. More importantly, qdbusxml2cpp was changed a while ago from generating QDBusReply to generating QDBusPendingReply, so we need to have the same behavior. Task-number: QTBUG-29046 Change-Id: Ia873b9fd4311c0d4e94f0ef623ba405c20bc0e8c Reviewed-by: Olivier Goffart --- src/dbus/qdbuspendingreply.cpp | 28 ++++++++++++++++++++++------ src/dbus/qdbuspendingreply.h | 4 +--- 2 files changed, 23 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/dbus/qdbuspendingreply.cpp b/src/dbus/qdbuspendingreply.cpp index 3d63c6a7fa..97d1b21a75 100644 --- a/src/dbus/qdbuspendingreply.cpp +++ b/src/dbus/qdbuspendingreply.cpp @@ -185,6 +185,11 @@ function's return value is undefined (will probably cause an assertion failure), so it is important to verify that the processing is finished and the reply is valid. + + If the reply does not contain an argument at position \a index or if the + reply was an error, this function returns an invalid QVariant. Since D-Bus + messages can never contain invalid QVariants, this return can be used to + detect an error condition. */ /*! @@ -197,6 +202,11 @@ Note that, if the reply hasn't arrived, this function causes the calling thread to block until the reply is processed. + + If the reply does not contain an argument at position \c Index or if the + reply was an error, this function returns a \c Type object that is default + constructed, which may be indistinguishable from a valid value. To reliably + determine whether the message was an error, use isError(). */ /*! @@ -211,6 +221,10 @@ Note that, if the reply hasn't arrived, this function causes the calling thread to block until the reply is processed. + + If the reply is an error reply, this function returns a default-constructed + \c T1 object, which may be indistinguishable from a valid value. To + reliably determine whether the message was an error, use isError(). */ /*! @@ -225,6 +239,10 @@ Note that, if the reply hasn't arrived, this function causes the calling thread to block until the reply is processed. + + If the reply is an error reply, this function returns a default-constructed + \c T1 object, which may be indistinguishable from a valid value. To + reliably determine whether the message was an error, use isError(). */ /*! @@ -260,14 +278,12 @@ void QDBusPendingReplyData::assign(const QDBusMessage &message) QVariant QDBusPendingReplyData::argumentAt(int index) const { - if (d) - d->waitForFinished(); // bypasses "const" + if (!d) + return QVariant(); - Q_ASSERT_X(d && index >= 0 && index < d->replyMessage.arguments().count(), - "QDBusPendingReply::argumentAt", - "Index out of bounds"); + d->waitForFinished(); // bypasses "const" - return d->replyMessage.arguments().at(index); + return d->replyMessage.arguments().value(index); } void QDBusPendingReplyData::setMetaTypes(int count, const int *types) diff --git a/src/dbus/qdbuspendingreply.h b/src/dbus/qdbuspendingreply.h index 47a82363db..6511d2df2c 100644 --- a/src/dbus/qdbuspendingreply.h +++ b/src/dbus/qdbuspendingreply.h @@ -168,9 +168,7 @@ public: template inline const typename Select::Type argumentAt() const { - // static assert? - Q_ASSERT_X(Index < count() && Index >= 0, "QDBusPendingReply::argumentAt", - "Index out of bounds"); + Q_STATIC_ASSERT_X(Index >= 0 && Index < Count, "Index out of bounds"); typedef typename Select::Type ResultType; return qdbus_cast(argumentAt(Index), 0); } -- cgit v1.2.3 From 273713b81f5e580748c281c17e08e8b3e2e8ee70 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 14 Jan 2013 11:22:54 +0100 Subject: Fix QVistaHelper::disconnectBackButton(). Restrict disconnect() to the clicked() signal, leaving connections to destroyed() (as used by QStyleSheetStyle) intact. Task-number: QTBUG-20292 Change-Id: I7471b4d1262ec0684e4446b5c17513717c502749 Reviewed-by: Joerg Bornemann --- src/widgets/dialogs/qwizard_win.cpp | 6 ++++++ src/widgets/dialogs/qwizard_win_p.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp index 45484b906b..ef41ca32e8 100644 --- a/src/widgets/dialogs/qwizard_win.cpp +++ b/src/widgets/dialogs/qwizard_win.cpp @@ -315,6 +315,12 @@ QVistaHelper::VistaState QVistaHelper::vistaState() return cachedVistaState; } +void QVistaHelper::disconnectBackButton() +{ + if (backButton_) // Leave QStyleSheetStyle's connections on destroyed() intact. + backButton_->disconnect(SIGNAL(clicked())); +} + QColor QVistaHelper::basicWindowFrameColor() { DWORD rgb; diff --git a/src/widgets/dialogs/qwizard_win_p.h b/src/widgets/dialogs/qwizard_win_p.h index 4dbb71f94b..11dd1f2824 100644 --- a/src/widgets/dialogs/qwizard_win_p.h +++ b/src/widgets/dialogs/qwizard_win_p.h @@ -95,7 +95,7 @@ public: void resizeEvent(QResizeEvent *event); void paintEvent(QPaintEvent *event); QVistaBackButton *backButton() const { return backButton_; } - void disconnectBackButton() { if (backButton_) backButton_->disconnect(); } + void disconnectBackButton(); void hideBackButton() { if (backButton_) backButton_->hide(); } QColor basicWindowFrameColor(); enum VistaState { VistaAero, VistaBasic, Classic, Dirty }; -- cgit v1.2.3 From d4adcfb8cc1b22d85641d7e4aa03b67850a4c715 Mon Sep 17 00:00:00 2001 From: Ruslan Nigmatullin Date: Fri, 11 Jan 2013 16:10:53 +0400 Subject: Added QMessageAuthenticationCode QMessageAuthenticationCode is HMAC implementation based on QCryptographicHash abilities. HMAC is often used in OAuth and similar authentication protocols. Change-Id: Ifc73947ad06c36a1b770315b7e89ba5c01c5e79e Reviewed-by: Richard J. Moore Reviewed-by: Thiago Macieira --- .../snippets/qmessageauthenticationcode/main.cpp | 62 +++++ src/corelib/tools/qmessageauthenticationcode.cpp | 275 +++++++++++++++++++++ src/corelib/tools/qmessageauthenticationcode.h | 84 +++++++ src/corelib/tools/tools.pri | 2 + 4 files changed, 423 insertions(+) create mode 100644 src/corelib/doc/snippets/qmessageauthenticationcode/main.cpp create mode 100644 src/corelib/tools/qmessageauthenticationcode.cpp create mode 100644 src/corelib/tools/qmessageauthenticationcode.h (limited to 'src') diff --git a/src/corelib/doc/snippets/qmessageauthenticationcode/main.cpp b/src/corelib/doc/snippets/qmessageauthenticationcode/main.cpp new file mode 100644 index 0000000000..4441fbd9a1 --- /dev/null +++ b/src/corelib/doc/snippets/qmessageauthenticationcode/main.cpp @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Ruslan Nigmatullin +** Contact: http://www.qt-project.org/legal +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +int main(int argc, char *argv[]) +{ + QCoreApplication app(argc, argv); + +//! [0] + QByteArray key = "key"; + QByteArray message = "The quick brown fox jumps over the lazy dog"; +//! [0] + +//! [1] + QMessageAuthenticationCode code(QCryptographicHash::Sha1); + code.setKey(key); + code.addData(message); + code.result().toHex(); // returns "de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9" +//! [1] + +//! [2] + QMessageAuthenticationCode::hash(message, key, QCryptographicHash::Sha1).toHex(); +//! [2] +} diff --git a/src/corelib/tools/qmessageauthenticationcode.cpp b/src/corelib/tools/qmessageauthenticationcode.cpp new file mode 100644 index 0000000000..3950f15502 --- /dev/null +++ b/src/corelib/tools/qmessageauthenticationcode.cpp @@ -0,0 +1,275 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Ruslan Nigmatullin +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qmessageauthenticationcode.h" +#include "qvarlengtharray.h" + +/* + These #defines replace the typedefs needed by the RFC6234 code. Normally + the typedefs would come from from stdint.h, but since this header is not + available on all platforms (MSVC 2008, for example), we #define them to the + Qt equivalents. +*/ +#define uint64_t QT_PREPEND_NAMESPACE(quint64) +#define uint32_t QT_PREPEND_NAMESPACE(quint32) +#define uint8_t QT_PREPEND_NAMESPACE(quint8) +#define int_least16_t QT_PREPEND_NAMESPACE(qint16) + +// Header from rfc6234 with 1 modification: +// sha1.h - commented out '#include ' on line 74 +#include "../../3rdparty/rfc6234/sha.h" + +#undef uint64_t +#undef uint32_t +#undef uint68_t +#undef int_least16_t + +QT_BEGIN_NAMESPACE + +static int qt_hash_block_size(QCryptographicHash::Algorithm method) +{ + switch (method) { + case QCryptographicHash::Md4: + return 64; + case QCryptographicHash::Md5: + return 64; + case QCryptographicHash::Sha1: + return SHA1_Message_Block_Size; + case QCryptographicHash::Sha224: + return SHA224_Message_Block_Size; + case QCryptographicHash::Sha256: + return SHA256_Message_Block_Size; + case QCryptographicHash::Sha384: + return SHA384_Message_Block_Size; + case QCryptographicHash::Sha512: + return SHA512_Message_Block_Size; + } + return 0; +} + +class QMessageAuthenticationCodePrivate +{ +public: + QMessageAuthenticationCodePrivate(QCryptographicHash::Algorithm m) + : messageHash(m), method(m), messageHashInited(false) + { + } + + QByteArray key; + QByteArray result; + QCryptographicHash messageHash; + QCryptographicHash::Algorithm method; + bool messageHashInited; + + void initMessageHash(); +}; + +void QMessageAuthenticationCodePrivate::initMessageHash() +{ + if (messageHashInited) + return; + messageHashInited = true; + + const int blockSize = qt_hash_block_size(method); + + if (key.size() > blockSize) { + QCryptographicHash hash(method); + hash.addData(key); + key = hash.result(); + hash.reset(); + } + + if (key.size() < blockSize) { + const int size = key.size(); + key.resize(blockSize); + memset(key.data() + size, 0, blockSize - size); + } + + QVarLengthArray iKeyPad(blockSize); + const char * const keyData = key.constData(); + + for (int i = 0; i < blockSize; ++i) + iKeyPad[i] = keyData[i] ^ 0x36; + + messageHash.addData(iKeyPad.data(), iKeyPad.size()); +} + +/*! + \class QMessageAuthenticationCode + \inmodule QtCore + + \brief The QMessageAuthenticationCode class provides a way to generate + hash-based message authentication codes. + + \since 5.1 + + \ingroup tools + \reentrant + + QMessageAuthenticationCode supports all cryptographic hashes which are supported by + QCryptographicHash. + + To generate message authentication code, pass hash algorithm QCryptographicHash::Algorithm + to constructor, then set key and message by setKey() and addData() functions. Result + can be acquired by result() function. + \snippet qmessageauthenticationcode/main.cpp 0 + \dots + \snippet qmessageauthenticationcode/main.cpp 1 + + Alternatively, this effect can be achieved by providing message, + key and method to hash() method. + \snippet qmessageauthenticationcode/main.cpp 2 + + \sa QCryptographicHash +*/ + +/*! + Constructs an object that can be used to create a cryptographic hash from data + using method \a method and key \a key. +*/ +QMessageAuthenticationCode::QMessageAuthenticationCode(QCryptographicHash::Algorithm method, + const QByteArray &key) + : d(new QMessageAuthenticationCodePrivate(method)) +{ + d->key = key; +} + +/*! + Destroys the object. +*/ +QMessageAuthenticationCode::~QMessageAuthenticationCode() +{ + delete d; +} + +/*! + Resets message data. Calling this method doesn't affect the key. +*/ +void QMessageAuthenticationCode::reset() +{ + d->result.clear(); + d->messageHash.reset(); + d->messageHashInited = false; +} + +/*! + Sets secret \a key. Calling this method automatically resets the object state. +*/ +void QMessageAuthenticationCode::setKey(const QByteArray &key) +{ + reset(); + d->key = key; +} + +/*! + Adds the first \a length chars of \a data to the message. +*/ +void QMessageAuthenticationCode::addData(const char *data, int length) +{ + d->initMessageHash(); + d->messageHash.addData(data, length); +} + +/*! + \overload addData() +*/ +void QMessageAuthenticationCode::addData(const QByteArray &data) +{ + d->initMessageHash(); + d->messageHash.addData(data); +} + +/*! + Reads the data from the open QIODevice \a device until it ends + and adds it to message. Returns true if reading was successful. + + \note \a device must be already opened. + */ +bool QMessageAuthenticationCode::addData(QIODevice *device) +{ + d->initMessageHash(); + return d->messageHash.addData(device); +} + +/*! + Returns the final authentication code. + + \sa QByteArray::toHex() +*/ +QByteArray QMessageAuthenticationCode::result() const +{ + if (!d->result.isEmpty()) + return d->result; + + d->initMessageHash(); + + const int blockSize = qt_hash_block_size(d->method); + + QByteArray hashedMessage = d->messageHash.result(); + + QVarLengthArray oKeyPad(blockSize); + const char * const keyData = d->key.constData(); + + for (int i = 0; i < blockSize; ++i) + oKeyPad[i] = keyData[i] ^ 0x5c; + + QCryptographicHash hash(d->method); + hash.addData(oKeyPad.data(), oKeyPad.size()); + hash.addData(hashedMessage); + + d->result = hash.result(); + return d->result; +} + +/*! + Returns the authentication code for the message \a message using + the key \a key and the method \a method. +*/ +QByteArray QMessageAuthenticationCode::hash(const QByteArray &message, const QByteArray &key, + QCryptographicHash::Algorithm method) +{ + QMessageAuthenticationCode mac(method); + mac.setKey(key); + mac.addData(message); + return mac.result(); +} + +QT_END_NAMESPACE diff --git a/src/corelib/tools/qmessageauthenticationcode.h b/src/corelib/tools/qmessageauthenticationcode.h new file mode 100644 index 0000000000..e84a1c84b4 --- /dev/null +++ b/src/corelib/tools/qmessageauthenticationcode.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Ruslan Nigmatullin +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMESSAGEAUTHENTICATIONCODE_H +#define QMESSAGEAUTHENTICATIONCODE_H + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + + +class QMessageAuthenticationCodePrivate; +class QIODevice; + +class Q_CORE_EXPORT QMessageAuthenticationCode +{ +public: + explicit QMessageAuthenticationCode(QCryptographicHash::Algorithm method, + const QByteArray &key = QByteArray()); + ~QMessageAuthenticationCode(); + + void reset(); + + void setKey(const QByteArray &key); + + void addData(const char *data, int length); + void addData(const QByteArray &data); + bool addData(QIODevice *device); + + QByteArray result() const; + + static QByteArray hash(const QByteArray &message, const QByteArray &key, + QCryptographicHash::Algorithm method); + +private: + Q_DISABLE_COPY(QMessageAuthenticationCode) + QMessageAuthenticationCodePrivate *d; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index 564aff9ab9..bed71c6d25 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -29,6 +29,7 @@ HEADERS += \ tools/qlocale_data_p.h \ tools/qmap.h \ tools/qmargins.h \ + tools/qmessageauthenticationcode.h \ tools/qcontiguouscache.h \ tools/qpodlist_p.h \ tools/qpair.h \ @@ -82,6 +83,7 @@ SOURCES += \ tools/qpoint.cpp \ tools/qmap.cpp \ tools/qmargins.cpp \ + tools/qmessageauthenticationcode.cpp \ tools/qcontiguouscache.cpp \ tools/qrect.cpp \ tools/qregexp.cpp \ -- cgit v1.2.3 From 18c916517f3004d34482c20ed66bf09ec274d385 Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Wed, 2 Jan 2013 16:50:06 +0100 Subject: Use backslashes for UNC paths. ShellExecute fails to open a share folder due to using '/' instead of '\'. Windows API doesn't support forward slashes for extended-length path. Extended-length path are path that start with a "\\?\" prefix. For example, "\\?\c:\very_long_path\foo\bar.txt", or in the case of a UNC path that would be "\\?\very_long_path\foo\bar.txt". [1] [1] http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#maxpath Task-number: QTBUG-13359 Change-Id: Ibb113abeebd56f106f76520bc23dba797de548fa Reviewed-by: Friedemann Kleint --- src/plugins/platforms/windows/qwindowsservices.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsservices.cpp b/src/plugins/platforms/windows/qwindowsservices.cpp index 3121d5c869..cd446efc62 100644 --- a/src/plugins/platforms/windows/qwindowsservices.cpp +++ b/src/plugins/platforms/windows/qwindowsservices.cpp @@ -44,6 +44,7 @@ #include #include +#include #include #ifndef Q_OS_WINCE @@ -57,7 +58,8 @@ enum { debug = 0 }; static inline bool shellExecute(const QString &file) { #ifndef Q_OS_WINCE - const quintptr result = (quintptr)ShellExecute(0, 0, (wchar_t*)file.utf16(), 0, 0, SW_SHOWNORMAL); + const QString nativeFilePath = QDir::toNativeSeparators(file); + const quintptr result = (quintptr)ShellExecute(0, 0, (wchar_t*)nativeFilePath.utf16(), 0, 0, SW_SHOWNORMAL); // ShellExecute returns a value greater than 32 if successful if (result <= 32) { qWarning("ShellExecute '%s' failed (error %s).", qPrintable(file), qPrintable(QString::number(result))); -- cgit v1.2.3 From 7e7b65c370207fa849ac0ec69fe9209f08d8f2e3 Mon Sep 17 00:00:00 2001 From: David Faure Date: Mon, 14 Jan 2013 09:34:08 +0100 Subject: Add renameOverwrite() to QAbstractFileEngine. QFSFileEngine::rename() on Windows doesn't overwrite the existing destination. Keep that unchanged (it's the desired behavior in QFile::rename), and provide cross-platform rename-overwrite behavior in the new method. This is needed by QSaveFile. Change-Id: I5e753d289d8a53692530a48a1783d62e26169cdc Reviewed-by: Oswald Buddenhagen Reviewed-by: Friedemann Kleint Reviewed-by: Thiago Macieira --- src/corelib/io/qabstractfileengine.cpp | 18 ++++++++++++++++++ src/corelib/io/qabstractfileengine_p.h | 1 + src/corelib/io/qfsfileengine.cpp | 5 +++++ src/corelib/io/qfsfileengine_p.h | 1 + src/corelib/io/qfsfileengine_unix.cpp | 6 ++++++ src/corelib/io/qfsfileengine_win.cpp | 11 +++++++++++ src/corelib/io/qtemporaryfile.cpp | 7 +++++++ 7 files changed, 49 insertions(+) (limited to 'src') diff --git a/src/corelib/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp index d7cf7e3f15..b12dc47c52 100644 --- a/src/corelib/io/qabstractfileengine.cpp +++ b/src/corelib/io/qabstractfileengine.cpp @@ -495,6 +495,24 @@ bool QAbstractFileEngine::rename(const QString &newName) return false; } +/*! + \since 5.1 + + Requests that the file be renamed to \a newName in the file + system. If the new name already exists, it must be overwritten. + If the operation succeeds, returns true; otherwise returns + false. + + This virtual function must be reimplemented by all subclasses. + + \sa setFileName() + */ +bool QAbstractFileEngine::renameOverwrite(const QString &newName) +{ + Q_UNUSED(newName); + return false; +} + /*! Creates a link from the file currently specified by fileName() to \a newName. What a link is depends on the underlying filesystem diff --git a/src/corelib/io/qabstractfileengine_p.h b/src/corelib/io/qabstractfileengine_p.h index 5d07a3a390..2cbd927968 100644 --- a/src/corelib/io/qabstractfileengine_p.h +++ b/src/corelib/io/qabstractfileengine_p.h @@ -131,6 +131,7 @@ public: virtual bool remove(); virtual bool copy(const QString &newName); virtual bool rename(const QString &newName); + virtual bool renameOverwrite(const QString &newName); virtual bool link(const QString &newName); virtual bool mkdir(const QString &dirName, bool createParentDirectories) const; virtual bool rmdir(const QString &dirName, bool recurseParentDirectories) const; diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp index 1d3f14f84e..1bc3a7da2e 100644 --- a/src/corelib/io/qfsfileengine.cpp +++ b/src/corelib/io/qfsfileengine.cpp @@ -908,6 +908,11 @@ bool QFSFileEngine::supportsExtension(Extension extension) const \reimp */ + +/*! \fn bool QFSFileEngine::renameOverwrite(const QString &newName) + \reimp +*/ + /*! \fn bool QFSFileEngine::rmdir(const QString &name, bool recurseParentDirectories) const \reimp */ diff --git a/src/corelib/io/qfsfileengine_p.h b/src/corelib/io/qfsfileengine_p.h index 94aa1828a7..cf70032134 100644 --- a/src/corelib/io/qfsfileengine_p.h +++ b/src/corelib/io/qfsfileengine_p.h @@ -88,6 +88,7 @@ public: bool remove(); bool copy(const QString &newName); bool rename(const QString &newName); + bool renameOverwrite(const QString &newName); bool link(const QString &newName); bool mkdir(const QString &dirName, bool createParentDirectories) const; bool rmdir(const QString &dirName, bool recurseParentDirectories) const; diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp index b91c7d7fe6..8f622d77cd 100644 --- a/src/corelib/io/qfsfileengine_unix.cpp +++ b/src/corelib/io/qfsfileengine_unix.cpp @@ -388,6 +388,12 @@ bool QFSFileEngine::copy(const QString &newName) return ret; } +bool QFSFileEngine::renameOverwrite(const QString &newName) +{ + // On Unix, rename() overwrites. + return rename(newName); +} + bool QFSFileEngine::rename(const QString &newName) { Q_D(QFSFileEngine); diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp index d12a95f98a..86e9bf971d 100644 --- a/src/corelib/io/qfsfileengine_win.cpp +++ b/src/corelib/io/qfsfileengine_win.cpp @@ -507,6 +507,17 @@ bool QFSFileEngine::rename(const QString &newName) return ret; } +bool QFSFileEngine::renameOverwrite(const QString &newName) +{ + Q_D(QFSFileEngine); + bool ret = ::MoveFileEx((wchar_t*)d->fileEntry.nativeFilePath().utf16(), + (wchar_t*)QFileSystemEntry(newName).nativeFilePath().utf16(), + MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED) != 0; + if (!ret) + setError(QFile::RenameError, QSystemError(::GetLastError(), QSystemError::NativeError).toString()); + return ret; +} + bool QFSFileEngine::mkdir(const QString &name, bool createParentDirectories) const { return QFileSystemEngine::createDirectory(QFileSystemEntry(name), createParentDirectories); diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp index a647d21f40..161c64a73b 100644 --- a/src/corelib/io/qtemporaryfile.cpp +++ b/src/corelib/io/qtemporaryfile.cpp @@ -242,6 +242,7 @@ public: bool open(QIODevice::OpenMode flags); bool remove(); bool rename(const QString &newName); + bool renameOverwrite(const QString &newName); bool close(); bool filePathIsTemplate; @@ -398,6 +399,12 @@ bool QTemporaryFileEngine::rename(const QString &newName) return QFSFileEngine::rename(newName); } +bool QTemporaryFileEngine::renameOverwrite(const QString &newName) +{ + QFSFileEngine::close(); + return QFSFileEngine::renameOverwrite(newName); +} + bool QTemporaryFileEngine::close() { // Don't close the file, just seek to the front. -- cgit v1.2.3 From ad893943cfe0434624a1e807ed19e95286e362cc Mon Sep 17 00:00:00 2001 From: David Faure Date: Mon, 14 Jan 2013 09:41:35 +0100 Subject: Add syncToDisk() to QAbstractFileEngine. This is needed by QSaveFile. Change-Id: I07ebdfd832c0be65c26f0aed1bb7852ac33135ca Reviewed-by: Thiago Macieira --- src/corelib/io/qabstractfileengine.cpp | 13 +++++++++++++ src/corelib/io/qabstractfileengine_p.h | 1 + src/corelib/io/qfsfileengine.cpp | 11 +++++++++++ src/corelib/io/qfsfileengine_p.h | 2 ++ src/corelib/io/qfsfileengine_unix.cpp | 17 +++++++++++++++++ src/corelib/io/qfsfileengine_win.cpp | 18 ++++++++++++++---- 6 files changed, 58 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp index b12dc47c52..e046119fe2 100644 --- a/src/corelib/io/qabstractfileengine.cpp +++ b/src/corelib/io/qabstractfileengine.cpp @@ -399,6 +399,19 @@ bool QAbstractFileEngine::close() return false; } +/*! + \since 5.1 + + Flushes and syncs the file to disk. + + Returns true if successful; otherwise returns false. + The default implementation always returns false. +*/ +bool QAbstractFileEngine::syncToDisk() +{ + return false; +} + /*! Flushes the open file, returning true if successful; otherwise returns false. diff --git a/src/corelib/io/qabstractfileengine_p.h b/src/corelib/io/qabstractfileengine_p.h index 2cbd927968..5106c01be9 100644 --- a/src/corelib/io/qabstractfileengine_p.h +++ b/src/corelib/io/qabstractfileengine_p.h @@ -124,6 +124,7 @@ public: virtual bool open(QIODevice::OpenMode openMode); virtual bool close(); virtual bool flush(); + virtual bool syncToDisk(); virtual qint64 size() const; virtual qint64 pos() const; virtual bool seek(qint64 pos); diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp index 1bc3a7da2e..11cbda14ca 100644 --- a/src/corelib/io/qfsfileengine.cpp +++ b/src/corelib/io/qfsfileengine.cpp @@ -418,6 +418,17 @@ bool QFSFileEngine::flush() return d->nativeFlush(); } +/*! + \reimp +*/ +bool QFSFileEngine::syncToDisk() +{ + Q_D(QFSFileEngine); + if ((d->openMode & QIODevice::WriteOnly) == 0) + return true; + return d->nativeSyncToDisk(); +} + /*! \internal */ diff --git a/src/corelib/io/qfsfileengine_p.h b/src/corelib/io/qfsfileengine_p.h index cf70032134..5d3a6a3767 100644 --- a/src/corelib/io/qfsfileengine_p.h +++ b/src/corelib/io/qfsfileengine_p.h @@ -81,6 +81,7 @@ public: bool open(QIODevice::OpenMode flags, FILE *fh); bool close(); bool flush(); + bool syncToDisk(); qint64 size() const; qint64 pos() const; bool seek(qint64); @@ -150,6 +151,7 @@ public: bool nativeClose(); bool closeFdFh(); bool nativeFlush(); + bool nativeSyncToDisk(); bool flushFh(); qint64 nativeSize() const; #ifndef Q_OS_WIN diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp index 8f622d77cd..05b55525b6 100644 --- a/src/corelib/io/qfsfileengine_unix.cpp +++ b/src/corelib/io/qfsfileengine_unix.cpp @@ -256,6 +256,23 @@ bool QFSFileEnginePrivate::nativeFlush() return fh ? flushFh() : fd != -1; } +/*! + \internal + \since 5.1 +*/ +bool QFSFileEnginePrivate::nativeSyncToDisk() +{ + Q_Q(QFSFileEngine); +#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 + const int ret = fdatasync(nativeHandle()); +#else + const int ret = fsync(nativeHandle()); +#endif + if (ret != 0) + q->setError(QFile::WriteError, qt_error_string(errno)); + return ret == 0; +} + /*! \internal */ diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp index 86e9bf971d..756e884bd1 100644 --- a/src/corelib/io/qfsfileengine_win.cpp +++ b/src/corelib/io/qfsfileengine_win.cpp @@ -198,13 +198,23 @@ bool QFSFileEnginePrivate::nativeFlush() return true; } - // Windows native mode; flushing is - // unnecessary. FlushFileBuffers(), the equivalent of sync() or - // fsync() on Unix, does a low-level flush to the disk, and we - // don't expose an API for this. + // Windows native mode; flushing is unnecessary. return true; } +/* + \internal + \since 5.1 +*/ +bool QFSFileEnginePrivate::nativeSyncToDisk() +{ + if (fh || fd != -1) { + // stdlib / stdio mode. No API available. + return false; + } + return FlushFileBuffers(fileHandle); +} + /* \internal */ -- cgit v1.2.3 From ad265c55beb596e28d6b28c16700795fa8555ee6 Mon Sep 17 00:00:00 2001 From: David Faure Date: Mon, 14 Jan 2013 09:48:17 +0100 Subject: Move QTemporaryFileEngine to private header This is needed by QSaveFile. Move QTemporaryFilePrivate to that header too, to avoid any confusion. Change-Id: I8dce8a4fb853a9823c49ec565867432331e748cd Reviewed-by: Thiago Macieira --- src/corelib/io/io.pri | 1 + src/corelib/io/qtemporaryfile.cpp | 55 ++------------------- src/corelib/io/qtemporaryfile_p.h | 101 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 50 deletions(-) create mode 100644 src/corelib/io/qtemporaryfile_p.h (limited to 'src') diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri index f57dcebe33..36c553acec 100644 --- a/src/corelib/io/io.pri +++ b/src/corelib/io/io.pri @@ -24,6 +24,7 @@ HEADERS += \ io/qtextstream.h \ io/qtemporarydir.h \ io/qtemporaryfile.h \ + io/qtemporaryfile_p.h \ io/qresource_p.h \ io/qresource_iterator_p.h \ io/qstandardpaths.h \ diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp index 161c64a73b..2f272e9a63 100644 --- a/src/corelib/io/qtemporaryfile.cpp +++ b/src/corelib/io/qtemporaryfile.cpp @@ -44,10 +44,9 @@ #ifndef QT_NO_TEMPORARYFILE #include "qplatformdefs.h" +#include "private/qtemporaryfile_p.h" #include "private/qfile_p.h" -#include "private/qfsfileengine_p.h" #include "private/qsystemerror_p.h" -#include "private/qfilesystemengine_p.h" #if !defined(Q_OS_WIN) #include "private/qcore_unix_p.h" // overrides QT_OPEN @@ -218,37 +217,6 @@ static bool createFileFromTemplate(NativeFileHandle &file, } //************* QTemporaryFileEngine -class QTemporaryFileEngine : public QFSFileEngine -{ - Q_DECLARE_PRIVATE(QFSFileEngine) -public: - QTemporaryFileEngine(const QString &file, bool fileIsTemplate = true) - : QFSFileEngine(), filePathIsTemplate(fileIsTemplate), - filePathWasTemplate(fileIsTemplate) - { - Q_D(QFSFileEngine); - d->fileEntry = QFileSystemEntry(file); - - if (!filePathIsTemplate) - QFSFileEngine::setFileName(file); - } - - ~QTemporaryFileEngine(); - - bool isReallyOpen(); - void setFileName(const QString &file); - void setFileTemplate(const QString &fileTemplate); - - bool open(QIODevice::OpenMode flags); - bool remove(); - bool rename(const QString &newName); - bool renameOverwrite(const QString &newName); - bool close(); - - bool filePathIsTemplate; - bool filePathWasTemplate; -}; - QTemporaryFileEngine::~QTemporaryFileEngine() { QFSFileEngine::close(); @@ -414,19 +382,6 @@ bool QTemporaryFileEngine::close() } //************* QTemporaryFilePrivate -class QTemporaryFilePrivate : public QFilePrivate -{ - Q_DECLARE_PUBLIC(QTemporaryFile) - -protected: - QTemporaryFilePrivate(); - ~QTemporaryFilePrivate(); - - QAbstractFileEngine *engine() const; - - bool autoRemove; - QString templateName; -}; QTemporaryFilePrivate::QTemporaryFilePrivate() : autoRemove(true) { @@ -447,7 +402,7 @@ QAbstractFileEngine *QTemporaryFilePrivate::engine() const return fileEngine; } -static QString defaultTemplateName() +QString QTemporaryFilePrivate::defaultTemplateName() { QString baseName; #if defined(QT_BUILD_CORE_LIB) @@ -513,7 +468,7 @@ QTemporaryFile::QTemporaryFile() : QFile(*new QTemporaryFilePrivate) { Q_D(QTemporaryFile); - d->templateName = defaultTemplateName(); + d->templateName = QTemporaryFilePrivate::defaultTemplateName(); } QTemporaryFile::QTemporaryFile(const QString &templateName) @@ -536,7 +491,7 @@ QTemporaryFile::QTemporaryFile() : QFile(*new QTemporaryFilePrivate, 0) { Q_D(QTemporaryFile); - d->templateName = defaultTemplateName(); + d->templateName = QTemporaryFilePrivate::defaultTemplateName(); } /*! @@ -572,7 +527,7 @@ QTemporaryFile::QTemporaryFile(QObject *parent) : QFile(*new QTemporaryFilePrivate, parent) { Q_D(QTemporaryFile); - d->templateName = defaultTemplateName(); + d->templateName = QTemporaryFilePrivate::defaultTemplateName(); } /*! diff --git a/src/corelib/io/qtemporaryfile_p.h b/src/corelib/io/qtemporaryfile_p.h new file mode 100644 index 0000000000..7aed729a1c --- /dev/null +++ b/src/corelib/io/qtemporaryfile_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEMPORARYFILE_P_H +#define QTEMPORARYFILE_P_H + +#include "private/qfsfileengine_p.h" +#include "private/qfilesystemengine_p.h" +#include "private/qfile_p.h" + +QT_BEGIN_NAMESPACE + +class QTemporaryFilePrivate : public QFilePrivate +{ + Q_DECLARE_PUBLIC(QTemporaryFile) + +protected: + QTemporaryFilePrivate(); + ~QTemporaryFilePrivate(); + + QAbstractFileEngine *engine() const; + + bool autoRemove; + QString templateName; + + static QString defaultTemplateName(); +}; + +class QTemporaryFileEngine : public QFSFileEngine +{ + Q_DECLARE_PRIVATE(QFSFileEngine) +public: + QTemporaryFileEngine(const QString &file, bool fileIsTemplate = true) + : QFSFileEngine(), filePathIsTemplate(fileIsTemplate), + filePathWasTemplate(fileIsTemplate) + { + Q_D(QFSFileEngine); + d->fileEntry = QFileSystemEntry(file); + + if (!filePathIsTemplate) + QFSFileEngine::setFileName(file); + } + + ~QTemporaryFileEngine(); + + bool isReallyOpen(); + void setFileName(const QString &file); + void setFileTemplate(const QString &fileTemplate); + + bool open(QIODevice::OpenMode flags); + bool remove(); + bool rename(const QString &newName); + bool renameOverwrite(const QString &newName); + bool close(); + + bool filePathIsTemplate; + bool filePathWasTemplate; +}; + +QT_END_NAMESPACE + +#endif /* QTEMPORARYFILE_P_H */ + -- cgit v1.2.3 From 327b2ba3b77e7a738ccfbe84c6ca5e9525010630 Mon Sep 17 00:00:00 2001 From: David Faure Date: Fri, 27 Jul 2012 14:17:38 +0200 Subject: Add class QDebugStateSaver for writing QDebug operators correctly Had to move QTextStreamPrivate to a private header, to be able to use its new internal Params struct from qdebug.cpp Change-Id: If28e25f27bbd04b1825a5eb3e2ef83ecad72e7b2 Reviewed-by: Olivier Goffart Reviewed-by: Thiago Macieira --- src/corelib/io/io.pri | 1 + src/corelib/io/qdebug.cpp | 73 ++++++++++++++ src/corelib/io/qdebug.h | 12 +++ src/corelib/io/qtextstream.cpp | 218 ++++++++++------------------------------- src/corelib/io/qtextstream.h | 1 + src/corelib/io/qtextstream_p.h | 185 ++++++++++++++++++++++++++++++++++ 6 files changed, 324 insertions(+), 166 deletions(-) create mode 100644 src/corelib/io/qtextstream_p.h (limited to 'src') diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri index 36c553acec..f1b24e30b2 100644 --- a/src/corelib/io/io.pri +++ b/src/corelib/io/io.pri @@ -22,6 +22,7 @@ HEADERS += \ io/qprocess.h \ io/qprocess_p.h \ io/qtextstream.h \ + io/qtextstream_p.h \ io/qtemporarydir.h \ io/qtemporaryfile.h \ io/qtemporaryfile_p.h \ diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp index 656f26b0fe..164e22dab2 100644 --- a/src/corelib/io/qdebug.cpp +++ b/src/corelib/io/qdebug.cpp @@ -47,6 +47,9 @@ #endif #include "qdebug.h" +#include + +QT_BEGIN_NAMESPACE // This file is needed to force compilation of QDebug into the kernel library. @@ -170,6 +173,8 @@ between writes. \since 5.0 + + \sa QDebugStateSaver */ /*! @@ -179,6 +184,8 @@ automatic insertion of spaces is disabled. \since 5.0 + + \sa QDebugStateSaver */ /*! @@ -321,3 +328,69 @@ \fn QDebug &QDebug::operator<<(QTextStreamManipulator m) \internal */ + +/*! + \class QDebugStateSaver + + \brief Convenience class for custom QDebug operators + + Saves the settings used by QDebug, and restores them upon destruction. + + The automatic insertion of spaces between writes is one of the settings + that QDebugStateSaver stores for the duration of the current block. + + The settings of the internal QTextStream are also saved and restored, + so that using << hex in a QDebug operator doesn't affect other QDebug + operators. + + \since 5.1 +*/ + +class QDebugStateSaverPrivate +{ +public: + QDebugStateSaverPrivate(QDebug &dbg) + : m_dbg(dbg), + m_spaces(dbg.autoInsertSpaces()), + m_streamParams(dbg.stream->ts.d_ptr->params) + { + } + void restoreState() + { + m_dbg.setAutoInsertSpaces(m_spaces); + m_dbg.stream->ts.d_ptr->params = m_streamParams; + } + + QDebug &m_dbg; + + // QDebug state + const bool m_spaces; + + // QTextStream state + const QTextStreamPrivate::Params m_streamParams; +}; + + +/*! + Creates a QDebugStateSaver instance, which saves the settings + currently used by \a dbg. + + \sa QDebug::setAutoInsertSpaces(), QDebug::autoInsertSpaces() +*/ +QDebugStateSaver::QDebugStateSaver(QDebug &dbg) + : d(new QDebugStateSaverPrivate(dbg)) +{ +} + +/*! + Destroyes a QDebugStateSaver instance, which restores the settings + used by \a dbg when the QDebugStateSaver instance was created. + + \sa QDebug::setAutoInsertSpaces(), QDebug::autoInsertSpaces() +*/ +QDebugStateSaver::~QDebugStateSaver() +{ + d->restoreState(); +} + +QT_END_NAMESPACE diff --git a/src/corelib/io/qdebug.h b/src/corelib/io/qdebug.h index 4c8f961ed8..9618dd5a2f 100644 --- a/src/corelib/io/qdebug.h +++ b/src/corelib/io/qdebug.h @@ -61,6 +61,7 @@ QT_BEGIN_NAMESPACE class Q_CORE_EXPORT QDebug { friend class QMessageLogger; + friend class QDebugStateSaverPrivate; struct Stream { Stream(QIODevice *device) : ts(device), ref(1), type(QtDebugMsg), space(true), message_output(false) {} Stream(QString *string) : ts(string, QIODevice::WriteOnly), ref(1), type(QtDebugMsg), space(true), message_output(false) {} @@ -132,6 +133,17 @@ public: Q_DECLARE_SHARED(QDebug) +class QDebugStateSaverPrivate; +class Q_CORE_EXPORT QDebugStateSaver +{ +public: + QDebugStateSaver(QDebug &dbg); + ~QDebugStateSaver(); +private: + Q_DISABLE_COPY(QDebugStateSaver) + QScopedPointer d; +}; + class QNoDebug { public: diff --git a/src/corelib/io/qtextstream.cpp b/src/corelib/io/qtextstream.cpp index 36de6a283c..8dd635dee8 100644 --- a/src/corelib/io/qtextstream.cpp +++ b/src/corelib/io/qtextstream.cpp @@ -226,12 +226,10 @@ static const int QTEXTSTREAM_BUFFERSIZE = 16384; */ #include "qtextstream.h" +#include "private/qtextstream_p.h" #include "qbuffer.h" #include "qfile.h" #include "qnumeric.h" -#ifndef QT_NO_TEXTCODEC -#include "qtextcodec.h" -#endif #ifndef Q_OS_WINCE #include #endif @@ -315,119 +313,7 @@ QT_END_NAMESPACE QT_BEGIN_NAMESPACE -#ifndef QT_NO_QOBJECT -class QDeviceClosedNotifier : public QObject -{ - Q_OBJECT -public: - inline QDeviceClosedNotifier() - { } - - inline void setupDevice(QTextStream *stream, QIODevice *device) - { - disconnect(); - if (device) - connect(device, SIGNAL(aboutToClose()), this, SLOT(flushStream())); - this->stream = stream; - } - -public Q_SLOTS: - inline void flushStream() { stream->flush(); } - -private: - QTextStream *stream; -}; -#endif - //------------------------------------------------------------------- -class QTextStreamPrivate -{ - Q_DECLARE_PUBLIC(QTextStream) -public: - QTextStreamPrivate(QTextStream *q_ptr); - ~QTextStreamPrivate(); - void reset(); - - // device - QIODevice *device; -#ifndef QT_NO_QOBJECT - QDeviceClosedNotifier deviceClosedNotifier; -#endif - bool deleteDevice; - - // string - QString *string; - int stringOffset; - QIODevice::OpenMode stringOpenMode; - -#ifndef QT_NO_TEXTCODEC - // codec - QTextCodec *codec; - QTextCodec::ConverterState readConverterState; - QTextCodec::ConverterState writeConverterState; - QTextCodec::ConverterState *readConverterSavedState; - bool autoDetectUnicode; -#endif - - // i/o - enum TokenDelimiter { - Space, - NotSpace, - EndOfLine - }; - - QString read(int maxlen); - bool scan(const QChar **ptr, int *tokenLength, - int maxlen, TokenDelimiter delimiter); - inline const QChar *readPtr() const; - inline void consumeLastToken(); - inline void consume(int nchars); - void saveConverterState(qint64 newPos); - void restoreToSavedConverterState(); - int lastTokenSize; - - // Return value type for getNumber() - enum NumberParsingStatus { - npsOk, - npsMissingDigit, - npsInvalidPrefix - }; - - inline bool getChar(QChar *ch); - inline void ungetChar(QChar ch); - NumberParsingStatus getNumber(qulonglong *l); - bool getReal(double *f); - - inline void write(const QString &data); - inline void putString(const QString &ch, bool number = false); - void putNumber(qulonglong number, bool negative); - - // buffers - bool fillReadBuffer(qint64 maxBytes = -1); - void resetReadBuffer(); - void flushWriteBuffer(); - QString writeBuffer; - QString readBuffer; - int readBufferOffset; - int readConverterSavedStateOffset; //the offset between readBufferStartDevicePos and that start of the buffer - qint64 readBufferStartDevicePos; - - // streaming parameters - int realNumberPrecision; - int integerBase; - int fieldWidth; - QChar padChar; - QTextStream::FieldAlignment fieldAlignment; - QTextStream::RealNumberNotation realNumberNotation; - QTextStream::NumberFlags numberFlags; - - // status - QTextStream::Status status; - - QLocale locale; - - QTextStream *q_ptr; -}; /*! \internal @@ -481,10 +367,7 @@ static void copyConverterStateHelper(QTextCodec::ConverterState *dest, } #endif -/*! - \internal -*/ -void QTextStreamPrivate::reset() +void QTextStreamPrivate::Params::reset() { realNumberPrecision = 6; integerBase = 0; @@ -493,6 +376,14 @@ void QTextStreamPrivate::reset() fieldAlignment = QTextStream::AlignRight; realNumberNotation = QTextStream::SmartNotation; numberFlags = 0; +} + +/*! + \internal +*/ +void QTextStreamPrivate::reset() +{ + params.reset(); device = 0; deleteDevice = false; @@ -985,15 +876,17 @@ inline void QTextStreamPrivate::putString(const QString &s, bool number) QString tmp = s; // handle padding - int padSize = fieldWidth - s.size(); + int padSize = params.fieldWidth - s.size(); if (padSize > 0) { - QString pad(padSize, padChar); - if (fieldAlignment == QTextStream::AlignLeft) { - tmp.append(QString(padSize, padChar)); - } else if (fieldAlignment == QTextStream::AlignRight - || fieldAlignment == QTextStream::AlignAccountingStyle) { - tmp.prepend(QString(padSize, padChar)); - if (fieldAlignment == QTextStream::AlignAccountingStyle && number) { + QString pad(padSize, params.padChar); + switch (params.fieldAlignment) { + case QTextStream::AlignLeft: + tmp.append(pad); + break; + case QTextStream::AlignRight: + case QTextStream::AlignAccountingStyle: + tmp.prepend(pad); + if (params.fieldAlignment == QTextStream::AlignAccountingStyle && number) { const QChar sign = s.size() > 0 ? s.at(0) : QChar(); if (sign == locale.negativeSign() || sign == locale.positiveSign()) { QChar *data = tmp.data(); @@ -1001,9 +894,11 @@ inline void QTextStreamPrivate::putString(const QString &s, bool number) data[0] = sign; } } - } else if (fieldAlignment == QTextStream::AlignCenter) { - tmp.prepend(QString(padSize/2, padChar)); - tmp.append(QString(padSize - padSize/2, padChar)); + break; + case QTextStream::AlignCenter: + tmp.prepend(QString(padSize/2, params.padChar)); + tmp.append(QString(padSize - padSize/2, params.padChar)); + break; } } @@ -1175,13 +1070,7 @@ void QTextStream::reset() { Q_D(QTextStream); - d->realNumberPrecision = 6; - d->integerBase = 0; - d->fieldWidth = 0; - d->padChar = QLatin1Char(' '); - d->fieldAlignment = QTextStream::AlignRight; - d->realNumberNotation = QTextStream::SmartNotation; - d->numberFlags = 0; + d->params.reset(); } /*! @@ -1400,7 +1289,7 @@ QString *QTextStream::string() const void QTextStream::setFieldAlignment(FieldAlignment mode) { Q_D(QTextStream); - d->fieldAlignment = mode; + d->params.fieldAlignment = mode; } /*! @@ -1411,7 +1300,7 @@ void QTextStream::setFieldAlignment(FieldAlignment mode) QTextStream::FieldAlignment QTextStream::fieldAlignment() const { Q_D(const QTextStream); - return d->fieldAlignment; + return d->params.fieldAlignment; } /*! @@ -1432,7 +1321,7 @@ QTextStream::FieldAlignment QTextStream::fieldAlignment() const void QTextStream::setPadChar(QChar ch) { Q_D(QTextStream); - d->padChar = ch; + d->params.padChar = ch; } /*! @@ -1443,7 +1332,7 @@ void QTextStream::setPadChar(QChar ch) QChar QTextStream::padChar() const { Q_D(const QTextStream); - return d->padChar; + return d->params.padChar; } /*! @@ -1461,7 +1350,7 @@ QChar QTextStream::padChar() const void QTextStream::setFieldWidth(int width) { Q_D(QTextStream); - d->fieldWidth = width; + d->params.fieldWidth = width; } /*! @@ -1472,7 +1361,7 @@ void QTextStream::setFieldWidth(int width) int QTextStream::fieldWidth() const { Q_D(const QTextStream); - return d->fieldWidth; + return d->params.fieldWidth; } /*! @@ -1486,7 +1375,7 @@ int QTextStream::fieldWidth() const void QTextStream::setNumberFlags(NumberFlags flags) { Q_D(QTextStream); - d->numberFlags = flags; + d->params.numberFlags = flags; } /*! @@ -1497,7 +1386,7 @@ void QTextStream::setNumberFlags(NumberFlags flags) QTextStream::NumberFlags QTextStream::numberFlags() const { Q_D(const QTextStream); - return d->numberFlags; + return d->params.numberFlags; } /*! @@ -1513,7 +1402,7 @@ QTextStream::NumberFlags QTextStream::numberFlags() const void QTextStream::setIntegerBase(int base) { Q_D(QTextStream); - d->integerBase = base; + d->params.integerBase = base; } /*! @@ -1525,7 +1414,7 @@ void QTextStream::setIntegerBase(int base) int QTextStream::integerBase() const { Q_D(const QTextStream); - return d->integerBase; + return d->params.integerBase; } /*! @@ -1539,7 +1428,7 @@ int QTextStream::integerBase() const void QTextStream::setRealNumberNotation(RealNumberNotation notation) { Q_D(QTextStream); - d->realNumberNotation = notation; + d->params.realNumberNotation = notation; } /*! @@ -1550,7 +1439,7 @@ void QTextStream::setRealNumberNotation(RealNumberNotation notation) QTextStream::RealNumberNotation QTextStream::realNumberNotation() const { Q_D(const QTextStream); - return d->realNumberNotation; + return d->params.realNumberNotation; } /*! @@ -1567,10 +1456,10 @@ void QTextStream::setRealNumberPrecision(int precision) Q_D(QTextStream); if (precision < 0) { qWarning("QTextStream::setRealNumberPrecision: Invalid precision (%d)", precision); - d->realNumberPrecision = 6; + d->params.realNumberPrecision = 6; return; } - d->realNumberPrecision = precision; + d->params.realNumberPrecision = precision; } /*! @@ -1582,7 +1471,7 @@ void QTextStream::setRealNumberPrecision(int precision) int QTextStream::realNumberPrecision() const { Q_D(const QTextStream); - return d->realNumberPrecision; + return d->params.realNumberPrecision; } /*! @@ -1722,7 +1611,7 @@ QTextStreamPrivate::NumberParsingStatus QTextStreamPrivate::getNumber(qulonglong consumeLastToken(); // detect int encoding - int base = integerBase; + int base = params.integerBase; if (base == 0) { QChar ch; if (!getChar(&ch)) @@ -2300,6 +2189,7 @@ void QTextStreamPrivate::putNumber(qulonglong number, bool negative) QString result; unsigned flags = 0; + const QTextStream::NumberFlags numberFlags = params.numberFlags; if (numberFlags & QTextStream::ShowBase) flags |= QLocalePrivate::ShowBase; if (numberFlags & QTextStream::ForceSign) @@ -2315,7 +2205,7 @@ void QTextStreamPrivate::putNumber(qulonglong number, bool negative) flags |= QLocalePrivate::ThousandsGroup; const QLocalePrivate *dd = locale.d; - int base = integerBase ? integerBase : 10; + int base = params.integerBase ? params.integerBase : 10; if (negative && base == 10) { result = dd->longLongToString(-static_cast(number), -1, base, -1, flags); @@ -2330,7 +2220,7 @@ void QTextStreamPrivate::putNumber(qulonglong number, bool negative) result = dd->unsLongLongToString(number, -1, base, -1, flags); // workaround for backward compatibility - in octal form with // ShowBase flag set zero should be written as '00' - if (number == 0 && base == 8 && numberFlags & QTextStream::ShowBase + if (number == 0 && base == 8 && params.numberFlags & QTextStream::ShowBase && result == QLatin1String("0")) { result.prepend(QLatin1Char('0')); } @@ -2524,7 +2414,7 @@ QTextStream &QTextStream::operator<<(double f) flags |= QLocalePrivate::Alternate; const QLocalePrivate *dd = d->locale.d; - QString num = dd->doubleToString(f, d->realNumberPrecision, form, -1, flags); + QString num = dd->doubleToString(f, d->params.realNumberPrecision, form, -1, flags); d->putString(num, true); return *this; } @@ -2605,13 +2495,13 @@ QTextStream &QTextStream::operator<<(const void *ptr) { Q_D(QTextStream); CHECK_VALID_STREAM(*this); - int oldBase = d->integerBase; - NumberFlags oldFlags = d->numberFlags; - d->integerBase = 16; - d->numberFlags |= ShowBase; + const int oldBase = d->params.integerBase; + const NumberFlags oldFlags = d->params.numberFlags; + d->params.integerBase = 16; + d->params.numberFlags |= ShowBase; d->putNumber(reinterpret_cast(ptr), false); - d->integerBase = oldBase; - d->numberFlags = oldFlags; + d->params.integerBase = oldBase; + d->params.numberFlags = oldFlags; return *this; } @@ -3130,7 +3020,3 @@ QLocale QTextStream::locale() const QT_END_NAMESPACE -#ifndef QT_NO_QOBJECT -#include "qtextstream.moc" -#endif - diff --git a/src/corelib/io/qtextstream.h b/src/corelib/io/qtextstream.h index cf19721bee..3a26c78be8 100644 --- a/src/corelib/io/qtextstream.h +++ b/src/corelib/io/qtextstream.h @@ -194,6 +194,7 @@ public: private: Q_DISABLE_COPY(QTextStream) + friend class QDebugStateSaverPrivate; QScopedPointer d_ptr; }; diff --git a/src/corelib/io/qtextstream_p.h b/src/corelib/io/qtextstream_p.h new file mode 100644 index 0000000000..d5d5288426 --- /dev/null +++ b/src/corelib/io/qtextstream_p.h @@ -0,0 +1,185 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEXTSTREAM_P_H +#define QTEXTSTREAM_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qtextstream.h" +#ifndef QT_NO_TEXTCODEC +#include "qtextcodec.h" +#endif + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_QOBJECT +class QDeviceClosedNotifier : public QObject +{ + Q_OBJECT +public: + inline QDeviceClosedNotifier() + { } + + inline void setupDevice(QTextStream *stream, QIODevice *device) + { + disconnect(); + if (device) + connect(device, SIGNAL(aboutToClose()), this, SLOT(flushStream())); + this->stream = stream; + } + +public Q_SLOTS: + inline void flushStream() { stream->flush(); } + +private: + QTextStream *stream; +}; +#endif + +class QTextStreamPrivate +{ + Q_DECLARE_PUBLIC(QTextStream) +public: + QTextStreamPrivate(QTextStream *q_ptr); + ~QTextStreamPrivate(); + void reset(); + + // device + QIODevice *device; +#ifndef QT_NO_QOBJECT + QDeviceClosedNotifier deviceClosedNotifier; +#endif + bool deleteDevice; + + // string + QString *string; + int stringOffset; + QIODevice::OpenMode stringOpenMode; + +#ifndef QT_NO_TEXTCODEC + // codec + QTextCodec *codec; + QTextCodec::ConverterState readConverterState; + QTextCodec::ConverterState writeConverterState; + QTextCodec::ConverterState *readConverterSavedState; + bool autoDetectUnicode; +#endif + + // i/o + enum TokenDelimiter { + Space, + NotSpace, + EndOfLine + }; + + QString read(int maxlen); + bool scan(const QChar **ptr, int *tokenLength, + int maxlen, TokenDelimiter delimiter); + inline const QChar *readPtr() const; + inline void consumeLastToken(); + inline void consume(int nchars); + void saveConverterState(qint64 newPos); + void restoreToSavedConverterState(); + int lastTokenSize; + + // Return value type for getNumber() + enum NumberParsingStatus { + npsOk, + npsMissingDigit, + npsInvalidPrefix + }; + + inline bool getChar(QChar *ch); + inline void ungetChar(QChar ch); + NumberParsingStatus getNumber(qulonglong *l); + bool getReal(double *f); + + inline void write(const QString &data); + inline void putString(const QString &ch, bool number = false); + void putNumber(qulonglong number, bool negative); + + // buffers + bool fillReadBuffer(qint64 maxBytes = -1); + void resetReadBuffer(); + void flushWriteBuffer(); + QString writeBuffer; + QString readBuffer; + int readBufferOffset; + int readConverterSavedStateOffset; //the offset between readBufferStartDevicePos and that start of the buffer + qint64 readBufferStartDevicePos; + + // streaming parameters + class Params + { + public: + void reset(); + + int realNumberPrecision; + int integerBase; + int fieldWidth; + QChar padChar; + QTextStream::FieldAlignment fieldAlignment; + QTextStream::RealNumberNotation realNumberNotation; + QTextStream::NumberFlags numberFlags; + }; + Params params; + + // status + QTextStream::Status status; + + QLocale locale; + + QTextStream *q_ptr; +}; + +QT_END_NAMESPACE + +#endif // QTEXTSTREAM_P_H -- cgit v1.2.3 From 6b9545a980f09d8fb034d930cfe67f6110357d0c Mon Sep 17 00:00:00 2001 From: David Faure Date: Sun, 15 Jul 2012 21:58:59 +0200 Subject: QUrl: methods for converting QStringList <-> QList This is a very common thing to do, e.g. in order to send urls via DBus. Change-Id: I277902460ee1ad6780446e862e86b3c2eb8c5315 Reviewed-by: Thiago Macieira --- src/corelib/io/qurl.cpp | 31 +++++++++++++++++++++++++++++++ src/corelib/io/qurl.h | 3 +++ 2 files changed, 34 insertions(+) (limited to 'src') diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 2a439b3a7c..22a0cfdbae 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -3764,6 +3764,37 @@ QString QUrl::errorString() const return msg; } +/*! + \since 5.1 + + Converts a list of \a urls into a list of QStrings, using toString(\a options). +*/ +QStringList QUrl::toStringList(const QList &urls, FormattingOptions options) +{ + QStringList lst; + lst.reserve(urls.size()); + foreach (const QUrl &url, urls) + lst.append(url.toString(options)); + return lst; + +} + +/*! + \since 5.1 + + Converts a list of strings representing \a urls into a list of urls, using QUrl(str, \a mode). + Note that this means all strings must be urls, not for instance local paths. +*/ +QList QUrl::fromStringList(const QStringList &urls, ParsingMode mode) +{ + QList lst; + lst.reserve(urls.size()); + foreach (const QString &str, urls) { + lst.append(QUrl(str, mode)); + } + return lst; +} + /*! \typedef QUrl::DataPtr \internal diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h index c45708cc1a..a9bedb77c3 100644 --- a/src/corelib/io/qurl.h +++ b/src/corelib/io/qurl.h @@ -322,6 +322,9 @@ public: static QString fromAce(const QByteArray &); static QByteArray toAce(const QString &); static QStringList idnWhitelist(); + static QStringList toStringList(const QList &uris, FormattingOptions options = FormattingOptions(PrettyDecoded)); + static QList fromStringList(const QStringList &uris, ParsingMode mode = TolerantMode); + static void setIdnWhitelist(const QStringList &); friend Q_CORE_EXPORT uint qHash(const QUrl &url, uint seed = 0) Q_DECL_NOTHROW; -- cgit v1.2.3 From dbfa6518890f4e6c4af6da92df45803ecfe0309a Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 21 Dec 2012 10:35:20 -0800 Subject: Doc: Update the info on the QSharedPointer internals Some of it still referred to classes that were cleaned up in Qt 5.0 Change-Id: Ief4ed4b4fce074884f755b0d18a526ac40ad1b0b Reviewed-by: Olivier Goffart --- src/corelib/tools/qsharedpointer.cpp | 55 ++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp index 5455904021..76f1cc69c4 100644 --- a/src/corelib/tools/qsharedpointer.cpp +++ b/src/corelib/tools/qsharedpointer.cpp @@ -136,23 +136,11 @@ \omit \secton1 QSharedPointer internals - QSharedPointer is in reality implemented by two ancestor classes: - QtSharedPointer::Basic and QtSharedPointer::ExternalRefCount. The reason - for having that split is now mostly legacy: in the beginning, - QSharedPointer was meant to support both internal reference counting and - external reference counting. - - QtSharedPointer::Basic implements the basic functionality that is shared - between internal- and external-reference counting. That is, it's mostly - the accessor functions into QSharedPointer. Those are all inherited by - QSharedPointer, which adds another level of shared functionality (the - constructors and assignment operators). The Basic class has one member - variable, which is the actual pointer being tracked. - - QtSharedPointer::ExternalRefCount implements the actual reference - counting and introduces the d-pointer for QSharedPointer. That d-pointer - itself is shared with other QSharedPointer objects as well as - QWeakPointer. + QSharedPointer has two "private" members: the pointer itself being tracked + and a d-pointer. Those members are private to the class, but QSharedPointer + is friends with QWeakPointer and other QSharedPointer with different + template arguments. (On some compilers, template friends are not supported, + so the members are technically public) The reason for keeping the pointer value itself outside the d-pointer is because of multiple inheritance needs. If you have two QSharedPointer @@ -178,17 +166,19 @@ QSharedObject instances that are attached to this Data. When the strong reference count decreases to zero, the object is deleted - (see below for information on custom deleters). The strong reference - count can also exceptionally be -1, indicating that there are no - QSharedPointers attached to an object, which is tracked too. The only - case where this is possible is that of QWeakPointers tracking a QObject. + (see below for information on custom deleters). The strong reference count + can also exceptionally be -1, indicating that there are no QSharedPointers + attached to an object, which is tracked too. The only case where this is + possible is that of QWeakPointers and QPointers tracking a QObject. Note + that QWeakPointers tracking a QObject is a deprecated feature as of Qt 5.0, + kept only for compatibility with Qt 4.x. The weak reference count controls the lifetime of the d-pointer itself. It can be thought of as an internal/intrusive reference count for ExternalRefCountData itself. This count is equal to the number of - QSharedPointers and QWeakPointers that are tracking this object. (In case - the object tracked derives from QObject, this number is increased by 1, - since QObjectPrivate tracks it too). + QSharedPointers and QWeakPointers that are tracking this object. In case + the object is a QObject being tracked by QPointer, this number is increased + by 1, since QObjectPrivate tracks it too. The third member is a pointer to the function that is used to delete the pointer being tracked. That happens when the destroy() function is called. @@ -199,18 +189,21 @@ \section3 QtSharedPointer::ExternalRefCountWithCustomDeleter - This class derives from ExternalRefCountData and is a - template class. As template parameters, it has the type of the pointer - being tracked (\tt T) and a \tt Deleter, which is anything. It adds two - fields to its parent class, matching those template parameters: a member - of type \tt Deleter and a member of type \tt T*. + This class derives from ExternalRefCountData and is a template class. As + template parameters, it has the type of the pointer being tracked (\tt T) + and a \tt Deleter, which is anything. It adds two fields to its parent + class, matching those template parameters: a member of type \tt Deleter and + a member of type \tt T*. Those members are actually inside a template + struct of type CustomDeleter, which is partially-specialized for normal + deletion. See below for more details on that. The purpose of this class is to store the pointer to be deleted and the deleter code along with the d-pointer. This allows the last strong reference to call any arbitrary function that disposes of the object. For example, this allows calling QObject::deleteLater() on a given object. - The pointer to the object is kept here to avoid the extra cost of keeping - the deleter in the generic case. + The pointer to the object is kept here because it needs to match the actual + deleter function's parameters, regardless of what template argument the + last QSharedPointer instance had. This class is never instantiated directly: the constructors and destructor are private and, in C++11, deleted. Only the create() function -- cgit v1.2.3 From f927efd77a8e75e330b3592996277ad6e6eb6a8d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 25 Oct 2012 12:38:13 -0700 Subject: Add support for Linux eventfd(7) in the UNIX event loop eventfd(7) uses less resources than a pipe, as it only needs to store a single 64-bit integer, as opposed to a full buffer. It was introduced first on Linux version 2.6.22 and glibc 2.7. However, both the configure-time test and the runtime usage require the use of EFD_CLOEXEC for thread-safety, so this code will be enabled only for Linux 2.6.27 and up as well as glibc 2.9 and up. Change-Id: Ic7e10b28d7b1d4ca24be614ed84055c4429a68e4 Reviewed-by: Robin Burchell Reviewed-by: Oswald Buddenhagen --- src/corelib/kernel/qeventdispatcher_unix.cpp | 37 +++++++++++++++++++++++++--- src/corelib/kernel/qeventdispatcher_unix_p.h | 3 +++ 2 files changed, 36 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qeventdispatcher_unix.cpp b/src/corelib/kernel/qeventdispatcher_unix.cpp index 995f5101cb..6408147567 100644 --- a/src/corelib/kernel/qeventdispatcher_unix.cpp +++ b/src/corelib/kernel/qeventdispatcher_unix.cpp @@ -56,6 +56,10 @@ #include #include +#ifndef QT_NO_EVENTFD +# include +#endif + // VxWorks doesn't correctly set the _POSIX_... options #if defined(Q_OS_VXWORKS) # if defined(_POSIX_MONOTONIC_CLOCK) && (_POSIX_MONOTONIC_CLOCK <= 0) @@ -127,6 +131,12 @@ QEventDispatcherUNIXPrivate::QEventDispatcherUNIXPrivate() } } #else +# ifndef QT_NO_EVENTFD + thread_pipe[0] = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); + if (thread_pipe[0] != -1) + thread_pipe[1] = -1; + else // fall through the next "if" +# endif if (qt_safe_pipe(thread_pipe, O_NONBLOCK) == -1) { perror("QEventDispatcherUNIXPrivate(): Unable to create thread pipe"); pipefail = true; @@ -155,7 +165,8 @@ QEventDispatcherUNIXPrivate::~QEventDispatcherUNIXPrivate() #else // cleanup the common parts of the event loop close(thread_pipe[0]); - close(thread_pipe[1]); + if (thread_pipe[1] != -1) + close(thread_pipe[1]); #endif // cleanup timers @@ -279,9 +290,18 @@ int QEventDispatcherUNIXPrivate::processThreadWakeUp(int nsel) ::read(thread_pipe[0], c, sizeof(c)); ::ioctl(thread_pipe[0], FIOFLUSH, 0); #else - char c[16]; - while (::read(thread_pipe[0], c, sizeof(c)) > 0) - ; +# ifndef QT_NO_EVENTFD + if (thread_pipe[1] == -1) { + // eventfd + eventfd_t value; + eventfd_read(thread_pipe[0], &value); + } else +# endif + { + char c[16]; + while (::read(thread_pipe[0], c, sizeof(c)) > 0) { + } + } #endif if (!wakeUps.testAndSetRelease(1, 0)) { // hopefully, this is dead code @@ -630,6 +650,15 @@ void QEventDispatcherUNIX::wakeUp() { Q_D(QEventDispatcherUNIX); if (d->wakeUps.testAndSetAcquire(0, 1)) { +#ifndef QT_NO_EVENTFD + if (d->thread_pipe[1] == -1) { + // eventfd + eventfd_t value = 1; + int ret; + EINTR_LOOP(ret, eventfd_write(d->thread_pipe[0], value)); + return; + } +#endif char c = 0; qt_safe_write( d->thread_pipe[1], &c, 1 ); } diff --git a/src/corelib/kernel/qeventdispatcher_unix_p.h b/src/corelib/kernel/qeventdispatcher_unix_p.h index 98ea19ced8..e96acf65af 100644 --- a/src/corelib/kernel/qeventdispatcher_unix_p.h +++ b/src/corelib/kernel/qeventdispatcher_unix_p.h @@ -148,6 +148,9 @@ public: virtual int processThreadWakeUp(int nsel); bool mainThread; + + // note for eventfd(7) support: + // if thread_pipe[1] is -1, then eventfd(7) is in use and is stored in thread_pipe[0] int thread_pipe[2]; // highest fd for all socket notifiers -- cgit v1.2.3 From 7818eaf2b1129061e1cbbaf3e91517397b135cdd Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Fri, 11 Jan 2013 11:38:39 +0100 Subject: Bump Qt version to 5.1.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6d372c933e48eeda921fe781b073bf4e05b31585 Reviewed-by: Jędrzej Nowacki Reviewed-by: David Faure (KDE) --- src/concurrent/doc/qtconcurrent.qdocconf | 10 +++++----- src/corelib/doc/qtcore.qdocconf | 10 +++++----- src/corelib/global/qglobal.h | 4 ++-- src/corelib/io/qdatastream.cpp | 3 ++- src/corelib/io/qdatastream.h | 5 +++-- src/dbus/doc/qtdbus.qdocconf | 2 +- src/gui/doc/qtgui.qdocconf | 10 +++++----- src/network/doc/qtnetwork.qdocconf | 10 +++++----- src/opengl/doc/qtopengl.qdocconf | 2 +- src/printsupport/doc/qtprintsupport.qdocconf | 10 +++++----- src/sql/doc/qtsql.qdocconf | 10 +++++----- src/testlib/doc/qttestlib.qdocconf | 10 +++++----- src/widgets/doc/qtwidgets.qdocconf | 10 +++++----- src/xml/doc/qtxml.qdocconf | 10 +++++----- 14 files changed, 54 insertions(+), 52 deletions(-) (limited to 'src') diff --git a/src/concurrent/doc/qtconcurrent.qdocconf b/src/concurrent/doc/qtconcurrent.qdocconf index 442f69372c..2b2886703c 100644 --- a/src/concurrent/doc/qtconcurrent.qdocconf +++ b/src/concurrent/doc/qtconcurrent.qdocconf @@ -3,21 +3,21 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtConcurrent description = Qt Concurrent Reference Documentation url = http://qt-project.org/doc/qtconcurrent -version = 5.0.1 +version = 5.1.0 examplesinstallpath = qtconcurrent qhp.projects = QtConcurrent qhp.QtConcurrent.file = qtconcurrent.qhp -qhp.QtConcurrent.namespace = org.qt-project.qtconcurrent.501 +qhp.QtConcurrent.namespace = org.qt-project.qtconcurrent.510 qhp.QtConcurrent.virtualFolder = qtconcurrent qhp.QtConcurrent.indexTitle = Qt Concurrent qhp.QtConcurrent.indexRoot = -qhp.QtConcurrent.filterAttributes = qtconcurrent 5.0.1 qtrefdoc -qhp.QtConcurrent.customFilters.Qt.name = QtConcurrent 5.0.1 -qhp.QtConcurrent.customFilters.Qt.filterAttributes = qtconcurrent 5.0.1 +qhp.QtConcurrent.filterAttributes = qtconcurrent 5.1.0 qtrefdoc +qhp.QtConcurrent.customFilters.Qt.name = QtConcurrent 5.1.0 +qhp.QtConcurrent.customFilters.Qt.filterAttributes = qtconcurrent 5.1.0 qhp.QtConcurrent.subprojects = classes qhp.QtConcurrent.subprojects.classes.title = C++ Classes diff --git a/src/corelib/doc/qtcore.qdocconf b/src/corelib/doc/qtcore.qdocconf index 61c9d2bc00..afd46dfaff 100644 --- a/src/corelib/doc/qtcore.qdocconf +++ b/src/corelib/doc/qtcore.qdocconf @@ -3,21 +3,21 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtCore description = Qt Core Reference Documentation url = http://qt-project.org/doc/qtcore -version = 5.0.1 +version = 5.1.0 examplesinstallpath = core qhp.projects = QtCore qhp.QtCore.file = qtcore.qhp -qhp.QtCore.namespace = org.qt-project.qtcore.501 +qhp.QtCore.namespace = org.qt-project.qtcore.510 qhp.QtCore.virtualFolder = qtcore qhp.QtCore.indexTitle = Qt Core qhp.QtCore.indexRoot = -qhp.QtCore.filterAttributes = qtcore 5.0.1 qtrefdoc -qhp.QtCore.customFilters.Qt.name = QtCore 5.0.1 -qhp.QtCore.customFilters.Qt.filterAttributes = qtcore 5.0.1 +qhp.QtCore.filterAttributes = qtcore 5.1.0 qtrefdoc +qhp.QtCore.customFilters.Qt.name = QtCore 5.1.0 +qhp.QtCore.customFilters.Qt.filterAttributes = qtcore 5.1.0 qhp.QtCore.subprojects = classes qhp.QtCore.subprojects.classes.title = C++ Classes qhp.QtCore.subprojects.classes.indexTitle = Qt Core C++ Classes diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 48cc477d51..03cd3dc591 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -45,11 +45,11 @@ #include -#define QT_VERSION_STR "5.0.1" +#define QT_VERSION_STR "5.1.0" /* QT_VERSION is (major << 16) + (minor << 8) + patch. */ -#define QT_VERSION 0x050001 +#define QT_VERSION 0x050100 /* can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) */ diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp index 5e5e155534..b0766e15b3 100644 --- a/src/corelib/io/qdatastream.cpp +++ b/src/corelib/io/qdatastream.cpp @@ -251,7 +251,7 @@ QT_BEGIN_NAMESPACE return retVal; enum { - DefaultStreamVersion = QDataStream::Qt_5_0 + DefaultStreamVersion = QDataStream::Qt_5_1 }; /*! @@ -539,6 +539,7 @@ void QDataStream::setByteOrder(ByteOrder bo) \value Qt_4_8 Same as Qt_4_6. \value Qt_4_9 Same as Qt_4_6. \value Qt_5_0 Version 13 (Qt 5.0) + \value Qt_5_1 Same as Qt_5_0. \sa setVersion(), version() */ diff --git a/src/corelib/io/qdatastream.h b/src/corelib/io/qdatastream.h index 89538a5fcf..3fc4808ec1 100644 --- a/src/corelib/io/qdatastream.h +++ b/src/corelib/io/qdatastream.h @@ -87,8 +87,9 @@ public: Qt_4_7 = Qt_4_6, Qt_4_8 = Qt_4_7, Qt_4_9 = Qt_4_8, - Qt_5_0 = 13 -#if QT_VERSION >= 0x050100 + Qt_5_0 = 13, + Qt_5_1 = Qt_5_0 +#if QT_VERSION >= 0x050200 #error Add the datastream version for this Qt version #endif }; diff --git a/src/dbus/doc/qtdbus.qdocconf b/src/dbus/doc/qtdbus.qdocconf index 7a58dada63..1ff4c0d6c7 100644 --- a/src/dbus/doc/qtdbus.qdocconf +++ b/src/dbus/doc/qtdbus.qdocconf @@ -36,7 +36,7 @@ qhp.qtdbus.file = qtdbus.qhp # Namespace for the output file. This namespace is used to distinguish between # different documentation files in Creator/Assistant. -qhp.qtdbus.namespace = org.qt-project.qtdbus.501 +qhp.qtdbus.namespace = org.qt-project.qtdbus.510 # Title for the package, will be the main title for the package in # Assistant/Creator. diff --git a/src/gui/doc/qtgui.qdocconf b/src/gui/doc/qtgui.qdocconf index a46aa9b3d1..469aa00472 100644 --- a/src/gui/doc/qtgui.qdocconf +++ b/src/gui/doc/qtgui.qdocconf @@ -3,21 +3,21 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtGui description = Qt GUI Reference Documentation url = http://qt-project.org/doc/qtgui -version = 5.0.1 +version = 5.1.0 examplesinstallpath = gui qhp.projects = QtGui qhp.QtGui.file = qtgui.qhp -qhp.QtGui.namespace = org.qt-project.qtgui.501 +qhp.QtGui.namespace = org.qt-project.qtgui.510 qhp.QtGui.virtualFolder = qtgui qhp.QtGui.indexTitle = Qt GUI qhp.QtGui.indexRoot = -qhp.QtGui.filterAttributes = qtgui 5.0.1 qtrefdoc -qhp.QtGui.customFilters.Qt.name = Qtgui 5.0.1 -qhp.QtGui.customFilters.Qt.filterAttributes = qtgui 5.0.1 +qhp.QtGui.filterAttributes = qtgui 5.1.0 qtrefdoc +qhp.QtGui.customFilters.Qt.name = Qtgui 5.1.0 +qhp.QtGui.customFilters.Qt.filterAttributes = qtgui 5.1.0 qhp.QtGui.subprojects = classes qhp.QtGui.subprojects.classes.title = C++ Classes diff --git a/src/network/doc/qtnetwork.qdocconf b/src/network/doc/qtnetwork.qdocconf index 702338e224..496dda967b 100644 --- a/src/network/doc/qtnetwork.qdocconf +++ b/src/network/doc/qtnetwork.qdocconf @@ -3,21 +3,21 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtNetwork description = Qt Network Reference Documentation url = http://qt-project.org/doc/qtnetwork -version = 5.0.1 +version = 5.1.0 examplesinstallpath = network qhp.projects = QtNetwork qhp.QtNetwork.file = qtnetwork.qhp -qhp.QtNetwork.namespace = org.qt-project.qtnetwork.501 +qhp.QtNetwork.namespace = org.qt-project.qtnetwork.510 qhp.QtNetwork.virtualFolder = qtnetwork qhp.QtNetwork.indexTitle = Qt Network qhp.QtNetwork.indexRoot = -qhp.QtNetwork.filterAttributes = qtnetwork 5.0.1 qtrefdoc -qhp.QtNetwork.customFilters.Qt.name = QtNetwork 5.0.1 -qhp.QtNetwork.customFilters.Qt.filterAttributes = qtnetwork 5.0.1 +qhp.QtNetwork.filterAttributes = qtnetwork 5.1.0 qtrefdoc +qhp.QtNetwork.customFilters.Qt.name = QtNetwork 5.1.0 +qhp.QtNetwork.customFilters.Qt.filterAttributes = qtnetwork 5.1.0 qhp.QtNetwork.subprojects = classes qhp.QtNetwork.subprojects.classes.title = C++ Classes diff --git a/src/opengl/doc/qtopengl.qdocconf b/src/opengl/doc/qtopengl.qdocconf index 131fdb8968..0ccc25ab49 100644 --- a/src/opengl/doc/qtopengl.qdocconf +++ b/src/opengl/doc/qtopengl.qdocconf @@ -39,7 +39,7 @@ qhp.qtopengl.file = qtopengl.qhp # Namespace for the output file. This namespace is used to distinguish between # different documentation files in Creator/Assistant. -qhp.qtopengl.namespace = org.qt-project.qtopengl.501 +qhp.qtopengl.namespace = org.qt-project.qtopengl.510 # Title for the package, will be the main title for the package in # Assistant/Creator. diff --git a/src/printsupport/doc/qtprintsupport.qdocconf b/src/printsupport/doc/qtprintsupport.qdocconf index 1a4d37ae49..25317d4773 100644 --- a/src/printsupport/doc/qtprintsupport.qdocconf +++ b/src/printsupport/doc/qtprintsupport.qdocconf @@ -3,21 +3,21 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtPrintSupport description = Qt Print Support Reference Documentation url = http://qt-project.org/doc/qtprintsupport -version = 5.0.1 +version = 5.1.0 examplesinstallpath = printsupport qhp.projects = QtPrintSupport qhp.QtPrintSupport.file = qtprintsupport.qhp -qhp.QtPrintSupport.namespace = org.qt-project.qtprintsupport.501 +qhp.QtPrintSupport.namespace = org.qt-project.qtprintsupport.510 qhp.QtPrintSupport.virtualFolder = qtprintsupport qhp.QtPrintSupport.indexTitle = Qt Print Support qhp.QtPrintSupport.indexRoot = -qhp.QtPrintSupport.filterAttributes = qtprintsupport 5.0.1 qtrefdoc -qhp.QtPrintSupport.customFilters.Qt.name = QtPrintSupport 5.0.1 -qhp.QtPrintSupport.customFilters.Qt.filterAttributes = qtprintsupport 5.0.1 +qhp.QtPrintSupport.filterAttributes = qtprintsupport 5.1.0 qtrefdoc +qhp.QtPrintSupport.customFilters.Qt.name = QtPrintSupport 5.1.0 +qhp.QtPrintSupport.customFilters.Qt.filterAttributes = qtprintsupport 5.1.0 qhp.QtPrintSupport.subprojects = classes qhp.QtPrintSupport.subprojects.classes.title = C++ Classes diff --git a/src/sql/doc/qtsql.qdocconf b/src/sql/doc/qtsql.qdocconf index 6c5af37de8..19dd9eae1e 100644 --- a/src/sql/doc/qtsql.qdocconf +++ b/src/sql/doc/qtsql.qdocconf @@ -3,21 +3,21 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtSql description = Qt SQL Reference Documentation url = http://qt-project.org/doc/qtsql -version = 5.0.1 +version = 5.1.0 examplesinstallpath = sql qhp.projects = QtSql qhp.QtSql.file = qtsql.qhp -qhp.QtSql.namespace = org.qt-project.qtsql.501 +qhp.QtSql.namespace = org.qt-project.qtsql.510 qhp.QtSql.virtualFolder = qtsql qhp.QtSql.indexTitle = Qt SQL qhp.QtSql.indexRoot = -qhp.QtSql.filterAttributes = qtsql 5.0.1 qtrefdoc -qhp.QtSql.customFilters.Qt.name = QtSql 5.0.1 -qhp.QtSql.customFilters.Qt.filterAttributes = qtsql 5.0.1 +qhp.QtSql.filterAttributes = qtsql 5.1.0 qtrefdoc +qhp.QtSql.customFilters.Qt.name = QtSql 5.1.0 +qhp.QtSql.customFilters.Qt.filterAttributes = qtsql 5.1.0 qhp.QtSql.subprojects = classes qhp.QtSql.subprojects.classes.title = C++ Classes diff --git a/src/testlib/doc/qttestlib.qdocconf b/src/testlib/doc/qttestlib.qdocconf index 2a2a1e4ea0..1f0c35c389 100644 --- a/src/testlib/doc/qttestlib.qdocconf +++ b/src/testlib/doc/qttestlib.qdocconf @@ -3,21 +3,21 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtTestLib description = Qt Test Reference Documentation url = http://qt-project.org/doc/qttestlib -version = 5.0.1 +version = 5.1.0 examplesinstallpath = testlib qhp.projects = QtTestLib qhp.QtTestLib.file = qttestlib.qhp -qhp.QtTestLib.namespace = org.qt-project.qttest.501 +qhp.QtTestLib.namespace = org.qt-project.qttest.510 qhp.QtTestLib.virtualFolder = qttest qhp.QtTestLib.indexTitle = Qt Test qhp.QtTestLib.indexRoot = -qhp.QtTestLib.filterAttributes = qttestlib 5.0.1 qtrefdoc -qhp.QtTestLib.customFilters.Qt.name = QtTestLib 5.0.1 -qhp.QtTestLib.customFilters.Qt.filterAttributes = qttest 5.0.1 +qhp.QtTestLib.filterAttributes = qttestlib 5.1.0 qtrefdoc +qhp.QtTestLib.customFilters.Qt.name = QtTestLib 5.1.0 +qhp.QtTestLib.customFilters.Qt.filterAttributes = qttest 5.1.0 qhp.QtTestLib.subprojects = classes qhp.QtTestLib.subprojects.classes.title = C++ Classes diff --git a/src/widgets/doc/qtwidgets.qdocconf b/src/widgets/doc/qtwidgets.qdocconf index 062adc7f7c..2cd6887f83 100644 --- a/src/widgets/doc/qtwidgets.qdocconf +++ b/src/widgets/doc/qtwidgets.qdocconf @@ -3,21 +3,21 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtWidgets description = Qt Widgets Reference Documentation url = http://qt-project.org/doc/qtwidgets -version = 5.0.1 +version = 5.1.0 examplesinstallpath = widgets qhp.projects = QtWidgets qhp.QtWidgets.file = qtwidgets.qhp -qhp.QtWidgets.namespace = org.qt-project.qtwidgets.501 +qhp.QtWidgets.namespace = org.qt-project.qtwidgets.510 qhp.QtWidgets.virtualFolder = qtwidgets qhp.QtWidgets.indexTitle = Qt Widgets qhp.QtWidgets.indexRoot = -qhp.QtWidgets.filterAttributes = qtwidgets 5.0.1 qtrefdoc -qhp.QtWidgets.customFilters.Qt.name = QtWidgets 5.0.1 -qhp.QtWidgets.customFilters.Qt.filterAttributes = qtwidgets 5.0.1 +qhp.QtWidgets.filterAttributes = qtwidgets 5.1.0 qtrefdoc +qhp.QtWidgets.customFilters.Qt.name = QtWidgets 5.1.0 +qhp.QtWidgets.customFilters.Qt.filterAttributes = qtwidgets 5.1.0 qhp.QtWidgets.subprojects = classes qhp.QtWidgets.subprojects.classes.title = C++ Classes diff --git a/src/xml/doc/qtxml.qdocconf b/src/xml/doc/qtxml.qdocconf index bf77059a02..028af1bf76 100644 --- a/src/xml/doc/qtxml.qdocconf +++ b/src/xml/doc/qtxml.qdocconf @@ -3,21 +3,21 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtXml description = Qt XML Reference Documentation url = http://qt-project.org/doc/qtxml -version = 5.0.1 +version = 5.1.0 examplesinstallpath = xml qhp.projects = QtXml qhp.QtXml.file = qtxml.qhp -qhp.QtXml.namespace = org.qt-project.qtxml.501 +qhp.QtXml.namespace = org.qt-project.qtxml.510 qhp.QtXml.virtualFolder = qtxml qhp.QtXml.indexTitle = Qt XML qhp.QtXml.indexRoot = -qhp.QtXml.filterAttributes = qtxml 5.0.1 qtrefdoc -qhp.QtXml.customFilters.Qt.name = QtXml 5.0.1 -qhp.QtXml.customFilters.Qt.filterAttributes = qtxml 5.0.1 +qhp.QtXml.filterAttributes = qtxml 5.1.0 qtrefdoc +qhp.QtXml.customFilters.Qt.name = QtXml 5.1.0 +qhp.QtXml.customFilters.Qt.filterAttributes = qtxml 5.1.0 qhp.QtXml.subprojects = classes qhp.QtXml.subprojects.classes.title = C++ Classes -- cgit v1.2.3 From 3a1f1aecf9b4ef05fd162cd60e06214dc28922b6 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 15 Jan 2013 10:48:37 +0100 Subject: QStyleAnimation: remove obsolete workaround for threaded rendering This is a partial revert of 7abf623. The desktop components have been fixed to call QStyle in the main GUI thread. Change-Id: Ifd8364269b7d2e350f34647c128ff2fbde70afd6 Reviewed-by: Jens Bache-Wiig --- src/widgets/styles/qstyleanimation.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qstyleanimation.cpp b/src/widgets/styles/qstyleanimation.cpp index 9ddcbcc511..64cb23ca6d 100644 --- a/src/widgets/styles/qstyleanimation.cpp +++ b/src/widgets/styles/qstyleanimation.cpp @@ -46,13 +46,9 @@ QT_BEGIN_NAMESPACE -QStyleAnimation::QStyleAnimation(QObject *target) : QAbstractAnimation(), +QStyleAnimation::QStyleAnimation(QObject *target) : QAbstractAnimation(target), _delay(0), _duration(-1), _startTime(QTime::currentTime()) { - if (target) { - moveToThread(target->thread()); - setParent(target); - } connect(this, SIGNAL(finished()), SLOT(deleteLater())); } -- cgit v1.2.3 From d147285d644157bc12487584578b5389b56eea31 Mon Sep 17 00:00:00 2001 From: David Faure Date: Mon, 14 Jan 2013 12:58:31 +0100 Subject: Add Q_COREAPP_STARTUP_FUNCTION macro. This is necessary for initializing things in a library, which require a QCoreApplication instance (unlike Q_CONSTRUCTOR_FUNCTION, which runs before that). Example use cases: KCrash (segv handler), and KCheckAccelerators (debugging tool triggered by magic key combination). Change-Id: I5f4c4699dd4d21aea72b007989ba57467e86ed10 Reviewed-by: Olivier Goffart Reviewed-by: Thiago Macieira --- .../code/src_corelib_kernel_qcoreapplication.cpp | 7 +++ src/corelib/kernel/qcoreapplication.cpp | 65 ++++++++++++++++++++++ src/corelib/kernel/qcoreapplication.h | 8 +++ 3 files changed, 80 insertions(+) (limited to 'src') diff --git a/src/corelib/doc/snippets/code/src_corelib_kernel_qcoreapplication.cpp b/src/corelib/doc/snippets/code/src_corelib_kernel_qcoreapplication.cpp index e677797323..6029c0e4ec 100644 --- a/src/corelib/doc/snippets/code/src_corelib_kernel_qcoreapplication.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_kernel_qcoreapplication.cpp @@ -57,7 +57,14 @@ foreach (const QString &path, app.libraryPaths()) //! [3] +// Called once QCoreApplication exists +static void preRoutineMyDebugTool() +{ + MyDebugTool* tool = new MyDebugTool(QCoreApplication::instance()); + QCoreApplication::instance()->installEventFilter(tool); +} +Q_COREAPP_STARTUP_FUNCTION(preRoutineMyDebugTool) //! [3] diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 8ede244145..c9f973b52f 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -194,8 +194,32 @@ extern "C" void Q_CORE_EXPORT qt_startup_hook() { } +typedef QList QStartUpFuncList; +Q_GLOBAL_STATIC(QStartUpFuncList, preRList) typedef QList QVFuncList; Q_GLOBAL_STATIC(QVFuncList, postRList) +static QBasicMutex globalPreRoutinesMutex; + +/*! + \internal + + Adds a global routine that will be called from the QCoreApplication + constructor. The public API is Q_COREAPP_STARTUP_FUNCTION. +*/ +void qAddPreRoutine(QtStartUpFunction p) +{ + QStartUpFuncList *list = preRList(); + if (!list) + return; + // Due to C++11 parallel dynamic initialization, this can be called + // from multiple threads. +#ifndef QT_NO_THREAD + QMutexLocker locker(&globalPreRoutinesMutex); +#endif + if (QCoreApplication::instance()) + p(); + list->prepend(p); // in case QCoreApplication is re-created, see qt_call_pre_routines +} void qAddPostRoutine(QtCleanUpFunction p) { @@ -213,6 +237,21 @@ void qRemovePostRoutine(QtCleanUpFunction p) list->removeAll(p); } +static void qt_call_pre_routines() +{ + QStartUpFuncList *list = preRList(); + if (!list) + return; +#ifndef QT_NO_THREAD + QMutexLocker locker(&globalPreRoutinesMutex); +#endif + // Unlike qt_call_post_routines, we don't empty the list, because + // Q_COREAPP_STARTUP_FUNCTION is a macro, so the user expects + // the function to be executed every time QCoreApplication is created. + for (int i = 0; i < list->count(); ++i) + list->at(i)(); +} + void Q_CORE_EXPORT qt_call_post_routines() { QVFuncList *list = 0; @@ -637,6 +676,7 @@ void QCoreApplication::init() d->processCommandLineArguments(); + qt_call_pre_routines(); qt_startup_hook(); } @@ -2324,6 +2364,31 @@ void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatc mainThread->setEventDispatcher(eventDispatcher); } +/*! + \macro Q_COREAPP_STARTUP_FUNCTION(QtStartUpFunction ptr) + \since 5.1 + \relates QCoreApplication + \reentrant + + Adds a global function that will be called from the QCoreApplication + constructor. This macro is normally used to initialize libraries + for program-wide functionality, without requiring the application to + call into the library for initialization. + + The function specified by \a ptr should take no arguments and should + return nothing. For example: + + \snippet code/src_corelib_kernel_qcoreapplication.cpp 3 + + Note that the startup function will run at the end of the QCoreApplication constructor, + before any GUI initialization. If GUI code is required in the function, + use a timer (or a queued invocation) to perform the initialization later on, + from the event loop. + + If QCoreApplication is deleted and another QCoreApplication is created, + the startup function will be invoked again. +*/ + /*! \fn void qAddPostRoutine(QtCleanUpFunction ptr) \relates QCoreApplication diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h index 185aea53d1..0dfad6f23e 100644 --- a/src/corelib/kernel/qcoreapplication.h +++ b/src/corelib/kernel/qcoreapplication.h @@ -220,12 +220,20 @@ public: \ { return QCoreApplication::translate(#context, sourceText, disambiguation, n); } \ private: +typedef void (*QtStartUpFunction)(); typedef void (*QtCleanUpFunction)(); +Q_CORE_EXPORT void qAddPreRoutine(QtStartUpFunction); Q_CORE_EXPORT void qAddPostRoutine(QtCleanUpFunction); Q_CORE_EXPORT void qRemovePostRoutine(QtCleanUpFunction); Q_CORE_EXPORT QString qAppName(); // get application name +#define Q_COREAPP_STARTUP_FUNCTION(AFUNC) \ + static void AFUNC ## _ctor_function() { \ + qAddPreRoutine(AFUNC); \ + } \ + Q_CONSTRUCTOR_FUNCTION(AFUNC ## _ctor_function) + #if defined(Q_OS_WIN) && !defined(QT_NO_DEBUG_STREAM) Q_CORE_EXPORT QString decodeMSG(const MSG &); Q_CORE_EXPORT QDebug operator<<(QDebug, const MSG &); -- cgit v1.2.3 From 1161a8a62907796ea45b1877bec31e66aeef77f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 15 Jan 2013 14:09:18 +0100 Subject: CoreText: Add support for providing scaled glyphs to the glyph-cache Useful for not having to fall back to QPainterPath drawing when using the raster engine with a retina screen (which has a 2x scale). Change-Id: I0a9f754d31b0ecd8e8daf7a01331d19716bab680 Reviewed-by: Gunnar Sletta --- .../fontdatabases/mac/qfontengine_coretext.mm | 12 ++++++++++-- .../fontdatabases/mac/qfontengine_coretext_p.h | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm index ace4c982fd..961b28961c 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm @@ -508,7 +508,15 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition QImage QCoreTextFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition) { - QImage im = imageForGlyph(glyph, subPixelPosition, false, QTransform()); + return alphaMapForGlyph(glyph, subPixelPosition, QTransform()); +} + +QImage QCoreTextFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &x) +{ + if (x.type() > QTransform::TxScale) + return QFontEngine::alphaMapForGlyph(glyph, subPixelPosition, x); + + QImage im = imageForGlyph(glyph, subPixelPosition, false, x); QImage indexed(im.width(), im.height(), QImage::Format_Indexed8); QVector colors(256); @@ -602,7 +610,7 @@ QFontEngine *QCoreTextFontEngine::cloneWithSize(qreal pixelSize) const bool QCoreTextFontEngine::supportsTransformation(const QTransform &transform) const { - return transform.type() <= QTransform::TxTranslate; + return transform.type() <= QTransform::TxScale; } QT_END_NAMESPACE diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h index bd52234f41..b4e94fe889 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h @@ -98,6 +98,7 @@ public: virtual bool getSfntTableData(uint /*tag*/, uchar * /*buffer*/, uint * /*length*/) const; virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics); virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition); + virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &t); virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t); virtual qreal minRightBearing() const; virtual qreal minLeftBearing() const; -- cgit v1.2.3 From 5d2bb24cc90194a3458f8741e30ae7afe0b45f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Boya=20Garc=C3=ADa?= Date: Tue, 15 Jan 2013 05:58:49 +0100 Subject: Fixed dead keys on MS Windows Since Qt4, there is a bug which causes Qt to drop dead key modifiers (like graves and acutes) if the user types enough fast on MS Windows. This happens because of an extrange behavior of Windows, which drops dead keys on ToUnicode() calls. This patch tries to workaround that. Task-number: QTBUG-8764 Task-number: QTBUG-10032 Change-Id: Ifdde25817743194fd5c0b7533c27f46a7a108ca4 Reviewed-by: Friedemann.Kleint@digia.com Reviewed-by: oliver.wolff@digia.com Reviewed-by: marc.mutz@kdab.com Reviewed-by: bjoern.breitmeyer@kdab.com Reviewed-by: Friedemann Kleint Reviewed-by: Oliver Wolff --- src/plugins/platforms/windows/qwindowskeymapper.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp index 5a11aee802..f64593badc 100644 --- a/src/plugins/platforms/windows/qwindowskeymapper.cpp +++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp @@ -856,9 +856,15 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, const MSG &ms if (isNumpad && (nModifiers & AltAny)) { code = winceKeyBend(msg.wParam); } else if (!isDeadKey) { - unsigned char kbdBuffer[256]; // Will hold the complete keyboard state - GetKeyboardState(kbdBuffer); - code = toKeyOrUnicode(msg.wParam, scancode, kbdBuffer); + // QTBUG-8764, QTBUG-10032 + // Can't call toKeyOrUnicode because that would call ToUnicode, and, if a dead key + // is pressed at the moment, Windows would NOT use it to compose a character for the next + // WM_CHAR event. + + // Instead, use MapVirtualKey, which will provide adequate values. + code = MapVirtualKey(msg.wParam, MAPVK_VK_TO_CHAR); + if (code < 0x20 || code == 0x7f) // The same logic as in toKeyOrUnicode() + code = winceKeyBend(msg.wParam); } // Invert state logic: -- cgit v1.2.3 From e993df877131cfafbf1a3578dbef233a3041a82f Mon Sep 17 00:00:00 2001 From: David Faure Date: Thu, 27 Dec 2012 07:42:27 -0500 Subject: Add class QSaveFile. This QIODevice uses a temporary file for writing, so that in case of write errors, the writing operation is canceled, without losing any existing file. It also avoids having a partially-written file visible by other processes, at the final destination. Change-Id: I9482df45751cb890b1b6f1382ec2eea3eb980627 Reviewed-by: Thiago Macieira --- src/corelib/io/io.pri | 2 + src/corelib/io/qsavefile.cpp | 316 +++++++++++++++++++++++++++++++++++++++++++ src/corelib/io/qsavefile.h | 94 +++++++++++++ src/corelib/io/qsavefile_p.h | 75 ++++++++++ 4 files changed, 487 insertions(+) create mode 100644 src/corelib/io/qsavefile.cpp create mode 100644 src/corelib/io/qsavefile.h create mode 100644 src/corelib/io/qsavefile_p.h (limited to 'src') diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri index f1b24e30b2..e0364a1460 100644 --- a/src/corelib/io/io.pri +++ b/src/corelib/io/io.pri @@ -28,6 +28,7 @@ HEADERS += \ io/qtemporaryfile_p.h \ io/qresource_p.h \ io/qresource_iterator_p.h \ + io/qsavefile.h \ io/qstandardpaths.h \ io/qurl.h \ io/qurl_p.h \ @@ -67,6 +68,7 @@ SOURCES += \ io/qtemporaryfile.cpp \ io/qresource.cpp \ io/qresource_iterator.cpp \ + io/qsavefile.cpp \ io/qstandardpaths.cpp \ io/qurl.cpp \ io/qurlidna.cpp \ diff --git a/src/corelib/io/qsavefile.cpp b/src/corelib/io/qsavefile.cpp new file mode 100644 index 0000000000..fee6a4c4d8 --- /dev/null +++ b/src/corelib/io/qsavefile.cpp @@ -0,0 +1,316 @@ +/**************************************************************************** +** +** Copyright (C) 2012 David Faure +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qplatformdefs.h" +#include "qsavefile.h" +#include "private/qsavefile_p.h" +#include "qfileinfo.h" +#include "qabstractfileengine_p.h" +#include "qdebug.h" +#include "qtemporaryfile.h" +#include "private/qiodevice_p.h" +#include "private/qtemporaryfile_p.h" + +QT_BEGIN_NAMESPACE + +QSaveFilePrivate::QSaveFilePrivate() + : writeError(QFileDevice::NoError) +{ +} + +QSaveFilePrivate::~QSaveFilePrivate() +{ +} + +/*! + \class QSaveFile + \inmodule QtCore + \brief The QSaveFile class provides an interface for safely writing to files. + + \ingroup io + + \reentrant + + \since 5.1 + + QSaveFile is an I/O device for writing text and binary files, without losing + existing data if the writing operation fails. + + While writing, the contents will be written to a temporary file, and if + no error happened, commit() will move it to the final file. This ensures that + no data at the final file is lost in case an error happens while writing, + and no partially-written file is ever present at the final location. Always + use QSaveFile when saving entire documents to disk. + + QSaveFile automatically detects errors while writing, such as the full partition + situation, where write() cannot write all the bytes. It will remember that + an error happened, and will discard the temporary file in commit(). + + Much like with QFile, the file is opened with open(). Data is usually read + and written using QDataStream or QTextStream, but you can also call the + QIODevice-inherited functions read(), readLine(), readAll(), write(). + + Unlike QFile, calling close() is not allowed. commit() replaces it. If commit() + was not called and the QSaveFile instance is destroyed, the temporary file is + discarded. + + To abort saving due to an application error, call cancelWriting(), so that + even a call to commit() later on will not save. + + \sa QTextStream, QDataStream, QFileInfo, QDir, QFile, QTemporaryFile +*/ + +/*! + Constructs a new file object with the given \a parent. +*/ +QSaveFile::QSaveFile(QObject *parent) + : QFileDevice(*new QSaveFilePrivate, parent) +{ +} +/*! + Constructs a new file object to represent the file with the given \a name. +*/ +QSaveFile::QSaveFile(const QString &name) + : QFileDevice(*new QSaveFilePrivate, 0) +{ + Q_D(QSaveFile); + d->fileName = name; +} +/*! + Constructs a new file object with the given \a parent to represent the + file with the specified \a name. +*/ +QSaveFile::QSaveFile(const QString &name, QObject *parent) + : QFileDevice(*new QSaveFilePrivate, parent) +{ + Q_D(QSaveFile); + d->fileName = name; +} + +/*! + Destroys the file object, discarding the saved contents unless commit() was called. +*/ +QSaveFile::~QSaveFile() +{ + Q_D(QSaveFile); + QFileDevice::close(); + if (d->fileEngine) { + d->fileEngine->remove(); + delete d->fileEngine; + d->fileEngine = 0; + } +} + +/*! + Returns the name set by setFileName() or to the QSaveFile + constructor. + + \sa setFileName() +*/ +QString QSaveFile::fileName() const +{ + return d_func()->fileName; +} + +/*! + Sets the \a name of the file. The name can have no path, a + relative path, or an absolute path. + + \sa QFile::setFileName(), fileName() +*/ +void QSaveFile::setFileName(const QString &name) +{ + d_func()->fileName = name; +} + +/*! + Opens the file using OpenMode \a mode, returning true if successful; + otherwise false. + + Important: the \a mode must include QIODevice::WriteOnly. + It may also have additional flags, such as QIODevice::Text and QIODevice::Unbuffered. + + QIODevice::ReadWrite and QIODevice::Append are not supported at the moment. + + \sa QIODevice::OpenMode, setFileName() +*/ +bool QSaveFile::open(OpenMode mode) +{ + Q_D(QSaveFile); + if (isOpen()) { + qWarning("QSaveFile::open: File (%s) already open", qPrintable(fileName())); + return false; + } + unsetError(); + if ((mode & (ReadOnly | WriteOnly)) == 0) { + qWarning("QSaveFile::open: Open mode not specified"); + return false; + } + // In the future we could implement ReadWrite by copying from the existing file to the temp file... + if ((mode & ReadOnly) || (mode & Append)) { + qWarning("QSaveFile::open: Unsupported open mode 0x%x", int(mode)); + return false; + } + + // check if existing file is writable + QFileInfo existingFile(d->fileName); + if (existingFile.exists() && !existingFile.isWritable()) { + d->setError(QFileDevice::WriteError, QSaveFile::tr("Existing file %1 is not writable").arg(d->fileName)); + d->writeError = QFileDevice::WriteError; + return false; + } + d->fileEngine = new QTemporaryFileEngine(d->fileName); + // Same as in QFile: QIODevice provides the buffering, so there's no need to request it from the file engine. + if (!d->fileEngine->open(mode | QIODevice::Unbuffered)) { + QFileDevice::FileError err = d->fileEngine->error(); + if (err == QFileDevice::UnspecifiedError) + err = QFileDevice::OpenError; + d->setError(err, d->fileEngine->errorString()); + delete d->fileEngine; + d->fileEngine = 0; + return false; + } + + QFileDevice::open(mode); + if (existingFile.exists()) + setPermissions(existingFile.permissions()); + return true; +} + +/*! + \reimp + This method has been made private so that it cannot be called, in order to prevent mistakes. + In order to finish writing the file, call commit(). + If instead you want to abort writing, call cancelWriting(). +*/ +void QSaveFile::close() +{ + qFatal("QSaveFile::close called"); +} + +/*! + Commits the changes to disk, if all previous writes were successful. + + It is mandatory to call this at the end of the saving operation, otherwise the file will be + discarded. + + If an error happened during writing, deletes the temporary file and returns false. + Otherwise, renames it to the final fileName and returns true on success. + Finally, closes the device. + + \sa cancelWriting() +*/ +bool QSaveFile::commit() +{ + Q_D(QSaveFile); + if (!d->fileEngine) + return false; + + if (!isOpen()) { + qWarning("QSaveFile::commit: File (%s) is not open", qPrintable(fileName())); + return false; + } + QFileDevice::close(); // calls flush() + + // Sync to disk if possible. Ignore errors (e.g. not supported). + d->fileEngine->syncToDisk(); + + if (d->writeError != QFileDevice::NoError) { + d->fileEngine->remove(); + d->writeError = QFileDevice::NoError; + delete d->fileEngine; + d->fileEngine = 0; + return false; + } + // atomically replace old file with new file + // Can't use QFile::rename for that, must use the file engine directly + Q_ASSERT(d->fileEngine); + if (!d->fileEngine->renameOverwrite(d->fileName)) { + d->setError(d->fileEngine->error(), d->fileEngine->errorString()); + d->fileEngine->remove(); + delete d->fileEngine; + d->fileEngine = 0; + return false; + } + delete d->fileEngine; + d->fileEngine = 0; + return true; +} + +/*! + Cancels writing the new file. + + If the application changes its mind while saving, it can call cancelWriting(), + which sets an error code so that commit() will discard the temporary file. + + Alternatively, it can simply make sure not to call commit(). + + Further write operations are possible after calling this method, but none + of it will have any effect, the written file will be discarded. + + \sa commit() +*/ +void QSaveFile::cancelWriting() +{ + Q_D(QSaveFile); + if (!isOpen()) + return; + d->setError(QFileDevice::WriteError, QSaveFile::tr("Writing canceled by application")); + d->writeError = QFileDevice::WriteError; +} + +/*! + \reimp +*/ +qint64 QSaveFile::writeData(const char *data, qint64 len) +{ + Q_D(QSaveFile); + if (d->writeError != QFileDevice::NoError) + return -1; + + const qint64 ret = QFileDevice::writeData(data, len); + + if (d->error != QFileDevice::NoError) + d->writeError = d->error; + return ret; +} + +QT_END_NAMESPACE diff --git a/src/corelib/io/qsavefile.h b/src/corelib/io/qsavefile.h new file mode 100644 index 0000000000..47a02a0b83 --- /dev/null +++ b/src/corelib/io/qsavefile.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2012 David Faure +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSAVEFILE_H +#define QSAVEFILE_H + +#include +#include + +#ifdef open +#error qsavefile.h must be included before any header file that defines open +#endif + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + + +class QAbstractFileEngine; +class QSaveFilePrivate; + +class Q_CORE_EXPORT QSaveFile : public QFileDevice +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QSaveFile) + +public: + + explicit QSaveFile(const QString &name); + explicit QSaveFile(QObject *parent = 0); + explicit QSaveFile(const QString &name, QObject *parent); + ~QSaveFile(); + + QString fileName() const Q_DECL_OVERRIDE; + void setFileName(const QString &name); + + bool open(OpenMode flags) Q_DECL_OVERRIDE; + bool commit(); + + void cancelWriting(); + +protected: + qint64 writeData(const char *data, qint64 len) Q_DECL_OVERRIDE; + +private: + void close() Q_DECL_OVERRIDE; + +private: + Q_DISABLE_COPY(QSaveFile) +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QSAVEFILE_H diff --git a/src/corelib/io/qsavefile_p.h b/src/corelib/io/qsavefile_p.h new file mode 100644 index 0000000000..8f65971b37 --- /dev/null +++ b/src/corelib/io/qsavefile_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2012 David Faure +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSAVEFILE_P_H +#define QSAVEFILE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qfiledevice_p.h" + +QT_BEGIN_NAMESPACE + +class QSaveFilePrivate : public QFileDevicePrivate +{ + Q_DECLARE_PUBLIC(QSaveFile) + +protected: + QSaveFilePrivate(); + ~QSaveFilePrivate(); + + QString fileName; + + QFileDevice::FileError writeError; +}; + +QT_END_NAMESPACE + +#endif // QSAVEFILE_P_H -- cgit v1.2.3 From ac9ab9703ff299c94dca7585d5a12ecde28931bb Mon Sep 17 00:00:00 2001 From: David Faure Date: Mon, 14 Jan 2013 13:58:05 +0100 Subject: QtDBus: Garbage collect deleted objects now and then. Fixes performance issues in apps which register and deregister objects very frequently (like nepomukstorage). Change-Id: Ib4ce8d65868f0e26cd45f1053e4b2f4c13528cfa Reviewed-by: Thiago Macieira --- src/dbus/qdbusintegrator.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src') diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index 2b3ee901a5..42e6a80670 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -2224,6 +2224,19 @@ QDBusConnectionPrivate::disconnectSignal(SignalHookHash::Iterator &it) return signalHooks.erase(it); } + +static void cleanupDeletedNodes(QDBusConnectionPrivate::ObjectTreeNode &parent) +{ + QMutableVectorIterator it(parent.children); + while (it.hasNext()) { + QDBusConnectionPrivate::ObjectTreeNode& node = it.next(); + if (node.obj == 0 && node.children.isEmpty()) + it.remove(); + else + cleanupDeletedNodes(node); + } +} + void QDBusConnectionPrivate::registerObject(const ObjectTreeNode *node) { connect(node->obj, SIGNAL(destroyed(QObject*)), SLOT(objectDestroyed(QObject*)), @@ -2247,6 +2260,10 @@ void QDBusConnectionPrivate::registerObject(const ObjectTreeNode *node) this, SLOT(relaySignal(QObject*,const QMetaObject*,int,QVariantList)), Qt::DirectConnection); } + + static int counter = 0; + if ((++counter % 20) == 0) + cleanupDeletedNodes(rootNode); } void QDBusConnectionPrivate::connectRelay(const QString &service, -- cgit v1.2.3 From d29aabbca9c98eb66d9cde6058ad96929c816c23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Thu, 25 Oct 2012 16:53:18 +0200 Subject: eglfs: Introduce way of filtering out unwanted EGL configs. Some times a platform might want to exclude certain configs, for example based on EGL_NATIVE_VISUAL_ID. This patch introduces a new QEglConfigChooser class which has a virtual filterConfig() function which can be re-implemented in a sub-class to give finer control of how configs are chosen. Change-Id: I8b684f01be95a47307b1e429857f01337a9a38d8 Reviewed-by: Eskil Abrahamsen Blomfeldt Reviewed-by: Gunnar Sletta --- .../eglconvenience/qeglconvenience.cpp | 115 +++++++++++++-------- .../eglconvenience/qeglconvenience_p.h | 35 +++++++ .../eglconvenience/qeglplatformcontext.cpp | 16 ++- .../eglconvenience/qeglplatformcontext_p.h | 6 +- src/plugins/platforms/eglfs/qeglfscontext.cpp | 3 +- src/plugins/platforms/eglfs/qeglfshooks.h | 1 + src/plugins/platforms/eglfs/qeglfshooks_stub.cpp | 5 + src/plugins/platforms/eglfs/qeglfsintegration.cpp | 28 ++++- src/plugins/platforms/eglfs/qeglfsintegration.h | 2 + src/plugins/platforms/eglfs/qeglfswindow.cpp | 3 +- 10 files changed, 167 insertions(+), 47 deletions(-) (limited to 'src') diff --git a/src/platformsupport/eglconvenience/qeglconvenience.cpp b/src/platformsupport/eglconvenience/qeglconvenience.cpp index a88025a24d..c9f3e89272 100644 --- a/src/platformsupport/eglconvenience/qeglconvenience.cpp +++ b/src/platformsupport/eglconvenience/qeglconvenience.cpp @@ -210,75 +210,106 @@ bool q_reduceConfigAttributes(QVector *configAttributes) return false; } -EGLConfig q_configFromGLFormat(EGLDisplay display, const QSurfaceFormat &format, bool highestPixelFormat, int surfaceType) +QEglConfigChooser::QEglConfigChooser(EGLDisplay display) + : m_display(display) + , m_surfaceType(EGL_WINDOW_BIT) + , m_ignore(false) + , m_confAttrRed(0) + , m_confAttrGreen(0) + , m_confAttrBlue(0) + , m_confAttrAlpha(0) +{ +} + +QEglConfigChooser::~QEglConfigChooser() { - EGLConfig cfg = 0; - QVector configureAttributes = q_createConfigAttributesFromFormat(format); +} + +EGLConfig QEglConfigChooser::chooseConfig() +{ + QVector configureAttributes = q_createConfigAttributesFromFormat(m_format); configureAttributes.append(EGL_SURFACE_TYPE); - configureAttributes.append(surfaceType); + configureAttributes.append(surfaceType()); configureAttributes.append(EGL_RENDERABLE_TYPE); - if (format.renderableType() == QSurfaceFormat::OpenVG) + if (m_format.renderableType() == QSurfaceFormat::OpenVG) configureAttributes.append(EGL_OPENVG_BIT); #ifdef EGL_VERSION_1_4 - else if (format.renderableType() == QSurfaceFormat::OpenGL) + else if (m_format.renderableType() == QSurfaceFormat::OpenGL) configureAttributes.append(EGL_OPENGL_BIT); #endif - else if (format.majorVersion() == 1) + else if (m_format.majorVersion() == 1) configureAttributes.append(EGL_OPENGL_ES_BIT); else configureAttributes.append(EGL_OPENGL_ES2_BIT); configureAttributes.append(EGL_NONE); + EGLConfig cfg; do { // Get the number of matching configurations for this set of properties. EGLint matching = 0; - if (!eglChooseConfig(display, configureAttributes.constData(), 0, 0, &matching) || !matching) + if (!eglChooseConfig(display(), configureAttributes.constData(), 0, 0, &matching) || !matching) continue; - // If we want the best pixel format, then return the first - // matching configuration. - if (highestPixelFormat) { - eglChooseConfig(display, configureAttributes.constData(), &cfg, 1, &matching); - if (matching < 1) - continue; - return cfg; - } - // Fetch all of the matching configurations and find the // first that matches the pixel format we wanted. int i = configureAttributes.indexOf(EGL_RED_SIZE); - int confAttrRed = configureAttributes.at(i+1); + m_confAttrRed = configureAttributes.at(i+1); i = configureAttributes.indexOf(EGL_GREEN_SIZE); - int confAttrGreen = configureAttributes.at(i+1); + m_confAttrGreen = configureAttributes.at(i+1); i = configureAttributes.indexOf(EGL_BLUE_SIZE); - int confAttrBlue = configureAttributes.at(i+1); + m_confAttrBlue = configureAttributes.at(i+1); i = configureAttributes.indexOf(EGL_ALPHA_SIZE); - int confAttrAlpha = i == -1 ? 0 : configureAttributes.at(i+1); - - EGLint size = matching; - EGLConfig *configs = new EGLConfig [size]; - eglChooseConfig(display, configureAttributes.constData(), configs, size, &matching); - for (EGLint index = 0; index < size; ++index) { - EGLint red, green, blue, alpha; - eglGetConfigAttrib(display, configs[index], EGL_RED_SIZE, &red); - eglGetConfigAttrib(display, configs[index], EGL_GREEN_SIZE, &green); - eglGetConfigAttrib(display, configs[index], EGL_BLUE_SIZE, &blue); - eglGetConfigAttrib(display, configs[index], EGL_ALPHA_SIZE, &alpha); - if ((confAttrRed == 0 || red == confAttrRed) && - (confAttrGreen == 0 || green == confAttrGreen) && - (confAttrBlue == 0 || blue == confAttrBlue) && - (confAttrAlpha == 0 || alpha == confAttrAlpha)) { - cfg = configs[index]; - delete [] configs; - return cfg; - } + m_confAttrAlpha = i == -1 ? 0 : configureAttributes.at(i+1); + + QVector configs(matching); + eglChooseConfig(display(), configureAttributes.constData(), configs.data(), configs.size(), &matching); + if (!cfg && matching > 0) + cfg = configs.first(); + + for (int i = 0; i < configs.size(); ++i) { + if (filterConfig(configs[i])) + return configs.at(i); } - delete [] configs; } while (q_reduceConfigAttributes(&configureAttributes)); - qWarning("Cant find EGLConfig, returning null config"); - return 0; + + if (!cfg) + qWarning("Cant find EGLConfig, returning null config"); + return cfg; +} + +bool QEglConfigChooser::filterConfig(EGLConfig config) const +{ + if (m_ignore) + return true; + + EGLint red = 0; + EGLint green = 0; + EGLint blue = 0; + EGLint alpha = 0; + + if (m_confAttrRed) + eglGetConfigAttrib(display(), config, EGL_RED_SIZE, &red); + if (m_confAttrGreen) + eglGetConfigAttrib(display(), config, EGL_GREEN_SIZE, &green); + if (m_confAttrBlue) + eglGetConfigAttrib(display(), config, EGL_BLUE_SIZE, &blue); + if (m_confAttrAlpha) + eglGetConfigAttrib(display(), config, EGL_ALPHA_SIZE, &alpha); + + return red == m_confAttrRed && green == m_confAttrGreen + && blue == m_confAttrBlue && alpha == m_confAttrAlpha; +} + +EGLConfig q_configFromGLFormat(EGLDisplay display, const QSurfaceFormat &format, bool highestPixelFormat, int surfaceType) +{ + QEglConfigChooser chooser(display); + chooser.setSurfaceFormat(format); + chooser.setSurfaceType(surfaceType); + chooser.setIgnoreColorChannels(highestPixelFormat); + + return chooser.chooseConfig(); } QSurfaceFormat q_glFormatFromConfig(EGLDisplay display, const EGLConfig config, const QSurfaceFormat &referenceFormat) diff --git a/src/platformsupport/eglconvenience/qeglconvenience_p.h b/src/platformsupport/eglconvenience/qeglconvenience_p.h index 5dd132edd3..3efd3991b9 100644 --- a/src/platformsupport/eglconvenience/qeglconvenience_p.h +++ b/src/platformsupport/eglconvenience/qeglconvenience_p.h @@ -56,6 +56,41 @@ QSurfaceFormat q_glFormatFromConfig(EGLDisplay display, const EGLConfig config, bool q_hasEglExtension(EGLDisplay display,const char* extensionName); void q_printEglConfig(EGLDisplay display, EGLConfig config); +class QEglConfigChooser +{ +public: + QEglConfigChooser(EGLDisplay display); + virtual ~QEglConfigChooser(); + + EGLDisplay display() const { return m_display; } + + void setSurfaceType(EGLint surfaceType) { m_surfaceType = surfaceType; } + EGLint surfaceType() const { return m_surfaceType; } + + void setSurfaceFormat(const QSurfaceFormat &format) { m_format = format; } + QSurfaceFormat surfaceFormat() const { return m_format; } + + void setIgnoreColorChannels(bool ignore) { m_ignore = ignore; } + bool ignoreColorChannels() const { return m_ignore; } + + EGLConfig chooseConfig(); + +protected: + virtual bool filterConfig(EGLConfig config) const; + +private: + QSurfaceFormat m_format; + EGLDisplay m_display; + EGLint m_surfaceType; + bool m_ignore; + + int m_confAttrRed; + int m_confAttrGreen; + int m_confAttrBlue; + int m_confAttrAlpha; +}; + + QT_END_NAMESPACE #endif //QEGLCONVENIENCE_H diff --git a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp index 78dc1f7e9b..0b11d96e5c 100644 --- a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp +++ b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp @@ -64,8 +64,22 @@ QEGLPlatformContext::QEGLPlatformContext(const QSurfaceFormat &format, QPlatform : m_eglDisplay(display) , m_eglApi(eglApi) , m_eglConfig(q_configFromGLFormat(display, format, true)) - , m_format(q_glFormatFromConfig(display, m_eglConfig)) { + init(format, share); +} + +QEGLPlatformContext::QEGLPlatformContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share, EGLDisplay display, + EGLConfig config, EGLenum eglApi) + : m_eglDisplay(display) + , m_eglApi(eglApi) + , m_eglConfig(config) +{ + init(format, share); +} + +void QEGLPlatformContext::init(const QSurfaceFormat &format, QPlatformOpenGLContext *share) +{ + m_format = q_glFormatFromConfig(m_eglDisplay, m_eglConfig); m_shareContext = share ? static_cast(share)->m_eglContext : 0; QVector contextAttrs; diff --git a/src/platformsupport/eglconvenience/qeglplatformcontext_p.h b/src/platformsupport/eglconvenience/qeglplatformcontext_p.h index 0fcf9d47c6..c7918516db 100644 --- a/src/platformsupport/eglconvenience/qeglplatformcontext_p.h +++ b/src/platformsupport/eglconvenience/qeglplatformcontext_p.h @@ -51,6 +51,8 @@ class QEGLPlatformContext : public QPlatformOpenGLContext public: QEGLPlatformContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share, EGLDisplay display, EGLenum eglApi = EGL_OPENGL_ES_API); + QEGLPlatformContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share, EGLDisplay display, + EGLConfig config, EGLenum eglApi = EGL_OPENGL_ES_API); ~QEGLPlatformContext(); bool makeCurrent(QPlatformSurface *surface); @@ -70,12 +72,14 @@ protected: virtual EGLSurface eglSurfaceForPlatformSurface(QPlatformSurface *surface) = 0; private: + void init(const QSurfaceFormat &format, QPlatformOpenGLContext *share); + EGLContext m_eglContext; EGLContext m_shareContext; EGLDisplay m_eglDisplay; EGLenum m_eglApi; EGLConfig m_eglConfig; - const QSurfaceFormat m_format; + QSurfaceFormat m_format; }; #endif //QEGLPLATFORMCONTEXT_H diff --git a/src/plugins/platforms/eglfs/qeglfscontext.cpp b/src/plugins/platforms/eglfs/qeglfscontext.cpp index 3646494bf3..32158c9e5f 100644 --- a/src/plugins/platforms/eglfs/qeglfscontext.cpp +++ b/src/plugins/platforms/eglfs/qeglfscontext.cpp @@ -43,6 +43,7 @@ #include "qeglfswindow.h" #include "qeglfscursor.h" #include "qeglfshooks.h" +#include "qeglfsintegration.h" #include @@ -50,7 +51,7 @@ QT_BEGIN_NAMESPACE QEglFSContext::QEglFSContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share, EGLDisplay display, EGLenum eglApi) - : QEGLPlatformContext(hooks->surfaceFormatFor(format), share, display, eglApi) + : QEGLPlatformContext(format, share, display, QEglFSIntegration::chooseConfig(display, format), eglApi) { } diff --git a/src/plugins/platforms/eglfs/qeglfshooks.h b/src/plugins/platforms/eglfs/qeglfshooks.h index 317b92e67f..2339611c96 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks.h +++ b/src/plugins/platforms/eglfs/qeglfshooks.h @@ -67,6 +67,7 @@ public: virtual void destroyNativeWindow(EGLNativeWindowType window); virtual bool hasCapability(QPlatformIntegration::Capability cap) const; virtual QEglFSCursor *createCursor(QEglFSScreen *screen) const; + virtual bool filterConfig(EGLDisplay display, EGLConfig config) const; }; #ifdef EGLFS_PLATFORM_HOOKS diff --git a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp index 7106b99490..f0219e40b2 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp +++ b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp @@ -134,6 +134,11 @@ QSurfaceFormat QEglFSHooks::surfaceFormatFor(const QSurfaceFormat &inputFormat) return inputFormat; } +bool QEglFSHooks::filterConfig(EGLDisplay, EGLConfig) const +{ + return true; +} + EGLNativeWindowType QEglFSHooks::createNativeWindow(const QSize &size, const QSurfaceFormat &format) { Q_UNUSED(size); diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp index cf45818ed4..b0c55b51c1 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp @@ -49,6 +49,7 @@ #include #include +#include #include #if !defined(QT_NO_EVDEV) @@ -150,7 +151,7 @@ QPlatformBackingStore *QEglFSIntegration::createPlatformBackingStore(QWindow *wi QPlatformOpenGLContext *QEglFSIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const { - return new QEglFSContext(context->format(), 0 /*share*/, mDisplay); + return new QEglFSContext(hooks->surfaceFormatFor(context->format()), 0 /*share*/, mDisplay); } QPlatformFontDatabase *QEglFSIntegration::fontDatabase() const @@ -201,4 +202,29 @@ void *QEglFSIntegration::nativeResourceForContext(const QByteArray &resource, QO return 0; } +EGLConfig QEglFSIntegration::chooseConfig(EGLDisplay display, const QSurfaceFormat &format) +{ + class Chooser : public QEglConfigChooser { + public: + Chooser(EGLDisplay display, QEglFSHooks *hooks) + : QEglConfigChooser(display) + , m_hooks(hooks) + { + } + + protected: + bool filterConfig(EGLConfig config) const + { + return m_hooks->filterConfig(display(), config) && QEglConfigChooser::filterConfig(config); + } + + private: + QEglFSHooks *m_hooks; + }; + + Chooser chooser(display, hooks); + chooser.setSurfaceFormat(format); + return chooser.chooseConfig(); +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h index 63f37d9a8d..1dd41b33f5 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.h +++ b/src/plugins/platforms/eglfs/qeglfsintegration.h @@ -75,6 +75,8 @@ public: void *nativeResourceForIntegration(const QByteArray &resource); void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context); + static EGLConfig chooseConfig(EGLDisplay display, const QSurfaceFormat &format); + private: EGLDisplay mDisplay; QAbstractEventDispatcher *mEventDispatcher; diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp index df665cea84..9fad0af623 100644 --- a/src/plugins/platforms/eglfs/qeglfswindow.cpp +++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp @@ -84,7 +84,8 @@ void QEglFSWindow::create() EGLDisplay display = (static_cast(window()->screen()->handle()))->display(); QSurfaceFormat platformFormat = hooks->surfaceFormatFor(window()->requestedFormat()); - EGLConfig config = q_configFromGLFormat(display, platformFormat); + EGLConfig config = QEglFSIntegration::chooseConfig(display, platformFormat); + m_format = q_glFormatFromConfig(display, config); m_window = hooks->createNativeWindow(hooks->screenSize(), m_format); m_surface = eglCreateWindowSurface(display, config, m_window, NULL); -- cgit v1.2.3 From 6f225b0b5d774828df310948435f1cc3a4720104 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 18 Jan 2013 12:15:00 +0100 Subject: Fix MinGW-warnings about comparing signed/unsigned. Change-Id: I970264e5b096a3d6384b59d0ae0876bb80fd0009 Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp | 2 +- src/plugins/platforms/windows/qwindowsdrag.cpp | 6 +++--- src/plugins/platforms/windows/qwindowskeymapper.cpp | 2 +- src/widgets/styles/qwindowsvistastyle.cpp | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp index 44a79d86ee..e4ad962fd1 100644 --- a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp +++ b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp @@ -270,7 +270,7 @@ bool QWindowsAccessibility::handleAccessibleObjectFromWindowRequest(HWND hwnd, W { if (static_cast(lParam) == static_cast(UiaRootObjectId)) { /* For UI Automation */ - } else if ((DWORD)lParam == OBJID_CLIENT) { + } else if ((DWORD)lParam == DWORD(OBJID_CLIENT)) { #if 1 // Ignoring all requests while starting up // ### Maybe QPA takes care of this??? diff --git a/src/plugins/platforms/windows/qwindowsdrag.cpp b/src/plugins/platforms/windows/qwindowsdrag.cpp index 805046c715..2da3c9cb18 100644 --- a/src/plugins/platforms/windows/qwindowsdrag.cpp +++ b/src/plugins/platforms/windows/qwindowsdrag.cpp @@ -304,10 +304,10 @@ private: class DragCursorHandle { Q_DISABLE_COPY(DragCursorHandle) public: - DragCursorHandle(HCURSOR c, quint64 k) : cursor(c), cacheKey(k) {} + DragCursorHandle(HCURSOR c, qint64 k) : cursor(c), cacheKey(k) {} ~DragCursorHandle() { DestroyCursor(cursor); } HCURSOR cursor; - quint64 cacheKey; + qint64 cacheKey; }; typedef QMap > ActionCursorMap; @@ -490,7 +490,7 @@ QWindowsOleDropSource::GiveFeedback(DWORD dwEffect) qDebug("%s dwEffect=%lu, action=%d", __FUNCTION__, dwEffect, action); QSharedPointer cursorHandler = m_cursors.value(action); - quint64 currentCacheKey = m_drag->currentDrag()->dragCursor(action).cacheKey(); + qint64 currentCacheKey = m_drag->currentDrag()->dragCursor(action).cacheKey(); if (cursorHandler.isNull() || currentCacheKey != cursorHandler->cacheKey) createCursors(); diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp index f64593badc..737d83a637 100644 --- a/src/plugins/platforms/windows/qwindowskeymapper.cpp +++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp @@ -1126,7 +1126,7 @@ QList QWindowsKeyMapper::possibleKeys(const QKeyEvent *e) const } result << int(baseKey + keyMods); // The base key is _always_ valid, of course - for (int i = 1; i < NumMods; ++i) { + for (size_t i = 1; i < NumMods; ++i) { Qt::KeyboardModifiers neededMods = ModsTbl[i]; quint32 key = kbItem.qtKey[i]; if (key && key != baseKey && ((keyMods & neededMods) == neededMods)) diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp index 685b328a67..5a4d813359 100644 --- a/src/widgets/styles/qwindowsvistastyle.cpp +++ b/src/widgets/styles/qwindowsvistastyle.cpp @@ -1581,7 +1581,7 @@ void QWindowsVistaStyle::drawComplexControl(ComplexControl control, const QStyle bool doTransition = ((state & State_Sunken) != (oldState & State_Sunken) || (state & State_On) != (oldState & State_On) || (state & State_MouseOver) != (oldState & State_MouseOver) || - oldActiveControls != option->activeSubControls); + oldActiveControls != int(option->activeSubControls)); if (qstyleoption_cast(option)) { QRect oldSliderPos = styleObject->property("_q_stylesliderpos").toRect(); -- cgit v1.2.3 From 9bbebb914422262b7b585b6d1dab9d21c4238c44 Mon Sep 17 00:00:00 2001 From: Gerhard Gappmeier Date: Mon, 2 Jul 2012 13:01:32 +0200 Subject: Add support for defining properties from member variables. This associates properties with member variables and avoids writing getter and setter methods manually. The metaCall() method directly accesses the member variable, so additional method calls can be avoided. The metaCall() setter code also supports NOTIFY signals, which means the according signal is emitted when the property gets written. Task-number: QTBUG-16852 Change-Id: I88a1f237ea53a1e9cf65fc9ef2e207718eb8b6c3 Reviewed-by: Olivier Goffart --- .../doc/snippets/code/doc_src_properties.cpp | 21 ++++++++++-- src/corelib/doc/src/objectmodel/properties.qdoc | 26 ++++++++++++--- src/tools/moc/generator.cpp | 37 ++++++++++++++++++---- src/tools/moc/moc.cpp | 12 +++++-- src/tools/moc/moc.h | 2 +- 5 files changed, 80 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/corelib/doc/snippets/code/doc_src_properties.cpp b/src/corelib/doc/snippets/code/doc_src_properties.cpp index 7ee414e00e..a67cbb68aa 100644 --- a/src/corelib/doc/snippets/code/doc_src_properties.cpp +++ b/src/corelib/doc/snippets/code/doc_src_properties.cpp @@ -40,8 +40,8 @@ //! [0] Q_PROPERTY(type name - READ getFunction - [WRITE setFunction] + (READ getFunction [WRITE setFunction] | + MEMBER memberName [(READ getFunction | WRITE setFunction)]) [RESET resetFunction] [NOTIFY notifySignal] [REVISION int] @@ -130,3 +130,20 @@ object->setProperty("priority", "VeryHigh"); //! [7] Q_CLASSINFO("Version", "3.0.0") //! [7] + +//! [8] + Q_PROPERTY(QColor color MEMBER m_color NOTIFY colorChanged) + Q_PROPERTY(qreal spacing MEMBER m_spacing NOTIFY spacingChanged) + Q_PROPERTY(QString text MEMBER m_text NOTIFY textChanged) + ... +signals: + void colorChanged(); + void spacingChanged(); + void textChanged(const QString &newText); + +private: + QColor m_color; + qreal m_spacing; + QString m_text; +//! [8] + diff --git a/src/corelib/doc/src/objectmodel/properties.qdoc b/src/corelib/doc/src/objectmodel/properties.qdoc index 1e88a67a90..e262adf886 100644 --- a/src/corelib/doc/src/objectmodel/properties.qdoc +++ b/src/corelib/doc/src/objectmodel/properties.qdoc @@ -53,16 +53,22 @@ \snippet code/doc_src_properties.cpp 1 + Here is an example showing how to export member variables as Qt + properties using the \c MEMBER keyword. + Note that a \c NOTIFY signal must be specified to allow QML property bindings. + + \snippet code/doc_src_properties.cpp 8 + A property behaves like a class data member, but it has additional features accessible through the \l {Meta-Object System}. \list - \li A \c READ accessor function is required. It is for reading the - property value. Ideally, a const function is used for this purpose, - and it must return either the property's type or a pointer or - reference to that type. e.g., QWidget::focus is a read-only property - with \c READ function, QWidget::hasFocus(). + \li A \c READ accessor function is required if no \c MEMBER variable was + specified. It is for reading the property value. Ideally, a const function + is used for this purpose, and it must return either the property's type or a + pointer or reference to that type. e.g., QWidget::focus is a read-only + property with \c READ function, QWidget::hasFocus(). \li A \c WRITE accessor function is optional. It is for setting the property value. It must return void and must take exactly one @@ -71,6 +77,13 @@ QWidget::setEnabled(). Read-only properties do not need \c WRITE functions. e.g., QWidget::focus has no \c WRITE function. + \li A \c MEMBER variable association is required if no \c READ accessor + function is specified. This makes the given member variable + readable and writable without the need of creating \c READ and \c WRITE accessor + functions. It's still possible to use \c READ or \c WRITE accessor functions in + addition to \c MEMBER variable association (but not both), if you need to + control the variable access. + \li A \c RESET function is optional. It is for setting the property back to its context specific default value. e.g., QWidget::cursor has the typical \c READ and \c WRITE functions, QWidget::cursor() @@ -82,6 +95,9 @@ \li A \c NOTIFY signal is optional. If defined, it should specify one existing signal in that class that is emitted whenever the value of the property changes. + \c NOTIFY signals for \c MEMBER variables must take zero or one parameter, + which must be of the same type as the property. The parameter will take the + new value of the property. \li A \c REVISION number is optional. If included, it defines the property and its notifier signal to be used in a particular diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 06efd77adc..083b095094 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -719,7 +719,9 @@ void Generator::generateProperties() uint flags = Invalid; if (!isBuiltinType(p.type)) flags |= EnumOrFlag; - if (!p.read.isEmpty()) + if (!p.member.isEmpty() && !p.constant) + flags |= Writable; + if (!p.read.isEmpty() || !p.member.isEmpty()) flags |= Readable; if (!p.write.isEmpty()) { flags |= Writable; @@ -893,12 +895,12 @@ void Generator::generateMetacall() bool needUser = false; for (int i = 0; i < cdef->propertyList.size(); ++i) { const PropertyDef &p = cdef->propertyList.at(i); - needGet |= !p.read.isEmpty(); + needGet |= !p.read.isEmpty() || !p.member.isEmpty(); if (!p.read.isEmpty()) needTempVarForGet |= (p.gspec != PropertyDef::PointerSpec && p.gspec != PropertyDef::ReferenceSpec); - needSet |= !p.write.isEmpty(); + needSet |= !p.write.isEmpty() || (!p.member.isEmpty() && !p.constant); needReset |= !p.reset.isEmpty(); needDesignable |= p.designable.endsWith(')'); needScriptable |= p.scriptable.endsWith(')'); @@ -917,7 +919,7 @@ void Generator::generateMetacall() fprintf(out, " switch (_id) {\n"); for (int propindex = 0; propindex < cdef->propertyList.size(); ++propindex) { const PropertyDef &p = cdef->propertyList.at(propindex); - if (p.read.isEmpty()) + if (p.read.isEmpty() && p.member.isEmpty()) continue; QByteArray prefix; if (p.inPrivateClass.size()) { @@ -933,9 +935,12 @@ void Generator::generateMetacall() else if (cdef->enumDeclarations.value(p.type, false)) fprintf(out, " case %d: *reinterpret_cast(_v) = QFlag(%s%s()); break;\n", propindex, prefix.constData(), p.read.constData()); - else + else if (!p.read.isEmpty()) fprintf(out, " case %d: *reinterpret_cast< %s*>(_v) = %s%s(); break;\n", propindex, p.type.constData(), prefix.constData(), p.read.constData()); + else + fprintf(out, " case %d: *reinterpret_cast< %s*>(_v) = %s%s; break;\n", + propindex, p.type.constData(), prefix.constData(), p.member.constData()); } fprintf(out, " }\n"); } @@ -952,7 +957,9 @@ void Generator::generateMetacall() fprintf(out, " switch (_id) {\n"); for (int propindex = 0; propindex < cdef->propertyList.size(); ++propindex) { const PropertyDef &p = cdef->propertyList.at(propindex); - if (p.write.isEmpty()) + if (p.constant) + continue; + if (p.write.isEmpty() && p.member.isEmpty()) continue; QByteArray prefix; if (p.inPrivateClass.size()) { @@ -962,9 +969,25 @@ void Generator::generateMetacall() if (cdef->enumDeclarations.value(p.type, false)) { fprintf(out, " case %d: %s%s(QFlag(*reinterpret_cast(_v))); break;\n", propindex, prefix.constData(), p.write.constData()); - } else { + } else if (!p.write.isEmpty()) { fprintf(out, " case %d: %s%s(*reinterpret_cast< %s*>(_v)); break;\n", propindex, prefix.constData(), p.write.constData(), p.type.constData()); + } else { + fprintf(out, " case %d:\n", propindex); + fprintf(out, " if (%s%s != *reinterpret_cast< %s*>(_v)) {\n", + prefix.constData(), p.member.constData(), p.type.constData()); + fprintf(out, " %s%s = *reinterpret_cast< %s*>(_v);\n", + prefix.constData(), p.member.constData(), p.type.constData()); + if (!p.notify.isEmpty() && p.notifyId != -1) { + const FunctionDef &f = cdef->signalList.at(p.notifyId); + if (f.arguments.size() == 0) + fprintf(out, " emit %s();\n", p.notify.constData()); + else if (f.arguments.size() == 1 && f.arguments.at(0).normalizedType == p.type) + fprintf(out, " emit %s(%s%s);\n", + p.notify.constData(), prefix.constData(), p.member.constData()); + } + fprintf(out, " }\n"); + fprintf(out, " break;\n"); } } fprintf(out, " }\n"); diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp index 5fbbd57c22..788033800f 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -1059,6 +1059,12 @@ void Moc::createPropertyDef(PropertyDef &propDef) v2 = "()"; } switch (l[0]) { + case 'M': + if (l == "MEMBER") + propDef.member = v; + else + error(2); + break; case 'R': if (l == "READ") propDef.read = v; @@ -1099,11 +1105,11 @@ void Moc::createPropertyDef(PropertyDef &propDef) error(2); } } - if (propDef.read.isNull()) { + if (propDef.read.isNull() && propDef.member.isNull()) { QByteArray msg; msg += "Property declaration "; msg += propDef.name; - msg += " has no READ accessor function. The property will be invalid."; + msg += " has no READ accessor function or associated MEMBER variable. The property will be invalid."; warning(msg.constData()); } if (propDef.constant && !propDef.write.isNull()) { @@ -1515,7 +1521,7 @@ void Moc::checkProperties(ClassDef *cdef) // for (int i = 0; i < cdef->propertyList.count(); ++i) { PropertyDef &p = cdef->propertyList[i]; - if (p.read.isEmpty()) + if (p.read.isEmpty() && p.member.isEmpty()) continue; for (int j = 0; j < cdef->publicList.count(); ++j) { const FunctionDef &f = cdef->publicList.at(j); diff --git a/src/tools/moc/moc.h b/src/tools/moc/moc.h index 07f8c7c620..cfa56c4da2 100644 --- a/src/tools/moc/moc.h +++ b/src/tools/moc/moc.h @@ -127,7 +127,7 @@ struct FunctionDef struct PropertyDef { PropertyDef():notifyId(-1), constant(false), final(false), gspec(ValueSpec), revision(0){} - QByteArray name, type, read, write, reset, designable, scriptable, editable, stored, user, notify, inPrivateClass; + QByteArray name, type, member, read, write, reset, designable, scriptable, editable, stored, user, notify, inPrivateClass; int notifyId; bool constant; bool final; -- cgit v1.2.3 From 12d90d62023419dca6fcd55f4045058fac6fe50b Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 20 Jan 2013 19:03:39 +0000 Subject: Add a note for merging QString::contains(QRE, QREM) overloads in Qt 6 Change-Id: I19609b192618287dbac0de2e893e3e9b40d6a969 Reviewed-by: Lars Knoll --- src/corelib/tools/qstring.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index b7a08928b3..8d449560f2 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -340,7 +340,7 @@ public: int indexOf(const QRegularExpression &re, int from = 0) const; int lastIndexOf(const QRegularExpression &re, int from = -1) const; bool contains(const QRegularExpression &re) const; - bool contains(const QRegularExpression &re, QRegularExpressionMatch *match) const; + bool contains(const QRegularExpression &re, QRegularExpressionMatch *match) const; // ### Qt 6: merge overloads int count(const QRegularExpression &re) const; #endif -- cgit v1.2.3 From b5922c89ba942f59d52ebbbf4986565ef410a14d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 15 Jan 2013 15:32:41 +0100 Subject: Add support for retina glyph-based text drawing in the GL paint-engine Instead of always using a non-transformed glyph-cache we now allow a scaled glyph-cache so that retina-screens can take advantage of this. We take the cache's scale into account when positioning and drawing the glyphs so that the scale is not applied twice. Change-Id: Ia927656f0070df61e78da76e97d2c49de4d856d9 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/opengl/qopenglpaintengine.cpp | 34 ++++++++++++++++------ src/gui/opengl/qopenglpaintengine_p.h | 1 + src/gui/text/qfontengineglyphcache_p.h | 1 + .../gl2paintengineex/qpaintengineex_opengl2.cpp | 34 ++++++++++++++++------ .../gl2paintengineex/qpaintengineex_opengl2_p.h | 1 + 5 files changed, 53 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp index 2a8902adbf..7588f28cbc 100644 --- a/src/gui/opengl/qopenglpaintengine.cpp +++ b/src/gui/opengl/qopenglpaintengine.cpp @@ -1069,6 +1069,18 @@ void QOpenGL2PaintEngineExPrivate::resetClipIfNeeded() glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); } +bool QOpenGL2PaintEngineExPrivate::prepareForCachedGlyphDraw(const QFontEngineGlyphCache &cache) +{ + Q_Q(QOpenGL2PaintEngineEx); + + QTransform &transform = q->state()->matrix; + transform.scale(1.0 / cache.transform().m11(), 1.0 / cache.transform().m22()); + bool ret = prepareForDraw(false); + transform.scale(cache.transform().m11(), cache.transform().m22()); + + return ret; +} + bool QOpenGL2PaintEngineExPrivate::prepareForDraw(bool srcPixelsAreOpaque) { if (brushTextureDirty && mode != ImageDrawingMode && mode != ImageArrayDrawingMode) @@ -1543,10 +1555,14 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type bool recreateVertexArrays = false; QFontEngine *fe = staticTextItem->fontEngine(); + // We allow scaling, so that the glyph-cache will contain glyphs with the + // appropriate resolution in the case of displays with a device-pixel-ratio != 1. + QTransform transform = QTransform::fromScale(s->matrix.m11(), s->matrix.m22()); + QOpenGLTextureGlyphCache *cache = - (QOpenGLTextureGlyphCache *) fe->glyphCache(cacheKey, glyphType, QTransform()); + (QOpenGLTextureGlyphCache *) fe->glyphCache(cacheKey, glyphType, transform); if (!cache || cache->cacheType() != glyphType || cache->contextGroup() == 0) { - cache = new QOpenGLTextureGlyphCache(glyphType, QTransform()); + cache = new QOpenGLTextureGlyphCache(glyphType, transform); fe->setGlyphCache(cacheKey, cache); recreateVertexArrays = true; } @@ -1638,8 +1654,8 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type if (c.isNull()) continue; - int x = qFloor(staticTextItem->glyphPositions[i].x) + c.baseLineX - margin; - int y = qRound(staticTextItem->glyphPositions[i].y) - c.baseLineY - margin; + int x = qFloor(staticTextItem->glyphPositions[i].x.toReal() * cache->transform().m11()) + c.baseLineX - margin; + int y = qRound(staticTextItem->glyphPositions[i].y.toReal() * cache->transform().m22()) - c.baseLineY - margin; vertexCoordinates->addQuad(QRectF(x, y, c.w, c.h)); textureCoordinates->addQuad(QRectF(c.x*dx, c.y*dy, c.w * dx, c.h * dy)); @@ -1712,9 +1728,9 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type } compositionModeDirty = false; // I can handle this myself, thank you very much - prepareForDraw(false); // Text always causes src pixels to be transparent + prepareForCachedGlyphDraw(*cache); - // prepareForDraw() have set the opacity on the current shader, so the opacity state can now be reset. + // prepareForCachedGlyphDraw() have set the opacity on the current shader, so the opacity state can now be reset. if (compMode == QPainter::CompositionMode_Source) { q->state()->opacity = oldOpacity; opacityUniformDirty = true; @@ -1735,7 +1751,7 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type } compositionModeDirty = false; // I can handle this myself, thank you very much - prepareForDraw(false); // Text always causes src pixels to be transparent + prepareForCachedGlyphDraw(*cache); glEnable(GL_BLEND); glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); @@ -1759,7 +1775,7 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type } compositionModeDirty = false; - prepareForDraw(false); // Text always causes src pixels to be transparent + prepareForCachedGlyphDraw(*cache); glEnable(GL_BLEND); glBlendFunc(GL_ONE, GL_ONE); } @@ -1768,7 +1784,7 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type // Greyscale/mono glyphs shaderManager->setMaskType(QOpenGLEngineShaderManager::PixelMask); - prepareForDraw(false); // Text always causes src pixels to be transparent + prepareForCachedGlyphDraw(*cache); } QOpenGLTextureGlyphCache::FilterMode filterMode = (s->matrix.type() > QTransform::TxTranslate)?QOpenGLTextureGlyphCache::Linear:QOpenGLTextureGlyphCache::Nearest; diff --git a/src/gui/opengl/qopenglpaintengine_p.h b/src/gui/opengl/qopenglpaintengine_p.h index 125db00238..f3897d49ce 100644 --- a/src/gui/opengl/qopenglpaintengine_p.h +++ b/src/gui/opengl/qopenglpaintengine_p.h @@ -236,6 +236,7 @@ public: void setBrush(const QBrush& brush); void transferMode(EngineMode newMode); bool prepareForDraw(bool srcPixelsAreOpaque); // returns true if the program has changed + bool prepareForCachedGlyphDraw(const QFontEngineGlyphCache &cache); inline void useSimpleShader(); inline GLuint location(const QOpenGLEngineShaderManager::Uniform uniform) { return shaderManager->getUniformLocation(uniform); diff --git a/src/gui/text/qfontengineglyphcache_p.h b/src/gui/text/qfontengineglyphcache_p.h index 092873a4d4..63c66d2605 100644 --- a/src/gui/text/qfontengineglyphcache_p.h +++ b/src/gui/text/qfontengineglyphcache_p.h @@ -78,6 +78,7 @@ public: virtual ~QFontEngineGlyphCache() { } Type cacheType() const { return m_type; } + const QTransform &transform() const { return m_transform; } QTransform m_transform; QFontEngineGlyphCache::Type m_type; diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index ebff94da77..22be2e08a0 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1086,6 +1086,18 @@ void QGL2PaintEngineExPrivate::resetClipIfNeeded() glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); } +bool QGL2PaintEngineExPrivate::prepareForCachedGlyphDraw(const QFontEngineGlyphCache &cache) +{ + Q_Q(QGL2PaintEngineEx); + + QTransform &transform = q->state()->matrix; + transform.scale(1.0 / cache.transform().m11(), 1.0 / cache.transform().m22()); + bool ret = prepareForDraw(false); + transform.scale(cache.transform().m11(), cache.transform().m22()); + + return ret; +} + bool QGL2PaintEngineExPrivate::prepareForDraw(bool srcPixelsAreOpaque) { if (brushTextureDirty && mode != ImageDrawingMode && mode != ImageArrayDrawingMode) @@ -1580,11 +1592,15 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp void *cacheKey = const_cast(QGLContextPrivate::contextGroup(ctx)->context()); bool recreateVertexArrays = false; + // We allow scaling, so that the glyph-cache will contain glyphs with the + // appropriate resolution in the case of displays with a device-pixel-ratio != 1. + QTransform transform = QTransform::fromScale(s->matrix.m11(), s->matrix.m22()); + QFontEngine *fe = staticTextItem->fontEngine(); QGLTextureGlyphCache *cache = - (QGLTextureGlyphCache *) fe->glyphCache(cacheKey, glyphType, QTransform()); + (QGLTextureGlyphCache *) fe->glyphCache(cacheKey, glyphType, transform); if (!cache || cache->cacheType() != glyphType || cache->contextGroup() == 0) { - cache = new QGLTextureGlyphCache(glyphType, QTransform()); + cache = new QGLTextureGlyphCache(glyphType, transform); fe->setGlyphCache(cacheKey, cache); recreateVertexArrays = true; } @@ -1676,8 +1692,8 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp if (c.isNull()) continue; - int x = qFloor(staticTextItem->glyphPositions[i].x) + c.baseLineX - margin; - int y = qRound(staticTextItem->glyphPositions[i].y) - c.baseLineY - margin; + int x = qFloor(staticTextItem->glyphPositions[i].x.toReal() * cache->transform().m11()) + c.baseLineX - margin; + int y = qRound(staticTextItem->glyphPositions[i].y.toReal() * cache->transform().m22()) - c.baseLineY - margin; vertexCoordinates->addQuad(QRectF(x, y, c.w, c.h)); textureCoordinates->addQuad(QRectF(c.x*dx, c.y*dy, c.w * dx, c.h * dy)); @@ -1750,9 +1766,9 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp } compositionModeDirty = false; // I can handle this myself, thank you very much - prepareForDraw(false); // Text always causes src pixels to be transparent + prepareForCachedGlyphDraw(*cache); - // prepareForDraw() have set the opacity on the current shader, so the opacity state can now be reset. + // prepareForCachedGlyphDraw() have set the opacity on the current shader, so the opacity state can now be reset. if (compMode == QPainter::CompositionMode_Source) { q->state()->opacity = oldOpacity; opacityUniformDirty = true; @@ -1773,7 +1789,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp } compositionModeDirty = false; // I can handle this myself, thank you very much - prepareForDraw(false); // Text always causes src pixels to be transparent + prepareForCachedGlyphDraw(*cache); glEnable(GL_BLEND); glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); @@ -1797,7 +1813,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp } compositionModeDirty = false; - prepareForDraw(false); // Text always causes src pixels to be transparent + prepareForCachedGlyphDraw(*cache); glEnable(GL_BLEND); glBlendFunc(GL_ONE, GL_ONE); } @@ -1806,7 +1822,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp // Greyscale/mono glyphs shaderManager->setMaskType(QGLEngineShaderManager::PixelMask); - prepareForDraw(false); // Text always causes src pixels to be transparent + prepareForCachedGlyphDraw(*cache); } QGLTextureGlyphCache::FilterMode filterMode = (s->matrix.type() > QTransform::TxTranslate)?QGLTextureGlyphCache::Linear:QGLTextureGlyphCache::Nearest; diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h index dd09046bc9..3004b5c9d0 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h @@ -227,6 +227,7 @@ public: void setBrush(const QBrush& brush); void transferMode(EngineMode newMode); bool prepareForDraw(bool srcPixelsAreOpaque); // returns true if the program has changed + bool prepareForCachedGlyphDraw(const QFontEngineGlyphCache &cache); inline void useSimpleShader(); inline GLuint location(const QGLEngineShaderManager::Uniform uniform) { return shaderManager->getUniformLocation(uniform); -- cgit v1.2.3 From 92237b22ea80b043bfd441ecad89cd504965b50f Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Fri, 11 Jan 2013 17:34:49 +0100 Subject: Cocoa: Make QCocoaMenu::showPopup() more robust Change-Id: Ie4ae5806ea2f23f16597578796be36f2123c05fa Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/cocoa/qcocoamenu.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm index afd007b36a..ff3aeaeb11 100644 --- a/src/plugins/platforms/cocoa/qcocoamenu.mm +++ b/src/plugins/platforms/cocoa/qcocoamenu.mm @@ -307,8 +307,8 @@ void QCocoaMenu::setVisible(bool visible) void QCocoaMenu::showPopup(const QWindow *parentWindow, QPoint pos, const QPlatformMenuItem *item) { - QCocoaWindow *cocoaWindow = static_cast(parentWindow->handle()); - NSView *view = cocoaWindow->contentView(); + QCocoaWindow *cocoaWindow = parentWindow ? static_cast(parentWindow->handle()) : 0; + NSView *view = cocoaWindow ? cocoaWindow->contentView() : nil; NSMenuItem *nsItem = item ? ((QCocoaMenuItem *)item)->nsItem() : nil; NSPoint nsPos = NSMakePoint(pos.x(), pos.y()); [m_nativeMenu popUpMenuPositioningItem:nsItem atLocation:nsPos inView:view]; -- cgit v1.2.3 From 661c3701f4731283a3f1062e4a8c8c02fb01e3c6 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 16 Jan 2013 16:44:25 +0100 Subject: Fix Windows native file dialogs for use with QtQuick. - Correct modality check. - Allow for properties to be set if there is no native dialog. - Make dialog thread for non-modal call back into dialog helper for exec(). - Introduce QWindowsFileDialogSharedData to contain data to be cached while no native dialog exists and to be updated by the change notifications of the IFileDialogEvent interface to avoid querying the dialog results after the dialog has closed. Reduce virtual methods of QWindowsNativeFileDialogBase accordingly. This also fixes a bug in the previous implementation causing the directory not to reported back since the native API would not return the directory after closing the dialog. - Support nonmodal native dialogs when constructed on a QQuickWindow. - Delete native dialogs after exec as QtQuick keeps the dialog instances around. Change-Id: Id1169d6657d9476afe12fb9909c36cbd03aa2a40 Reviewed-by: Oliver Wolff Reviewed-by: Joerg Bornemann Reviewed-by: Shawn Rutledge --- .../platforms/windows/qwindowsdialoghelpers.cpp | 415 +++++++++++++-------- .../platforms/windows/qwindowsdialoghelpers.h | 6 +- 2 files changed, 254 insertions(+), 167 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp index 9e5578d35d..16acf439a0 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp @@ -58,6 +58,10 @@ #include #include #include +#include +#include +#include +#include #include #include "qtwindows_additional.h" @@ -387,6 +391,9 @@ void eatMouseMove() Vista on) that mimick the behaviour of their QDialog counterparts as close as possible. + Instances of derived classes are controlled by + QWindowsDialogHelperBase-derived classes. + A major difference is that there is only an exec(), which is a modal, blocking call; there is no non-blocking show(). There 2 types of native dialogs: @@ -401,6 +408,7 @@ void eatMouseMove() like close() can be called on them from event handlers. \endlist + \sa QWindowsDialogHelperBase \internal \ingroup qt-lighthouse-win */ @@ -411,7 +419,6 @@ class QWindowsNativeDialogBase : public QObject public: virtual void setWindowTitle(const QString &title) = 0; virtual void exec(HWND owner = 0) = 0; - virtual QPlatformDialogHelper::DialogCode result() const = 0; signals: void accepted(); @@ -432,12 +439,10 @@ protected: The native dialog is created in setVisible_sys() since then modality and the state of DontUseNativeDialog is known. - Modal dialogs are then started via the platformNativeDialogModalHelp(), - platformNativeDialogModalHelp() slots. - Non-modal dialogs are shown using a separate thread should - they support it. + Modal dialogs are then run by exec(). Non-modal dialogs are shown using a + separate thread started in show() should they support it. - \sa QWindowsDialogThread + \sa QWindowsDialogThread, QWindowsNativeDialogBase \internal \ingroup qt-lighthouse-win */ @@ -449,12 +454,6 @@ QWindowsDialogHelperBase::QWindowsDialogHelperBase() : { } -template -QWindowsDialogHelperBase::~QWindowsDialogHelperBase() -{ - delete m_nativeDialog; -} - template QWindowsNativeDialogBase *QWindowsDialogHelperBase::nativeDialog() const { @@ -465,6 +464,13 @@ QWindowsNativeDialogBase *QWindowsDialogHelperBase::nativeDialog() co return m_nativeDialog; } +template +void QWindowsDialogHelperBase::deleteNativeDialog() +{ + delete m_nativeDialog; + m_nativeDialog = 0; +} + template QWindowsNativeDialogBase *QWindowsDialogHelperBase::ensureNativeDialog() { @@ -486,22 +492,18 @@ QWindowsNativeDialogBase *QWindowsDialogHelperBase::ensureNativeDialo class QWindowsDialogThread : public QThread { public: - QWindowsDialogThread(QWindowsNativeDialogBase *dialog, - HWND owner = 0) : - m_dialog(dialog), m_owner(owner) {} - + QWindowsDialogThread(QPlatformDialogHelper *h) : m_helper(h) {} void run(); private: - QWindowsNativeDialogBase *m_dialog; - const HWND m_owner; + QPlatformDialogHelper *m_helper; }; void QWindowsDialogThread::run() { if (QWindowsContext::verboseDialogs) qDebug(">%s" , __FUNCTION__); - m_dialog->exec(m_owner); + m_helper->exec(); deleteLater(); if (QWindowsContext::verboseDialogs) qDebug("<%s" , __FUNCTION__); @@ -512,7 +514,7 @@ bool QWindowsDialogHelperBase::show(Qt::WindowFlags, Qt::WindowModality windowModality, QWindow *parent) { - const bool modal = (windowModality == Qt::ApplicationModal); + const bool modal = (windowModality != Qt::NonModal); if (parent) { m_ownerWindow = QWindowsWindow::handleOf(parent); } else { @@ -521,12 +523,12 @@ bool QWindowsDialogHelperBase::show(Qt::WindowFlags, if (QWindowsContext::verboseDialogs) qDebug("%s modal=%d native=%p parent=%p" , __FUNCTION__, modal, m_nativeDialog, m_ownerWindow); - if (!modal && !supportsNonModalDialog()) + if (!modal && !supportsNonModalDialog(parent)) return false; // Was it changed in-between? if (!ensureNativeDialog()) return false; if (!modal) { // Modal dialogs are shown in separate slot. - QWindowsDialogThread *thread = new QWindowsDialogThread(m_nativeDialog, m_ownerWindow); + QWindowsDialogThread *thread = new QWindowsDialogThread(this); thread->start(); } return true; @@ -545,8 +547,10 @@ void QWindowsDialogHelperBase::exec() { if (QWindowsContext::verboseDialogs) qDebug("%s" , __FUNCTION__); - if (QWindowsNativeDialogBase *nd = nativeDialog()) + if (QWindowsNativeDialogBase *nd = nativeDialog()) { nd->exec(m_ownerWindow); + deleteNativeDialog(); + } } static inline bool snapToDefaultButtonHint() @@ -567,6 +571,101 @@ QVariant QWindowsDialogHelperBase::styleHint(QPlatformDialogHelper::S return BaseClass::styleHint(hint); } +/*! + \class QWindowsFileDialogSharedData + \brief Explicitly shared file dialog parameters that are not in QFileDialogOptions. + + Contain Parameters that need to be cached while the native dialog does not + exist yet. In addition, the data are updated by the change notifications of the + IFileDialogEvent, as querying them after the dialog has closed + does not reliably work. Provides thread-safe setters (for the non-modal case). + + \internal + \ingroup qt-lighthouse-win + \sa QFileDialogOptions +*/ + +class QWindowsFileDialogSharedData +{ +public: + QWindowsFileDialogSharedData() : m_data(new Data) {} + void fromOptions(const QSharedPointer &o); + + QString directory() const; + void setDirectory(const QString &); + QString selectedNameFilter() const; + void setSelectedNameFilter(const QString &); + QStringList selectedFiles() const; + void setSelectedFiles(const QStringList &); + QString selectedFile() const; + +private: + class Data : public QSharedData { + public: + QString directory; + QString selectedNameFilter; + QStringList selectedFiles; + QMutex mutex; + }; + QExplicitlySharedDataPointer m_data; +}; + +inline QString QWindowsFileDialogSharedData::directory() const +{ + m_data->mutex.lock(); + const QString result = m_data->directory; + m_data->mutex.unlock(); + return result; +} + +inline void QWindowsFileDialogSharedData::setDirectory(const QString &d) +{ + QMutexLocker (&m_data->mutex); + m_data->directory = d; +} + +inline QString QWindowsFileDialogSharedData::selectedNameFilter() const +{ + m_data->mutex.lock(); + const QString result = m_data->selectedNameFilter; + m_data->mutex.unlock(); + return result; +} + +inline void QWindowsFileDialogSharedData::setSelectedNameFilter(const QString &f) +{ + QMutexLocker (&m_data->mutex); + m_data->selectedNameFilter = f; +} + +inline QStringList QWindowsFileDialogSharedData::selectedFiles() const +{ + m_data->mutex.lock(); + const QStringList result = m_data->selectedFiles; + m_data->mutex.unlock(); + return result; +} + +inline QString QWindowsFileDialogSharedData::selectedFile() const +{ + const QStringList files = selectedFiles(); + return files.isEmpty() ? QString() : files.front(); +} + +inline void QWindowsFileDialogSharedData::setSelectedFiles(const QStringList &f) +{ + QMutexLocker (&m_data->mutex); + m_data->selectedFiles = f; +} + +inline void QWindowsFileDialogSharedData::fromOptions(const QSharedPointer &o) +{ + QMutexLocker (&m_data->mutex); + m_data->directory = o->initialDirectory(); + m_data->selectedFiles = o->initiallySelectedFiles(); + m_data->selectedNameFilter = o->initiallySelectedNameFilter(); +} + /*! \class QWindowsNativeFileDialogEventHandler \brief Listens to IFileDialog events and forwards them to QWindowsNativeFileDialogBase @@ -609,7 +708,7 @@ public: } // IFileDialogEvents methods - IFACEMETHODIMP OnFileOk(IFileDialog *) { return S_OK; } + IFACEMETHODIMP OnFileOk(IFileDialog *); IFACEMETHODIMP OnFolderChange(IFileDialog *) { return S_OK; } IFACEMETHODIMP OnFolderChanging(IFileDialog *, IShellItem *); IFACEMETHODIMP OnHelp(IFileDialog *) { return S_OK; } @@ -658,29 +757,33 @@ class QWindowsNativeFileDialogBase : public QWindowsNativeDialogBase public: ~QWindowsNativeFileDialogBase(); - inline static QWindowsNativeFileDialogBase *create(QFileDialogOptions::AcceptMode am); + inline static QWindowsNativeFileDialogBase *create(QFileDialogOptions::AcceptMode am, const QWindowsFileDialogSharedData &data); virtual void setWindowTitle(const QString &title); inline void setMode(QFileDialogOptions::FileMode mode, QFileDialogOptions::FileDialogOptions options); inline void setDirectory(const QString &directory); + inline void updateDirectory() { setDirectory(m_data.directory()); } inline QString directory() const; virtual void exec(HWND owner = 0); inline void setNameFilters(const QStringList &f); inline void selectNameFilter(const QString &filter); + inline void updateSelectedNameFilter() { selectNameFilter(m_data.selectedNameFilter()); } inline QString selectedNameFilter() const; bool hideFiltersDetails() const { return m_hideFiltersDetails; } void setHideFiltersDetails(bool h) { m_hideFiltersDetails = h; } void setDefaultSuffix(const QString &s); inline void setLabelText(QFileDialogOptions::DialogLabel l, const QString &text); - virtual QPlatformDialogHelper::DialogCode result() const - { return fileResult(); } - virtual QPlatformDialogHelper::DialogCode fileResult(QStringList *fileResult = 0) const = 0; + // Return the selected files for tracking in OnSelectionChanged(). virtual QStringList selectedFiles() const = 0; + // Return the result for tracking in OnFileOk(). Differs from selection for + // example by appended default suffixes, etc. + virtual QStringList dialogResult() const = 0; inline void onFolderChange(IShellItem *); inline void onSelectionChange(); inline void onTypeChange(); + inline bool onFileOk(); signals: void directoryEntered(const QString& directory); @@ -691,23 +794,28 @@ public slots: virtual void close() { m_fileDialog->Close(S_OK); } protected: - QWindowsNativeFileDialogBase(); + explicit QWindowsNativeFileDialogBase(const QWindowsFileDialogSharedData &data); bool init(const CLSID &clsId, const IID &iid); inline IFileDialog * fileDialog() const { return m_fileDialog; } static QString itemPath(IShellItem *item); static int itemPaths(IShellItemArray *items, QStringList *fileResult = 0); static IShellItem *shellItem(const QString &path); + const QWindowsFileDialogSharedData &data() const { return m_data; } + QWindowsFileDialogSharedData &data() { return m_data; } + private: IFileDialog *m_fileDialog; IFileDialogEvents *m_dialogEvents; DWORD m_cookie; QStringList m_nameFilters; bool m_hideFiltersDetails; + QWindowsFileDialogSharedData m_data; }; -QWindowsNativeFileDialogBase::QWindowsNativeFileDialogBase() : - m_fileDialog(0), m_dialogEvents(0), m_cookie(0), m_hideFiltersDetails(false) +QWindowsNativeFileDialogBase::QWindowsNativeFileDialogBase(const QWindowsFileDialogSharedData &data) : + m_fileDialog(0), m_dialogEvents(0), m_cookie(0), m_hideFiltersDetails(false), + m_data(data) { } @@ -763,15 +871,17 @@ IShellItem *QWindowsNativeFileDialogBase::shellItem(const QString &path) return result; } #endif - qErrnoWarning("%s: SHCreateItemFromParsingName()) failed", __FUNCTION__); + qErrnoWarning("%s: SHCreateItemFromParsingName(%s)) failed", __FUNCTION__, qPrintable(path)); return 0; } void QWindowsNativeFileDialogBase::setDirectory(const QString &directory) { - if (IShellItem *psi = QWindowsNativeFileDialogBase::shellItem(directory)) { - m_fileDialog->SetFolder(psi); - psi->Release(); + if (!directory.isEmpty()) { + if (IShellItem *psi = QWindowsNativeFileDialogBase::shellItem(directory)) { + m_fileDialog->SetFolder(psi); + psi->Release(); + } } } @@ -977,14 +1087,16 @@ static int indexOfNameFilter(const QStringList &filters, const QString &needle) void QWindowsNativeFileDialogBase::selectNameFilter(const QString &filter) { + if (filter.isEmpty()) + return; const int index = indexOfNameFilter(m_nameFilters, filter); - if (index >= 0) { - m_fileDialog->SetFileTypeIndex(index + 1); // one-based. - } else { + if (index < 0) { qWarning("%s: Invalid parameter '%s' not found in '%s'.", __FUNCTION__, qPrintable(filter), qPrintable(m_nameFilters.join(QStringLiteral(", ")))); + return; } + m_fileDialog->SetFileTypeIndex(index + 1); // one-based. } QString QWindowsNativeFileDialogBase::selectedNameFilter() const @@ -1002,6 +1114,7 @@ void QWindowsNativeFileDialogBase::onFolderChange(IShellItem *item) { if (item) { const QString directory = QWindowsNativeFileDialogBase::itemPath(item); + m_data.setDirectory(directory); emit directoryEntered(directory); } } @@ -1009,13 +1122,23 @@ void QWindowsNativeFileDialogBase::onFolderChange(IShellItem *item) void QWindowsNativeFileDialogBase::onSelectionChange() { const QStringList current = selectedFiles(); + m_data.setSelectedFiles(current); if (current.size() == 1) emit currentChanged(current.front()); } void QWindowsNativeFileDialogBase::onTypeChange() { - emit filterSelected(selectedNameFilter()); + const QString filter = selectedNameFilter(); + m_data.setSelectedNameFilter(filter); + emit filterSelected(filter); +} + +bool QWindowsNativeFileDialogBase::onFileOk() +{ + // Store selected files as GetResults() returns invalid data after the dialog closes. + m_data.setSelectedFiles(dialogResult()); + return true; } HRESULT QWindowsNativeFileDialogEventHandler::OnFolderChanging(IFileDialog *, IShellItem *item) @@ -1036,6 +1159,11 @@ HRESULT QWindowsNativeFileDialogEventHandler::OnTypeChange(IFileDialog *) return S_OK; } +HRESULT QWindowsNativeFileDialogEventHandler::OnFileOk(IFileDialog *) +{ + return m_nativeFileDialog->onFileOk() ? S_OK : S_FALSE; +} + /*! \class QWindowsNativeSaveFileDialog \brief Windows native file save dialog wrapper around IFileSaveDialog. @@ -1049,8 +1177,10 @@ HRESULT QWindowsNativeFileDialogEventHandler::OnTypeChange(IFileDialog *) class QWindowsNativeSaveFileDialog : public QWindowsNativeFileDialogBase { public: - virtual QPlatformDialogHelper::DialogCode fileResult(QStringList *fileResult = 0) const; + explicit QWindowsNativeSaveFileDialog(const QWindowsFileDialogSharedData &data) : + QWindowsNativeFileDialogBase(data) {} virtual QStringList selectedFiles() const; + virtual QStringList dialogResult() const; }; // Append a suffix from the name filter "Foo files (*.foo;*.bar)" @@ -1073,17 +1203,13 @@ static inline QString appendSuffix(const QString &fileName, const QString &filte return fileName + QLatin1Char('.') + filter.mid(suffixPos, endPos - suffixPos); } -QPlatformDialogHelper::DialogCode QWindowsNativeSaveFileDialog::fileResult(QStringList *result /* = 0 */) const +QStringList QWindowsNativeSaveFileDialog::dialogResult() const { - if (result) - result->clear(); + QStringList result; IShellItem *item = 0; - const HRESULT hr = fileDialog()->GetResult(&item); - if (FAILED(hr) || !item) - return QPlatformDialogHelper::Rejected; - if (result) - result->push_back(appendSuffix(QWindowsNativeFileDialogBase::itemPath(item), selectedNameFilter())); - return QPlatformDialogHelper::Accepted; + if (SUCCEEDED(fileDialog()->GetResult(&item)) && item) + result.push_back(appendSuffix(QWindowsNativeFileDialogBase::itemPath(item), selectedNameFilter())); + return result; } QStringList QWindowsNativeSaveFileDialog::selectedFiles() const @@ -1109,23 +1235,23 @@ QStringList QWindowsNativeSaveFileDialog::selectedFiles() const class QWindowsNativeOpenFileDialog : public QWindowsNativeFileDialogBase { public: - virtual QPlatformDialogHelper::DialogCode fileResult(QStringList *fileResult = 0) const; + explicit QWindowsNativeOpenFileDialog(const QWindowsFileDialogSharedData &data) : + QWindowsNativeFileDialogBase(data) {} virtual QStringList selectedFiles() const; + virtual QStringList dialogResult() const; private: inline IFileOpenDialog *openFileDialog() const { return static_cast(fileDialog()); } }; -QPlatformDialogHelper::DialogCode QWindowsNativeOpenFileDialog::fileResult(QStringList *result /* = 0 */) const +QStringList QWindowsNativeOpenFileDialog::dialogResult() const { - if (result) - result->clear(); + QStringList result; IShellItemArray *items = 0; - const HRESULT hr = openFileDialog()->GetResults(&items); - if (SUCCEEDED(hr) && items && QWindowsNativeFileDialogBase::itemPaths(items, result) > 0) - return QPlatformDialogHelper::Accepted; - return QPlatformDialogHelper::Rejected; + if (SUCCEEDED(openFileDialog()->GetResults(&items)) && items) + QWindowsNativeFileDialogBase::itemPaths(items, &result); + return result; } QStringList QWindowsNativeOpenFileDialog::selectedFiles() const @@ -1144,17 +1270,18 @@ QStringList QWindowsNativeOpenFileDialog::selectedFiles() const QFileDialog::AcceptMode. */ -QWindowsNativeFileDialogBase *QWindowsNativeFileDialogBase::create(QFileDialogOptions::AcceptMode am) +QWindowsNativeFileDialogBase *QWindowsNativeFileDialogBase::create(QFileDialogOptions::AcceptMode am, + const QWindowsFileDialogSharedData &data) { QWindowsNativeFileDialogBase *result = 0; if (am == QFileDialogOptions::AcceptOpen) { - result = new QWindowsNativeOpenFileDialog; + result = new QWindowsNativeOpenFileDialog(data); if (!result->init(CLSID_FileOpenDialog, IID_IFileOpenDialog)) { delete result; return 0; } } else { - result = new QWindowsNativeSaveFileDialog; + result = new QWindowsNativeSaveFileDialog(data); if (!result->init(CLSID_FileSaveDialog, IID_IFileSaveDialog)) { delete result; return 0; @@ -1163,16 +1290,17 @@ QWindowsNativeFileDialogBase *QWindowsNativeFileDialogBase::create(QFileDialogOp return result; } +static inline bool isQQuickWindow(const QWindow *w = 0) +{ + return w && w->inherits("QQuickWindow"); +} + /*! \class QWindowsFileDialogHelper \brief Helper for native Windows file dialogs - Non-modal dialogs are disabled for now. The functionality is - implemented in principle, however there are failures - when querying the results from a dialog run in another thread. - This could probably be fixed be calling CoInitializeEx() with - the right parameters from each thread. The problem is though - that calls to CoInitialize() occur in several places in Qt. + For Qt 4 compatibility, do not create native non-modal dialogs on widgets, + but only on QQuickWindows, which do not have a fallback. \internal \ingroup qt-lighthouse-win @@ -1182,8 +1310,9 @@ class QWindowsFileDialogHelper : public QWindowsDialogHelperBase(nativeDialog()); } + + // Cache for the case no native dialog is created. + QWindowsFileDialogSharedData m_data; }; QWindowsNativeDialogBase *QWindowsFileDialogHelper::createNativeDialog() { - QWindowsNativeFileDialogBase *result = QWindowsNativeFileDialogBase::create(options()->acceptMode()); + QWindowsNativeFileDialogBase *result = QWindowsNativeFileDialogBase::create(options()->acceptMode(), m_data); if (!result) return 0; QObject::connect(result, SIGNAL(accepted()), this, SIGNAL(accept())); @@ -1217,6 +1349,7 @@ QWindowsNativeDialogBase *QWindowsFileDialogHelper::createNativeDialog() // Apply settings. const QSharedPointer &opts = options(); + m_data.fromOptions(opts); result->setWindowTitle(opts->windowTitle()); result->setMode(opts->fileMode(), opts->options()); result->setHideFiltersDetails(opts->testOption(QFileDialogOptions::HideNameFilterDetails)); @@ -1227,12 +1360,8 @@ QWindowsNativeDialogBase *QWindowsFileDialogHelper::createNativeDialog() result->setLabelText(QFileDialogOptions::FileName, opts->labelText(QFileDialogOptions::FileName)); if (opts->isLabelExplicitlySet(QFileDialogOptions::Accept)) result->setLabelText(QFileDialogOptions::Accept, opts->labelText(QFileDialogOptions::Accept)); - const QString initialDirectory = opts->initialDirectory(); - if (!initialDirectory.isEmpty()) - result->setDirectory(initialDirectory); - const QString initialNameFilter = opts->initiallySelectedNameFilter(); - if (!initialNameFilter.isEmpty()) - result->selectNameFilter(initialNameFilter); + result->updateDirectory(); + result->updateSelectedNameFilter(); const QString defaultSuffix = opts->defaultSuffix(); if (!defaultSuffix.isEmpty()) result->setDefaultSuffix(defaultSuffix); @@ -1244,15 +1373,14 @@ void QWindowsFileDialogHelper::setDirectory(const QString &directory) if (QWindowsContext::verboseDialogs) qDebug("%s %s" , __FUNCTION__, qPrintable(directory)); - if (QWindowsNativeFileDialogBase *nfd = nativeFileDialog()) - nfd->setDirectory(directory); + m_data.setDirectory(directory); + if (hasNativeDialog()) + nativeFileDialog()->updateDirectory(); } QString QWindowsFileDialogHelper::directory() const { - if (const QWindowsNativeFileDialogBase *nfd = nativeFileDialog()) - return nfd->directory(); - return QString(); + return m_data.directory(); } void QWindowsFileDialogHelper::selectFile(const QString & /* filename */) @@ -1262,13 +1390,7 @@ void QWindowsFileDialogHelper::selectFile(const QString & /* filename */) QStringList QWindowsFileDialogHelper::selectedFiles() const { - QStringList files; - if (const QWindowsNativeFileDialogBase *nfd = nativeFileDialog()) - nfd->fileResult(&files); - if (QWindowsContext::verboseDialogs) - qDebug("%s files='%s'" , __FUNCTION__, - qPrintable(files.join(QStringLiteral(", ")))); - return files; + return m_data.selectedFiles(); } void QWindowsFileDialogHelper::setFilter() @@ -1287,15 +1409,14 @@ void QWindowsFileDialogHelper::setNameFilters(const QStringList &filters) void QWindowsFileDialogHelper::selectNameFilter(const QString &filter) { - if (QWindowsNativeFileDialogBase *nfd = nativeFileDialog()) - nfd->selectNameFilter(filter); + m_data.setSelectedNameFilter(filter); + if (hasNativeDialog()) + nativeFileDialog()->updateSelectedNameFilter(); } QString QWindowsFileDialogHelper::selectedNameFilter() const { - if (const QWindowsNativeFileDialogBase *nfd = nativeFileDialog()) - return nfd->selectedNameFilter(); - return QString(); + return m_data.selectedNameFilter(); } #ifndef Q_OS_WINCE @@ -1319,20 +1440,12 @@ class QWindowsXpNativeFileDialog : public QWindowsNativeDialogBase public: typedef QSharedPointer OptionsPtr; - static QWindowsXpNativeFileDialog *create(const OptionsPtr &options); + static QWindowsXpNativeFileDialog *create(const OptionsPtr &options, const QWindowsFileDialogSharedData &data); virtual void setWindowTitle(const QString &t) { m_title = t; } virtual void exec(HWND owner = 0); virtual QPlatformDialogHelper::DialogCode result() const { return m_result; } - void setDirectory(const QString &d) { m_directory = d; } - QString directory() const { return m_directory; } - void selectFile(const QString &f) { m_initialFile = f; } - QStringList selectedFiles() const { return m_selectedFiles; } - void setNameFilters(const QStringList &n) { m_nameFilters = n; } - void selectNameFilter(const QString &f); - QString selectedNameFilter() const { return m_selectedNameFilter; } - int existingDirCallback(HWND hwnd, UINT uMsg, LPARAM lParam); public slots: @@ -1342,19 +1455,15 @@ private: typedef BOOL (APIENTRY *PtrGetOpenFileNameW)(LPOPENFILENAMEW); typedef BOOL (APIENTRY *PtrGetSaveFileNameW)(LPOPENFILENAMEW); - explicit QWindowsXpNativeFileDialog(const OptionsPtr &options); + explicit QWindowsXpNativeFileDialog(const OptionsPtr &options, const QWindowsFileDialogSharedData &data); void populateOpenFileName(OPENFILENAME *ofn, HWND owner) const; QStringList execExistingDir(HWND owner); QStringList execFileNames(HWND owner, int *selectedFilterIndex) const; const OptionsPtr m_options; QString m_title; - QString m_directory; - QString m_initialFile; - QStringList m_selectedFiles; - QString m_selectedNameFilter; - QStringList m_nameFilters; QPlatformDialogHelper::DialogCode m_result; + QWindowsFileDialogSharedData m_data; static PtrGetOpenFileNameW m_getOpenFileNameW; static PtrGetSaveFileNameW m_getSaveFileNameW; @@ -1363,7 +1472,7 @@ private: QWindowsXpNativeFileDialog::PtrGetOpenFileNameW QWindowsXpNativeFileDialog::m_getOpenFileNameW = 0; QWindowsXpNativeFileDialog::PtrGetSaveFileNameW QWindowsXpNativeFileDialog::m_getSaveFileNameW = 0; -QWindowsXpNativeFileDialog *QWindowsXpNativeFileDialog::create(const OptionsPtr &options) +QWindowsXpNativeFileDialog *QWindowsXpNativeFileDialog::create(const OptionsPtr &options, const QWindowsFileDialogSharedData &data) { // GetOpenFileNameW() GetSaveFileName() are resolved // dynamically as not to create a dependency on Comdlg32, which @@ -1374,51 +1483,33 @@ QWindowsXpNativeFileDialog *QWindowsXpNativeFileDialog::create(const OptionsPtr m_getSaveFileNameW = (PtrGetSaveFileNameW)(library.resolve("GetSaveFileNameW")); } if (m_getOpenFileNameW && m_getSaveFileNameW) - return new QWindowsXpNativeFileDialog(options); + return new QWindowsXpNativeFileDialog(options, data); return 0; } -QWindowsXpNativeFileDialog::QWindowsXpNativeFileDialog(const OptionsPtr &options) : - m_options(options), m_result(QPlatformDialogHelper::Rejected) +QWindowsXpNativeFileDialog::QWindowsXpNativeFileDialog(const OptionsPtr &options, + const QWindowsFileDialogSharedData &data) : + m_options(options), m_result(QPlatformDialogHelper::Rejected), m_data(data) { - const QStringList nameFilters = m_options->nameFilters(); - if (!nameFilters.isEmpty()) - setNameFilters(nameFilters); - const QString initialDirectory = m_options->initialDirectory(); - if (!initialDirectory.isEmpty()) - setDirectory(initialDirectory); - const QString initialNameFilter = m_options->initiallySelectedNameFilter(); - if (!initialNameFilter.isEmpty()) - selectNameFilter(initialNameFilter); - const QStringList selectedFiles = m_options->initiallySelectedFiles(); - if (!selectedFiles.isEmpty()) - selectFile(selectedFiles.front()); setWindowTitle(m_options->windowTitle()); } -void QWindowsXpNativeFileDialog::selectNameFilter(const QString &f) -{ - const int index = indexOfNameFilter(m_nameFilters, f); - if (index >= 0) - m_selectedNameFilter = m_nameFilters.at(index); -} - void QWindowsXpNativeFileDialog::exec(HWND owner) { int selectedFilterIndex = -1; - m_selectedFiles = m_options->fileMode() == QFileDialogOptions::DirectoryOnly ? + const QStringList selectedFiles = + m_options->fileMode() == QFileDialogOptions::DirectoryOnly ? execExistingDir(owner) : execFileNames(owner, &selectedFilterIndex); + m_data.setSelectedFiles(selectedFiles); QWindowsDialogs::eatMouseMove(); - if (m_selectedFiles.isEmpty()) { + if (selectedFiles.isEmpty()) { m_result = QPlatformDialogHelper::Rejected; emit rejected(); } else { - if (selectedFilterIndex >= 0 && selectedFilterIndex < m_nameFilters.size()) { - m_selectedNameFilter = m_nameFilters.at(selectedFilterIndex); - } else { - m_selectedNameFilter.clear(); - } - m_directory = QFileInfo(m_selectedFiles.front()).absolutePath(); + const QStringList nameFilters = m_options->nameFilters(); + if (selectedFilterIndex >= 0 && selectedFilterIndex < nameFilters.size()) + m_data.setSelectedNameFilter(nameFilters.at(selectedFilterIndex)); + m_data.setDirectory(QFileInfo(selectedFiles.front()).absolutePath()); m_result = QPlatformDialogHelper::Accepted; emit accepted(); } @@ -1442,9 +1533,11 @@ typedef PIDLIST_ABSOLUTE qt_LpItemIdList; int QWindowsXpNativeFileDialog::existingDirCallback(HWND hwnd, UINT uMsg, LPARAM lParam) { switch (uMsg) { - case BFFM_INITIALIZED: - if (!m_initialFile.isEmpty()) - SendMessage(hwnd, BFFM_SETSELECTION, TRUE, LPARAM(m_initialFile.utf16())); + case BFFM_INITIALIZED: { + const QString initialFile = m_data.selectedFile(); + if (!initialFile.isEmpty()) + SendMessage(hwnd, BFFM_SETSELECTION, TRUE, LPARAM(initialFile.utf16())); + } break; case BFFM_SELCHANGED: { wchar_t path[MAX_PATH]; @@ -1516,7 +1609,7 @@ void QWindowsXpNativeFileDialog::populateOpenFileName(OPENFILENAME *ofn, HWND ow *ptr++ = 0; } *ptr = 0; - const int nameFilterIndex = indexOfNameFilter(m_nameFilters, m_selectedNameFilter); + const int nameFilterIndex = indexOfNameFilter(m_options->nameFilters(), m_data.selectedNameFilter()); if (nameFilterIndex >= 0) ofn->nFilterIndex = nameFilterIndex + 1; // 1..n based. // lpstrFile receives the initial selection and is the buffer @@ -1524,10 +1617,10 @@ void QWindowsXpNativeFileDialog::populateOpenFileName(OPENFILENAME *ofn, HWND ow // will not show. ofn->nMaxFile = 65535; const QString initiallySelectedFile = - QDir::toNativeSeparators(m_initialFile).remove(QLatin1Char('<')). + QDir::toNativeSeparators(m_data.selectedFile()).remove(QLatin1Char('<')). remove(QLatin1Char('>')).remove(QLatin1Char('"')).remove(QLatin1Char('|')); ofn->lpstrFile = qStringToWCharArray(initiallySelectedFile, ofn->nMaxFile); - ofn->lpstrInitialDir = qStringToWCharArray(QDir::toNativeSeparators(m_directory)); + ofn->lpstrInitialDir = qStringToWCharArray(QDir::toNativeSeparators(m_data.directory())); ofn->lpstrTitle = (wchar_t*)m_title.utf16(); // Determine lpstrDefExt. Note that the current MSDN docs document this // member wrong. It should rather be documented as "the default extension @@ -1596,8 +1689,7 @@ class QWindowsXpFileDialogHelper : public QWindowsDialogHelperBase(nativeDialog()); } + + QWindowsFileDialogSharedData m_data; }; QWindowsNativeDialogBase *QWindowsXpFileDialogHelper::createNativeDialog() { - if (QWindowsNativeDialogBase *result = QWindowsXpNativeFileDialog::create(options())) { + m_data.fromOptions(options()); + if (QWindowsXpNativeFileDialog *result = QWindowsXpNativeFileDialog::create(options(), m_data)) { QObject::connect(result, SIGNAL(accepted()), this, SIGNAL(accept())); QObject::connect(result, SIGNAL(rejected()), this, SIGNAL(reject())); return result; @@ -1627,47 +1722,37 @@ QWindowsNativeDialogBase *QWindowsXpFileDialogHelper::createNativeDialog() void QWindowsXpFileDialogHelper::setDirectory(const QString &directory) { - if (QWindowsXpNativeFileDialog *nfd = nativeFileDialog()) - nfd->setDirectory(directory); + m_data.setDirectory(directory); // Dialog cannot be updated at run-time. } QString QWindowsXpFileDialogHelper::directory() const { - if (const QWindowsXpNativeFileDialog *nfd = nativeFileDialog()) - return nfd->directory(); - return QString(); + return m_data.directory(); } void QWindowsXpFileDialogHelper::selectFile(const QString &filename) { - if (QWindowsXpNativeFileDialog *nfd = nativeFileDialog()) - nfd->selectFile(filename); + m_data.setSelectedFiles(QStringList(filename)); // Dialog cannot be updated at run-time. } QStringList QWindowsXpFileDialogHelper::selectedFiles() const { - if (const QWindowsXpNativeFileDialog *nfd = nativeFileDialog()) - return nfd->selectedFiles(); - return QStringList(); + return m_data.selectedFiles(); } -void QWindowsXpFileDialogHelper::setNameFilters(const QStringList &n) +void QWindowsXpFileDialogHelper::setNameFilters(const QStringList &) { - if (QWindowsXpNativeFileDialog *nfd = nativeFileDialog()) - nfd->setNameFilters(n); + // Dialog cannot be updated at run-time. } void QWindowsXpFileDialogHelper::selectNameFilter(const QString &f) { - if (QWindowsXpNativeFileDialog *nfd = nativeFileDialog()) - nfd->selectNameFilter(f); + m_data.setSelectedNameFilter(f); // Dialog cannot be updated at run-time. } QString QWindowsXpFileDialogHelper::selectedNameFilter() const { - if (const QWindowsXpNativeFileDialog *nfd = nativeFileDialog()) - return nfd->selectedNameFilter(); - return QString(); + return m_data.selectedNameFilter(); } #endif // Q_OS_WINCE diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.h b/src/plugins/platforms/windows/qwindowsdialoghelpers.h index c656f72d6e..9ec93f1b4c 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.h +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.h @@ -65,6 +65,7 @@ template class QWindowsDialogHelperBase : public BaseClass { public: + ~QWindowsDialogHelperBase() { deleteNativeDialog(); } virtual void exec(); virtual bool show(Qt::WindowFlags windowFlags, @@ -73,12 +74,13 @@ public: virtual void hide(); virtual QVariant styleHint(QPlatformDialogHelper::StyleHint) const; - virtual bool supportsNonModalDialog() const { return true; } + virtual bool supportsNonModalDialog(const QWindow * /* parent */ = 0) const { return true; } protected: QWindowsDialogHelperBase(); - ~QWindowsDialogHelperBase(); QWindowsNativeDialogBase *nativeDialog() const; + inline bool hasNativeDialog() const { return m_nativeDialog; } + void deleteNativeDialog(); private: virtual QWindowsNativeDialogBase *createNativeDialog() = 0; -- cgit v1.2.3 From 1029049e1d8aa84f19fe344e605849c36522a97f Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 18 Jan 2013 12:16:39 +0100 Subject: Fix MinGW-warning about pointer/integer of different sizes (64bit). Change-Id: I26945bbcd0994e478332ea1250ad7d0bbaa8420f Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/qwindowsfontengine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsfontengine.cpp b/src/plugins/platforms/windows/qwindowsfontengine.cpp index 6937e6bce3..b0d68eb2af 100644 --- a/src/plugins/platforms/windows/qwindowsfontengine.cpp +++ b/src/plugins/platforms/windows/qwindowsfontengine.cpp @@ -1226,13 +1226,13 @@ QImage QWindowsFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed, const QTra { HFONT font = hfont; - int contrast; + UINT contrast; SystemParametersInfo(SPI_GETFONTSMOOTHINGCONTRAST, 0, &contrast, 0); SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, 0, (void *) 1000, 0); int margin = glyphMargin(QFontEngineGlyphCache::Raster_RGBMask); QWindowsNativeImage *mask = drawGDIGlyph(font, glyph, margin, t, QImage::Format_RGB32); - SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, 0, (void *) contrast, 0); + SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, 0, (void *) quintptr(contrast), 0); if (mask == 0) return QImage(); -- cgit v1.2.3 From c24a7377dd9cfb503b43ef3f5a2d5cac9a4e1b8c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 14 Jan 2013 10:00:12 +0100 Subject: Regression: Fix setting of custom cursors for native widgets. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, there is no concept of not having a cursor set on a Window. Qt::ArrowCursor is always set instead. This causes bugs when native child widgets are involved, for example setting a cursor on the native widget's parent no longer works since the child's Qt::ArrowCursor applies. Introduce QWindowPrivate::hasCursor tracking whether a cursor has been explicitly set and clear in QWindow::unsetCursor(). Handle 0 in QPlatformCursor::changeCursor() to mean "unsetCursor()": - Windows: Introduce default constructor for QWindowsWindowCursor meaning "0". Search for applicable parent cursor in applyCursor. - XCB: No big changes required, set XCB_CURSOR_NONE for no cursor. - Other platforms: Assume Qt::ArrowCursor when cursor = 0 is passed for now. Task-number: QTBUG-28879 Change-Id: Id82722592f3cd5fe577a5b64dcc600c85cfea484 Reviewed-by: Jonathan Liu Reviewed-by: Morten Johan Sørvig Reviewed-by: Samuel Rødal --- src/gui/kernel/qguiapplication.cpp | 16 +++++++- src/gui/kernel/qplatformcursor.cpp | 4 ++ src/gui/kernel/qwindow.cpp | 44 ++++++++++++++++------ src/gui/kernel/qwindow_p.h | 3 ++ src/platformsupport/fbconvenience/qfbcursor.cpp | 2 +- src/plugins/platforms/cocoa/qcocoacursor.mm | 7 ++-- src/plugins/platforms/directfb/qdirectfbcursor.cpp | 5 ++- src/plugins/platforms/eglfs/qeglfscursor.cpp | 7 ++-- src/plugins/platforms/kms/qkmscursor.cpp | 5 ++- src/plugins/platforms/windows/qwindowscursor.cpp | 20 +++++++++- src/plugins/platforms/windows/qwindowscursor.h | 2 + src/plugins/platforms/windows/qwindowswindow.cpp | 31 ++++++++++++--- src/plugins/platforms/xcb/qxcbcursor.cpp | 24 ++++++------ src/widgets/kernel/qwidget_qpa.cpp | 10 ++++- 14 files changed, 135 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 190d52776a..aa3bb0ed60 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -2629,6 +2629,13 @@ static inline void applyCursor(QWindow *w, QCursor c) cursor->changeCursor(&c, w); } +static inline void unsetCursor(QWindow *w) +{ + if (const QScreen *screen = w->screen()) + if (QPlatformCursor *cursor = screen->handle()->cursor()) + cursor->changeCursor(0, w); +} + static inline void applyCursor(const QList &l, const QCursor &c) { for (int i = 0; i < l.size(); ++i) { @@ -2642,8 +2649,13 @@ static inline void applyWindowCursor(const QList &l) { for (int i = 0; i < l.size(); ++i) { QWindow *w = l.at(i); - if (w->handle() && w->type() != Qt::Desktop) - applyCursor(w, w->cursor()); + if (w->handle() && w->type() != Qt::Desktop) { + if (qt_window_private(w)->hasCursor) { + applyCursor(w, w->cursor()); + } else { + unsetCursor(w); + } + } } } diff --git a/src/gui/kernel/qplatformcursor.cpp b/src/gui/kernel/qplatformcursor.cpp index 6e2c12bf39..a28617cb37 100644 --- a/src/gui/kernel/qplatformcursor.cpp +++ b/src/gui/kernel/qplatformcursor.cpp @@ -95,6 +95,10 @@ QList QPlatformCursorPrivate::getInstances() \a windowCursor is a pointer to the QCursor that should be displayed. + To unset the cursor of \a window, 0 is passed. This means \a window does not have + a cursor set and the cursor of a the first parent window which has a cursor explicitly + set or the system default cursor should take effect. + \a window is a pointer to the window currently displayed at QCursor::pos(). Note that this may be 0 if the current position is not occupied by a displayed widget. diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 22ad748fb5..b05d6c577e 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -284,7 +284,7 @@ void QWindow::setVisible(bool visible) } #ifndef QT_NO_CURSOR - if (visible) + if (visible && d->hasCursor) d->applyCursor(); #endif d->platformWindow->setVisible(visible); @@ -1947,13 +1947,7 @@ void QWindowPrivate::maybeQuitOnLastWindowClosed() void QWindow::setCursor(const QCursor &cursor) { Q_D(QWindow); - d->cursor = cursor; - // Only attempt to set cursor and emit signal if there is an actual platform cursor - if (d->screen->handle()->cursor()) { - d->applyCursor(); - QEvent event(QEvent::CursorChange); - QGuiApplication::sendEvent(this, &event); - } + d->setCursor(&cursor); } /*! @@ -1961,7 +1955,8 @@ void QWindow::setCursor(const QCursor &cursor) */ void QWindow::unsetCursor() { - setCursor(Qt::ArrowCursor); + Q_D(QWindow); + d->setCursor(0); } /*! @@ -1975,14 +1970,39 @@ QCursor QWindow::cursor() const return d->cursor; } +void QWindowPrivate::setCursor(const QCursor *newCursor) +{ + + Q_Q(QWindow); + if (newCursor) { + const Qt::CursorShape newShape = newCursor->shape(); + if (newShape <= Qt::LastCursor && hasCursor && newShape == cursor.shape()) + return; // Unchanged and no bitmap/custom cursor. + cursor = *newCursor; + hasCursor = true; + } else { + if (!hasCursor) + return; + cursor = QCursor(Qt::ArrowCursor); + hasCursor = false; + } + // Only attempt to set cursor and emit signal if there is an actual platform cursor + if (screen->handle()->cursor()) { + applyCursor(); + QEvent event(QEvent::CursorChange); + QGuiApplication::sendEvent(q, &event); + } +} + void QWindowPrivate::applyCursor() { Q_Q(QWindow); if (platformWindow) { if (QPlatformCursor *platformCursor = screen->handle()->cursor()) { - QCursor *oc = QGuiApplication::overrideCursor(); - QCursor c = oc ? *oc : cursor; - platformCursor->changeCursor(&c, q); + QCursor *c = QGuiApplication::overrideCursor(); + if (!c && hasCursor) + c = &cursor; + platformCursor->changeCursor(c, q); } } } diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h index 305888d02c..5282c60640 100644 --- a/src/gui/kernel/qwindow_p.h +++ b/src/gui/kernel/qwindow_p.h @@ -98,6 +98,7 @@ public: , screen(0) #ifndef QT_NO_CURSOR , cursor(Qt::ArrowCursor) + , hasCursor(false) #endif { isWindow = true; @@ -109,6 +110,7 @@ public: void maybeQuitOnLastWindowClosed(); #ifndef QT_NO_CURSOR + void setCursor(const QCursor *c = 0); void applyCursor(); #endif @@ -151,6 +153,7 @@ public: #ifndef QT_NO_CURSOR QCursor cursor; + bool hasCursor; #endif }; diff --git a/src/platformsupport/fbconvenience/qfbcursor.cpp b/src/platformsupport/fbconvenience/qfbcursor.cpp index bc44055721..df4fdd135e 100644 --- a/src/platformsupport/fbconvenience/qfbcursor.cpp +++ b/src/platformsupport/fbconvenience/qfbcursor.cpp @@ -120,7 +120,7 @@ void QFbCursor::setCursor(const uchar *data, const uchar *mask, int width, int h void QFbCursor::changeCursor(QCursor * widgetCursor, QWindow *window) { Q_UNUSED(window); - Qt::CursorShape shape = widgetCursor->shape(); + const Qt::CursorShape shape = widgetCursor ? widgetCursor->shape() : Qt::ArrowCursor; if (shape == Qt::BitmapCursor) { // application supplied cursor diff --git a/src/plugins/platforms/cocoa/qcocoacursor.mm b/src/plugins/platforms/cocoa/qcocoacursor.mm index a584e22e59..238a900c08 100644 --- a/src/plugins/platforms/cocoa/qcocoacursor.mm +++ b/src/plugins/platforms/cocoa/qcocoacursor.mm @@ -61,8 +61,9 @@ void QCocoaCursor::changeCursor(QCursor *cursor, QWindow *window) { Q_UNUSED(window); + const Qt::CursorShape newShape = cursor ? cursor->shape() : Qt::ArrowCursor; // Check for a suitable built-in NSCursor first: - switch (cursor->shape()) { + switch (newShape) { case Qt::ArrowCursor: [[NSCursor arrowCursor] set]; break; @@ -99,14 +100,14 @@ void QCocoaCursor::changeCursor(QCursor *cursor, QWindow *window) default : { // No suitable OS cursor exist, use cursors provided // by Qt for the rest. Check for a cached cursor: - NSCursor *cocoaCursor = m_cursors.value(cursor->shape()); + NSCursor *cocoaCursor = m_cursors.value(newShape); if (cocoaCursor == 0) { cocoaCursor = createCursorData(cursor); if (cocoaCursor == 0) { [[NSCursor arrowCursor] set]; return; } - m_cursors.insert(cursor->shape(), cocoaCursor); + m_cursors.insert(newShape, cocoaCursor); } [cocoaCursor set]; diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.cpp b/src/plugins/platforms/directfb/qdirectfbcursor.cpp index b04848ec40..23f115e313 100644 --- a/src/plugins/platforms/directfb/qdirectfbcursor.cpp +++ b/src/plugins/platforms/directfb/qdirectfbcursor.cpp @@ -59,8 +59,9 @@ void QDirectFBCursor::changeCursor(QCursor *cursor, QWindow *) int ySpot; QPixmap map; - if (cursor->shape() != Qt::BitmapCursor) { - m_image->set(cursor->shape()); + const Qt::CursorShape newShape = cursor ? cursor->shape() : Qt::ArrowCursor; + if (newShape != Qt::BitmapCursor) { + m_image->set(newShape); xSpot = m_image->hotspot().x(); ySpot = m_image->hotspot().y(); QImage *i = m_image->image(); diff --git a/src/plugins/platforms/eglfs/qeglfscursor.cpp b/src/plugins/platforms/eglfs/qeglfscursor.cpp index b29849226f..88da8d7f42 100644 --- a/src/plugins/platforms/eglfs/qeglfscursor.cpp +++ b/src/plugins/platforms/eglfs/qeglfscursor.cpp @@ -196,15 +196,16 @@ void QEglFSCursor::changeCursor(QCursor *cursor, QWindow *window) bool QEglFSCursor::setCurrentCursor(QCursor *cursor) { - if (m_cursor.shape == cursor->shape() && cursor->shape() != Qt::BitmapCursor) + const Qt::CursorShape newShape = cursor ? cursor->shape() : Qt::ArrowCursor; + if (m_cursor.shape == newShape && newShape != Qt::BitmapCursor) return false; if (m_cursor.shape == Qt::BitmapCursor) { m_cursor.customCursorImage = QImage(); // in case render() never uploaded it } - m_cursor.shape = cursor->shape(); - if (cursor->shape() != Qt::BitmapCursor) { // standard cursor + m_cursor.shape = newShape; + if (newShape != Qt::BitmapCursor) { // standard cursor const float ws = (float)m_cursorAtlas.cursorWidth / m_cursorAtlas.width, hs = (float)m_cursorAtlas.cursorHeight / m_cursorAtlas.height; m_cursor.textureRect = QRectF(ws * (m_cursor.shape % m_cursorAtlas.cursorsPerRow), diff --git a/src/plugins/platforms/kms/qkmscursor.cpp b/src/plugins/platforms/kms/qkmscursor.cpp index 9a86d6c7cb..5101b4c7e2 100644 --- a/src/plugins/platforms/kms/qkmscursor.cpp +++ b/src/plugins/platforms/kms/qkmscursor.cpp @@ -85,8 +85,9 @@ void QKmsCursor::changeCursor(QCursor *widgetCursor, QWindow *window) if (!m_moved) drmModeMoveCursor(m_screen->device()->fd(), m_screen->crtcId(), 0, 0); - if (widgetCursor->shape() != Qt::BitmapCursor) { - m_cursorImage->set(widgetCursor->shape()); + const Qt::CursorShape newShape = widgetCursor ? widgetCursor->shape() : Qt::ArrowCursor; + if (newShape != Qt::BitmapCursor) { + m_cursorImage->set(newShape); } else { m_cursorImage->set(widgetCursor->pixmap().toImage(), widgetCursor->hotSpot().x(), diff --git a/src/plugins/platforms/windows/qwindowscursor.cpp b/src/plugins/platforms/windows/qwindowscursor.cpp index ac4070a93b..84c82dca45 100644 --- a/src/plugins/platforms/windows/qwindowscursor.cpp +++ b/src/plugins/platforms/windows/qwindowscursor.cpp @@ -405,8 +405,12 @@ void QWindowsCursor::changeCursor(QCursor *cursorIn, QWindow *window) if (QWindowsContext::verboseWindows > 1) qDebug() << __FUNCTION__ << cursorIn << window; - if (!cursorIn || !window) + if (!window) return; + if (!cursorIn) { + QWindowsWindow::baseWindowOf(window)->setCursor(QWindowsWindowCursor()); + return; + } const QWindowsWindowCursor wcursor = cursorIn->shape() == Qt::BitmapCursor ? QWindowsWindowCursor(*cursorIn) : standardWindowCursor(cursorIn->shape()); @@ -448,6 +452,7 @@ void QWindowsCursor::setPos(const QPoint &pos) class QWindowsWindowCursorData : public QSharedData { public: + QWindowsWindowCursorData() : m_cursor(Qt::ArrowCursor), m_handle(0) {} explicit QWindowsWindowCursorData(const QCursor &c); ~QWindowsWindowCursorData(); @@ -463,7 +468,13 @@ QWindowsWindowCursorData::QWindowsWindowCursorData(const QCursor &c) : QWindowsWindowCursorData::~QWindowsWindowCursorData() { - DestroyCursor(m_handle); + if (m_handle) + DestroyCursor(m_handle); +} + +QWindowsWindowCursor::QWindowsWindowCursor() : + m_data(new QWindowsWindowCursorData) +{ } QWindowsWindowCursor::QWindowsWindowCursor(const QCursor &c) : @@ -487,6 +498,11 @@ QWindowsWindowCursor & QWindowsWindowCursor::operator =(const QWindowsWindowCurs return *this; } +bool QWindowsWindowCursor::isNull() const +{ + return m_data->m_handle == 0; +} + QCursor QWindowsWindowCursor::cursor() const { return m_data->m_cursor; diff --git a/src/plugins/platforms/windows/qwindowscursor.h b/src/plugins/platforms/windows/qwindowscursor.h index 2d415c04ce..b4026f00bc 100644 --- a/src/plugins/platforms/windows/qwindowscursor.h +++ b/src/plugins/platforms/windows/qwindowscursor.h @@ -55,11 +55,13 @@ class QWindowsWindowCursorData; class QWindowsWindowCursor { public: + QWindowsWindowCursor(); explicit QWindowsWindowCursor(const QCursor &c); ~QWindowsWindowCursor(); QWindowsWindowCursor(const QWindowsWindowCursor &c); QWindowsWindowCursor &operator=(const QWindowsWindowCursor &c); + bool isNull() const; QCursor cursor() const; HCURSOR handle() const; diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index 23ebd6bd9e..21cd3f7d17 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -739,7 +739,6 @@ QWindowsWindow::QWindowsWindow(QWindow *aWindow, const WindowData &data) : m_hdc(0), m_windowState(Qt::WindowNoState), m_opacity(1.0), - m_cursor(QWindowsScreen::screenOf(aWindow)->windowsCursor()->standardWindowCursor()), m_dropTarget(0), m_savedStyle(0), m_format(aWindow->format()), @@ -1668,18 +1667,40 @@ void QWindowsWindow::getSizeHints(MINMAXINFO *mmi) const void QWindowsWindow::applyCursor() { - SetCursor(m_cursor.handle()); + if (m_cursor.isNull()) { // Recurse up to parent with non-null cursor. + if (const QWindow *p = window()->parent()) + QWindowsWindow::baseWindowOf(p)->applyCursor(); + } else { + SetCursor(m_cursor.handle()); + } +} + +// Check whether to apply a new cursor. Either the window in question is +// currently under mouse, or it is the parent of the window under mouse and +// there is no other window with an explicitly set cursor in-between. +static inline bool applyNewCursor(const QWindow *w) +{ + const QWindow *underMouse = QWindowsContext::instance()->windowUnderMouse(); + if (underMouse == w) + return true; + for (const QWindow *p = underMouse; p ; p = p->parent()) { + if (p == w) + return true; + if (!QWindowsWindow::baseWindowOf(p)->cursor().isNull()) + return false; + } + return false; } void QWindowsWindow::setCursor(const QWindowsWindowCursor &c) { if (c.handle() != m_cursor.handle()) { - const bool underMouse = QWindowsContext::instance()->windowUnderMouse() == window(); + const bool apply = applyNewCursor(window()); if (QWindowsContext::verboseWindows) qDebug() << window() << __FUNCTION__ << "Shape=" << c.cursor().shape() - << " isWUM=" << underMouse; + << " doApply=" << apply; m_cursor = c; - if (underMouse) + if (apply) applyCursor(); } } diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp index e2843d04dc..0704ab6205 100644 --- a/src/plugins/platforms/xcb/qxcbcursor.cpp +++ b/src/plugins/platforms/xcb/qxcbcursor.cpp @@ -301,17 +301,19 @@ void QXcbCursor::changeCursor(QCursor *cursor, QWindow *widget) // No X11 cursor control when there is no widget under the cursor return; - xcb_cursor_t c; - if (cursor->shape() == Qt::BitmapCursor) { - qint64 id = cursor->pixmap().cacheKey(); - if (!m_bitmapCursorMap.contains(id)) - m_bitmapCursorMap.insert(id, createBitmapCursor(cursor)); - c = m_bitmapCursorMap.value(id); - } else { - int id = cursor->shape(); - if (!m_shapeCursorMap.contains(id)) - m_shapeCursorMap.insert(id, createFontCursor(cursor->shape())); - c = m_shapeCursorMap.value(id); + xcb_cursor_t c = XCB_CURSOR_NONE; + if (cursor) { + if (cursor->shape() == Qt::BitmapCursor) { + qint64 id = cursor->pixmap().cacheKey(); + if (!m_bitmapCursorMap.contains(id)) + m_bitmapCursorMap.insert(id, createBitmapCursor(cursor)); + c = m_bitmapCursorMap.value(id); + } else { + int id = cursor->shape(); + if (!m_shapeCursorMap.contains(id)) + m_shapeCursorMap.insert(id, createFontCursor(cursor->shape())); + c = m_shapeCursorMap.value(id); + } } w->setCursor(c); diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp index 2aee80ade4..2c2d912009 100644 --- a/src/widgets/kernel/qwidget_qpa.cpp +++ b/src/widgets/kernel/qwidget_qpa.cpp @@ -999,6 +999,12 @@ static inline void applyCursor(QWidget *w, QCursor c) window->setCursor(c); } +static inline void unsetCursor(QWidget *w) +{ + if (QWindow *window = w->windowHandle()) + window->unsetCursor(); +} + void qt_qpa_set_cursor(QWidget *w, bool force) { if (!w->testAttribute(Qt::WA_WState_Created)) @@ -1032,9 +1038,9 @@ void qt_qpa_set_cursor(QWidget *w, bool force) else // Enforce the windows behavior of clearing the cursor on // disabled widgets. - applyCursor(nativeParent, Qt::ArrowCursor); + unsetCursor(nativeParent); } else { - applyCursor(nativeParent, Qt::ArrowCursor); + unsetCursor(nativeParent); } } #endif //QT_NO_CURSOR -- cgit v1.2.3 From 4ed8356053c2d122e9759367cc7443f0f93a22b9 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Fri, 18 Jan 2013 17:37:08 +0100 Subject: Remove some dead code. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Iea86a30d96465bcfe78531c88040b65c6eb9f5b4 Reviewed-by: Jan Arve Sæther --- src/gui/accessible/qaccessibleobject.cpp | 31 ------------------------------- 1 file changed, 31 deletions(-) (limited to 'src') diff --git a/src/gui/accessible/qaccessibleobject.cpp b/src/gui/accessible/qaccessibleobject.cpp index 2bd5a00afb..7cd1bf93eb 100644 --- a/src/gui/accessible/qaccessibleobject.cpp +++ b/src/gui/accessible/qaccessibleobject.cpp @@ -55,39 +55,8 @@ class QAccessibleObjectPrivate { public: QPointer object; - - QList actionList() const; }; -QList QAccessibleObjectPrivate::actionList() const -{ - QList actionList; - - if (!object) - return actionList; - - const QMetaObject *mo = object->metaObject(); - Q_ASSERT(mo); - - QByteArray defaultAction = QMetaObject::normalizedSignature( - mo->classInfo(mo->indexOfClassInfo("DefaultSlot")).value()); - - for (int i = 0; i < mo->methodCount(); ++i) { - const QMetaMethod member = mo->method(i); - if (member.methodType() != QMetaMethod::Slot && member.access() != QMetaMethod::Public) - continue; - - if (!qstrcmp(member.tag(), "QACCESSIBLE_SLOT")) { - if (member.methodSignature() == defaultAction) - actionList.prepend(defaultAction); - else - actionList << member.methodSignature(); - } - } - - return actionList; -} - /*! \class QAccessibleObject \brief The QAccessibleObject class implements parts of the -- cgit v1.2.3 From e01b1634048ebf5858b77f2a6541a960babe232c Mon Sep 17 00:00:00 2001 From: David Faure Date: Sat, 19 Jan 2013 11:52:03 +0100 Subject: QTestLib: improve output when comparing lists fails. Only QStringList was handled before, now any QList is handled. A specialization for QStringList is still needed though, due to the way template matching works. Example with QList. Before: FAIL! : tst_QTextCodec::threadSafety() Compared values are not the same Loc: [../tst_qtextcodec.cpp(2057)] After: FAIL! : tst_QTextCodec::threadSafety() Compared lists differ at index 0. Actual (res2.toList()): '0' Expected (mibList): '3' Loc: [../tst_qtextcodec.cpp(2057)] Change-Id: If0fdec3236ddb78a679ee549aba569ef5571c395 Reviewed-by: Jason McDonald Reviewed-by: Friedemann Kleint --- src/testlib/qtest.h | 23 +++++++++++++++-------- src/testlib/qtestcase.cpp | 4 ++++ 2 files changed, 19 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/testlib/qtest.h b/src/testlib/qtest.h index a38b65671b..4b4ca191fc 100644 --- a/src/testlib/qtest.h +++ b/src/testlib/qtest.h @@ -186,9 +186,9 @@ inline bool qCompare(QLatin1String const &t1, QString const &t2, const char *act return qCompare(QString(t1), t2, actual, expected, file, line); } -template<> -inline bool qCompare(QStringList const &t1, QStringList const &t2, - const char *actual, const char *expected, const char *file, int line) +template +inline bool qCompare(QList const &t1, QList const &t2, const char *actual, const char *expected, + const char *file, int line) { char msg[1024]; msg[0] = '\0'; @@ -196,23 +196,30 @@ inline bool qCompare(QStringList const &t1, QStringList const &t2, const int actualSize = t1.count(); const int expectedSize = t2.count(); if (actualSize != expectedSize) { - qsnprintf(msg, sizeof(msg), "Compared QStringLists have different sizes.\n" + qsnprintf(msg, sizeof(msg), "Compared lists have different sizes.\n" " Actual (%s) size: '%d'\n" " Expected (%s) size: '%d'", actual, actualSize, expected, expectedSize); isOk = false; } for (int i = 0; isOk && i < actualSize; ++i) { - if (t1.at(i) != t2.at(i)) { - qsnprintf(msg, sizeof(msg), "Compared QStringLists differ at index %d.\n" + if (!(t1.at(i) == t2.at(i))) { + qsnprintf(msg, sizeof(msg), "Compared lists differ at index %d.\n" " Actual (%s): '%s'\n" - " Expected (%s): '%s'", i, actual, t1.at(i).toLatin1().constData(), - expected, t2.at(i).toLatin1().constData()); + " Expected (%s): '%s'", i, actual, toString(t1.at(i)), + expected, toString(t2.at(i))); isOk = false; } } return compare_helper(isOk, msg, 0, 0, actual, expected, file, line); } +template <> +inline bool qCompare(QStringList const &t1, QStringList const &t2, const char *actual, const char *expected, + const char *file, int line) +{ + return qCompare(t1, t2, actual, expected, file, line); +} + template inline bool qCompare(QFlags const &t1, T const &t2, const char *actual, const char *expected, const char *file, int line) diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 2bfd3412c7..0b73fabfe1 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -2684,6 +2684,10 @@ bool QTest::compare_string_helper(const char *t1, const char *t2, const char *ac \internal */ +/*! \fn bool QTest::qCompare(QList const &t1, QList const &t2, const char *actual, const char *expected, const char *file, int line) + \internal +*/ + /*! \fn bool QTest::qCompare(QFlags const &t1, T const &t2, const char *actual, const char *expected, const char *file, int line) \internal */ -- cgit v1.2.3 From 63faa00066dfdbcca4f7875d18038c3161c542e2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 21 Jan 2013 11:55:11 +0100 Subject: Windows: Introduce pixmap cursor cache. Cache custom cursors. Task-number: QTBUG-28879 Change-Id: I8f2b5b9149966399a6173dbd19f6a8e85898924b Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/qwindowscursor.cpp | 15 ++++++++++++++- src/plugins/platforms/windows/qwindowscursor.h | 3 +++ 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowscursor.cpp b/src/plugins/platforms/windows/qwindowscursor.cpp index 84c82dca45..31b49a516f 100644 --- a/src/plugins/platforms/windows/qwindowscursor.cpp +++ b/src/plugins/platforms/windows/qwindowscursor.cpp @@ -393,6 +393,19 @@ QWindowsWindowCursor QWindowsCursor::standardWindowCursor(Qt::CursorShape shape) return it.value(); } +/*! + \brief Return cached pixmap cursor or create new one. +*/ + +QWindowsWindowCursor QWindowsCursor::pixmapWindowCursor(const QCursor &c) +{ + const qint64 cacheKey = c.pixmap().cacheKey(); + PixmapCursorCache::iterator it = m_pixmapCursorCache.find(cacheKey); + if (it == m_pixmapCursorCache.end()) + it = m_pixmapCursorCache.insert(cacheKey, QWindowsWindowCursor(c)); + return it.value(); +} + /*! \brief Set a cursor on a window. @@ -413,7 +426,7 @@ void QWindowsCursor::changeCursor(QCursor *cursorIn, QWindow *window) } const QWindowsWindowCursor wcursor = cursorIn->shape() == Qt::BitmapCursor ? - QWindowsWindowCursor(*cursorIn) : standardWindowCursor(cursorIn->shape()); + pixmapWindowCursor(*cursorIn) : standardWindowCursor(cursorIn->shape()); if (wcursor.handle()) { QWindowsWindow::baseWindowOf(window)->setCursor(wcursor); } else { diff --git a/src/plugins/platforms/windows/qwindowscursor.h b/src/plugins/platforms/windows/qwindowscursor.h index b4026f00bc..4ee6695188 100644 --- a/src/plugins/platforms/windows/qwindowscursor.h +++ b/src/plugins/platforms/windows/qwindowscursor.h @@ -83,11 +83,14 @@ public: static QPoint mousePosition(); QWindowsWindowCursor standardWindowCursor(Qt::CursorShape s = Qt::ArrowCursor); + QWindowsWindowCursor pixmapWindowCursor(const QCursor &c); private: typedef QHash StandardCursorCache; + typedef QHash PixmapCursorCache; StandardCursorCache m_standardCursorCache; + PixmapCursorCache m_pixmapCursorCache; }; QT_END_NAMESPACE -- cgit v1.2.3 From f7eff7251786186ca895c8fc537b304bc89977b3 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 24 Feb 2012 18:44:17 +0100 Subject: Add a new Q_GLOBAL_STATIC implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unlike the previous implementation, this implementation is locked: only one initialisation is ever run at the same time. It is exception-safe, meaning that a throwing constructor will restart the process. Also, start using the thread-safe behaviour that GCC has offered for a long time and C++11 requires. Change-Id: I20db44f57d258923df64c0051358fd0d9a5ccd51 Reviewed-by: Olivier Goffart Reviewed-by: David Faure (KDE) Reviewed-by: Jędrzej Nowacki --- src/corelib/global/global.pri | 1 + src/corelib/global/qglobal.h | 122 +--------------------------- src/corelib/global/qglobalstatic.h | 157 +++++++++++++++++++++++++++++++++++++ 3 files changed, 161 insertions(+), 119 deletions(-) create mode 100644 src/corelib/global/qglobalstatic.h (limited to 'src') diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri index 01756c8419..491464621c 100644 --- a/src/corelib/global/global.pri +++ b/src/corelib/global/global.pri @@ -9,6 +9,7 @@ HEADERS += \ global/qendian.h \ global/qnumeric_p.h \ global/qnumeric.h \ + global/qglobalstatic.h \ global/qlibraryinfo.h \ global/qlogging.h \ global/qtypeinfo.h \ diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 03cd3dc591..60b6e32522 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -664,125 +664,6 @@ typedef void (*QFunctionPointer)(); # define Q_UNIMPLEMENTED() qWarning("%s:%d: %s: Unimplemented code.", __FILE__, __LINE__, Q_FUNC_INFO) #endif -#if defined(QT_NO_THREAD) - -template -class QGlobalStatic -{ -public: - T *pointer; - inline QGlobalStatic(T *p) : pointer(p) { } - inline ~QGlobalStatic() { pointer = 0; } -}; - -#define Q_GLOBAL_STATIC(TYPE, NAME) \ - static TYPE *NAME() \ - { \ - static TYPE thisVariable; \ - static QGlobalStatic thisGlobalStatic(&thisVariable); \ - return thisGlobalStatic.pointer; \ - } - -#define Q_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ARGS) \ - static TYPE *NAME() \ - { \ - static TYPE thisVariable ARGS; \ - static QGlobalStatic thisGlobalStatic(&thisVariable); \ - return thisGlobalStatic.pointer; \ - } - -#define Q_GLOBAL_STATIC_WITH_INITIALIZER(TYPE, NAME, INITIALIZER) \ - static TYPE *NAME() \ - { \ - static TYPE thisVariable; \ - static QGlobalStatic thisGlobalStatic(0); \ - if (!thisGlobalStatic.pointer) { \ - TYPE *x = thisGlobalStatic.pointer = &thisVariable; \ - INITIALIZER; \ - } \ - return thisGlobalStatic.pointer; \ - } - -#else - -// forward declaration, since qatomic.h needs qglobal.h -template class QBasicAtomicPointer; - -// POD for Q_GLOBAL_STATIC -template -class QGlobalStatic -{ -public: - QBasicAtomicPointer pointer; - bool destroyed; -}; - -// Created as a function-local static to delete a QGlobalStatic -template -class QGlobalStaticDeleter -{ -public: - QGlobalStatic &globalStatic; - QGlobalStaticDeleter(QGlobalStatic &_globalStatic) - : globalStatic(_globalStatic) - { } - - inline ~QGlobalStaticDeleter() - { - delete globalStatic.pointer.load(); - globalStatic.pointer.store(0); - globalStatic.destroyed = true; - } -}; - -#define Q_GLOBAL_STATIC(TYPE, NAME) \ - static TYPE *NAME() \ - { \ - static QGlobalStatic thisGlobalStatic \ - = { Q_BASIC_ATOMIC_INITIALIZER(0), false }; \ - if (!thisGlobalStatic.pointer.load() && !thisGlobalStatic.destroyed) { \ - TYPE *x = new TYPE; \ - if (!thisGlobalStatic.pointer.testAndSetOrdered(0, x)) \ - delete x; \ - else \ - static QGlobalStaticDeleter cleanup(thisGlobalStatic); \ - } \ - return thisGlobalStatic.pointer.load(); \ - } - -#define Q_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ARGS) \ - static TYPE *NAME() \ - { \ - static QGlobalStatic thisGlobalStatic \ - = { Q_BASIC_ATOMIC_INITIALIZER(0), false }; \ - if (!thisGlobalStatic.pointer.load() && !thisGlobalStatic.destroyed) { \ - TYPE *x = new TYPE ARGS; \ - if (!thisGlobalStatic.pointer.testAndSetOrdered(0, x)) \ - delete x; \ - else \ - static QGlobalStaticDeleter cleanup(thisGlobalStatic); \ - } \ - return thisGlobalStatic.pointer.load(); \ - } - -#define Q_GLOBAL_STATIC_WITH_INITIALIZER(TYPE, NAME, INITIALIZER) \ - static TYPE *NAME() \ - { \ - static QGlobalStatic thisGlobalStatic \ - = { Q_BASIC_ATOMIC_INITIALIZER(0), false }; \ - if (!thisGlobalStatic.pointer.load() && !thisGlobalStatic.destroyed) { \ - QScopedPointer x(new TYPE); \ - INITIALIZER; \ - if (thisGlobalStatic.pointer.testAndSetOrdered(0, x.data())) { \ - static QGlobalStaticDeleter cleanup(thisGlobalStatic); \ - x.take(); \ - } \ - } \ - return thisGlobalStatic.pointer.load(); \ - } - -#endif - Q_DECL_CONSTEXPR static inline bool qFuzzyCompare(double p1, double p2) { return (qAbs(p1 - p2) <= 0.000000000001 * qMin(qAbs(p1), qAbs(p2))); @@ -1089,6 +970,9 @@ template struct QEnableIf { typedef T Type; }; QT_END_NAMESPACE QT_END_HEADER +// Q_GLOBAL_STATIC +#include + // qDebug and friends #include #include diff --git a/src/corelib/global/qglobalstatic.h b/src/corelib/global/qglobalstatic.h new file mode 100644 index 0000000000..78a4acff12 --- /dev/null +++ b/src/corelib/global/qglobalstatic.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Intel Corporation +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QGLOBALSTATIC_H +#define QGLOBALSTATIC_H + +#include + +QT_BEGIN_HEADER +QT_BEGIN_NAMESPACE + +/* + * QGlobalStatic internals: + * + * The pointer is initialized to 0. + * The guard is initialized to 0. + * The guard can assume the following values: + * -2: object initialized and already destroyed + * -1: object initialized and is still valid + * 0: not initialized, the value of the pointer should be null + * +1: initializing, must wait until a state change happens + * (not used in the current implementation) + */ + +namespace QtGlobalStatic { +enum GuardValues { + Destroyed = -2, + Initialized = -1, + Uninitialized = 0, + Initializing = 1 +}; +} + +#if defined(QT_NO_THREAD) || defined(Q_CC_GNU) +// some compilers support thread-safe statics +// The IA-64 C++ ABI requires this, so we know that all GCC versions since 3.4 +// support it. C++11 also requires this behavior. +// Clang and Intel CC masquerade as GCC when compiling on Linux and Mac OS X. + +#define Q_GLOBAL_STATIC_INTERNAL(ARGS) \ + Q_DECL_HIDDEN inline Type *innerFunction() \ + { \ + struct HolderBase { \ + ~HolderBase() Q_DECL_NOTHROW \ + { guard.store(QtGlobalStatic::Destroyed); } \ + }; \ + static struct Holder : public HolderBase { \ + Type value; \ + Holder() \ + Q_DECL_NOEXCEPT_EXPR(noexcept(Type ARGS)) \ + : value ARGS \ + { guard.store(QtGlobalStatic::Initialized); } \ + } holder; \ + return &holder.value; \ + } +#else +// We don't know if this compiler supports thread-safe global statics +// so use our own locked implementation + +QT_END_NAMESPACE +#include +QT_BEGIN_NAMESPACE + +#define Q_GLOBAL_STATIC_INTERNAL(ARGS) \ + Q_DECL_HIDDEN inline Type *innerFunction() \ + { \ + static Type *d; \ + static QBasicMutex mutex; \ + int x = guard.loadAcquire(); \ + if (Q_UNLIKELY(x >= QtGlobalStatic::Uninitialized)) { \ + QMutexLocker locker(&mutex); \ + if (guard.load() == QtGlobalStatic::Uninitialized) { \ + d = new Type ARGS; \ + static struct Cleanup { \ + ~Cleanup() { \ + delete d; \ + guard.store(QtGlobalStatic::Destroyed); \ + } \ + } cleanup; \ + guard.store(QtGlobalStatic::Initialized); \ + } \ + } \ + return d; \ + } +#endif + +// this class must be POD, unless the compiler supports thread-safe statics +template +struct QGlobalStatic +{ + typedef T Type; + + bool isDestroyed() const { return guard.load() <= QtGlobalStatic::Destroyed; } + bool exists() const { return guard.load() == QtGlobalStatic::Initialized; } + operator Type *() { if (isDestroyed()) return 0; return innerFunction(); } + Type *operator()() { if (isDestroyed()) return 0; return innerFunction(); } + Type *operator->() { return innerFunction(); } + Type &operator*() { return *innerFunction(); } +}; + +#define Q_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ARGS) \ + namespace { namespace Q_QGS_ ## NAME { \ + typedef TYPE Type; \ + QBasicAtomicInt guard = Q_BASIC_ATOMIC_INITIALIZER(QtGlobalStatic::Uninitialized); \ + Q_GLOBAL_STATIC_INTERNAL(ARGS) \ + } } \ + static QGlobalStatic NAME; + +#define Q_GLOBAL_STATIC(TYPE, NAME) \ + Q_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ()) + +QT_END_NAMESPACE +QT_END_HEADER + +#endif // QGLOBALSTATIC_H -- cgit v1.2.3 From f8b681deed6298fa7c2ed7ada4752116432289cf Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 19 Jan 2013 08:26:04 -0800 Subject: Don't clear the pointer in QScopedPointer's destructor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It helps in valgrinding applications. It's the difference between: ==17609== Address 0x38 is not stack'd, malloc'd or (recently) free'd and ==19789== Address 0x598f478 is 56 bytes inside a block of size 112 free'd ==19789== at 0x4A0736C: operator delete(void*) (vg_replace_malloc.c:480) ==19789== by 0x53A77CD: QObjectPrivate::~QObjectPrivate() (qobject.cpp:239) ==19789== by 0x53B4EB5: QScopedPointerDeleter::cleanup(QObjectData*) (qscopedpointer.h:63) ==19789== by 0x53B3980: QScopedPointer >::~QScopedPointer() (qscopedpointer.h:99) ==19789== by 0x53A8EEC: QObject::~QObject() (qobject.cpp:750) Change-Id: If42107c94401a96c05caa511442d6bd010fd4e29 Reviewed-by: Olivier Goffart Reviewed-by: Jędrzej Nowacki --- src/corelib/tools/qscopedpointer.h | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h index fbe2aa87c1..adbf03b082 100644 --- a/src/corelib/tools/qscopedpointer.h +++ b/src/corelib/tools/qscopedpointer.h @@ -97,7 +97,6 @@ public: { T *oldD = this->d; Cleanup::cleanup(oldD); - this->d = 0; } inline T &operator*() const -- cgit v1.2.3 From 18c7ce5994126e7eb89e37c3d2bf6d528f84fdc3 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 19 Jan 2013 19:46:24 -0800 Subject: Rewrite QDBusConnection::unregisterObject to be recursive The current implementation is a loop. We need it to be recursive so that we can execute more operations when unwinding. This will be necessary in the next commit. Change-Id: Ia3c98fed0719cede0a0d92d3e343cf016ec7baf2 Reviewed-by: David Faure (KDE) --- src/dbus/qdbusconnection.cpp | 29 +---------------------------- src/dbus/qdbusconnection_p.h | 1 + src/dbus/qdbusintegrator.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp index 6a3bd6da39..678b10d108 100644 --- a/src/dbus/qdbusconnection.cpp +++ b/src/dbus/qdbusconnection.cpp @@ -883,35 +883,8 @@ void QDBusConnection::unregisterObject(const QString &path, UnregisterMode mode) if (!d || !d->connection || !QDBusUtil::isValidObjectPath(path)) return; - QStringList pathComponents = path.split(QLatin1Char('/')); QDBusWriteLocker locker(UnregisterObjectAction, d); - QDBusConnectionPrivate::ObjectTreeNode *node = &d->rootNode; - int i = 1; - - // find the object - while (node) { - if (pathComponents.count() == i || !path.compare(QLatin1String("/"))) { - // found it - node->obj = 0; - node->flags = 0; - - if (mode == UnregisterTree) { - // clear the sub-tree as well - node->children.clear(); // can't disconnect the objects because we really don't know if they can - // be found somewhere else in the path too - } - - return; - } - - QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator it = - std::lower_bound(node->children.begin(), node->children.end(), pathComponents.at(i)); - if (it == node->children.end() || it->name != pathComponents.at(i)) - break; // node not found - - node = it; - ++i; - } + d->unregisterObject(path, mode); } /*! diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h index 5c0bd06a4b..50307e2738 100644 --- a/src/dbus/qdbusconnection_p.h +++ b/src/dbus/qdbusconnection_p.h @@ -208,6 +208,7 @@ public: const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot); void registerObject(const ObjectTreeNode *node); + void unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode); void connectRelay(const QString &service, const QString &path, const QString &interface, QDBusAbstractInterface *receiver, const QMetaMethod &signal); diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index 42e6a80670..72586404a2 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -600,6 +600,31 @@ static void huntAndDestroy(QObject *needle, QDBusConnectionPrivate::ObjectTreeNo } } +static void huntAndUnregister(const QStringList &pathComponents, int i, QDBusConnection::UnregisterMode mode, + QDBusConnectionPrivate::ObjectTreeNode *node) +{ + if (pathComponents.count() == i) { + // found it + node->obj = 0; + node->flags = 0; + + if (mode == QDBusConnection::UnregisterTree) { + // clear the sub-tree as well + node->children.clear(); // can't disconnect the objects because we really don't know if they can + // be found somewhere else in the path too + } + } else { + // keep going + QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator end = node->children.end(); + QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator it = + std::lower_bound(node->children.begin(), end, pathComponents.at(i)); + if (it == end || it->name != pathComponents.at(i)) + return; // node not found + + huntAndUnregister(pathComponents, i + 1, mode, it); + } +} + static void huntAndEmit(DBusConnection *connection, DBusMessage *msg, QObject *needle, const QDBusConnectionPrivate::ObjectTreeNode &haystack, bool isScriptable, bool isAdaptor, const QString &path = QString()) @@ -2266,6 +2291,21 @@ void QDBusConnectionPrivate::registerObject(const ObjectTreeNode *node) cleanupDeletedNodes(rootNode); } +void QDBusConnectionPrivate::unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode) +{ + QDBusConnectionPrivate::ObjectTreeNode *node = &rootNode; + QStringList pathComponents; + int i; + if (path == QLatin1String("/")) { + i = 0; + } else { + pathComponents = path.split(QLatin1Char('/')); + i = 1; + } + + huntAndUnregister(pathComponents, i, mode, node); +} + void QDBusConnectionPrivate::connectRelay(const QString &service, const QString &path, const QString &interface, QDBusAbstractInterface *receiver, -- cgit v1.2.3 From 3c6bb0ed8bfc9a2c679f4154585a16e47275ad21 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 16 Jan 2013 19:41:49 +0800 Subject: Make the QtDBus object tree keep a count of active children The new member variable activeChildren shall contain the number of direct children that are active. This number differs from children.count() because the vector may contain empty entries that haven't been garbage-collected yet (obj == NULL and activeChildren == 0). When this count drops to zero, we know we can simply erase the vector of children. Change-Id: Ia20604d3fac852ea4a6e8862d934fbb936fa5e18 Reviewed-by: David Faure (KDE) --- src/dbus/qdbusconnection.cpp | 10 +++------- src/dbus/qdbusconnection_p.h | 7 +++++-- src/dbus/qdbusintegrator.cpp | 28 ++++++++++++++++++++++++---- 3 files changed, 32 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp index 678b10d108..dd9417b87a 100644 --- a/src/dbus/qdbusconnection.cpp +++ b/src/dbus/qdbusconnection.cpp @@ -803,13 +803,8 @@ bool QDBusConnection::registerObject(const QString &path, QObject *object, Regis return false; if (options & QDBusConnectionPrivate::VirtualObject) { - // technically the check for children needs to go even deeper - if (options & SubPath) { - foreach (const QDBusConnectionPrivate::ObjectTreeNode &child, node->children) { - if (child.obj) - return false; - } - } + if (options & SubPath && node->activeChildren) + return false; } else { if ((options & ExportChildObjects && !node->children.isEmpty())) return false; @@ -846,6 +841,7 @@ bool QDBusConnection::registerObject(const QString &path, QObject *object, Regis } } else { // add entry + ++node->activeChildren; node = node->children.insert(it, pathComponents.at(i)); } diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h index 50307e2738..3beb258bd8 100644 --- a/src/dbus/qdbusconnection_p.h +++ b/src/dbus/qdbusconnection_p.h @@ -140,14 +140,16 @@ public: { typedef QVector DataList; - inline ObjectTreeNode() : obj(0), flags(0) { } + inline ObjectTreeNode() : obj(0), flags(0), activeChildren(0) { } inline ObjectTreeNode(const QString &n) // intentionally implicit - : name(n), obj(0), flags(0) { } + : name(n), obj(0), flags(0), activeChildren(0) { } inline ~ObjectTreeNode() { } inline bool operator<(const QString &other) const { return name < other; } inline bool operator<(const QStringRef &other) const { return QStringRef(&name) < other; } + inline bool isActive() const + { return obj || activeChildren; } QString name; union { @@ -155,6 +157,7 @@ public: QDBusVirtualObject *treeNode; }; int flags; + int activeChildren; DataList children; }; diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index 72586404a2..0caccbe044 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -591,13 +591,23 @@ static void huntAndDestroy(QObject *needle, QDBusConnectionPrivate::ObjectTreeNo { QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator it = haystack.children.begin(); QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator end = haystack.children.end(); - for ( ; it != end; ++it) + for ( ; it != end; ++it) { + if (!it->isActive()) + continue; huntAndDestroy(needle, *it); + if (!it->isActive()) + --haystack.activeChildren; + } if (needle == haystack.obj) { haystack.obj = 0; haystack.flags = 0; } + + if (haystack.activeChildren == 0) { + // quick clean-up, if we're out of children + haystack.children.clear(); + } } static void huntAndUnregister(const QStringList &pathComponents, int i, QDBusConnection::UnregisterMode mode, @@ -610,6 +620,7 @@ static void huntAndUnregister(const QStringList &pathComponents, int i, QDBusCon if (mode == QDBusConnection::UnregisterTree) { // clear the sub-tree as well + node->activeChildren = 0; node->children.clear(); // can't disconnect the objects because we really don't know if they can // be found somewhere else in the path too } @@ -618,10 +629,17 @@ static void huntAndUnregister(const QStringList &pathComponents, int i, QDBusCon QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator end = node->children.end(); QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator it = std::lower_bound(node->children.begin(), end, pathComponents.at(i)); - if (it == end || it->name != pathComponents.at(i)) + if (it == end || it->name != pathComponents.at(i) || !it->isActive()) return; // node not found huntAndUnregister(pathComponents, i + 1, mode, it); + if (!it->isActive()) + --node->activeChildren; + + if (node->activeChildren == 0) { + // quick clean-up, if we're out of children + node->children.clear(); + } } } @@ -631,8 +649,10 @@ static void huntAndEmit(DBusConnection *connection, DBusMessage *msg, { QDBusConnectionPrivate::ObjectTreeNode::DataList::ConstIterator it = haystack.children.constBegin(); QDBusConnectionPrivate::ObjectTreeNode::DataList::ConstIterator end = haystack.children.constEnd(); - for ( ; it != end; ++it) - huntAndEmit(connection, msg, needle, *it, isScriptable, isAdaptor, path + QLatin1Char('/') + it->name); + for ( ; it != end; ++it) { + if (it->isActive()) + huntAndEmit(connection, msg, needle, *it, isScriptable, isAdaptor, path + QLatin1Char('/') + it->name); + } if (needle == haystack.obj) { // is this a signal we should relay? -- cgit v1.2.3 From 57aed703d21c3a360d95fd9f85396d1283d3fdd0 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 19 Jan 2013 19:48:11 -0800 Subject: Improve the QDBusConnection node children garbage collection This replaces the implementation from ac9ab9703ff299c94dca7585d5a12e. If the number of active children drops to zero, we know we can simply delete the vector of children. We know none that might be there are active. If the number is not zero, but is considerably smaller than the vector size, we can shrink the vector by reordering the elements, skipping the inactive ones. We use qMove, which expands to std::move on C++11, but a regular copy on C++98. Change-Id: I2e74446081f91fbd698425b08910fbda4746d673 Reviewed-by: David Faure (KDE) --- src/dbus/qdbusintegrator.cpp | 49 ++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index 0caccbe044..12907957b3 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -587,6 +587,28 @@ bool QDBusConnectionPrivate::handleMessage(const QDBusMessage &amsg) return false; } +static void garbageCollectChildren(QDBusConnectionPrivate::ObjectTreeNode &node) +{ + int size = node.children.count(); + if (node.activeChildren == 0) { + // easy case + node.children.clear(); + } else if (size > node.activeChildren * 3 || (size > 20 && size * 2 > node.activeChildren * 3)) { + // rewrite the vector, keeping only the active children + // if the vector is large (> 20 items) and has one third of inactives + // or if the vector is small and has two thirds of inactives. + QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator end = node.children.end(); + QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator it = node.children.begin(); + QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator tgt = it; + for ( ; it != end; ++it) { + if (it->isActive()) + *tgt++ = qMove(*it); + } + ++tgt; + node.children.erase(tgt, end); + } +} + static void huntAndDestroy(QObject *needle, QDBusConnectionPrivate::ObjectTreeNode &haystack) { QDBusConnectionPrivate::ObjectTreeNode::DataList::Iterator it = haystack.children.begin(); @@ -604,10 +626,7 @@ static void huntAndDestroy(QObject *needle, QDBusConnectionPrivate::ObjectTreeNo haystack.flags = 0; } - if (haystack.activeChildren == 0) { - // quick clean-up, if we're out of children - haystack.children.clear(); - } + garbageCollectChildren(haystack); } static void huntAndUnregister(const QStringList &pathComponents, int i, QDBusConnection::UnregisterMode mode, @@ -636,10 +655,7 @@ static void huntAndUnregister(const QStringList &pathComponents, int i, QDBusCon if (!it->isActive()) --node->activeChildren; - if (node->activeChildren == 0) { - // quick clean-up, if we're out of children - node->children.clear(); - } + garbageCollectChildren(*node); } } @@ -2269,19 +2285,6 @@ QDBusConnectionPrivate::disconnectSignal(SignalHookHash::Iterator &it) return signalHooks.erase(it); } - -static void cleanupDeletedNodes(QDBusConnectionPrivate::ObjectTreeNode &parent) -{ - QMutableVectorIterator it(parent.children); - while (it.hasNext()) { - QDBusConnectionPrivate::ObjectTreeNode& node = it.next(); - if (node.obj == 0 && node.children.isEmpty()) - it.remove(); - else - cleanupDeletedNodes(node); - } -} - void QDBusConnectionPrivate::registerObject(const ObjectTreeNode *node) { connect(node->obj, SIGNAL(destroyed(QObject*)), SLOT(objectDestroyed(QObject*)), @@ -2305,10 +2308,6 @@ void QDBusConnectionPrivate::registerObject(const ObjectTreeNode *node) this, SLOT(relaySignal(QObject*,const QMetaObject*,int,QVariantList)), Qt::DirectConnection); } - - static int counter = 0; - if ((++counter % 20) == 0) - cleanupDeletedNodes(rootNode); } void QDBusConnectionPrivate::unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode) -- cgit v1.2.3 From fb5bbea031d6a7cdc033121c01a2fca9c12c67fb Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 19 Jan 2013 20:22:12 -0800 Subject: Remove debugging messages from QDBusConnection::registerObject Qt does not print debugging in released versions. We print warnings in case of error in using the API, but that's not the case here. Change-Id: I14d54be5d6a1d4e1f147afd091ba850670972cdf Reviewed-by: David Faure (KDE) --- src/dbus/qdbusconnection.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp index dd9417b87a..b9cbf8d09a 100644 --- a/src/dbus/qdbusconnection.cpp +++ b/src/dbus/qdbusconnection.cpp @@ -820,8 +820,8 @@ bool QDBusConnection::registerObject(const QString &path, QObject *object, Regis // if a virtual object occupies this path, return false if (node->obj && (node->flags & QDBusConnectionPrivate::VirtualObject) && (node->flags & QDBusConnection::SubPath)) { - qDebug("Cannot register object at %s because QDBusVirtualObject handles all sub-paths.", - qPrintable(path)); + //qDebug("Cannot register object at %s because QDBusVirtualObject handles all sub-paths.", + // qPrintable(path)); return false; } @@ -835,8 +835,8 @@ bool QDBusConnection::registerObject(const QString &path, QObject *object, Regis // are we allowed to go deeper? if (node->flags & ExportChildObjects) { // we're not - qDebug("Cannot register object at %s because %s exports its own child objects", - qPrintable(path), qPrintable(pathComponents.at(i))); + //qDebug("Cannot register object at %s because %s exports its own child objects", + // qPrintable(path), qPrintable(pathComponents.at(i))); return false; } } else { -- cgit v1.2.3 From 7e3d5a720752900b1ccbb3d8dcbf12cc02b01b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Fri, 15 Jun 2012 13:33:58 +0300 Subject: Use Qt defined gettimeofday for VxWorks and no fallback to X11 version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VxWorks don't have gettimeofday function so we always use the one implemented in Qt. VxWorks DIAB compiler is not supported building Qt for VxWorks 6.9.2. Anyone using older VxWorks should also not be affected so use new defines VXWORKS_DKM and VXWORKS_RTP for VxWorks version 6.9.2 onward. Change-Id: I2e9546a101256ea0557b65163b40cd0f28be8519 Reviewed-by: Samuel Rødal --- src/corelib/kernel/qfunctions_vxworks.cpp | 2 +- src/corelib/kernel/qfunctions_vxworks.h | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/kernel/qfunctions_vxworks.cpp b/src/corelib/kernel/qfunctions_vxworks.cpp index add4108762..49d9d51ac0 100644 --- a/src/corelib/kernel/qfunctions_vxworks.cpp +++ b/src/corelib/kernel/qfunctions_vxworks.cpp @@ -92,7 +92,7 @@ int usleep(unsigned int usec) // gettimeofday() is declared, but is missing from the library // It IS however defined in the Curtis-Wright X11 libraries, so // we have to make the symbol 'weak' -#if defined(Q_CC_DIAB) +#if defined(Q_CC_DIAB) && !defined(VXWORKS_DKM) && !defined(VXWORKS_RTP) # pragma weak gettimeofday #endif int gettimeofday(struct timeval *tv, void /*struct timezone*/ *) diff --git a/src/corelib/kernel/qfunctions_vxworks.h b/src/corelib/kernel/qfunctions_vxworks.h index d0f6e60cb2..323d662ba1 100644 --- a/src/corelib/kernel/qfunctions_vxworks.h +++ b/src/corelib/kernel/qfunctions_vxworks.h @@ -52,7 +52,11 @@ #include #include #include +#if defined(_WRS_KERNEL) #include +#else +#include +#endif #include #include #include @@ -100,10 +104,14 @@ int rand_r(unsigned int * /*seedp*/); // no usleep() support int usleep(unsigned int); +#if defined(VXWORKS_DKM) || defined(VXWORKS_RTP) +int gettimeofday(struct timeval *, void *); +#else // gettimeofday() is declared, but is missing from the library. // It IS however defined in the Curtis-Wright X11 libraries, so // we have to make the symbol 'weak' int gettimeofday(struct timeval *tv, void /*struct timezone*/ *) __attribute__((weak)); +#endif // neither getpagesize() or sysconf(_SC_PAGESIZE) are available int getpagesize(); -- cgit v1.2.3 From baad50e97946c4b99998f215aa5c023c17be29ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Fri, 15 Jun 2012 13:55:08 +0300 Subject: VxWorks header only available in DKM mode and not in RTP mode. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Check if _WRS_KERNEL is defined so we are compiling for DKM mode. Change-Id: I15801b0575d3fe6e543f81a177fd01d015d9085f Reviewed-by: Samuel Rødal --- src/corelib/global/qglobal.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 6818b1d64d..144a864ec0 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -68,7 +68,7 @@ # endif #endif -#if defined(Q_OS_VXWORKS) +#if defined(Q_OS_VXWORKS) && defined(_WRS_KERNEL) # include #endif -- cgit v1.2.3 From 608cd1ad84484448ac9b0b8b4d88e0e8ff4a9cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Fri, 15 Jun 2012 14:30:15 +0300 Subject: Use taskIdSelf() function instead of taskIdCurrent global variable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The uniprocessor taskIdCurrent global variable (declared in taskLib.h) does not exist in VxWorks SMP, because of concurrent execution on multiple CPUs. Any uniprocessor code that reads taskIdCurrent should make calls to taskIdSelf() instead. Change-Id: I4e0efef32297f339d6121c7d4bca3820e0fc9294 Reviewed-by: Samuel Rødal --- src/corelib/kernel/qeventdispatcher_unix.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qeventdispatcher_unix.cpp b/src/corelib/kernel/qeventdispatcher_unix.cpp index 6408147567..b22260a420 100644 --- a/src/corelib/kernel/qeventdispatcher_unix.cpp +++ b/src/corelib/kernel/qeventdispatcher_unix.cpp @@ -113,7 +113,7 @@ QEventDispatcherUNIXPrivate::QEventDispatcherUNIXPrivate() } #elif defined(Q_OS_VXWORKS) char name[20]; - qsnprintf(name, sizeof(name), "/pipe/qt_%08x", int(taskIdCurrent)); + qsnprintf(name, sizeof(name), "/pipe/qt_%08x", int(taskIdSelf())); // make sure there is no pipe with this name pipeDevDelete(name, true); @@ -159,7 +159,7 @@ QEventDispatcherUNIXPrivate::~QEventDispatcherUNIXPrivate() close(thread_pipe[0]); char name[20]; - qsnprintf(name, sizeof(name), "/pipe/qt_%08x", int(taskIdCurrent)); + qsnprintf(name, sizeof(name), "/pipe/qt_%08x", int(taskIdSelf())); pipeDevDelete(name, true); #else -- cgit v1.2.3 From cd5a4279f38ac6cca8ff8da4d75c2577d9b0bbcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Thu, 3 Jan 2013 15:50:45 +0200 Subject: Strip prepending : string from currentPath() for VxSim MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VxWorks simulator (VxSim) maps SDK rootdir usable as normal directory. Mapped directory name is either host: or : and can be used without prepending prefix containing colon. Strip prepending string and colon to get valid native path to host SDK rootdir running VxSim. Change-Id: I9d2829e32431c2d50fefe55c93780cd37165e565 Reviewed-by: Samuel Rødal --- src/corelib/io/qfilesystemengine_unix.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index fa0e07b045..03a682a234 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -685,8 +685,16 @@ QFileSystemEntry QFileSystemEngine::currentPath() } #else char currentName[PATH_MAX+1]; - if (::getcwd(currentName, PATH_MAX)) + if (::getcwd(currentName, PATH_MAX)) { +#if defined(Q_OS_VXWORKS) && defined(VXWORKS_VXSIM) + QByteArray dir(currentName); + if (dir.indexOf(':') < dir.indexOf('/')) + dir.remove(0, dir.indexOf(':')+1); + + qstrncpy(currentName, dir.constData(), PATH_MAX); +#endif result = QFileSystemEntry(QByteArray(currentName), QFileSystemEntry::FromNativePath()); + } # if defined(QT_DEBUG) if (result.isEmpty()) qWarning("QFileSystemEngine::currentPath: getcwd() failed"); -- cgit v1.2.3 From 2d44f879a2af258ce5bba75ab3a478e2066f3c10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Thu, 3 Jan 2013 15:39:53 +0200 Subject: Do not define QT_NO_DYNAMIC_LIBRARY for VxWorks process (RTP) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Shared libraries cannot be used in kernel mode (DKM), only at process mode (RTP). Change-Id: I8cecc12461aa4417b16577db3bc9cd85a1aa7efa Reviewed-by: Samuel Rødal --- src/corelib/plugin/qlibrary_unix.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/plugin/qlibrary_unix.cpp b/src/corelib/plugin/qlibrary_unix.cpp index 35d8197306..43619c4e78 100644 --- a/src/corelib/plugin/qlibrary_unix.cpp +++ b/src/corelib/plugin/qlibrary_unix.cpp @@ -56,7 +56,7 @@ #include #endif -#if defined(Q_OS_VXWORKS) || defined (Q_OS_NACL) +#if (defined(Q_OS_VXWORKS) && !defined(VXWORKS_RTP)) || defined (Q_OS_NACL) #define QT_NO_DYNAMIC_LIBRARY #endif -- cgit v1.2.3 From 1309d9a9d68af902821d0ba5f76aa6e994aa6963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Thu, 3 Jan 2013 16:32:13 +0200 Subject: Use stub function gettimeofday for VxWorks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vxworks does not have gettimeofday function, use function implementation from qfunctions_vxworks.h/cpp instead. Change-Id: Iad2a71c8484ba00dd9406706b1c136297260de4b Reviewed-by: Samuel Rødal --- src/corelib/tools/qelapsedtimer_unix.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qelapsedtimer_unix.cpp b/src/corelib/tools/qelapsedtimer_unix.cpp index b8f2180a5b..d88af616e5 100644 --- a/src/corelib/tools/qelapsedtimer_unix.cpp +++ b/src/corelib/tools/qelapsedtimer_unix.cpp @@ -43,8 +43,12 @@ #define _POSIX_C_SOURCE 200809L #include "qelapsedtimer.h" +#ifdef Q_OS_VXWORKS +#include "qfunctions_vxworks.h" +#else #include #include +#endif #include #include -- cgit v1.2.3 From ae229b91929955e7418da938bace6d0cc6a2cde5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Thu, 3 Jan 2013 16:11:40 +0200 Subject: Use stub functions getpwuid and getgrgid for VxWorks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VxWorks has no concepts of users and groups, therefore no such functions exists on VxWorks. Use stub functions from qfunctions_vxworks.h for those, so we don't need to make major source code changes. Change-Id: Iaad80ec18441e3d3e9c0f96e92ccc3766b27d976 Reviewed-by: Samuel Rødal --- src/corelib/io/qfilesystemengine_unix.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index 03a682a234..7306c324b3 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -286,7 +286,7 @@ QString QFileSystemEngine::resolveUserName(uint userId) struct passwd *pw = 0; #if !defined(Q_OS_INTEGRITY) -#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) +#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) && !defined(Q_OS_VXWORKS) struct passwd entry; getpwuid_r(userId, &entry, buf.data(), buf.size(), &pw); #else @@ -310,7 +310,7 @@ QString QFileSystemEngine::resolveGroupName(uint groupId) struct group *gr = 0; #if !defined(Q_OS_INTEGRITY) -#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) +#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) && !defined(Q_OS_VXWORKS) size_max = sysconf(_SC_GETGR_R_SIZE_MAX); if (size_max == -1) size_max = 1024; -- cgit v1.2.3 From 2d8a4c2d3f86e3ae40b4a388de57021b98b9778d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Fri, 4 Jan 2013 14:40:01 +0200 Subject: Use QDir::homePath() for tilde expansion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VxWorks does not have concept of users and therefore has no function getpwnam. Use QDir::homePath() which returns actually QDir::rootPath() if there is no HOME env variable set. Change-Id: I15fe15862c4491b56cfa13bbdb218ef00dfd1f15 Reviewed-by: Samuel Rødal --- src/widgets/dialogs/qfiledialog.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 88652271af..40920ad9ad 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -940,7 +940,9 @@ Q_AUTOTEST_EXPORT QString qt_tildeExpansion(const QString &path, bool *expanded } else { QString userName = tokens.first(); userName.remove(0, 1); -#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) +#if defined(Q_OS_VXWORKS) + const QString homePath = QDir::homePath(); +#elif defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) passwd pw; passwd *tmpPw; char buf[200]; -- cgit v1.2.3 From 49b8e21429c7ab785fb11e8ef84bd7e65c943861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Mon, 11 Jun 2012 16:14:06 +0300 Subject: VxWorks process (RTP) mode does not have taskLock/taskUnlock functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VxWorks does not support to globally lock and unlock the scheduler from process. In kernel mode (DKM) above functions disable preemption from requested task and such functionality does not exist for process. Change-Id: Id41eab4c1973e4181e82539d08707659e0780f99 Reviewed-by: Samuel Rødal --- src/corelib/arch/qatomic_vxworks.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/corelib/arch/qatomic_vxworks.h b/src/corelib/arch/qatomic_vxworks.h index 22e4731470..f626799bf0 100644 --- a/src/corelib/arch/qatomic_vxworks.h +++ b/src/corelib/arch/qatomic_vxworks.h @@ -56,8 +56,13 @@ QT_BEGIN_HEADER # include # include #else +#if defined(_WRS_KERNEL) extern "C" int taskLock(); extern "C" int taskUnlock(); +#else +inline int taskLock() { return 0; } +inline int taskUnlock() { return 0; } +#endif #endif -- cgit v1.2.3 From 00faa09aadfc6c6db9da639ba6b7866c72447e39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Wed, 13 Jun 2012 14:47:40 +0300 Subject: Add support getting memory page size to RTP mode on VxWorks. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Id71bf7fd8e7371284076247558cba7edb0307e13 Reviewed-by: Samuel Rødal --- src/corelib/kernel/qfunctions_vxworks.cpp | 6 ++++++ src/corelib/kernel/qfunctions_vxworks.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/kernel/qfunctions_vxworks.cpp b/src/corelib/kernel/qfunctions_vxworks.cpp index 49d9d51ac0..5ed2a62052 100644 --- a/src/corelib/kernel/qfunctions_vxworks.cpp +++ b/src/corelib/kernel/qfunctions_vxworks.cpp @@ -46,7 +46,9 @@ #include "qplatformdefs.h" #include "qfunctions_vxworks.h" +#if defined(_WRS_KERNEL) #include +#endif #include #include @@ -118,7 +120,11 @@ int gettimeofday(struct timeval *tv, void /*struct timezone*/ *) // neither getpagesize() or sysconf(_SC_PAGESIZE) are available int getpagesize() { +#if defined(_WRS_KERNEL) return vmPageSizeGet(); +#else + return sysconf(_SC_PAGESIZE); +#endif } // symlinks are not supported (lstat is now just a call to stat - see qplatformdefs.h) diff --git a/src/corelib/kernel/qfunctions_vxworks.h b/src/corelib/kernel/qfunctions_vxworks.h index 323d662ba1..67920d13cb 100644 --- a/src/corelib/kernel/qfunctions_vxworks.h +++ b/src/corelib/kernel/qfunctions_vxworks.h @@ -113,7 +113,7 @@ int gettimeofday(struct timeval *, void *); int gettimeofday(struct timeval *tv, void /*struct timezone*/ *) __attribute__((weak)); #endif -// neither getpagesize() or sysconf(_SC_PAGESIZE) are available +// getpagesize() not available int getpagesize(); // symlinks are not supported (lstat is now just a call to stat - see qplatformdefs.h) -- cgit v1.2.3 From eae8faabed151fd32219f2f333fb632c104c73a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Wed, 9 Jan 2013 13:12:50 +0200 Subject: Use sched_get_priority_* functions only for SCHED_RR and SCHED_FIFO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In VxWorks set default values for scheduling priority to use SCHED_FIFO_HIGH_PRI and SCHED_FIFO_LOW_PRI defines for other scheduling policies than SCHED_RR or SCHED_FIFO. Change-Id: If78b84cd9ef94d7712206e9442e96cdba727610f Reviewed-by: Samuel Rødal --- src/corelib/thread/qthread_unix.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp index 3b8a3f383b..3fd95dc7cb 100644 --- a/src/corelib/thread/qthread_unix.cpp +++ b/src/corelib/thread/qthread_unix.cpp @@ -488,8 +488,20 @@ static bool calculateUnixPriority(int priority, int *sched_policy, int *sched_pr #endif const int highestPriority = QThread::TimeCriticalPriority; - int prio_min = sched_get_priority_min(*sched_policy); - int prio_max = sched_get_priority_max(*sched_policy); + int prio_min; + int prio_max; +#if defined(Q_OS_VXWORKS) && defined(VXWORKS_DKM) + // for other scheduling policies than SCHED_RR or SCHED_FIFO + prio_min = SCHED_FIFO_LOW_PRI; + prio_max = SCHED_FIFO_HIGH_PRI; + + if ((*sched_policy == SCHED_RR) || (*sched_policy == SCHED_FIFO)) +#endif + { + prio_min = sched_get_priority_min(*sched_policy); + prio_max = sched_get_priority_max(*sched_policy); + } + if (prio_min == -1 || prio_max == -1) return false; -- cgit v1.2.3 From 2aaffe1800db0d8a170b278ac9a43f2e00ef0e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Wed, 9 Jan 2013 14:49:09 +0200 Subject: Fix comments to use pre C99 standard style instead MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VxWorks compiler fails to compile *.c file with C99 style comments on it Change-Id: Ib5c5ff14006c17f9392b77363232b8b7cc112d34 Reviewed-by: Samuel Rødal --- src/gui/painting/qgrayraster.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/gui/painting/qgrayraster.c b/src/gui/painting/qgrayraster.c index 291d1899ad..dc84a3d3bf 100644 --- a/src/gui/painting/qgrayraster.c +++ b/src/gui/painting/qgrayraster.c @@ -1736,9 +1736,9 @@ if ( raster->worker ) raster->worker->skip_spans = params->skip_spans; - // If raster object and raster buffer are allocated, but - // raster size isn't of the minimum size, indicate out of - // memory. + /* If raster object and raster buffer are allocated, but */ + /* raster size isn't of the minimum size, indicate out of */ + /* memory. */ if (raster->buffer_allocated_size < MINIMUM_POOL_SIZE ) return ErrRaster_OutOfMemory; @@ -1866,8 +1866,8 @@ ( sizeof ( TCell ) * 8 ) ); } else if ( pool_base) - { // Case when there is a raster pool allocated, but it - // doesn't have the minimum size (and so memory will be reallocated) + { /* Case when there is a raster pool allocated, but it */ + /* doesn't have the minimum size (and so memory will be reallocated) */ rast->buffer = pool_base; rast->worker = NULL; rast->buffer_size = pool_size; -- cgit v1.2.3 From 2d2da44f6381fdeaa195319c0dc66e3909c2ca7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Tue, 15 Jan 2013 14:32:11 +0200 Subject: Use time.h related includes from qfunctions_vxworks.h file. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In VxWorks qfunctions_vxworks.h file includes correct time related headers and it is included already at file qplatformdefs.h for all mkspecs targets. Change-Id: I8677eef8c79cebb445d89203284f3af27abbdd7f Reviewed-by: Samuel Rødal --- src/corelib/kernel/qeventdispatcher_unix_p.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qeventdispatcher_unix_p.h b/src/corelib/kernel/qeventdispatcher_unix_p.h index e96acf65af..6759a33823 100644 --- a/src/corelib/kernel/qeventdispatcher_unix_p.h +++ b/src/corelib/kernel/qeventdispatcher_unix_p.h @@ -61,9 +61,7 @@ #include "QtCore/qvarlengtharray.h" #include "private/qtimerinfo_unix_p.h" -#if defined(Q_OS_VXWORKS) -# include -#else +#if !defined(Q_OS_VXWORKS) # include # if (!defined(Q_OS_HPUX) || defined(__ia64)) && !defined(Q_OS_NACL) # include -- cgit v1.2.3 From f7bd8652caab2f53ced739ce90c640924d4962dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Thu, 17 Jan 2013 17:24:21 +0200 Subject: Undefine overlapping variable names defined in VxWorks headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VxWorks has defined variables with same name as in Qt's headers. Undefine those variables to avoid naming conflict. Change-Id: Ia8ca04a66acece683cd6c7f71df7e5a2800ec98d Reviewed-by: Oswald Buddenhagen Reviewed-by: Samuel Rødal --- src/corelib/kernel/qfunctions_vxworks.h | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'src') diff --git a/src/corelib/kernel/qfunctions_vxworks.h b/src/corelib/kernel/qfunctions_vxworks.h index 67920d13cb..272f912a67 100644 --- a/src/corelib/kernel/qfunctions_vxworks.h +++ b/src/corelib/kernel/qfunctions_vxworks.h @@ -65,6 +65,44 @@ #include #endif +// VxWorks has public header mbuf.h which defines following variables for DKM. +// Let's undef those to because they overlap with Qt variable names- +// File mbuf.h is included in headers , so make sure +// that those are included before undef's. +#if defined(mbuf) +# undef mbuf +#endif +#if defined(m_data) +# undef m_data +#endif +#if defined(m_type) +# undef m_type +#endif +#if defined(m_next) +# undef m_next +#endif +#if defined(m_len) +# undef m_len +#endif +#if defined(m_flags) +# undef m_flags +#endif +#if defined(m_hdr) +# undef m_hdr +#endif +#if defined(m_ext) +# undef m_ext +#endif +#if defined(m_act) +# undef m_act +#endif +#if defined(m_nextpkt) +# undef m_nextpkt +#endif +#if defined(m_pkthdr) +# undef m_pkthdr +#endif + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -- cgit v1.2.3 From 2692db542e5f567ddea078c167fb0baf878883ae Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Thu, 17 Jan 2013 18:59:53 +0100 Subject: Implement focus handling of child windows for cocoa. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1e05ef39aa67f8febdd27215d8ad05d26ece7caa Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoawindow.h | 2 ++ src/plugins/platforms/cocoa/qcocoawindow.mm | 7 +++++++ src/plugins/platforms/cocoa/qnsview.h | 1 + src/plugins/platforms/cocoa/qnsview.mm | 17 +++++++++++++++++ 4 files changed, 27 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h index 228644c351..169de81129 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.h +++ b/src/plugins/platforms/cocoa/qcocoawindow.h @@ -114,6 +114,8 @@ public: bool setMouseGrabEnabled(bool grab); QMargins frameMargins() const; + void requestActivateWindow(); + WId winId() const; void setParent(const QPlatformWindow *window); diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index b545844a24..3c7d6d6584 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -656,6 +656,13 @@ void QCocoaWindow::recreateWindow(const QPlatformWindow *parentWindow) setOpacity(opacity); } +void QCocoaWindow::requestActivateWindow() +{ + NSWindow *window = [m_contentView window]; + [ window makeFirstResponder : m_contentView ]; + [ window makeKeyWindow ]; +} + NSWindow * QCocoaWindow::createNSWindow() { QCocoaAutoReleasePool pool; diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h index 9cdfe6f5bb..c4ff79429f 100644 --- a/src/plugins/platforms/cocoa/qnsview.h +++ b/src/plugins/platforms/cocoa/qnsview.h @@ -82,6 +82,7 @@ QT_END_NAMESPACE - (BOOL)isFlipped; - (BOOL)acceptsFirstResponder; +- (BOOL)becomeFirstResponder; - (void)handleMouseEvent:(NSEvent *)theEvent; - (void)mouseDown:(NSEvent *)theEvent; diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 678f88baa0..d653bd9cee 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -330,8 +330,25 @@ static QTouchDevice *touchDevice = 0; return YES; } +- (BOOL)becomeFirstResponder +{ + QWindow *focusWindow = m_window; + + // For widgets we need to do a bit of trickery as the window + // to activate is the window of the top-level widget. + if (m_window->metaObject()->className() == QStringLiteral("QWidgetWindow")) { + while (focusWindow->parent()) { + focusWindow = focusWindow->parent(); + } + } + QWindowSystemInterface::handleWindowActivated(focusWindow); + return YES; +} + - (BOOL)acceptsFirstResponder { + if ((m_window->flags() & Qt::ToolTip) == Qt::ToolTip) + return NO; return YES; } -- cgit v1.2.3 From 14675681b5e88b178adbdef775ac6a4b1e573458 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 22 Jan 2013 14:59:29 +0100 Subject: Implement click-to-focus for native child windows. Change-Id: If7633781a7167de2161cd74c62cfc883eb4d1b0e Reviewed-by: Gunnar Sletta --- src/plugins/platforms/windows/qwindowsmousehandler.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsmousehandler.cpp b/src/plugins/platforms/windows/qwindowsmousehandler.cpp index 357def57c8..410ac7ca41 100644 --- a/src/plugins/platforms/windows/qwindowsmousehandler.cpp +++ b/src/plugins/platforms/windows/qwindowsmousehandler.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include #include @@ -236,6 +237,9 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd, platformWindow->setFlag(QWindowsWindow::AutoMouseCapture); if (QWindowsContext::verboseEvents) qDebug() << "Automatic mouse capture " << window; + // Implement "Click to focus" for native child windows. + if (!window->isTopLevel() && QGuiApplication::focusWindow() != window) + window->requestActivate(); } else if (platformWindow->hasMouseCapture() && platformWindow->testFlag(QWindowsWindow::AutoMouseCapture) && (msg.message == WM_LBUTTONUP || msg.message == WM_MBUTTONUP -- cgit v1.2.3 From 3c9cc32086bfaf9947324f8792ce40a6fc23ef00 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 22 Jan 2013 14:08:13 -0600 Subject: Support shared GL contexts in eglfs. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows shared texture uploads in a background thread. Change-Id: Ib390243bc9dfabd6c579dff9b74e7f44211739d3 Reviewed-by: Samuel Rødal --- src/plugins/platforms/eglfs/qeglfsintegration.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp index b0c55b51c1..7608012eb5 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp @@ -151,7 +151,7 @@ QPlatformBackingStore *QEglFSIntegration::createPlatformBackingStore(QWindow *wi QPlatformOpenGLContext *QEglFSIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const { - return new QEglFSContext(hooks->surfaceFormatFor(context->format()), 0 /*share*/, mDisplay); + return new QEglFSContext(hooks->surfaceFormatFor(context->format()), context->shareHandle(), mDisplay); } QPlatformFontDatabase *QEglFSIntegration::fontDatabase() const -- cgit v1.2.3 From 119c581dd1e0b9164e1631f43820abc3dee82e27 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 10 Jan 2013 23:08:45 -0800 Subject: Simplify checking of the SHM/SEM Unix key file's existence We don't need to stat(2) the file to check if it exists before creating it. We're about to open(2) with O_CREAT|O_EXCL, which will not recreate it if it existed. Change-Id: I2d2176054e7776a32a4520832ee104b9c4ccf748 Reviewed-by: Giuseppe D'Angelo Reviewed-by: Richard J. Moore --- src/corelib/kernel/qsharedmemory_unix.cpp | 3 --- 1 file changed, 3 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qsharedmemory_unix.cpp b/src/corelib/kernel/qsharedmemory_unix.cpp index 6bcb4076b4..7b64ff1181 100644 --- a/src/corelib/kernel/qsharedmemory_unix.cpp +++ b/src/corelib/kernel/qsharedmemory_unix.cpp @@ -151,9 +151,6 @@ key_t QSharedMemoryPrivate::handle() */ int QSharedMemoryPrivate::createUnixKeyFile(const QString &fileName) { - if (QFile::exists(fileName)) - return 0; - int fd = qt_safe_open(QFile::encodeName(fileName).constData(), O_EXCL | O_CREAT | O_RDWR, 0640); if (-1 == fd) { -- cgit v1.2.3 From 896bf9ff5c142dd218ccca4f102ab5d267be7557 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Mon, 14 Jan 2013 17:25:10 +0100 Subject: Several bug fixes in QCocoaFileDialogHelper to support declarative MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Required to prevent crashes and incorrect behavior in https://codereview.qt-project.org/#change,44201 Change-Id: If6025429caabafd150cdd44fec152ff584232220 Reviewed-by: Morten Johan Sørvig --- .../platforms/cocoa/qcocoafiledialoghelper.mm | 30 +++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm index 5747cc01e9..a159682ddb 100644 --- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm +++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm @@ -216,7 +216,7 @@ static QString strippedText(QString s) - (void)closePanel { *mCurrentSelection = QT_PREPEND_NAMESPACE(QCFString::toQString)([[mSavePanel URL] path]); - if ([mSavePanel respondsToSelector:@selector(closePanel:)]) + if ([mSavePanel respondsToSelector:@selector(close)]) [mSavePanel close]; } @@ -228,6 +228,7 @@ static QString strippedText(QString s) bool selectable = (mOptions->acceptMode() == QFileDialogOptions::AcceptSave) || [self panel:nil shouldShowFilename:filepath]; + [self updateProperties]; [mOpenPanel setAllowedFileTypes:nil]; [mOpenPanel setDirectoryURL:selectable ? [NSURL fileURLWithPath:QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.filePath())] : [NSURL fileURLWithPath:QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.path())]]; @@ -271,6 +272,7 @@ static QString strippedText(QString s) bool selectable = (mOptions->acceptMode() == QFileDialogOptions::AcceptSave) || [self panel:nil shouldShowFilename:filepath]; + [self updateProperties]; [mSavePanel setDirectoryURL:selectable ? [NSURL fileURLWithPath:QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.filePath())] : [NSURL fileURLWithPath:QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.path())]]; NSWindow *nsparent = static_cast(qGuiApp->platformNativeInterface()->nativeResourceForWindow("nswindow", parent)); @@ -401,6 +403,9 @@ static QString strippedText(QString s) [mSavePanel setCanCreateDirectories:!(mOptions->testOption(QT_PREPEND_NAMESPACE(QFileDialogOptions::ReadOnly)))]; [mOpenPanel setAllowsMultipleSelection:(fileMode == QT_PREPEND_NAMESPACE(QFileDialogOptions::ExistingFiles))]; [mOpenPanel setResolvesAliases:!(mOptions->testOption(QT_PREPEND_NAMESPACE(QFileDialogOptions::DontResolveSymlinks)))]; + [mOpenPanel setTitle:QCFString::toNSString(mOptions->windowTitle())]; + [mSavePanel setTitle:QCFString::toNSString(mOptions->windowTitle())]; + [mPopUpButton setHidden:chooseDirsOnly]; // TODO hide the whole sunken pane instead? QStringList ext = [self acceptableExtensionsForSave]; const QString defaultSuffix = mOptions->defaultSuffix(); @@ -569,13 +574,16 @@ extern void qt_mac_to_pascal_string(QString s, Str255 str, TextEncoding encoding void QCocoaFileDialogHelper::setDirectory(const QString &directory) { QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast(mDelegate); - [delegate->mSavePanel setDirectoryURL:[NSURL fileURLWithPath:QCFString::toNSString(directory)]]; + if (delegate) + [delegate->mSavePanel setDirectoryURL:[NSURL fileURLWithPath:QCFString::toNSString(directory)]]; } QString QCocoaFileDialogHelper::directory() const { QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast(mDelegate); - return QCFString::toQString([delegate->mSavePanel directory]); + if (delegate) + return QCFString::toQString([delegate->mSavePanel directory]); + return QString(); } void QCocoaFileDialogHelper::selectFile(const QString &filename) @@ -592,12 +600,16 @@ void QCocoaFileDialogHelper::selectFile(const QString &filename) QStringList QCocoaFileDialogHelper::selectedFiles() const { QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast(mDelegate); - return [delegate selectedFiles]; + if (delegate) + return [delegate selectedFiles]; + return QStringList(); } void QCocoaFileDialogHelper::setFilter() { QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast(mDelegate); + if (!delegate) + return; const SharedPointerFileDialogOptions &opts = options(); [delegate->mSavePanel setTitle:QCFString::toNSString(opts->windowTitle())]; if (opts->isLabelExplicitlySet(QFileDialogOptions::Accept)) @@ -610,9 +622,13 @@ void QCocoaFileDialogHelper::setFilter() void QCocoaFileDialogHelper::selectNameFilter(const QString &filter) { + if (!options()) + return; const int index = options()->nameFilters().indexOf(filter); if (index != -1) { QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast(mDelegate); + if (!delegate) + return; [delegate->mPopUpButton selectItemAtIndex:index]; [delegate filterChanged:nil]; } @@ -621,7 +637,11 @@ void QCocoaFileDialogHelper::selectNameFilter(const QString &filter) QString QCocoaFileDialogHelper::selectedNameFilter() const { QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast(mDelegate); + if (!delegate) + return QString(); int index = [delegate->mPopUpButton indexOfSelectedItem]; + if (index >= options()->nameFilters().count()) + return QString(); return index != -1 ? options()->nameFilters().at(index) : QString(); } @@ -667,6 +687,8 @@ bool QCocoaFileDialogHelper::showCocoaFilePanel(Qt::WindowModality windowModalit { createNSOpenSavePanelDelegate(); QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast(mDelegate); + if (!delegate) + return false; if (windowModality == Qt::NonModal) [delegate showModelessPanel]; else if (windowModality == Qt::WindowModal && parent) -- cgit v1.2.3 From 2da24ac2b9a539e4d2cca4ee14035a99d0b4b04e Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 10 Jan 2013 23:07:57 -0800 Subject: Change QT_FATAL_WARNINGS behavior to require a non-empty value This allows easy unsetting of the variable in a shell like: QT_FATAL_WARNINGS= progname Change-Id: Ie9cfb6ebfd4931de1c90af68bfeeae1e9f3d4b9d Reviewed-by: Kai Koehne --- src/corelib/global/qlogging.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index 339cedb57e..2fab7c5be6 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -73,7 +73,7 @@ static bool isFatal(QtMsgType msgType) return true; if (msgType == QtWarningMsg) { - static bool fatalWarnings = qEnvironmentVariableIsSet("QT_FATAL_WARNINGS"); + static bool fatalWarnings = !qEnvironmentVariableIsEmpty("QT_FATAL_WARNINGS"); return fatalWarnings; } -- cgit v1.2.3 From 06e4b1cff4c469d2fc3afbfe7a6b1954fedc90ff Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 26 Nov 2012 11:57:47 +0100 Subject: QImage plugins should report supported mime types Introduces the methods QImageReader::supportedMimeTypes and QImageWriter::supportedMimeTypes which corresponds to the similar supportedImageFormats methods, except they return lists of MIME types. Task-number: QTBUG-28177 Change-Id: Ibb0e264a12eaf972a8bfd6bd891dcd9f89efd085 Reviewed-by: Lars Knoll --- src/gui/image/qimagereader.cpp | 75 ++++++++++++++++++++--------- src/gui/image/qimagereader.h | 1 + src/gui/image/qimagewriter.cpp | 85 ++++++++++++++++++++++++++++----- src/gui/image/qimagewriter.h | 1 + src/plugins/imageformats/gif/gif.json | 3 +- src/plugins/imageformats/ico/ico.json | 3 +- src/plugins/imageformats/jpeg/jpeg.json | 3 +- 7 files changed, 133 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp index 7e6d937c9f..cf03714d3f 100644 --- a/src/gui/image/qimagereader.cpp +++ b/src/gui/image/qimagereader.cpp @@ -186,31 +186,32 @@ struct _qt_BuiltInFormatStruct { _qt_BuiltInFormatType type; const char *extension; + const char *mimeType; }; static const _qt_BuiltInFormatStruct _qt_BuiltInFormats[] = { #ifndef QT_NO_IMAGEFORMAT_PNG - {_qt_PngFormat, "png"}, + {_qt_PngFormat, "png", "image/png"}, #endif #ifndef QT_NO_IMAGEFORMAT_JPEG - {_qt_JpgFormat, "jpg"}, + {_qt_JpgFormat, "jpg", "image/jpeg"}, #endif #ifdef QT_BUILTIN_GIF_READER - {_qt_GifFormat, "gif"}, + {_qt_GifFormat, "gif", "image/gif"}, #endif - {_qt_BmpFormat, "bmp"}, + {_qt_BmpFormat, "bmp", "image/bmp"}, #ifndef QT_NO_IMAGEFORMAT_PPM - {_qt_PpmFormat, "ppm"}, - {_qt_PgmFormat, "pgm"}, - {_qt_PbmFormat, "pbm"}, + {_qt_PpmFormat, "ppm", "image/x-portable-pixmap"}, + {_qt_PgmFormat, "pgm", "image/x-portable-graymap"}, + {_qt_PbmFormat, "pbm", "image/x-portable-bitmap"}, #endif #ifndef QT_NO_IMAGEFORMAT_XBM - {_qt_XbmFormat, "xbm"}, + {_qt_XbmFormat, "xbm", "image/x-xbitmap"}, #endif #ifndef QT_NO_IMAGEFORMAT_XPM - {_qt_XpmFormat, "xpm"}, + {_qt_XpmFormat, "xpm", "image/x-xpixmap"}, #endif - {_qt_NoFormat, ""} + {_qt_NoFormat, "", ""} }; static QImageIOHandler *createReadHandlerHelper(QIODevice *device, @@ -1434,6 +1435,10 @@ QByteArray QImageReader::imageFormat(QIODevice *device) void supportedImageHandlerFormats(QFactoryLoader *loader, QImageIOPlugin::Capability cap, QSet *result); + +void supportedImageHandlerMimeTypes(QFactoryLoader *loader, + QImageIOPlugin::Capability cap, + QSet *result); #endif /*! @@ -1442,18 +1447,17 @@ void supportedImageHandlerFormats(QFactoryLoader *loader, By default, Qt can read the following formats: \table - \header \li Format \li Description - \row \li BMP \li Windows Bitmap - \row \li GIF \li Graphic Interchange Format (optional) - \row \li JPG \li Joint Photographic Experts Group - \row \li JPEG \li Joint Photographic Experts Group - \row \li PNG \li Portable Network Graphics - \row \li PBM \li Portable Bitmap - \row \li PGM \li Portable Graymap - \row \li PPM \li Portable Pixmap - \row \li XBM \li X11 Bitmap - \row \li XPM \li X11 Pixmap - \row \li SVG \li Scalable Vector Graphics + \header \li Format \li MIME type \li Description + \row \li BMP \li image/bmp \li Windows Bitmap + \row \li GIF \li image/gif \li Graphic Interchange Format (optional) + \row \li JPG \li image/jpeg \li Joint Photographic Experts Group + \row \li PNG \li image/png \li Portable Network Graphics + \row \li PBM \li image/x-portable-bitmap \li Portable Bitmap + \row \li PGM \li image/x-portable-graymap \li Portable Graymap + \row \li PPM \li image/x-portable-pixmap \li Portable Pixmap + \row \li XBM \li image/x-xbitmap \li X11 Bitmap + \row \li XPM \li image/x-xpixmap \li X11 Pixmap + \row \li SVG \li image/svg+xml \li Scalable Vector Graphics \endtable Reading and writing SVG files is supported through Qt's @@ -1484,4 +1488,31 @@ QList QImageReader::supportedImageFormats() return sortedFormats; } +/*! + Returns the list of MIME types supported by QImageReader. + + Note that the QApplication instance must be created before this function is + called. + + \sa supportedImageFormats(), QImageWriter::supportedMimeTypes() +*/ + +QList QImageReader::supportedMimeTypes() +{ + QSet mimeTypes; + for (int i = 0; i < _qt_NumFormats; ++i) + mimeTypes << _qt_BuiltInFormats[i].mimeType; + +#ifndef QT_NO_LIBRARY + supportedImageHandlerMimeTypes(loader(), QImageIOPlugin::CanRead, &mimeTypes); +#endif // QT_NO_LIBRARY + + QList sortedMimeTypes; + for (QSet::ConstIterator it = mimeTypes.constBegin(); it != mimeTypes.constEnd(); ++it) + sortedMimeTypes << *it; + + qSort(sortedMimeTypes); + return sortedMimeTypes; +} + QT_END_NAMESPACE diff --git a/src/gui/image/qimagereader.h b/src/gui/image/qimagereader.h index 932b931254..498a9c4307 100644 --- a/src/gui/image/qimagereader.h +++ b/src/gui/image/qimagereader.h @@ -133,6 +133,7 @@ public: static QByteArray imageFormat(const QString &fileName); static QByteArray imageFormat(QIODevice *device); static QList supportedImageFormats(); + static QList supportedMimeTypes(); private: Q_DISABLE_COPY(QImageReader) diff --git a/src/gui/image/qimagewriter.cpp b/src/gui/image/qimagewriter.cpp index 6085a0e465..fbf8c14fec 100644 --- a/src/gui/image/qimagewriter.cpp +++ b/src/gui/image/qimagewriter.cpp @@ -100,6 +100,7 @@ #include #include #include +#include #include #include @@ -677,6 +678,26 @@ void supportedImageHandlerFormats(QFactoryLoader *loader, result->insert(key); } } + +void supportedImageHandlerMimeTypes(QFactoryLoader *loader, + QImageIOPlugin::Capability cap, + QSet *result) +{ + QList metaDataList = loader->metaData(); + + const int pluginCount = metaDataList.size(); + for (int i = 0; i < pluginCount; ++i) { + const QJsonObject metaData = metaDataList.at(i).value(QStringLiteral("MetaData")).toObject(); + const QJsonArray keys = metaData.value(QStringLiteral("Keys")).toArray(); + const QJsonArray mimeTypes = metaData.value(QStringLiteral("MimeTypes")).toArray(); + QImageIOPlugin *plugin = qobject_cast(loader->instance(i)); + const int keyCount = keys.size(); + for (int k = 0; k < keyCount; ++k) { + if (plugin && (plugin->capabilities(0, keys.at(k).toString().toLatin1()) & cap) != 0) + result->insert(mimeTypes.at(k).toString().toLatin1()); + } + } +} #endif // QT_NO_IMAGEFORMATPLUGIN /*! @@ -685,16 +706,15 @@ void supportedImageHandlerFormats(QFactoryLoader *loader, By default, Qt can write the following formats: \table - \header \li Format \li Description - \row \li BMP \li Windows Bitmap - \row \li JPG \li Joint Photographic Experts Group - \row \li JPEG \li Joint Photographic Experts Group - \row \li PNG \li Portable Network Graphics - \row \li PBM \li Portable Bitmap - \row \li PGM \li Portable Graymap - \row \li PPM \li Portable Pixmap - \row \li XBM \li X11 Bitmap - \row \li XPM \li X11 Pixmap + \header \li Format \li MIME type \li Description + \row \li BMP \li image/bmp \li Windows Bitmap + \row \li JPG \li image/jpeg \li Joint Photographic Experts Group + \row \li PNG \li image/png \li Portable Network Graphics + \row \li PBM \li image/x-portable-bitmap \li Portable Bitmap + \row \li PGM \li image/x-portable-graymap \li Portable Graymap + \row \li PPM \li image/x-portable-pixmap \li Portable Pixmap + \row \li XBM \li image/x-xbitmap \li X11 Bitmap + \row \li XPM \li image/x-xpixmap \li X11 Pixmap \endtable Reading and writing SVG files is supported through Qt's @@ -725,9 +745,6 @@ QList QImageWriter::supportedImageFormats() #ifndef QT_NO_IMAGEFORMAT_JPEG formats << "jpg" << "jpeg"; #endif -#ifdef QT_BUILTIN_GIF_READER - formats << "gif"; -#endif #ifndef QT_NO_IMAGEFORMATPLUGIN supportedImageHandlerFormats(loader(), QImageIOPlugin::CanWrite, &formats); @@ -741,4 +758,46 @@ QList QImageWriter::supportedImageFormats() return sortedFormats; } +/*! + Returns the list of MIME types supported by QImageWriter. + + Note that the QApplication instance must be created before this function is + called. + + \sa supportedImageFormats(), QImageReader::supportedMimeTypes() +*/ +QList QImageWriter::supportedMimeTypes() +{ + QSet mimeTypes; + mimeTypes << "image/bmp"; +#ifndef QT_NO_IMAGEFORMAT_PPM + mimeTypes << "image/x-portable-bitmap"; + mimeTypes << "image/x-portable-graymap"; + mimeTypes << "image/x-portable-pixmap"; +#endif +#ifndef QT_NO_IMAGEFORMAT_XBM + mimeTypes << "image/x-xbitmap"; +#endif +#ifndef QT_NO_IMAGEFORMAT_XPM + mimeTypes << "image/x-xpixmap"; +#endif +#ifndef QT_NO_IMAGEFORMAT_PNG + mimeTypes << "image/png"; +#endif +#ifndef QT_NO_IMAGEFORMAT_JPEG + mimeTypes << "image/jpeg"; +#endif + +#ifndef QT_NO_LIBRARY + supportedImageHandlerMimeTypes(loader(), QImageIOPlugin::CanWrite, &mimeTypes); +#endif // QT_NO_LIBRARY + + QList sortedMimeTypes; + for (QSet::ConstIterator it = mimeTypes.constBegin(); it != mimeTypes.constEnd(); ++it) + sortedMimeTypes << *it; + + qSort(sortedMimeTypes); + return sortedMimeTypes; +} + QT_END_NAMESPACE diff --git a/src/gui/image/qimagewriter.h b/src/gui/image/qimagewriter.h index 0e19d94f83..b01fd4b9a0 100644 --- a/src/gui/image/qimagewriter.h +++ b/src/gui/image/qimagewriter.h @@ -102,6 +102,7 @@ public: bool supportsOption(QImageIOHandler::ImageOption option) const; static QList supportedImageFormats(); + static QList supportedMimeTypes(); private: Q_DISABLE_COPY(QImageWriter) diff --git a/src/plugins/imageformats/gif/gif.json b/src/plugins/imageformats/gif/gif.json index b599b40ffe..1d6cb126c4 100644 --- a/src/plugins/imageformats/gif/gif.json +++ b/src/plugins/imageformats/gif/gif.json @@ -1,3 +1,4 @@ { - "Keys": [ "gif" ] + "Keys": [ "gif" ], + "MimeTypes": [ "image/gif" ] } diff --git a/src/plugins/imageformats/ico/ico.json b/src/plugins/imageformats/ico/ico.json index d22cb739a1..bd46e07e54 100644 --- a/src/plugins/imageformats/ico/ico.json +++ b/src/plugins/imageformats/ico/ico.json @@ -1,3 +1,4 @@ { - "Keys": [ "ico" ] + "Keys": [ "ico" ], + "MimeTypes": [ "image/vnd.microsoft.icon" ] } diff --git a/src/plugins/imageformats/jpeg/jpeg.json b/src/plugins/imageformats/jpeg/jpeg.json index 132c642c05..5e26a97206 100644 --- a/src/plugins/imageformats/jpeg/jpeg.json +++ b/src/plugins/imageformats/jpeg/jpeg.json @@ -1,3 +1,4 @@ { - "Keys": [ "jpg", "jpeg" ] + "Keys": [ "jpg", "jpeg" ], + "MimeTypes": [ "image/jpeg", "image/jpeg" ] } -- cgit v1.2.3 From a5fa0cf98cdedd6dc3488b590499b0b4387747dc Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 22 Dec 2012 13:28:13 -0800 Subject: Make the QtTest GUI headers compile on their own Though no one is supposed to include them directly, it's a good idea to ensure that they are tested too. They're only included from the master header when QT_GUI_LIB and QT_WIDGETS_LIB are #defined. Change-Id: Ie84bb6fd4c18b5b51ab35463f9082feaa0693c97 Reviewed-by: Harald Fernengel --- src/testlib/qtestmouse.h | 1 + src/testlib/qtesttouch.h | 1 + 2 files changed, 2 insertions(+) (limited to 'src') diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h index c24b09b14c..6f51831626 100644 --- a/src/testlib/qtestmouse.h +++ b/src/testlib/qtestmouse.h @@ -54,6 +54,7 @@ #include #include #include +#include #ifdef QT_WIDGETS_LIB #include diff --git a/src/testlib/qtesttouch.h b/src/testlib/qtesttouch.h index a291507142..97acef47b7 100644 --- a/src/testlib/qtesttouch.h +++ b/src/testlib/qtesttouch.h @@ -53,6 +53,7 @@ #include #include #include +#include #ifdef QT_WIDGETS_LIB #include #endif -- cgit v1.2.3 From fc663b5f9aae16fe6a03160e3eb148a5f742ac58 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Tue, 22 Jan 2013 10:19:49 +0100 Subject: Fix focus handling of native child widgets in xcb. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: If4d596195624011142bff6853849a23064e478df Reviewed-by: Samuel Rødal --- src/gui/kernel/qwindow_p.h | 2 ++ src/plugins/platforms/xcb/qxcbconnection.cpp | 8 +++++++- src/plugins/platforms/xcb/qxcbconnection.h | 5 +++++ src/plugins/platforms/xcb/qxcbwindow.cpp | 14 +++++++++++++- src/widgets/kernel/qwidgetwindow.cpp | 18 +++++++++++++++++- 5 files changed, 44 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h index e02b87e921..dd526cb505 100644 --- a/src/gui/kernel/qwindow_p.h +++ b/src/gui/kernel/qwindow_p.h @@ -122,6 +122,8 @@ public: return offset; } + virtual QWindow *eventReceiver() { Q_Q(QWindow); return q; } + QWindow::SurfaceType surfaceType; Qt::WindowFlags windowFlags; QWindow *parentWindow; diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index c477c3a1a5..44c730d375 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -258,6 +258,7 @@ QXcbConnection::QXcbConnection(QXcbNativeInterface *nativeInterface, const char , has_randr_extension(false) , has_input_shape(false) , m_buttons(0) + , m_focusWindow(0) { #ifdef XCB_USE_XLIB Display *dpy = XOpenDisplay(m_displayName.constData()); @@ -418,7 +419,7 @@ break; if (QXcbWindow *platformWindow = platformWindowFromId(e->event)) { \ handled = QWindowSystemInterface::handleNativeEvent(platformWindow->window(), m_nativeInterface->genericEventFilterType(), event, &result); \ if (!handled) \ - m_keyboard->handler(platformWindow, e); \ + m_keyboard->handler(m_focusWindow, e); \ } \ } \ break; @@ -942,6 +943,11 @@ void QXcbEventReader::unlock() m_mutex.unlock(); } +void QXcbConnection::setFocusWindow(QXcbWindow *w) +{ + m_focusWindow = w; +} + void QXcbConnection::sendConnectionEvent(QXcbAtom::Atom a, uint id) { xcb_client_message_event_t event; diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h index 68d2b85f78..b499f75b78 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.h +++ b/src/plugins/platforms/xcb/qxcbconnection.h @@ -385,6 +385,9 @@ public: Qt::MouseButtons buttons() const { return m_buttons; } + QXcbWindow *focusWindow() const { return m_focusWindow; } + void setFocusWindow(QXcbWindow *); + private slots: void processXcbEvents(); @@ -511,6 +514,8 @@ private: bool has_input_shape; Qt::MouseButtons m_buttons; + + QXcbWindow *m_focusWindow; }; #define DISPLAY_FROM_XCB(object) ((Display *)(object->connection()->xlib_display())) diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index 60cc547979..a8957d5810 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -403,6 +403,9 @@ QXcbWindow::~QXcbWindow() void QXcbWindow::destroy() { + if (connection()->focusWindow() == this) + connection()->setFocusWindow(0); + if (m_syncCounter && m_screen->syncRequestSupported()) Q_XCB_CALL(xcb_sync_destroy_counter(xcb_connection(), m_syncCounter)); if (m_window) { @@ -1483,6 +1486,11 @@ void QXcbWindow::handleUnmapNotifyEvent(const xcb_unmap_notify_event_t *event) void QXcbWindow::handleButtonPressEvent(const xcb_button_press_event_t *event) { + if (window() != QGuiApplication::focusWindow()) { + QWindow *w = static_cast(QObjectPrivate::get(window()))->eventReceiver(); + w->requestActivate(); + } + updateNetWmUserTime(event->time); QPoint local(event->event_x, event->event_y); @@ -1645,7 +1653,10 @@ void QXcbWindow::handlePropertyNotifyEvent(const xcb_property_notify_event_t *ev void QXcbWindow::handleFocusInEvent(const xcb_focus_in_event_t *) { - QWindowSystemInterface::handleWindowActivated(window()); + QWindow *w = window(); + w = static_cast(QObjectPrivate::get(w))->eventReceiver(); + connection()->setFocusWindow(static_cast(w->handle())); + QWindowSystemInterface::handleWindowActivated(w); } static bool focusInPeeker(xcb_generic_event_t *event) @@ -1661,6 +1672,7 @@ static bool focusInPeeker(xcb_generic_event_t *event) void QXcbWindow::handleFocusOutEvent(const xcb_focus_out_event_t *) { + connection()->setFocusWindow(0); // Do not set the active window to 0 if there is a FocusIn coming. // There is however no equivalent for XPutBackEvent so register a // callback for QXcbConnection instead. diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index 462ebc605b..50b61beb05 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -39,6 +39,7 @@ ** ****************************************************************************/ +#include "private/qwindow_p.h" #include "qwidgetwindow_qpa_p.h" #include "private/qwidget_p.h" @@ -60,8 +61,23 @@ extern int openPopupCount; bool qt_replay_popup_mouse_event = false; extern bool qt_try_modal(QWidget *widget, QEvent::Type type); +class QWidgetWindowPrivate : public QWindowPrivate +{ + Q_DECLARE_PUBLIC(QWidgetWindow) +public: + QWindow *eventReceiver() { + Q_Q(QWidgetWindow); + QWindow *w = q; + while (w->parent() && qobject_cast(w) && qobject_cast(w->parent())) { + w = w->parent(); + } + return w; + } +}; + QWidgetWindow::QWidgetWindow(QWidget *widget) - : m_widget(widget) + : QWindow(*new QWidgetWindowPrivate(), 0) + , m_widget(widget) { updateObjectName(); connect(m_widget, &QObject::objectNameChanged, this, &QWidgetWindow::updateObjectName); -- cgit v1.2.3 From 45be71bf7d7c855e74b84d2fabb4e626afc57a22 Mon Sep 17 00:00:00 2001 From: Roman Pasechnik Date: Thu, 10 Jan 2013 14:45:18 +0200 Subject: Added initializer list constructors for Qt associative containers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Affected: QSet, QMap, QMultiMap, QHash, QMultiHash. Task-number: QTBUG-25679 Change-Id: I01f3ecfbca805f4c053a75232188bd2a77fdb1f2 Reviewed-by: Thiago Macieira Reviewed-by: Jędrzej Nowacki --- src/corelib/tools/qhash.cpp | 20 ++++++++++++++++++++ src/corelib/tools/qhash.h | 21 +++++++++++++++++++++ src/corelib/tools/qmap.cpp | 20 ++++++++++++++++++++ src/corelib/tools/qmap.h | 19 +++++++++++++++++++ src/corelib/tools/qset.h | 11 +++++++++++ src/corelib/tools/qset.qdoc | 10 ++++++++++ 6 files changed, 101 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp index 0103a208f3..b8cd076cb6 100644 --- a/src/corelib/tools/qhash.cpp +++ b/src/corelib/tools/qhash.cpp @@ -924,6 +924,16 @@ void QHashData::checkSanity() \sa clear() */ +/*! \fn QHash::QHash(std::initializer_list > list) + \since 5.1 + + Constructs a hash with a copy of each of the elements in the + initializer list \a list. + + This function is only available if the program is being + compiled in C++11 mode. +*/ + /*! \fn QHash::QHash(const QHash &other) Constructs a copy of \a other. @@ -1981,6 +1991,16 @@ void QHashData::checkSanity() Constructs an empty hash. */ +/*! \fn QMultiHash::QMultiHash(std::initializer_list > list) + \since 5.1 + + Constructs a multi hash with a copy of each of the elements in the + initializer list \a list. + + This function is only available if the program is being + compiled in C++11 mode. +*/ + /*! \fn QMultiHash::QMultiHash(const QHash &other) Constructs a copy of \a other (which can be a QHash or a diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h index 98965b9121..69a8afe195 100644 --- a/src/corelib/tools/qhash.h +++ b/src/corelib/tools/qhash.h @@ -48,6 +48,10 @@ #include #include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -285,6 +289,15 @@ class QHash public: inline QHash() : d(const_cast(&QHashData::shared_null)) { } +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QHash(std::initializer_list > list) + : d(const_cast(&QHashData::shared_null)) + { + reserve(list.size()); + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif inline QHash(const QHash &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); } inline ~QHash() { if (!d->ref.deref()) freeData(d); } @@ -921,6 +934,14 @@ class QMultiHash : public QHash { public: QMultiHash() {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMultiHash(std::initializer_list > list) + { + this->reserve(list.size()); + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif QMultiHash(const QHash &other) : QHash(other) {} inline void swap(QMultiHash &other) { QHash::swap(other); } // prevent QMultiHash<->QHash swaps diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp index 75104e4825..a4c28b5bd4 100644 --- a/src/corelib/tools/qmap.cpp +++ b/src/corelib/tools/qmap.cpp @@ -538,6 +538,16 @@ void QMapDataBase::freeData(QMapDataBase *d) \sa toStdMap() */ +/*! \fn QMap::QMap(std::initializer_list > list) + \since 5.1 + + Constructs a map with a copy of each of the elements in the + initializer list \a list. + + This function is only available if the program is being + compiled in C++11 mode. +*/ + /*! \fn std::map QMap::toStdMap() const Returns an STL map equivalent to this QMap. @@ -1576,6 +1586,16 @@ void QMapDataBase::freeData(QMapDataBase *d) Constructs an empty map. */ +/*! \fn QMultiMap::QMultiMap(std::initializer_list > list) + \since 5.1 + + Constructs a multi map with a copy of each of the elements in the + initializer list \a list. + + This function is only available if the program is being + compiled in C++11 mode. +*/ + /*! \fn QMultiMap::QMultiMap(const QMap &other) Constructs a copy of \a other (which can be a QMap or a diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h index b0ec6fb3c6..93134a43dd 100644 --- a/src/corelib/tools/qmap.h +++ b/src/corelib/tools/qmap.h @@ -54,6 +54,10 @@ #include #include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -327,6 +331,14 @@ class QMap public: inline QMap() : d(static_cast *>(const_cast(&QMapDataBase::shared_null))) { } +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMap(std::initializer_list > list) + : d(static_cast *>(const_cast(&QMapDataBase::shared_null))) + { + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif QMap(const QMap &other); inline ~QMap() { if (!d->ref.deref()) d->destroy(); } @@ -960,6 +972,13 @@ class QMultiMap : public QMap { public: QMultiMap() {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMultiMap(std::initializer_list > list) + { + for (typename std::initializer_list >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif QMultiMap(const QMap &other) : QMap(other) {} inline void swap(QMultiMap &other) { QMap::swap(other); } diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h index 6fdc8e6281..ee91336c51 100644 --- a/src/corelib/tools/qset.h +++ b/src/corelib/tools/qset.h @@ -43,6 +43,9 @@ #define QSET_H #include +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include +#endif QT_BEGIN_HEADER @@ -56,6 +59,14 @@ class QSet public: inline QSet() {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QSet(std::initializer_list list) + { + reserve(list.size()); + for (typename std::initializer_list::const_iterator it = list.begin(); it != list.end(); ++it) + insert(*it); + } +#endif inline QSet(const QSet &other) : q_hash(other.q_hash) {} inline QSet &operator=(const QSet &other) diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc index ef7a4c4f52..cd90b4949b 100644 --- a/src/corelib/tools/qset.qdoc +++ b/src/corelib/tools/qset.qdoc @@ -103,6 +103,16 @@ \sa clear() */ +/*! \fn QSet::QSet(std::initializer_list list) + \since 5.1 + + Constructs a set with a copy of each of the elements in the + initializer list \a list. + + This function is only available if the program is being + compiled in C++11 mode. +*/ + /*! \fn QSet::QSet(const QSet &other) -- cgit v1.2.3 From 3a2b3fc0d72fe1e52a7830e03f849963f6b73e02 Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Wed, 23 Jan 2013 15:45:52 +0100 Subject: Don't try to render a pixmap when there isn't any. This happened in cases when QDrag choose not to use a pixmap to represent data in a drag and drop operation. The chain that leads to QPainter errors begins in QBasicDrag::startDrag() where we call setPixmap() with Null pixmap, which later calls updateGeometry() which leads to calling render() before the backing store has been resized. Task-number: QTBUG-29283 Change-Id: I2145159d3f23dbde2cba2ca9aa1788e222aba02a Reviewed-by: Friedemann Kleint --- src/platformsupport/dnd/qshapedpixmapdndwindow.cpp | 4 +++- src/platformsupport/dnd/qsimpledrag.cpp | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/platformsupport/dnd/qshapedpixmapdndwindow.cpp b/src/platformsupport/dnd/qshapedpixmapdndwindow.cpp index 67c3cb4701..b3e64b01d0 100644 --- a/src/platformsupport/dnd/qshapedpixmapdndwindow.cpp +++ b/src/platformsupport/dnd/qshapedpixmapdndwindow.cpp @@ -91,7 +91,9 @@ void QShapedPixmapWindow::setHotspot(const QPoint &hotspot) void QShapedPixmapWindow::updateGeometry() { QRect rect(QCursor::pos() - m_hotSpot, m_pixmap.size()); - if (m_backingStore->size() != m_pixmap.size()) + if (m_pixmap.isNull()) + m_backingStore->resize(QSize(1,1)); + else if (m_backingStore->size() != m_pixmap.size()) m_backingStore->resize(m_pixmap.size()); setGeometry(rect); } diff --git a/src/platformsupport/dnd/qsimpledrag.cpp b/src/platformsupport/dnd/qsimpledrag.cpp index 3b73380cab..fe0146afc3 100644 --- a/src/platformsupport/dnd/qsimpledrag.cpp +++ b/src/platformsupport/dnd/qsimpledrag.cpp @@ -207,6 +207,8 @@ void QBasicDrag::resetDndState(bool /* deleteSource */) void QBasicDrag::startDrag() { + // ### TODO Check if its really necessary to have m_drag_icon_window + // when QDrag is used without a pixmap - QDrag::setPixmap() if (!m_drag_icon_window) m_drag_icon_window = new QShapedPixmapWindow(); -- cgit v1.2.3 From 4807f70f89f9480052920b01ccefee97862be2e4 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 23 Jan 2013 11:57:50 +0100 Subject: Dnd: Do not always Retrieve URLS in canConvertFromMime(). Task-number: QTBUG-28186 Change-Id: I71d1a241d69f5fd80f6c047b9350cbd01bd48854 Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/qwindowsmime.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsmime.cpp b/src/plugins/platforms/windows/qwindowsmime.cpp index 7fb32d3513..a8bacd631d 100644 --- a/src/plugins/platforms/windows/qwindowsmime.cpp +++ b/src/plugins/platforms/windows/qwindowsmime.cpp @@ -703,14 +703,14 @@ QWindowsMimeURI::QWindowsMimeURI() bool QWindowsMimeURI::canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const { - if (getCf(formatetc) == CF_HDROP) { + if (mimeData->hasUrls() && getCf(formatetc) == CF_HDROP) { QList urls = mimeData->urls(); for (int i=0; ihasFormat(QStringLiteral("text/uri-list")); + return (getCf(formatetc) == CF_INETURL_W || getCf(formatetc) == CF_INETURL) && mimeData->hasUrls(); } bool QWindowsMimeURI::convertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM *pmedium) const -- cgit v1.2.3 From a71c7fce8ac536212d78b525a8a76e5c130362ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 22 Jan 2013 17:05:09 +0100 Subject: Don't assume m11/m22 represents the scale of a QTransform MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We can still assume it when pulling out the scale of the glyph cache, since we limit it to scaling, but when computing the scale from the current matrix we have to decompose it. We always use a positive scale in the glyph-cache, and let the drawing code take care of any flipping of the coordinates. Change-Id: Ie3c4f2d91008a9be8f89bef29c15d80b23fb8a82 Reviewed-by: Tor Arne Vestbø --- src/gui/opengl/qopenglpaintengine.cpp | 8 +++++++- src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp index 875fe4b4fb..68d9ad0a24 100644 --- a/src/gui/opengl/qopenglpaintengine.cpp +++ b/src/gui/opengl/qopenglpaintengine.cpp @@ -1073,6 +1073,8 @@ bool QOpenGL2PaintEngineExPrivate::prepareForCachedGlyphDraw(const QFontEngineGl { Q_Q(QOpenGL2PaintEngineEx); + Q_ASSERT(cache.transform().type() <= QTransform::TxScale); + QTransform &transform = q->state()->matrix; transform.scale(1.0 / cache.transform().m11(), 1.0 / cache.transform().m22()); bool ret = prepareForDraw(false); @@ -1557,7 +1559,11 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type // We allow scaling, so that the glyph-cache will contain glyphs with the // appropriate resolution in the case of displays with a device-pixel-ratio != 1. - QTransform transform = QTransform::fromScale(s->matrix.m11(), s->matrix.m22()); + QTransform transform = s->matrix.type() < QTransform::TxRotate ? + QTransform::fromScale(qAbs(s->matrix.m11()), qAbs(s->matrix.m22())) : + QTransform::fromScale( + QVector2D(s->matrix.m11(), s->matrix.m12()).length(), + QVector2D(s->matrix.m21(), s->matrix.m22()).length()); QOpenGLTextureGlyphCache *cache = (QOpenGLTextureGlyphCache *) fe->glyphCache(cacheKey, glyphType, transform); diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 8489daf794..b6da578f26 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1090,6 +1090,8 @@ bool QGL2PaintEngineExPrivate::prepareForCachedGlyphDraw(const QFontEngineGlyphC { Q_Q(QGL2PaintEngineEx); + Q_ASSERT(cache.transform().type() <= QTransform::TxScale); + QTransform &transform = q->state()->matrix; transform.scale(1.0 / cache.transform().m11(), 1.0 / cache.transform().m22()); bool ret = prepareForDraw(false); @@ -1594,7 +1596,11 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp // We allow scaling, so that the glyph-cache will contain glyphs with the // appropriate resolution in the case of displays with a device-pixel-ratio != 1. - QTransform transform = QTransform::fromScale(s->matrix.m11(), s->matrix.m22()); + QTransform transform = s->matrix.type() < QTransform::TxRotate ? + QTransform::fromScale(qAbs(s->matrix.m11()), qAbs(s->matrix.m22())) : + QTransform::fromScale( + QVector2D(s->matrix.m11(), s->matrix.m12()).length(), + QVector2D(s->matrix.m21(), s->matrix.m22()).length()); QFontEngine *fe = staticTextItem->fontEngine(); QGLTextureGlyphCache *cache = -- cgit v1.2.3 From cd1e21cf09c2512b58723ad527dcc1aad102787b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 24 Jan 2013 14:59:52 +0100 Subject: Use path-based text when painter has negative scale on raster/coretext The CoreText font-engine is not able to produce glyphs with a negative scale (flipped). We need to report this fact back to the raster paint engine, so that it can fall back to painter-path based text drawing. For the GL engine this is not an issue, as the engine is able to handle the flipping itself, while still using a non-flipped glyph-cache. Task-number: QTBUG-29284 Change-Id: I3c24cee091786faae8a5c5dd756d208163330bfc Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm index e2e8f1daa4..70416bc2dd 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm @@ -619,7 +619,13 @@ QFontEngine *QCoreTextFontEngine::cloneWithSize(qreal pixelSize) const bool QCoreTextFontEngine::supportsTransformation(const QTransform &transform) const { - return transform.type() <= QTransform::TxScale; + if (transform.type() < QTransform::TxScale) + return true; + else if (transform.type() == QTransform::TxScale && + transform.m11() >= 0 && transform.m22() >= 0) + return true; + else + return false; } QT_END_NAMESPACE -- cgit v1.2.3 From 314e5ce5ee03baebff4731c44c0aca871135603d Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 11 Jan 2013 14:53:25 +0100 Subject: Add an umbrella cmake config file for Qt 5. Change-Id: I96b6e96539a84a5919992afbaee757fa080b7ae0 Reviewed-by: Oswald Buddenhagen Reviewed-by: Alexander Neundorf Reviewed-by: Stephen Kelly --- src/corelib/Qt5Config.cmake.in | 43 ++++++++++++++++++++++++++++++++++++++++++ src/corelib/corelib.pro | 10 ++++++++-- 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 src/corelib/Qt5Config.cmake.in (limited to 'src') diff --git a/src/corelib/Qt5Config.cmake.in b/src/corelib/Qt5Config.cmake.in new file mode 100644 index 0000000000..408dd64496 --- /dev/null +++ b/src/corelib/Qt5Config.cmake.in @@ -0,0 +1,43 @@ + +if (CMAKE_VERSION VERSION_LESS 2.8.9) + message(FATAL_ERROR \"Qt5 requires at least CMake version 2.8.9\") +endif() + +if (NOT Qt5_FIND_COMPONENTS) + set(Qt5_NOT_FOUND_MESSAGE \"The Qt5 package requires at least one component\") + set(Qt5_FOUND False) + return() +endif() + +set(_Qt5_FIND_PARTS_REQUIRED) +if (Qt5_FIND_REQUIRED) + set(_Qt5_FIND_PARTS_REQUIRED REQUIRED) +endif() +set(_Qt5_FIND_PARTS_QUIET) +if (Qt5_FIND_QUIETLY) + set(_Qt5_FIND_PARTS_QUIET QUIET) +endif() + +get_filename_component(_qt5_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) + +set(_Qt5_NOTFOUND_MESSAGE) + +foreach(module ${Qt5_FIND_COMPONENTS}) + find_package(Qt5${module} + ${_Qt5_FIND_PARTS_QUIET} + ${_Qt5_FIND_PARTS_REQUIRED} + PATHS \"${_qt5_install_prefix}\" NO_DEFAULT_PATH + ) + if (NOT Qt5${module}_FOUND) + if (Qt5_FIND_REQUIRED_${module}) + set(_Qt5_NOTFOUND_MESSAGE \"${_Qt5_NOTFOUND_MESSAGE}Failed to find Qt5 component \\\"${module}\\\" config file at \\\"${_qt5_install_prefix}/lib/cmake/Qt5${module}/Qt5${module}Config.cmake\\\"\\n\") + elseif(NOT Qt5_FIND_QUIETLY) + message(WARNING \"Failed to find Qt5 component \\\"${module}\\\" config file at \\\"${_qt5_install_prefix}/lib/cmake/Qt5${module}/Qt5${module}Config.cmake\\\"\") + endif() + endif() +endforeach() + +if (_Qt5_NOTFOUND_MESSAGE) + set(Qt5_NOT_FOUND_MESSAGE \"${_Qt5_NOTFOUND_MESSAGE}\") + set(Qt5_FOUND False) +endif() diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro index bf2fd3c84a..2bac1bcbef 100644 --- a/src/corelib/corelib.pro +++ b/src/corelib/corelib.pro @@ -60,10 +60,16 @@ ctest_macros_file.input = $$PWD/Qt5CTestMacros.cmake ctest_macros_file.output = $$DESTDIR/cmake/Qt5Core/Qt5CTestMacros.cmake ctest_macros_file.CONFIG = verbatim -QMAKE_SUBSTITUTES += ctest_macros_file +cmake_umbrella_config_file.input = $$PWD/Qt5Config.cmake.in +cmake_umbrella_config_file.output = $$DESTDIR/cmake/Qt5/Qt5Config.cmake + +cmake_qt5_umbrella_module_files.files = $$cmake_umbrella_config_file.output +cmake_qt5_umbrella_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5 + +QMAKE_SUBSTITUTES += ctest_macros_file cmake_umbrella_config_file ctest_qt5_module_files.files += $$ctest_macros_file.output ctest_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5Core -INSTALLS += ctest_qt5_module_files +INSTALLS += ctest_qt5_module_files cmake_qt5_umbrella_module_files -- cgit v1.2.3 From c0860d26a1b87f42842faeda3e6043a775916594 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 22 Jan 2013 18:26:25 -0800 Subject: Doc: write up the docs for Q_GLOBAL_STATIC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I5bf4d0d027dc8f960c94b4be3ebf7381e9ef4be1 Reviewed-by: Jędrzej Nowacki Reviewed-by: Olivier Goffart --- src/corelib/global/global.pri | 1 + src/corelib/global/qglobalstatic.cpp | 522 +++++++++++++++++++++++++++++++++++ src/corelib/global/qglobalstatic.h | 13 - 3 files changed, 523 insertions(+), 13 deletions(-) create mode 100644 src/corelib/global/qglobalstatic.cpp (limited to 'src') diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri index 491464621c..6ac32cd35d 100644 --- a/src/corelib/global/global.pri +++ b/src/corelib/global/global.pri @@ -20,6 +20,7 @@ HEADERS += \ SOURCES += \ global/qglobal.cpp \ + global/qglobalstatic.cpp \ global/qlibraryinfo.cpp \ global/qmalloc.cpp \ global/qnumeric.cpp \ diff --git a/src/corelib/global/qglobalstatic.cpp b/src/corelib/global/qglobalstatic.cpp new file mode 100644 index 0000000000..7caa2e9848 --- /dev/null +++ b/src/corelib/global/qglobalstatic.cpp @@ -0,0 +1,522 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Intel Corporation. +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qglobalstatic.h" + +/*! + \macro Q_GLOBAL_STATIC(Type, VariableName) + \since 5.1 + \relates QGlobalStatic + + Creates a global and static object of type \l QGlobalStatic, of name \a + VariableName and that behaves as a pointer to \a Type. The object created + by Q_GLOBAL_STATIC initializes itself on the first use, which means that it + will not increase the application or the library's load time. Additionally, + the object is initialized in a thread-safe manner on all platforms. + + The typical use of this macro is as follows, in a global context (that is, + outside of any function bodies): + + \code + Q_GLOBAL_STATIC(MyType, staticType) + \endcode + + This macro is intended to replace global static objects that are not POD + (Plain Old Data, or in C++11 terms, not made of a trivial type), hence the + name. For example, the following C++ code creates a global static: + + \code + static MyType staticType; + \endcode + + Compared to Q_GLOBAL_STATIC, and assuming that \c MyType is a class or + struct that has a constructor, a destructor, or is otherwise non-POD, the + above has the following drawbacks: + + \list + \li it requires load-time initialization of \c MyType (that is, the + default constructor for \c MyType is called when the library or + application is loaded); + + \li the type will be initialized even if it is never used; + + \li the order of initialization and destruction among different + translation units is not determined, leading to possible uses before + initialization or after destruction; + + \li if it is found inside a function (that is, not global), it will be + initialized on first use, but many current compilers (as of 2013) do + not guarantee that the initialization will be thread-safe; + \endlist + + The Q_GLOBAL_STATIC macro solves all of the above problems by guaranteeing + thread-safe initialization on first use and allowing the user to query for + whether the type has already been destroyed, to avoid the + use-after-destruction problem (see QGlobalStatic::isDestroyed()). + + \section1 Constructor and destructor + + For Q_GLOBAL_STATIC, the type \c Type must be publicly + default-constructible and publicly destructible. For + Q_GLOBAL_STATIC_WITH_ARGS(), there must be a public constructor that + matches the arguments passed. + + It is not possible to use Q_GLOBAL_STATIC with types that have protected or + private default constructors or destructors (for Q_GLOBAL_STATIC_WITH_ARGS(), + a protected or private constructor matching the arguments). If the type in + question has those members as protected, it is possible to overcome the + issue by deriving from the type and creating public a constructor and + destructor. If the type has them as private, a friend declaration is + necessary before deriving. + + For example, the following is enough to create \c MyType based on a + previously-defined \c MyOtherType which has a protected default constructor + and/or a protected destructor (or has them as private, but that defines \c + MyType as a friend). + + \code + class MyType : public MyOtherType { }; + Q_GLOBAL_STATIC(MyType, staticType) + \endcode + + No body for \c MyType is required since the destructor is an implicit + member and so is the default constructor if no other constructors are + defined. For use with Q_GLOBAL_STATIC_WITH_ARGS(), however, a suitable + constructor body is necessary: + + \code + class MyType : public MyOtherType + { + public: + MyType(int i) : MyOtherType(i) {} + }; + Q_GLOBAL_STATIC_WITH_ARGS(MyType, staticType, (42)) + \endcode + + Alternatively, if the compiler supports C++11 inheriting constructors, one could write: + + \code + class MyType : public MyOtherType + { + public: + using MyOtherType::MyOtherType; + }; + Q_GLOBAL_STATIC_WITH_ARGS(MyType, staticType, (42)) + \endcode + + \section1 Placement + + The Q_GLOBAL_STATIC macro creates a type that is necessarily static, at the + global scope. It is not possible to place the Q_GLOBAL_STATIC macro inside + a function (doing so will result in compilation errors). + + More importantly, this macro should be placed in source files, never in + headers. Since the resulting object is has static linkage, if the macro is + placed in a header and included by multiple source files, the object will + be defined multiple times and will not cause linking errors. Instead, each + translation unit will refer to a different object, which could lead to + subtle and hard-to-track errors. + + \section1 Non-recommended uses + + Note that the macro is not recommended for use with types that are POD or + that have C++11 constexpr constructors (trivially constructible and + destructible). For those types, it is still recommended to use regular + static, whether global or function-local. + + This macro will work, but it will add unnecessary overhead. + + \section1 Reentrancy, thread-safety, deadlocks, and exception-safety on construction + + The Q_GLOBAL_STATIC macro creates an object that initializes itself on + first use in a thread-safe manner: if multiple threads attempt to + initialize the object at the same time, only one thread will proceed to + initialize, while all other threads wait for completion. + + If the initialization process throws an exception, the initialization is + deemed not complete and will be attempted again when control reaches any + use of the object. If there are any threads waiting for initialization, one + of them will be woken up to attempt to initialize. + + The macro makes no guarantee about reentrancy from the same thread. If the + global static object is accessed directly or indirectly from inside the + constructor, a deadlock will surely happen. + + In addition, if two Q_GLOBAL_STATIC objects are being initialized on two + different threads and each one's initialization sequence accesses the + other, a deadlock might happen. For that reason, it is recommended to keep + global static constructors simple or, failing that, to ensure that there's + no cross-dependency of uses of global static during construction. + + \section1 Destruction + + If the object is never used during the lifetime of the program, aside from + the QGlobalStatic::exists() and QGlobalStatic::isDestroyed() functions, the + contents of type \a Type will not be created and there will not be any + exit-time operation. + + If the object is created, it will be destroyed at exit-time, similar to the + C \c atexit function. On most systems, in fact, the destructor will also be + called if the library or plugin is unloaded from memory before exit. + + Since the destruction is meant to happen at program exit, no thread-safety + is provided. This includes the case of plugin or library unload. In + addition, since destructors are not supposed to throw exceptions, no + exception safety is provided either. + + However, reentrancy is permitted: during destruction, it is possible to + access the global static object and the pointer returned will be the same + as it was before destruction began. After the destruction has completed, + accessing the global static object is not permitted, except as noted in the + \l QGlobalStatic API. + + \omit + \section1 Compatibility with Qt 4 and Qt 5.0 + + This macro, in its current form and behavior, was introduced in Qt 5.1. + Prior to that version, Qt had another macro with the same name that was + private API. This section is not meant to document how to use + Q_GLOBAL_STATIC in those versions, but instead to serve as a porting guide + for Qt code that used those macros. + + The Qt 4 Q_GLOBAL_STATIC macro differed in behavior in the following ways: + + \list + \li the object created was not of type \l QGlobalStatic, but instead + it was a function that returned a pointer to \a Type; that means the + \l QGlobalStatic API was not present; + + \li the initialization was thread-safe, but not guaranteed to be + unique: instead, if N threads tried to initialize the object at the + same time, N objects would be created on the heap and N-1 would be + destroyed; + + \li the object was always created on the heap. + \endlist + + \section1 Implementation details + + Q_GLOBAL_STATIC is implemented by creating a QBasicAtomicInt called the \c + guard and a free, inline function called \c innerFunction. The guard + variable is initialized to value 0 (chosen so that the guard can be placed + in the .bss section of the binary file), which denotes that construction + has not yet taken place (uninitialized). The inner function is implemented + by the helper macro Q_GLOBAL_STATIC_INTERNAL. + + Both the guard variable and the inner function are passed as template + parameters to QGlobalStatic, along with the type \a Type. Both should also + have static linkage or be placed inside an anonymous namespace, so that the + visibility of Q_GLOBAL_STATIC is that of a global static. To permit + multiple Q_GLOBAL_STATIC per translation unit, the guard variable and the + inner function must have unique names, which can be accomplished by + concatenating with \a VariableName or by placing them in a namespace that + has \a VariableName as part of the name. To simplify and improve + readability on Q_GLOBAL_STATIC_INTERNAL, we chose the namespace solution. + It's also required for C++98 builds, since static symbols cannot be used as + template parameters. + + The guard variable can assume the following values: + + \list + \li -2: object was once initialized but has been destroyed already; + \li -1: object was initialized and is still valid; + \li 0: object was not initialized yet; + \li +1: object is being initialized and any threads encountering this + value must wait for completion (not used in the current implementation). + \endlist + + Collectively, all positive values indicate that the initialization is + progressing and must be waited on, whereas all negative values indicate + that the initialization has terminated and must not be attempted again. + Positive values are not used in the current implementation, but were in + earlier versions. They could be used again in the future. + + The QGlobalStatic::exists() and QGlobalStatic::isDestroyed() functions + operate solely on the guard variable: the former returns true if the guard + is negative, whereas the latter returns true only if it is -2. + + The Q_GLOBAL_STATIC_INTERNAL macro implements the actual construction and + destruction. There are two implementations of it: one for compilers that + support thread-safe initialization of function-local statics and one for + compilers that don't. Thread-safe initialization is required by C++11 in + [stmt.decl], but as of the time of this writing, only compilers based on + the IA-64 C++ ABI implemented it properly. The implementation requiring + thread-safe initialization is also used on the Qt bootstrapped tools, which + define QT_NO_THREAD. + + The implementation requiring thread-safe initialization from the compiler + is the simplest: it creates the \a Type object as a function-local static + and returns its address. The actual object is actually inside a holder + structure so holder's destructor can set the guard variable to the value -2 + (destroyed) when the type has finished destruction. Since we need to set + the guard \b after the destruction has finished, this code needs to be in a + base struct's destructor. A holder structure is used to avoid creating two + statics, which the ABI might require duplicating the thread-safe control + structures for. + + The other implementation is similar to Qt 4's Q_GLOBAL_STATIC, but unlike + that one, it uses a \l QBasicMutex to provide locking. It is also more + efficient memory-wise. It use a simple double-checked locking of the mutex + and then creates the contents on the heap. After that, it creates a + function-local structure called "Cleanup", whose destructor will be run at + program exit and will actually destroy the contents. + + \endomit + + \sa Q_GLOBAL_STATIC_WITH_ARGS(), QGlobalStatic +*/ + +/*! + \macro Q_GLOBAL_STATIC_WITH_ARGS(Type, VariableName, Arguments) + \since 5.1 + \relates QGlobalStatic + + Creates a global and static object of type \l QGlobalStatic, of name \a + VariableName, initialized by the arguments \a Arguments and that behaves as + a pointer to \a Type. The object created by Q_GLOBAL_STATIC_WITH_ARGS + initializes itself on the first use, which means that it will not increase + the application or the library's load time. Additionally, the object is + initialized in a thread-safe manner on all platforms. + + The typical use of this macro is as follows, in a global context (that is, + outside of any function bodies): + + \code + Q_GLOBAL_STATIC_WITH_ARGS(MyType, staticType, (42, "Hello", "World")) + \endcode + + The \a Arguments macro parameter must always include the parentheses or, if + C++11 uniform initialization is allowed, the braces. + + Aside from the actual initialization of the contents with the supplied + arguments, this macro behaves identically to Q_GLOBAL_STATIC(). Please + see that macro's documentation for more information. + + \sa Q_GLOBAL_STATIC(), QGlobalStatic +*/ + +/*! + \class QGlobalStatic + \threadsafe + \inmodule QtCore + \since 5.1 + \brief The QGlobalStatic class is used to implement a global static object + + The QGlobalStatic class is the front-end API exported when + Q_GLOBAL_STATIC() is used. See the documentation for the macro for a + discussion on when to use it and its requirements. + + Normally, you will never use this class directly, but instead you will use + the Q_GLOBAL_STATIC() or Q_GLOBAL_STATIC_WITH_ARGS() macros, as + follows: + + \code + Q_GLOBAL_STATIC(MyType, staticType) + \endcode + + The above example creates an object of type QGlobalStatic called \c + staticType. After the above declaration, the \c staticType object may be + used as if it were a pointer, guaranteed to be initialized exactly once. In + addition to the use as a pointer, the object offers two methods to + determine the current status of the global: exists() and isDestroyed(). + + \sa Q_GLOBAL_STATIC(), Q_GLOBAL_STATIC_WITH_ARGS() +*/ + +/*! + \typedef QGlobalStatic::Type + + This type is equivalent to the \c Type parameter passed to the + Q_GLOBAL_STATIC() or Q_GLOBAL_STATIC_WITH_ARGS() macros. It is used in the + return types of some functions. +*/ + +/*! + \fn bool QGlobalStatic::isDestroyed() const + + This function returns true if the global static object has already + completed destruction (that is, if the destructor for the type has already + returned). In specific, note that this function returns false if + the destruction is still in progress. + + Once this function has returned true once, it will never return + false again until either the program is restarted or the plugin or library + containing the global static is unloaded and reloaded. + + This function is safe to call at any point in the program execution: it + cannot fail and cannot cause a deadlock. Additionally, it will not cause + the contents to be created if they have not yet been created. + + This function is useful in code that may be executed at program shutdown, + to determine whether the contents may still be accessed or not. + + \omit + Due to the non-atomic nature of destruction, it's possible that + QGlobalStatic::isDestroyed might return false for a short time after the + destructor has finished. However, since the destructor is only run in an + environment where concurrent multithreaded access is impossible, no one can + see that state. (omitted because it's useless information) + \endomit + + \sa exists() +*/ + +/*! + \fn bool QGlobalStatic::exists() const + + This function returns true if the global static object has already + completed initialization (that is, if the constructor for the type has + already returned). In specific, note that this function returns false if + the initialization is still in progress. + + Once this function has returned true once, it will never return false again + until either the program is restarted or the plugin or library containing + the global static is unloaded and reloaded. + + This function is safe to call at any point in the program execution: it + cannot fail and cannot cause a deadlock. Additionally, it will not cause + the contents to be created if they have not yet been created. + + This function is useful if one can determine the initial conditions of the + global static object and would prefer to avoid a possibly expensive + construction operation. + + For example, in the following code sample, this function is used to + short-circuit the creation of the global static called \c globalState and + returns a default value: + + \code + Q_GLOBAL_STATIC(MyType, globalState) + QString someState() + { + if (globalState.exists()) + return globalState->someState; + return QString(); + } + \endcode + + \b{Thread-safety notice:} this function is thread-safe in the sense that it + may be called from any thread at any time and will always return a valid + reply. But due to the non-atomic nature of construction, this function may + return false for a short time after the construction has completed. + + \b{Memory ordering notice:} this function does not impose any memory + ordering guarantees. That is instead provided by the accessor functions + that return the pointer or reference to the contents. If you bypass the + accessor functions and attempt to access some global state set by the + constructor, be sure to use the correct memory ordering semantics provided + by \l QAtomicInt or \l QAtomicPointer. + + \sa isDestroyed() +*/ + +/*! + \fn QGlobalStatic::operator Type*() + + This function returns the address of the contents of this global static. If + the contents have not yet been created, they will be created thread-safely + by this function. If the contents have already been destroyed, this + function will return a null pointer. + + This function can be used, for example, to store the pointer to the + contents of the global static in a local variable, thus avoiding multiple + calls to the function. The implementation of Q_GLOBAL_STATIC() is quite + efficient already, but in performance-critical sections it might be useful + to help the compiler a little. For example: + + \code + Q_GLOBAL_STATIC(MyType, globalState) + QString someState() + { + MyType *state = globalState; + if (!state) { + // we're in a post-destruction state + return QString(); + } + if (state->condition) + return state->value1; + else + return state->value2; + } + \endcode + + \sa operator->(), operator*() +*/ + +/*! + \fn Type *QGlobalStatic::operator()() + \deprecated + + This function returns the address of the contents of this global static. If + the contents have not yet been created, they will be created thread-safely + by this function. If the contents have already been destroyed, this + function will return a null pointer. + + This function is equivalent to \l {operator Type *()}. It is provided for + compatibility with the private Q_GLOBAL_STATIC implementation that existed + in Qt 4.x and 5.0. New code should avoid using it and should instead treat + the object as a smart pointer. +*/ + +/*! + \fn Type *QGlobalStatic::operator->() + + This function returns the address of the contents of this global static. If + the contents have not yet been created, they will be created thread-safely + by this function. + + This function does not check if the contents have already been destroyed and + will never return null. If this function is called after the object has + been destroyed, it will return a dangling pointer that should not be + dereferenced. +*/ + +/*! + \fn Type &QGlobalStatic::operator*() + + This function returns a reference to the contents of this global static. If + the contents have not yet been created, they will be created thread-safely + by this function. + + This function does not check if the contents have already been destroyed. + If this function is called after the object has been destroyed, it will + return an invalid reference that must not be used. +*/ diff --git a/src/corelib/global/qglobalstatic.h b/src/corelib/global/qglobalstatic.h index 78a4acff12..487b0dfdb4 100644 --- a/src/corelib/global/qglobalstatic.h +++ b/src/corelib/global/qglobalstatic.h @@ -49,19 +49,6 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -/* - * QGlobalStatic internals: - * - * The pointer is initialized to 0. - * The guard is initialized to 0. - * The guard can assume the following values: - * -2: object initialized and already destroyed - * -1: object initialized and is still valid - * 0: not initialized, the value of the pointer should be null - * +1: initializing, must wait until a state change happens - * (not used in the current implementation) - */ - namespace QtGlobalStatic { enum GuardValues { Destroyed = -2, -- cgit v1.2.3 From a6faecba1a878f0a741d5015c0c116dd6891af70 Mon Sep 17 00:00:00 2001 From: Elvis Lee Date: Mon, 14 Jan 2013 11:57:22 +0900 Subject: QOpenGLTextureCache : make it possible to skip qgl_byteSwapImage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Improving performance when making texture from QImage, this commit makes it possible to skip qgl_byteSwapImage. If gl_FragColor of fragment shader is properly configured, qgl_byteSwapImage is not required. Ex) gl_FragColor = texture2D(texture, textureCoord).bgra; Change-Id: If1f2d7dc1fc1c4e583cc3f38dec95a9d29417cd2 Reviewed-by: Samuel Rødal --- src/gui/opengl/qopengltexturecache.cpp | 7 +++++-- src/gui/opengl/qopengltexturecache_p.h | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopengltexturecache.cpp b/src/gui/opengl/qopengltexturecache.cpp index fffc3688e3..94b82885ff 100644 --- a/src/gui/opengl/qopengltexturecache.cpp +++ b/src/gui/opengl/qopengltexturecache.cpp @@ -95,9 +95,10 @@ void QOpenGLTextureCacheWrapper::cleanupTexturesForPixmapData(QPlatformPixmap *p cleanupTexturesForCacheKey(pmd->cacheKey()); } -QOpenGLTextureCache::QOpenGLTextureCache(QOpenGLContext *ctx) +QOpenGLTextureCache::QOpenGLTextureCache(QOpenGLContext *ctx, bool useByteSwapImage) : QOpenGLSharedResource(ctx->shareGroup()) , m_cache(64 * 1024) // 64 MB cache + , m_useByteSwapImage(useByteSwapImage) { } @@ -180,7 +181,9 @@ GLuint QOpenGLTextureCache::bindTexture(QOpenGLContext *context, qint64 key, con QImage tx = image.convertToFormat(QImage::Format_ARGB32_Premultiplied); - qgl_byteSwapImage(tx); + // Performance could be improved by skipping qgl_byteSwapImage(). + if (m_useByteSwapImage) + qgl_byteSwapImage(tx); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tx.width(), tx.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, const_cast(tx).bits()); diff --git a/src/gui/opengl/qopengltexturecache_p.h b/src/gui/opengl/qopengltexturecache_p.h index 2e82d5f373..d4d3f00069 100644 --- a/src/gui/opengl/qopengltexturecache_p.h +++ b/src/gui/opengl/qopengltexturecache_p.h @@ -78,7 +78,7 @@ class Q_GUI_EXPORT QOpenGLTextureCache : public QOpenGLSharedResource public: static QOpenGLTextureCache *cacheForContext(QOpenGLContext *context); - QOpenGLTextureCache(QOpenGLContext *); + QOpenGLTextureCache(QOpenGLContext *, bool useByteSwapImage = true); ~QOpenGLTextureCache(); GLuint bindTexture(QOpenGLContext *context, const QPixmap &pixmap); @@ -94,6 +94,7 @@ private: QMutex m_mutex; QCache m_cache; + bool m_useByteSwapImage; }; QT_END_NAMESPACE -- cgit v1.2.3 From 48c73540ad2a507963db0fba57484faf66462ad7 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 24 Jan 2013 16:41:24 +0100 Subject: showIsFullscreen: only respect this hint for windows and dialogs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the window or widget is a popup, ignore the hint. The intention of the flag should be to show main windows etc in fullscreen, and not all kinds of popups and tooltips. The user can always call showFullscreen explicit when necessary. Change-Id: Ie150b6c6d7ca6c9344a9097544a7edbc4bd10df2 Reviewed-by: Samuel Rødal --- src/gui/kernel/qwindow.cpp | 8 +++++--- src/widgets/kernel/qwidget.cpp | 7 ++++--- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index bf9d847eb0..f55e337334 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -1436,13 +1436,15 @@ QObject *QWindow::focusObject() const Shows the window. This equivalent to calling showFullScreen() or showNormal(), depending - on whether the platform defaults to windows being fullscreen or not. + on whether the platform defaults to windows being fullscreen or not, and + whether the window is a popup. - \sa showFullScreen(), showNormal(), hide(), QStyleHints::showIsFullScreen() + \sa showFullScreen(), showNormal(), hide(), QStyleHints::showIsFullScreen(), flags() */ void QWindow::show() { - if (qApp->styleHints()->showIsFullScreen()) + bool isPopup = d_func()->windowFlags & Qt::Popup & ~Qt::Window; + if (!isPopup && qApp->styleHints()->showIsFullScreen()) showFullScreen(); else showNormal(); diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 0db1eab90d..31f6af5dce 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -6908,14 +6908,15 @@ void QWidget::setUpdatesEnabled(bool enable) Shows the widget and its child widgets. This function is equivalent to setVisible(true) in the normal case, and equivalent to showFullScreen() if the QStyleHints::showIsFullScreen() hint - is true. + is true and the window is not a popup. \sa raise(), showEvent(), hide(), setVisible(), showMinimized(), showMaximized(), - showNormal(), isVisible() + showNormal(), isVisible(), windowFlags() */ void QWidget::show() { - if (isWindow() && qApp->styleHints()->showIsFullScreen()) + bool isPopup = data->window_flags & Qt::Popup & ~Qt::Window; + if (isWindow() && !isPopup && qApp->styleHints()->showIsFullScreen()) showFullScreen(); else setVisible(true); -- cgit v1.2.3 From 9a5ab30d52257f88931d6d09a376b4d75da69c5a Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Fri, 18 Jan 2013 17:59:52 +0100 Subject: Improve QAccessibleApplication MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add more testing. This uncovers that currently the QDesktopScreenWidget shows up as child of the app. Fixed by not creating QAccessibleInterfaces for QDesktopScreenWidget. Also don't crash in indexOfChild when called with 0. Change-Id: I9fb1e47e8f1f33189e6125f56f274a7b94ecd0dd Reviewed-by: Jan Arve Sæther --- src/gui/accessible/qaccessibleobject.cpp | 2 ++ src/plugins/accessible/widgets/main.cpp | 3 +++ src/plugins/accessible/widgets/widgets.json | 4 +++- src/widgets/accessible/qaccessiblewidget.cpp | 2 ++ 4 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/accessible/qaccessibleobject.cpp b/src/gui/accessible/qaccessibleobject.cpp index bbdbb9ee68..c1ef71e1fa 100644 --- a/src/gui/accessible/qaccessibleobject.cpp +++ b/src/gui/accessible/qaccessibleobject.cpp @@ -193,6 +193,8 @@ int QAccessibleApplication::childCount() const /*! \reimp */ int QAccessibleApplication::indexOfChild(const QAccessibleInterface *child) const { + if (!child) + return -1; const QObjectList tlw(topLevelObjects()); return tlw.indexOf(child->object()); } diff --git a/src/plugins/accessible/widgets/main.cpp b/src/plugins/accessible/widgets/main.cpp index 9a42474910..92cda9f3ca 100644 --- a/src/plugins/accessible/widgets/main.cpp +++ b/src/plugins/accessible/widgets/main.cpp @@ -251,6 +251,9 @@ QAccessibleInterface *AccessibleFactory::create(const QString &classname, QObjec } else if (classname == QLatin1String("QDockWidget")) { iface = new QAccessibleDockWidget(widget); #endif + + } else if (classname == QLatin1String("QDesktopScreenWidget")) { + iface = 0; } else { iface = new QAccessibleWidget(widget); } diff --git a/src/plugins/accessible/widgets/widgets.json b/src/plugins/accessible/widgets/widgets.json index 69584b9bc8..094987daf5 100644 --- a/src/plugins/accessible/widgets/widgets.json +++ b/src/plugins/accessible/widgets/widgets.json @@ -47,5 +47,7 @@ "QScrollArea", "QCalendarWidget", "QDockWidget", - "QAccessibleWidget" ] + "QAccessibleWidget", + "QDesktopScreenWidget" + ] } diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp index bed0480059..254ecc92dd 100644 --- a/src/widgets/accessible/qaccessiblewidget.cpp +++ b/src/widgets/accessible/qaccessiblewidget.cpp @@ -383,6 +383,8 @@ int QAccessibleWidget::childCount() const /*! \reimp */ int QAccessibleWidget::indexOfChild(const QAccessibleInterface *child) const { + if (!child) + return -1; QWidgetList cl = childWidgets(widget()); return cl.indexOf(qobject_cast(child->object())); } -- cgit v1.2.3 From 64134181db034055dbcd7dfacff087abdb29d591 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Mon, 3 Dec 2012 12:31:18 +0100 Subject: Introducing QWidget::createWindowContainer() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A QWidget that can embed a QWindow. This can be used to embed a QWindow/QOpenGLContext based window or a full QQuickView. Change-Id: I8415b5ae38562fc00b46150fa70b56fd9b19a80c Reviewed-by: Jørgen Lind Reviewed-by: Friedemann Kleint --- src/widgets/kernel/kernel.pri | 6 +- src/widgets/kernel/qwidget.h | 2 + src/widgets/kernel/qwindowcontainer.cpp | 218 ++++++++++++++++++++++++++++++++ src/widgets/kernel/qwindowcontainer_p.h | 73 +++++++++++ 4 files changed, 297 insertions(+), 2 deletions(-) create mode 100644 src/widgets/kernel/qwindowcontainer.cpp create mode 100644 src/widgets/kernel/qwindowcontainer_p.h (limited to 'src') diff --git a/src/widgets/kernel/kernel.pri b/src/widgets/kernel/kernel.pri index 4d3d7c4e0a..533b696faa 100644 --- a/src/widgets/kernel/kernel.pri +++ b/src/widgets/kernel/kernel.pri @@ -34,7 +34,8 @@ HEADERS += \ kernel/qgesturerecognizer.h \ kernel/qgesturemanager_p.h \ kernel/qdesktopwidget_qpa_p.h \ - kernel/qwidgetwindow_qpa_p.h + kernel/qwidgetwindow_qpa_p.h \ + kernel/qwindowcontainer_p.h SOURCES += \ kernel/qaction.cpp \ @@ -62,7 +63,8 @@ SOURCES += \ kernel/qapplication_qpa.cpp \ kernel/qdesktopwidget_qpa.cpp \ kernel/qwidget_qpa.cpp \ - kernel/qwidgetwindow.cpp + kernel/qwidgetwindow.cpp \ + kernel/qwindowcontainer.cpp # TODO diff --git a/src/widgets/kernel/qwidget.h b/src/widgets/kernel/qwidget.h index 25dac1ed5e..d24258e742 100644 --- a/src/widgets/kernel/qwidget.h +++ b/src/widgets/kernel/qwidget.h @@ -593,6 +593,8 @@ public: QWindow *windowHandle() const; + static QWidget *createWindowContainer(QWindow *window, QWidget *parent=0, Qt::WindowFlags flags=0); + friend class QDesktopScreenWidget; Q_SIGNALS: diff --git a/src/widgets/kernel/qwindowcontainer.cpp b/src/widgets/kernel/qwindowcontainer.cpp new file mode 100644 index 0000000000..81322f49b4 --- /dev/null +++ b/src/widgets/kernel/qwindowcontainer.cpp @@ -0,0 +1,218 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qwindowcontainer_p.h" +#include "qwidget_p.h" +#include + +QT_BEGIN_NAMESPACE + +class QWindowContainerPrivate : public QWidgetPrivate +{ +public: + Q_DECLARE_PUBLIC(QWindowContainer) + + QWindowContainerPrivate() : window(0), oldFocusWindow(0) { } + ~QWindowContainerPrivate() { } + + QPointer window; + QWindow *oldFocusWindow; +}; + + + +/*! + \fn QWidget *QWidget::createWindowContainer(QWindow *window, QWidget *parent, Qt::WindowFlags flags); + + Creates a QWidget that makes it possible to embed \a window into + a QWidget-based application. + + The window container is created as a child of \a parent and with + window flags \a flags. + + Once the window has been embedded into the container, the + container will control the window's geometry and + visibility. Explicit calls to QWindow::setGeometry(), + QWindow::show() or QWindow::hide() on an embedded window is not + recommended. + + The container takes over ownership of \a window. The window can + be removed from the window container with a call to + QWindow::setParent(). + + The window container has a number of known limitations: + + \list + + \li Stacking order; The embedded window will stack on top of the + widget hierarchy as an opaque box. The stacking order of multiple + overlapping window container instances is undefined. + + \li Window Handles; The window container will explicitly invoke + winId() which will force the use of native window handles + inside the application. See \l {Native Widgets vs Alien Widgets} + {QWidget documentation} for more details. + + \li Rendering Integration; The window container does not interoperate + with QGraphicsProxyWidget, QWidget::render() or similar functionality. + + \li Focus Handling; It is possible to let the window container + instance have any focus policy and it will delegate focus to the + window via a call to QWindow::requestActivate(). However, + returning to the normal focus chain from the QWindow instance will + be up to the QWindow instance implementation itself. For instance, + when entering a Qt Quick based window with tab focus, it is quite + likely that further tab presses will only cycle inside the QML + application. Also, whether QWindow::requestActivate() actually + gives the window focus, is platform dependent. + + \li Using many window container instances in a QWidget-based + application can greatly hurt the overall performance of the + application. + + \endlist + */ + +QWidget *QWidget::createWindowContainer(QWindow *window, QWidget *parent, Qt::WindowFlags flags) +{ + return new QWindowContainer(window, parent, flags); +} + + + +/*! + \internal + */ + +QWindowContainer::QWindowContainer(QWindow *embeddedWindow, QWidget *parent, Qt::WindowFlags flags) + : QWidget(*new QWindowContainerPrivate, parent, flags) +{ + Q_D(QWindowContainer); + if (!embeddedWindow) { + qWarning("QWindowContainer: embedded window cannot be null"); + return; + } + + d->window = embeddedWindow; + + // We force this window to become a native window and reparent the + // window directly to it. This is done so that the order in which + // the QWindowContainer is added to a QWidget tree and when it + // gets a window does not matter. + winId(); + d->window->setParent(windowHandle()); + + connect(QGuiApplication::instance(), SIGNAL(focusWindowChanged(QWindow *)), this, SLOT(focusWindowChanged(QWindow *))); +} + + + +/*! + \internal + */ + +QWindowContainer::~QWindowContainer() +{ + Q_D(QWindowContainer); + delete d->window; +} + + + +/*! + \internal + */ + +void QWindowContainer::focusWindowChanged(QWindow *focusWindow) +{ + Q_D(QWindowContainer); + d->oldFocusWindow = focusWindow; +} + + + +/*! + \internal + */ + +bool QWindowContainer::event(QEvent *e) +{ + Q_D(QWindowContainer); + if (!d->window) + return QWidget::event(e); + + QEvent::Type type = e->type(); + switch (type) { + case QEvent::ChildRemoved: { + QChildEvent *ce = static_cast(e); + if (ce->child() == d->window) + d->window = 0; + break; + } + // The only thing we are interested in is making sure our sizes stay + // in sync, so do a catch-all case. + case QEvent::Resize: + case QEvent::Move: + case QEvent::PolishRequest: + d->window->setGeometry(0, 0, width(), height()); + break; + case QEvent::Show: + d->window->show(); + break; + case QEvent::Hide: + d->window->hide(); + break; + case QEvent::FocusIn: + if (d->oldFocusWindow != d->window) { + d->window->requestActivate(); + } else { + QWidget *next = nextInFocusChain(); + next->setFocus(); + } + break; + default: + break; + } + + return QWidget::event(e); +} + +QT_END_NAMESPACE diff --git a/src/widgets/kernel/qwindowcontainer_p.h b/src/widgets/kernel/qwindowcontainer_p.h new file mode 100644 index 0000000000..3e2eddd83c --- /dev/null +++ b/src/widgets/kernel/qwindowcontainer_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWCONTAINER_H +#define QWINDOWCONTAINER_H + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QWindowContainerPrivate; + +class QWindowContainer : public QWidget +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QWindowContainer) + +public: + explicit QWindowContainer(QWindow *embeddedWindow, QWidget *parent = 0, Qt::WindowFlags f = 0); + ~QWindowContainer(); + +protected: + bool event(QEvent *ev); + +private slots: + void focusWindowChanged(QWindow *focusWindow); +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QWINDOWCONTAINER_H -- cgit v1.2.3 From 855b0d5049d770856788b53e2218b2fca255edfc Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Wed, 23 Jan 2013 13:49:50 +0000 Subject: Fix a typo and make the QQuaternion constructor documentation even more explicit Change-Id: I913ef98b706f29f1bab7564d6d6fff0a91ebfdc0 Reviewed-by: Sean Harmer --- src/gui/math3d/qquaternion.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/math3d/qquaternion.cpp b/src/gui/math3d/qquaternion.cpp index b02715e390..d042d9812a 100644 --- a/src/gui/math3d/qquaternion.cpp +++ b/src/gui/math3d/qquaternion.cpp @@ -66,7 +66,8 @@ QT_BEGIN_NAMESPACE /*! \fn QQuaternion::QQuaternion() - Constructs an identity quaternion, i.e. with coordinates (1, 0, 0, 0). + Constructs an identity quaternion (1, 0, 0, 0), i.e. with the vector (0, 0, 0) + and scalar 1. */ /*! @@ -257,7 +258,7 @@ QQuaternion QQuaternion::normalized() const } /*! - Normalizes the currect quaternion in place. Nothing happens if this + Normalizes the current quaternion in place. Nothing happens if this is a null quaternion or the length of the quaternion is very close to 1. \sa length(), normalized() -- cgit v1.2.3 From 5f481c98de872e7c58a17f090be697c241b9f256 Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Thu, 24 Jan 2013 00:27:41 +0000 Subject: Establish an opacity property for the QWindow Change-Id: I1e399a41bc3aa890498d579f48d03cc6dee484bf Reviewed-by: Gunnar Sletta --- src/gui/kernel/qwindow.cpp | 17 ++++++++++++++--- src/gui/kernel/qwindow.h | 5 +++++ 2 files changed, 19 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index f55e337334..9344f18fa0 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -642,7 +642,8 @@ void QWindow::lower() } /*! - Sets the window's opacity in the windowing system to \a level. + \property QWindow::opacity + \brief The opacity of the window in the windowing system. If the windowing system supports window opacity, this can be used to fade the window in and out, or to make it semitransparent. @@ -650,15 +651,25 @@ void QWindow::lower() A value of 1.0 or above is treated as fully opaque, whereas a value of 0.0 or below is treated as fully transparent. Values inbetween represent varying levels of translucency between the two extremes. + + The default value is 1.0. */ void QWindow::setOpacity(qreal level) { Q_D(QWindow); - if (level == d->opacity) // #fixme: Add property for 5.1 + if (level == d->opacity) return; d->opacity = level; - if (d->platformWindow) + if (d->platformWindow) { d->platformWindow->setOpacity(level); + emit opacityChanged(level); + } +} + +qreal QWindow::opacity() const +{ + Q_D(const QWindow); + return d->opacity; } /*! diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index 2e2f12a8ab..478262da3f 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -112,6 +112,7 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface Q_PROPERTY(int maximumHeight READ maximumHeight WRITE setMaximumHeight NOTIFY maximumHeightChanged) Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged) Q_PROPERTY(Qt::ScreenOrientation contentOrientation READ contentOrientation WRITE reportContentOrientationChange NOTIFY contentOrientationChanged) + Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged) public: @@ -148,6 +149,8 @@ public: QString title() const; void setOpacity(qreal level); + qreal opacity() const; + void requestActivate(); bool isActive() const; @@ -287,6 +290,8 @@ Q_SIGNALS: void focusObjectChanged(QObject *object); + void opacityChanged(qreal opacity); + private Q_SLOTS: void screenDestroyed(QObject *screen); -- cgit v1.2.3 From e335fb7254ad6c2ce08eda0d092ea524a302c2e0 Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Thu, 2 Aug 2012 07:18:35 +0100 Subject: Add static dotProduct methods to the QPoint(F) classes Change-Id: I66ac9433b74341a83569a60038ea2f7a025e81b1 Reviewed-by: Gunnar Sletta --- .../doc/snippets/code/src_corelib_tools_qpoint.cpp | 14 ++++++++++++++ src/corelib/tools/qpoint.cpp | 18 ++++++++++++++++++ src/corelib/tools/qpoint.h | 12 ++++++++++++ 3 files changed, 44 insertions(+) (limited to 'src') diff --git a/src/corelib/doc/snippets/code/src_corelib_tools_qpoint.cpp b/src/corelib/doc/snippets/code/src_corelib_tools_qpoint.cpp index a83fd9a71f..8c6751cbaa 100644 --- a/src/corelib/doc/snippets/code/src_corelib_tools_qpoint.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_tools_qpoint.cpp @@ -79,6 +79,13 @@ p *= 2.5; // p becomes (-3, 10) //! [5] +//! [16] +QPoint p( 3, 7); +QPoint q(-1, 4); +int lengthSquared = QPoint::dotProduct(p, q); // lengthSquared becomes 25 +//! [16] + + //! [6] QPoint p(-3, 10); p /= 2.5; // p becomes (-1, 4) @@ -147,3 +154,10 @@ p *= 2.5; // p becomes (-2.75, 10.25) QPointF p(-2.75, 10.25); p /= 2.5; // p becomes (-1.1, 4.1) //! [15] + + +//! [17] +QPointF p( 3.1, 7.1); +QPointF q(-1.0, 4.1); +int lengthSquared = QPointF::dotProduct(p, q); // lengthSquared becomes 26.01 +//! [17] diff --git a/src/corelib/tools/qpoint.cpp b/src/corelib/tools/qpoint.cpp index b3dd918a35..784d96bf1c 100644 --- a/src/corelib/tools/qpoint.cpp +++ b/src/corelib/tools/qpoint.cpp @@ -222,6 +222,15 @@ QT_BEGIN_NAMESPACE \sa operator/=() */ +/*! + \fn static int QPoint::dotProduct(const QPoint &p1, const QPoint &p2) + \since 5.1 + + \snippet code/src_corelib_tools_qpoint.cpp 16 + + Returns the dot product of \a p1 and \a p2. +*/ + /*! \fn bool operator==(const QPoint &p1, const QPoint &p2) \relates QPoint @@ -711,6 +720,15 @@ QDebug operator<<(QDebug d, const QPointF &p) \sa QPointF() */ +/*! + \fn static qreal QPointF::dotProduct(const QPointF &p1, const QPointF &p2) + \since 5.1 + + \snippet code/src_corelib_tools_qpoint.cpp 17 + + Returns the dot product of \a p1 and \a p2. +*/ + /*! \fn bool operator==(const QPointF &p1, const QPointF &p2) \relates QPointF diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h index b6446e8c9f..cb7a5ecd23 100644 --- a/src/corelib/tools/qpoint.h +++ b/src/corelib/tools/qpoint.h @@ -76,6 +76,8 @@ public: inline QPoint &operator/=(qreal divisor); + Q_DECL_CONSTEXPR static inline int dotProduct(const QPoint &p1, const QPoint &p2); + friend Q_DECL_CONSTEXPR inline bool operator==(const QPoint &, const QPoint &); friend Q_DECL_CONSTEXPR inline bool operator!=(const QPoint &, const QPoint &); friend Q_DECL_CONSTEXPR inline const QPoint operator+(const QPoint &, const QPoint &); @@ -153,6 +155,9 @@ inline QPoint &QPoint::operator*=(double factor) inline QPoint &QPoint::operator*=(int factor) { xp = xp*factor; yp = yp*factor; return *this; } +Q_DECL_CONSTEXPR inline int QPoint::dotProduct(const QPoint &p1, const QPoint &p2) +{ return p1.xp * p2.xp + p1.yp * p2.yp; } + Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2) { return p1.xp == p2.xp && p1.yp == p2.yp; } @@ -233,6 +238,8 @@ public: inline QPointF &operator*=(qreal c); inline QPointF &operator/=(qreal c); + Q_DECL_CONSTEXPR static inline qreal dotProduct(const QPointF &p1, const QPointF &p2); + friend Q_DECL_CONSTEXPR inline bool operator==(const QPointF &, const QPointF &); friend Q_DECL_CONSTEXPR inline bool operator!=(const QPointF &, const QPointF &); friend Q_DECL_CONSTEXPR inline const QPointF operator+(const QPointF &, const QPointF &); @@ -330,6 +337,11 @@ inline QPointF &QPointF::operator*=(qreal c) xp*=c; yp*=c; return *this; } +Q_DECL_CONSTEXPR inline qreal QPointF::dotProduct(const QPointF &p1, const QPointF &p2) +{ + return p1.xp * p2.xp + p1.yp * p2.yp; +} + Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2) { return qFuzzyIsNull(p1.xp - p2.xp) && qFuzzyIsNull(p1.yp - p2.yp); -- cgit v1.2.3 From 4bb5566632ea6510c67fb8cf28cfe7dd4801488f Mon Sep 17 00:00:00 2001 From: Jean-Paul Delimat Date: Fri, 28 Dec 2012 01:23:16 +0100 Subject: Add toJson() formatting argument to QJsonDocument interface The writer delegate used by QJsonDocument to produce a Json QByteArray supports generating a human readable Json (with spaces and carriage returns that reflect the Json structure) and a less human readable (no spaces nor carriage returns) but more compact Json. The method toJson() was extended with a format argument to support the compact Json generation. Task-number: QTBUG-28815 Change-Id: I8d13849ab9ab6ed7c645011260251dc14a8629d2 Reviewed-by: Lars Knoll Reviewed-by: Thiago Macieira Reviewed-by: Debao Zhang --- src/corelib/json/qjsondocument.cpp | 39 ++++++++++++++++++++++++++++++++++++-- src/corelib/json/qjsondocument.h | 13 ++++++++++++- 2 files changed, 49 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/json/qjsondocument.cpp b/src/corelib/json/qjsondocument.cpp index 550cc76b0d..bdb46528d3 100644 --- a/src/corelib/json/qjsondocument.cpp +++ b/src/corelib/json/qjsondocument.cpp @@ -302,6 +302,41 @@ QVariant QJsonDocument::toVariant() const \sa fromJson() */ QByteArray QJsonDocument::toJson() const +{ + return toJson(Indented); +} + +/*! + \enum QJsonDocument::JsonFormat + + This value defines the format of the JSON byte array produced + when converting to a QJsonDocument using toJson(). + + \value Indented Defines human readable output as follows: + \code + { + "Array": [ + true, + 999, + "string" + ], + "Key": "Value", + "null": null + } + \endcode + + \value Compact Defines a compact output as follows: + \code + {"Array": [true,999,"string"],"Key": "Value","null": null} + \endcode + */ + +/*! + Converts the QJsonDocument to a UTF-8 encoded JSON document in the provided \a format. + + \sa fromJson(), JsonFormat + */ +QByteArray QJsonDocument::toJson(JsonFormat format) const { if (!d) return QByteArray(); @@ -309,9 +344,9 @@ QByteArray QJsonDocument::toJson() const QByteArray json; if (d->header->root()->isArray()) - QJsonPrivate::Writer::arrayToJson(static_cast(d->header->root()), json, 0); + QJsonPrivate::Writer::arrayToJson(static_cast(d->header->root()), json, 0, (format == Compact)); else - QJsonPrivate::Writer::objectToJson(static_cast(d->header->root()), json, 0); + QJsonPrivate::Writer::objectToJson(static_cast(d->header->root()), json, 0, (format == Compact)); return json; } diff --git a/src/corelib/json/qjsondocument.h b/src/corelib/json/qjsondocument.h index 675ee75dbf..0bb21d89cf 100644 --- a/src/corelib/json/qjsondocument.h +++ b/src/corelib/json/qjsondocument.h @@ -109,8 +109,19 @@ public: static QJsonDocument fromVariant(const QVariant &variant); QVariant toVariant() const; + enum JsonFormat { + Indented, + Compact + }; + static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = 0); - QByteArray toJson() const; + +#ifdef Q_QDOC + QByteArray toJson(JsonFormat format = Indented) const; +#else + QByteArray toJson() const; //### Merge in Qt6 + QByteArray toJson(JsonFormat format) const; +#endif bool isEmpty() const; bool isArray() const; -- cgit v1.2.3 From 5544208e2286f29cc113d268df3923f0f2a3fbee Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 24 Jan 2013 16:14:59 -0800 Subject: Fix warning about type-punned pointers The d->buffer array was 2x the required size and every other void* actually stored a DBINT (int) indicating the binding status of the null. The qIsNull function checked that value, but got the warning printed. Instead, let's just do the right thing and have a struct for each column. Solves the problem more neatly. Change-Id: I2daaf05c876da7e0e13fb983c58916d946518846 Reviewed-by: Robin Burchell Reviewed-by: Mark Brand --- src/sql/drivers/tds/qsql_tds.cpp | 42 +++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/sql/drivers/tds/qsql_tds.cpp b/src/sql/drivers/tds/qsql_tds.cpp index 45bba42ca7..b35fc682c8 100644 --- a/src/sql/drivers/tds/qsql_tds.cpp +++ b/src/sql/drivers/tds/qsql_tds.cpp @@ -145,6 +145,12 @@ public: bool initialized; }; +struct QTDSColumnData +{ + void *data; + DBINT nullbind; +}; +Q_DECLARE_TYPEINFO(QTDSColumnData, Q_MOVABLE_TYPE); class QTDSResultPrivate { @@ -156,7 +162,7 @@ public: void addErrorMsg(QString& errMsg) { errorMsgs.append(errMsg); } QString getErrorMsgs() { return errorMsgs.join(QLatin1String("\n")); } void clearErrorMsgs() { errorMsgs.clear(); } - QVector buffer; + QVector buffer; QSqlRecord rec; private: @@ -325,8 +331,8 @@ void QTDSResult::cleanup() { d->clearErrorMsgs(); d->rec.clear(); - for (int i = 0; i < d->buffer.size() / 2; ++i) - free(d->buffer.at(i * 2)); + for (int i = 0; i < d->buffer.size(); ++i) + free(d->buffer.at(i * 2).data); d->buffer.clear(); // "can" stands for "cancel"... very clever. dbcanquery(d->dbproc); @@ -340,9 +346,9 @@ QVariant QTDSResult::handle() const return QVariant(qRegisterMetaType("DBPROCESS*"), &d->dbproc); } -static inline bool qIsNull(const void *ind) +static inline bool qIsNull(const QTDSColumnData &p) { - return *reinterpret_cast(&ind) == -1; + return p.nullbind == -1; } bool QTDSResult::gotoNext(QSqlCachedResult::ValueCache &values, int index) @@ -364,33 +370,33 @@ bool QTDSResult::gotoNext(QSqlCachedResult::ValueCache &values, int index) int idx = index + i; switch (d->rec.field(i).type()) { case QVariant::DateTime: - if (qIsNull(d->buffer.at(i * 2 + 1))) { + if (qIsNull(d->buffer.at(i))) { values[idx] = QVariant(QVariant::DateTime); } else { - DBDATETIME *bdt = (DBDATETIME*) d->buffer.at(i * 2); + DBDATETIME *bdt = (DBDATETIME*) d->buffer.at(i).data; QDate date = QDate::fromString(QLatin1String("1900-01-01"), Qt::ISODate); QTime time = QTime::fromString(QLatin1String("00:00:00"), Qt::ISODate); values[idx] = QDateTime(date.addDays(bdt->dtdays), time.addMSecs(int(bdt->dttime / 0.3))); } break; case QVariant::Int: - if (qIsNull(d->buffer.at(i * 2 + 1))) + if (qIsNull(d->buffer.at(i))) values[idx] = QVariant(QVariant::Int); else - values[idx] = *((int*)d->buffer.at(i * 2)); + values[idx] = *((int*)d->buffer.at(i).data); break; case QVariant::Double: case QVariant::String: - if (qIsNull(d->buffer.at(i * 2 + 1))) + if (qIsNull(d->buffer.at(i))) values[idx] = QVariant(QVariant::String); else - values[idx] = QString::fromLocal8Bit((const char*)d->buffer.at(i * 2)).trimmed(); + values[idx] = QString::fromLocal8Bit((const char*)d->buffer.at(i).data).trimmed(); break; case QVariant::ByteArray: { - if (qIsNull(d->buffer.at(i * 2 + 1))) + if (qIsNull(d->buffer.at(i))) values[idx] = QVariant(QVariant::ByteArray); else - values[idx] = QByteArray((const char*)d->buffer.at(i * 2)); + values[idx] = QByteArray((const char*)d->buffer.at(i).data); break; } default: @@ -430,7 +436,7 @@ bool QTDSResult::reset (const QString& query) setSelect((DBCMDROW(d->dbproc) == SUCCEED)); // decide whether or not we are dealing with a SELECT query int numCols = dbnumcols(d->dbproc); if (numCols > 0) { - d->buffer.resize(numCols * 2); + d->buffer.resize(numCols); init(numCols); } for (int i = 0; i < numCols; ++i) { @@ -470,11 +476,11 @@ bool QTDSResult::reset (const QString& query) break; } if (ret == SUCCEED) { - d->buffer[i * 2] = p; - ret = dbnullbind(d->dbproc, i+1, (DBINT*)(&d->buffer[i * 2 + 1])); + d->buffer[i].data = p; + ret = dbnullbind(d->dbproc, i+1, &d->buffer[i].nullbind); } else { - d->buffer[i * 2] = 0; - d->buffer[i * 2 + 1] = 0; + d->buffer[i].data = 0; + d->buffer[i].nullbind = 0; free(p); } if ((ret != SUCCEED) && (ret != -1)) { -- cgit v1.2.3 From 5c5c9c26d299cd230dc48efcaaf3627861efa673 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Tue, 15 Jan 2013 11:51:19 +0100 Subject: Don't emit activated on clicking disabled itemview item. A itemview item with its flags set to Qt::NoItemFlags is considered disabled, and therefore should not cause the activated signal to be emitted. Task-number: QTBUG-20490 Change-Id: If824505c46f4fcadb9265ad6d1e9337f0cee32cf Reviewed-by: David Faure (KDE) Reviewed-by: Friedemann Kleint --- src/widgets/itemviews/qabstractitemview.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index 880bdc65dc..fdefeb7bb3 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -1853,7 +1853,8 @@ void QAbstractItemView::mouseReleaseEvent(QMouseEvent *event) QStyleOptionViewItem option = d->viewOptions(); if (d->pressedAlreadySelected) option.state |= QStyle::State_Selected; - if (style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, &option, this)) + if ((model()->flags(index) & Qt::ItemIsEnabled) + && style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, &option, this)) emit activated(index); } } -- cgit v1.2.3 From bf5f2a9e3e3bf70c373b65bf95a332f4e1c514f9 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 10 Aug 2012 16:14:48 +0200 Subject: Switch to struct timespec everywhere instead of timeval This avoids an extra division by 1000 when getting the current time. This can't overflow, under normal circumstances, even on 32-bit: when adding two values less than 1 billion, the result is less than 2 billion, which is less than 2^31. Change-Id: I6f8e1aadfe2fcf6ac8da584eab4c1e61aee51cbb Reviewed-by: David Faure (KDE) Reviewed-by: Thiago Macieira --- src/corelib/io/qprocess_unix.cpp | 4 +- src/corelib/kernel/qcore_unix.cpp | 14 ++-- src/corelib/kernel/qcore_unix_p.h | 54 +++++++------- src/corelib/kernel/qeventdispatcher_glib.cpp | 4 +- src/corelib/kernel/qeventdispatcher_unix.cpp | 10 +-- src/corelib/kernel/qeventdispatcher_unix_p.h | 4 +- src/corelib/kernel/qtimerinfo_unix.cpp | 82 +++++++++++----------- src/corelib/kernel/qtimerinfo_unix_p.h | 14 ++-- src/corelib/tools/qelapsedtimer_mac.cpp | 6 +- src/corelib/tools/qelapsedtimer_unix.cpp | 6 +- src/network/socket/qlocalserver_unix.cpp | 4 +- src/network/socket/qnativesocketengine_unix.cpp | 8 +-- .../platforms/cocoa/qcocoaeventdispatcher.mm | 8 +-- 13 files changed, 109 insertions(+), 109 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index e159bf8f30..3daae8b2f6 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -1001,9 +1001,9 @@ static int select_msecs(int nfds, fd_set *fdread, fd_set *fdwrite, int timeout) if (timeout < 0) return qt_safe_select(nfds, fdread, fdwrite, 0, 0); - struct timeval tv; + struct timespec tv; tv.tv_sec = timeout / 1000; - tv.tv_usec = (timeout % 1000) * 1000; + tv.tv_nsec = (timeout % 1000) * 1000 * 1000; return qt_safe_select(nfds, fdread, fdwrite, 0, &tv); } diff --git a/src/corelib/kernel/qcore_unix.cpp b/src/corelib/kernel/qcore_unix.cpp index cc5479876d..5ab1d510ef 100644 --- a/src/corelib/kernel/qcore_unix.cpp +++ b/src/corelib/kernel/qcore_unix.cpp @@ -60,8 +60,8 @@ QT_BEGIN_NAMESPACE -static inline bool time_update(struct timeval *tv, const struct timeval &start, - const struct timeval &timeout) +static inline bool time_update(struct timespec *tv, const struct timespec &start, + const struct timespec &timeout) { if (!QElapsedTimer::isMonotonic()) { // we cannot recalculate the timeout without a monotonic clock as the time may have changed @@ -69,13 +69,13 @@ static inline bool time_update(struct timeval *tv, const struct timeval &start, } // clock source is monotonic, so we can recalculate how much timeout is left - struct timeval now = qt_gettime(); + struct timespec now = qt_gettime(); *tv = timeout + start - now; return tv->tv_sec >= 0; } int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept, - const struct timeval *orig_timeout) + const struct timespec *orig_timeout) { if (!orig_timeout) { // no timeout -> block forever @@ -84,13 +84,13 @@ int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept, return ret; } - timeval start = qt_gettime(); - timeval timeout = *orig_timeout; + timespec start = qt_gettime(); + timespec timeout = *orig_timeout; // loop and recalculate the timeout as needed int ret; forever { - ret = ::select(nfds, fdread, fdwrite, fdexcept, &timeout); + ret = ::pselect(nfds, fdread, fdwrite, fdexcept, &timeout, 0); if (ret != -1 || errno != EINTR) return ret; diff --git a/src/corelib/kernel/qcore_unix_p.h b/src/corelib/kernel/qcore_unix_p.h index 6342b0362a..b68146cd6c 100644 --- a/src/corelib/kernel/qcore_unix_p.h +++ b/src/corelib/kernel/qcore_unix_p.h @@ -100,49 +100,49 @@ using namespace QT_PREPEND_NAMESPACE(QtLibcSupplement); QT_BEGIN_NAMESPACE -// Internal operator functions for timevals -inline timeval &normalizedTimeval(timeval &t) +// Internal operator functions for timespecs +inline timespec &normalizedTimespec(timespec &t) { - while (t.tv_usec >= 1000000) { + while (t.tv_nsec >= 1000000000) { ++t.tv_sec; - t.tv_usec -= 1000000; + t.tv_nsec -= 1000000000; } - while (t.tv_usec < 0) { + while (t.tv_nsec < 0) { --t.tv_sec; - t.tv_usec += 1000000; + t.tv_nsec += 1000000000; } return t; } -inline bool operator<(const timeval &t1, const timeval &t2) -{ return t1.tv_sec < t2.tv_sec || (t1.tv_sec == t2.tv_sec && t1.tv_usec < t2.tv_usec); } -inline bool operator==(const timeval &t1, const timeval &t2) -{ return t1.tv_sec == t2.tv_sec && t1.tv_usec == t2.tv_usec; } -inline timeval &operator+=(timeval &t1, const timeval &t2) +inline bool operator<(const timespec &t1, const timespec &t2) +{ return t1.tv_sec < t2.tv_sec || (t1.tv_sec == t2.tv_sec && t1.tv_nsec < t2.tv_nsec); } +inline bool operator==(const timespec &t1, const timespec &t2) +{ return t1.tv_sec == t2.tv_sec && t1.tv_nsec == t2.tv_nsec; } +inline timespec &operator+=(timespec &t1, const timespec &t2) { t1.tv_sec += t2.tv_sec; - t1.tv_usec += t2.tv_usec; - return normalizedTimeval(t1); + t1.tv_nsec += t2.tv_nsec; + return normalizedTimespec(t1); } -inline timeval operator+(const timeval &t1, const timeval &t2) +inline timespec operator+(const timespec &t1, const timespec &t2) { - timeval tmp; + timespec tmp; tmp.tv_sec = t1.tv_sec + t2.tv_sec; - tmp.tv_usec = t1.tv_usec + t2.tv_usec; - return normalizedTimeval(tmp); + tmp.tv_nsec = t1.tv_nsec + t2.tv_nsec; + return normalizedTimespec(tmp); } -inline timeval operator-(const timeval &t1, const timeval &t2) +inline timespec operator-(const timespec &t1, const timespec &t2) { - timeval tmp; + timespec tmp; tmp.tv_sec = t1.tv_sec - (t2.tv_sec - 1); - tmp.tv_usec = t1.tv_usec - (t2.tv_usec + 1000000); - return normalizedTimeval(tmp); + tmp.tv_nsec = t1.tv_nsec - (t2.tv_nsec + 1000000000); + return normalizedTimespec(tmp); } -inline timeval operator*(const timeval &t1, int mul) +inline timespec operator*(const timespec &t1, int mul) { - timeval tmp; + timespec tmp; tmp.tv_sec = t1.tv_sec * mul; - tmp.tv_usec = t1.tv_usec * mul; - return normalizedTimeval(tmp); + tmp.tv_nsec = t1.tv_nsec * mul; + return normalizedTimespec(tmp); } inline void qt_ignore_sigpipe() @@ -335,11 +335,11 @@ static inline pid_t qt_safe_waitpid(pid_t pid, int *status, int options) #endif // in qelapsedtimer_mac.cpp or qtimestamp_unix.cpp -timeval qt_gettime() Q_DECL_NOTHROW; +timespec qt_gettime() Q_DECL_NOTHROW; void qt_nanosleep(timespec amount); Q_CORE_EXPORT int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept, - const struct timeval *tv); + const struct timespec *tv); // according to X/OPEN we have to define semun ourselves // we use prefix as on some systems sem.h will have it diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp index c6680d6a80..75cd88c456 100644 --- a/src/corelib/kernel/qeventdispatcher_glib.cpp +++ b/src/corelib/kernel/qeventdispatcher_glib.cpp @@ -131,9 +131,9 @@ struct GTimerSource static gboolean timerSourcePrepareHelper(GTimerSource *src, gint *timeout) { - timeval tv = { 0l, 0l }; + timespec tv = { 0l, 0l }; if (!(src->processEventsFlags & QEventLoop::X11ExcludeTimers) && src->timerList.timerWait(tv)) - *timeout = (tv.tv_sec * 1000) + ((tv.tv_usec + 999) / 1000); + *timeout = (tv.tv_sec * 1000) + ((tv.tv_nsec + 999999) / 1000 / 1000); else *timeout = -1; diff --git a/src/corelib/kernel/qeventdispatcher_unix.cpp b/src/corelib/kernel/qeventdispatcher_unix.cpp index 233b7eef2f..c79fe89105 100644 --- a/src/corelib/kernel/qeventdispatcher_unix.cpp +++ b/src/corelib/kernel/qeventdispatcher_unix.cpp @@ -173,7 +173,7 @@ QEventDispatcherUNIXPrivate::~QEventDispatcherUNIXPrivate() qDeleteAll(timerList); } -int QEventDispatcherUNIXPrivate::doSelect(QEventLoop::ProcessEventsFlags flags, timeval *timeout) +int QEventDispatcherUNIXPrivate::doSelect(QEventLoop::ProcessEventsFlags flags, timespec *timeout) { Q_Q(QEventDispatcherUNIX); @@ -327,7 +327,7 @@ QEventDispatcherUNIX::~QEventDispatcherUNIX() } int QEventDispatcherUNIX::select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - timeval *timeout) + timespec *timeout) { return qt_safe_select(nfds, readfds, writefds, exceptfds, timeout); } @@ -600,8 +600,8 @@ bool QEventDispatcherUNIX::processEvents(QEventLoop::ProcessEventsFlags flags) if (!d->interrupt) { // return the maximum time we can wait for an event. - timeval *tm = 0; - timeval wait_tm = { 0l, 0l }; + timespec *tm = 0; + timespec wait_tm = { 0l, 0l }; if (!(flags & QEventLoop::X11ExcludeTimers)) { if (d->timerList.timerWait(wait_tm)) tm = &wait_tm; @@ -613,7 +613,7 @@ bool QEventDispatcherUNIX::processEvents(QEventLoop::ProcessEventsFlags flags) // no time to wait tm->tv_sec = 0l; - tm->tv_usec = 0l; + tm->tv_nsec = 0l; } nevents = d->doSelect(flags, tm); diff --git a/src/corelib/kernel/qeventdispatcher_unix_p.h b/src/corelib/kernel/qeventdispatcher_unix_p.h index f1d33f9f09..db89b7c444 100644 --- a/src/corelib/kernel/qeventdispatcher_unix_p.h +++ b/src/corelib/kernel/qeventdispatcher_unix_p.h @@ -130,7 +130,7 @@ protected: virtual int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - timeval *timeout); + timespec *timeout); }; class Q_CORE_EXPORT QEventDispatcherUNIXPrivate : public QAbstractEventDispatcherPrivate @@ -141,7 +141,7 @@ public: QEventDispatcherUNIXPrivate(); ~QEventDispatcherUNIXPrivate(); - int doSelect(QEventLoop::ProcessEventsFlags flags, timeval *timeout); + int doSelect(QEventLoop::ProcessEventsFlags flags, timespec *timeout); virtual int initThreadWakeUp(); virtual int processThreadWakeUp(int nsel); diff --git a/src/corelib/kernel/qtimerinfo_unix.cpp b/src/corelib/kernel/qtimerinfo_unix.cpp index 0eee425cf9..a81fa83f29 100644 --- a/src/corelib/kernel/qtimerinfo_unix.cpp +++ b/src/corelib/kernel/qtimerinfo_unix.cpp @@ -77,7 +77,7 @@ QTimerInfoList::QTimerInfoList() msPerTick = 1000/ticksPerSecond; } else { // detected monotonic timers - previousTime.tv_sec = previousTime.tv_usec = 0; + previousTime.tv_sec = previousTime.tv_nsec = 0; previousTicks = 0; ticksPerSecond = 0; msPerTick = 0; @@ -87,7 +87,7 @@ QTimerInfoList::QTimerInfoList() firstTimerInfo = 0; } -timeval QTimerInfoList::updateCurrentTime() +timespec QTimerInfoList::updateCurrentTime() { return (currentTime = qt_gettime()); } @@ -95,17 +95,17 @@ timeval QTimerInfoList::updateCurrentTime() #if ((_POSIX_MONOTONIC_CLOCK-0 <= 0) && !defined(Q_OS_MAC) && !defined(Q_OS_INTEGRITY)) || defined(QT_BOOTSTRAPPED) template <> -timeval qAbs(const timeval &t) +timespec qAbs(const timespec &t) { - timeval tmp = t; + timespec tmp = t; if (tmp.tv_sec < 0) { tmp.tv_sec = -tmp.tv_sec - 1; - tmp.tv_usec -= 1000000; + tmp.tv_nsec -= 1000000000; } - if (tmp.tv_sec == 0 && tmp.tv_usec < 0) { - tmp.tv_usec = -tmp.tv_usec; + if (tmp.tv_sec == 0 && tmp.tv_nsec < 0) { + tmp.tv_nsec = -tmp.tv_nsec; } - return normalizedTimeval(tmp); + return normalizedTimespec(tmp); } /* @@ -115,7 +115,7 @@ timeval qAbs(const timeval &t) If /a delta is nonzero, delta is set to our best guess at how much the system clock was changed. */ -bool QTimerInfoList::timeChanged(timeval *delta) +bool QTimerInfoList::timeChanged(timespec *delta) { #ifdef Q_OS_NACL Q_UNUSED(delta) @@ -125,13 +125,13 @@ bool QTimerInfoList::timeChanged(timeval *delta) clock_t currentTicks = times(&unused); clock_t elapsedTicks = currentTicks - previousTicks; - timeval elapsedTime = currentTime - previousTime; + timespec elapsedTime = currentTime - previousTime; - timeval elapsedTimeTicks; + timespec elapsedTimeTicks; elapsedTimeTicks.tv_sec = elapsedTicks / ticksPerSecond; - elapsedTimeTicks.tv_usec = (((elapsedTicks * 1000) / ticksPerSecond) % 1000) * 1000; + elapsedTimeTicks.tv_nsec = (((elapsedTicks * 1000) / ticksPerSecond) % 1000) * 1000 * 1000; - timeval dummy; + timespec dummy; if (!delta) delta = &dummy; *delta = elapsedTime - elapsedTimeTicks; @@ -141,16 +141,16 @@ bool QTimerInfoList::timeChanged(timeval *delta) // If tick drift is more than 10% off compared to realtime, we assume that the clock has // been set. Of course, we have to allow for the tick granularity as well. - timeval tickGranularity; + timespec tickGranularity; tickGranularity.tv_sec = 0; - tickGranularity.tv_usec = msPerTick * 1000; + tickGranularity.tv_nsec = msPerTick * 1000 * 1000; return elapsedTimeTicks < ((qAbs(*delta) - tickGranularity) * 10); } /* repair broken timer */ -void QTimerInfoList::timerRepair(const timeval &diff) +void QTimerInfoList::timerRepair(const timespec &diff) { // repair all timers for (int i = 0; i < size(); ++i) { @@ -163,7 +163,7 @@ void QTimerInfoList::repairTimersIfNeeded() { if (QElapsedTimer::isMonotonic()) return; - timeval delta; + timespec delta; if (timeChanged(&delta)) timerRepair(delta); } @@ -190,27 +190,27 @@ void QTimerInfoList::timerInsert(QTimerInfo *ti) insert(index+1, ti); } -inline timeval &operator+=(timeval &t1, int ms) +inline timespec &operator+=(timespec &t1, int ms) { t1.tv_sec += ms / 1000; - t1.tv_usec += ms % 1000 * 1000; - return normalizedTimeval(t1); + t1.tv_nsec += ms % 1000 * 1000 * 1000; + return normalizedTimespec(t1); } -inline timeval operator+(const timeval &t1, int ms) +inline timespec operator+(const timespec &t1, int ms) { - timeval t2 = t1; + timespec t2 = t1; return t2 += ms; } -static timeval roundToMillisecond(timeval val) +static timespec roundToMillisecond(timespec val) { // always round up // worst case scenario is that the first trigger of a 1-ms timer is 0.999 ms late - int us = val.tv_usec % 1000; - val.tv_usec += 1000 - us; - return normalizedTimeval(val); + int ns = val.tv_nsec % (1000 * 1000); + val.tv_nsec += 1000 * 1000 - ns; + return normalizedTimespec(val); } #ifdef QTIMERINFO_DEBUG @@ -227,7 +227,7 @@ QDebug operator<<(QDebug s, Qt::TimerType t) } #endif -static void calculateCoarseTimerTimeout(QTimerInfo *t, timeval currentTime) +static void calculateCoarseTimerTimeout(QTimerInfo *t, timespec currentTime) { // The coarse timer works like this: // - interval under 40 ms: round to even @@ -246,7 +246,7 @@ static void calculateCoarseTimerTimeout(QTimerInfo *t, timeval currentTime) // The objective is to make most timers wake up at the same time, thereby reducing CPU wakeups. register uint interval = uint(t->interval); - register uint msec = uint(t->timeout.tv_usec) / 1000; + register uint msec = uint(t->timeout.tv_nsec) / 1000 / 1000; Q_ASSERT(interval >= 20); // Calculate how much we can round and still keep within 5% error @@ -328,16 +328,16 @@ static void calculateCoarseTimerTimeout(QTimerInfo *t, timeval currentTime) recalculate: if (msec == 1000u) { ++t->timeout.tv_sec; - t->timeout.tv_usec = 0; + t->timeout.tv_nsec = 0; } else { - t->timeout.tv_usec = msec * 1000; + t->timeout.tv_nsec = msec * 1000 * 1000; } if (t->timeout < currentTime) t->timeout += interval; } -static void calculateNextTimeout(QTimerInfo *t, timeval currentTime) +static void calculateNextTimeout(QTimerInfo *t, timespec currentTime) { switch (t->timerType) { case Qt::PreciseTimer: @@ -383,9 +383,9 @@ static void calculateNextTimeout(QTimerInfo *t, timeval currentTime) Returns the time to wait for the next timer, or null if no timers are waiting. */ -bool QTimerInfoList::timerWait(timeval &tm) +bool QTimerInfoList::timerWait(timespec &tm) { - timeval currentTime = updateCurrentTime(); + timespec currentTime = updateCurrentTime(); repairTimersIfNeeded(); // Find first waiting timer not already active @@ -406,7 +406,7 @@ bool QTimerInfoList::timerWait(timeval &tm) } else { // no time to wait tm.tv_sec = 0; - tm.tv_usec = 0; + tm.tv_nsec = 0; } return true; @@ -419,9 +419,9 @@ bool QTimerInfoList::timerWait(timeval &tm) */ int QTimerInfoList::timerRemainingTime(int timerId) { - timeval currentTime = updateCurrentTime(); + timespec currentTime = updateCurrentTime(); repairTimersIfNeeded(); - timeval tm = {0, 0}; + timespec tm = {0, 0}; for (int i = 0; i < count(); ++i) { register QTimerInfo *t = at(i); @@ -429,7 +429,7 @@ int QTimerInfoList::timerRemainingTime(int timerId) if (currentTime < t->timeout) { // time to wait tm = roundToMillisecond(t->timeout - currentTime); - return tm.tv_sec*1000 + tm.tv_usec/1000; + return tm.tv_sec*1000 + tm.tv_nsec/1000/1000; } else { return 0; } @@ -452,7 +452,7 @@ void QTimerInfoList::registerTimer(int timerId, int interval, Qt::TimerType time t->obj = object; t->activateRef = 0; - timeval expected = updateCurrentTime() + interval; + timespec expected = updateCurrentTime() + interval; switch (timerType) { case Qt::PreciseTimer: @@ -487,10 +487,10 @@ void QTimerInfoList::registerTimer(int timerId, int interval, Qt::TimerType time t->interval += 1; t->interval >>= 1; t->timeout.tv_sec = currentTime.tv_sec + t->interval; - t->timeout.tv_usec = 0; + t->timeout.tv_nsec = 0; // if we're past the half-second mark, increase the timeout again - if (currentTime.tv_usec > 500*1000) + if (currentTime.tv_nsec > 500*1000*1000) ++t->timeout.tv_sec; } @@ -574,7 +574,7 @@ int QTimerInfoList::activateTimers() int n_act = 0, maxCount = 0; firstTimerInfo = 0; - timeval currentTime = updateCurrentTime(); + timespec currentTime = updateCurrentTime(); // qDebug() << "Thread" << QThread::currentThreadId() << "woken up at" << currentTime; repairTimersIfNeeded(); diff --git a/src/corelib/kernel/qtimerinfo_unix_p.h b/src/corelib/kernel/qtimerinfo_unix_p.h index 549062bd1f..ec7560429b 100644 --- a/src/corelib/kernel/qtimerinfo_unix_p.h +++ b/src/corelib/kernel/qtimerinfo_unix_p.h @@ -66,7 +66,7 @@ struct QTimerInfo { int id; // - timer identifier int interval; // - timer interval in milliseconds Qt::TimerType timerType; // - timer type - timeval timeout; // - when to actually fire + timespec timeout; // - when to actually fire QObject *obj; // - object to receive event QTimerInfo **activateRef; // - ref from activateTimers @@ -80,13 +80,13 @@ struct QTimerInfo { class Q_CORE_EXPORT QTimerInfoList : public QList { #if ((_POSIX_MONOTONIC_CLOCK-0 <= 0) && !defined(Q_OS_MAC)) || defined(QT_BOOTSTRAPPED) - timeval previousTime; + timespec previousTime; clock_t previousTicks; int ticksPerSecond; int msPerTick; - bool timeChanged(timeval *delta); - void timerRepair(const timeval &); + bool timeChanged(timespec *delta); + void timerRepair(const timespec &); #endif // state variables used by activateTimers() @@ -95,13 +95,13 @@ class Q_CORE_EXPORT QTimerInfoList : public QList public: QTimerInfoList(); - timeval currentTime; - timeval updateCurrentTime(); + timespec currentTime; + timespec updateCurrentTime(); // must call updateCurrentTime() first! void repairTimersIfNeeded(); - bool timerWait(timeval &); + bool timerWait(timespec &); void timerInsert(QTimerInfo *); int timerRemainingTime(int timerId); diff --git a/src/corelib/tools/qelapsedtimer_mac.cpp b/src/corelib/tools/qelapsedtimer_mac.cpp index 611098779c..19056d1bd9 100644 --- a/src/corelib/tools/qelapsedtimer_mac.cpp +++ b/src/corelib/tools/qelapsedtimer_mac.cpp @@ -76,14 +76,14 @@ static qint64 absoluteToMSecs(qint64 cpuTime) return absoluteToNSecs(cpuTime) / 1000000; } -timeval qt_gettime() Q_DECL_NOTHROW +timespec qt_gettime() Q_DECL_NOTHROW { - timeval tv; + timespec tv; uint64_t cpu_time = mach_absolute_time(); uint64_t nsecs = absoluteToNSecs(cpu_time); tv.tv_sec = nsecs / 1000000000ull; - tv.tv_usec = (nsecs / 1000) - (tv.tv_sec * 1000000); + tv.tv_nsec = nsecs - (tv.tv_sec * 1000000000ull); return tv; } diff --git a/src/corelib/tools/qelapsedtimer_unix.cpp b/src/corelib/tools/qelapsedtimer_unix.cpp index b0dbb1f047..f81a723aa5 100644 --- a/src/corelib/tools/qelapsedtimer_unix.cpp +++ b/src/corelib/tools/qelapsedtimer_unix.cpp @@ -172,14 +172,14 @@ static inline void do_gettime(qint64 *sec, qint64 *frac) } // used in qcore_unix.cpp and qeventdispatcher_unix.cpp -timeval qt_gettime() Q_DECL_NOTHROW +struct timespec qt_gettime() Q_DECL_NOTHROW { qint64 sec, frac; do_gettime(&sec, &frac); - timeval tv; + timespec tv; tv.tv_sec = sec; - tv.tv_usec = frac / 1000; + tv.tv_nsec = frac; return tv; } diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp index 2bcf1ac83e..51a33a4b35 100644 --- a/src/network/socket/qlocalserver_unix.cpp +++ b/src/network/socket/qlocalserver_unix.cpp @@ -297,9 +297,9 @@ void QLocalServerPrivate::waitForNewConnection(int msec, bool *timedOut) FD_ZERO(&readfds); FD_SET(listenSocket, &readfds); - timeval timeout; + struct timespec timeout; timeout.tv_sec = msec / 1000; - timeout.tv_usec = (msec % 1000) * 1000; + timeout.tv_nsec = (msec % 1000) * 1000 * 1000; int result = -1; result = qt_safe_select(listenSocket + 1, &readfds, 0, 0, (msec == -1) ? 0 : &timeout); diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp index 4f3408b067..4c94c4dbb9 100644 --- a/src/network/socket/qnativesocketengine_unix.cpp +++ b/src/network/socket/qnativesocketengine_unix.cpp @@ -1126,9 +1126,9 @@ int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool selectForRead) co FD_ZERO(&fds); FD_SET(socketDescriptor, &fds); - struct timeval tv; + struct timespec tv; tv.tv_sec = timeout / 1000; - tv.tv_usec = (timeout % 1000) * 1000; + tv.tv_nsec = (timeout % 1000) * 1000 * 1000; int retval; if (selectForRead) @@ -1152,9 +1152,9 @@ int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool checkRead, bool c if (checkWrite) FD_SET(socketDescriptor, &fdwrite); - struct timeval tv; + struct timespec tv; tv.tv_sec = timeout / 1000; - tv.tv_usec = (timeout % 1000) * 1000; + tv.tv_nsec = (timeout % 1000) * 1000 * 1000; int ret; ret = qt_safe_select(socketDescriptor + 1, &fdread, &fdwrite, 0, timeout < 0 ? 0 : &tv); diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm index 305e7ff985..b99b7e07bb 100644 --- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm +++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm @@ -149,10 +149,10 @@ void QCocoaEventDispatcherPrivate::maybeStartCFRunLoopTimer() CFTimeInterval oneyear = CFTimeInterval(3600. * 24. * 365.); // Q: when should the CFRunLoopTimer fire for the first time? - struct timeval tv; + struct timespec tv; if (timerInfoList.timerWait(tv)) { // A: when we have timers to fire, of course - interval = qMax(tv.tv_sec + tv.tv_usec / 1000000., 0.0000001); + interval = qMax(tv.tv_sec + tv.tv_nsec / 1000000000., 0.0000001); } else { // this shouldn't really happen, but in case it does, set the timer to fire a some point in the distant future interval = oneyear; @@ -172,10 +172,10 @@ void QCocoaEventDispatcherPrivate::maybeStartCFRunLoopTimer() CFTimeInterval interval; // Q: when should the timer first next? - struct timeval tv; + struct timespec tv; if (timerInfoList.timerWait(tv)) { // A: when we have timers to fire, of course - interval = qMax(tv.tv_sec + tv.tv_usec / 1000000., 0.0000001); + interval = qMax(tv.tv_sec + tv.tv_nsec / 1000000000., 0.0000001); } else { // no timers can fire, but we cannot stop the CFRunLoopTimer, set the timer to fire at some // point in the distant future (the timer interval is one year) -- cgit v1.2.3 From 779195343f14fcbc6c12bee0948f6a20ecfec852 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 22 Jan 2013 10:58:25 +0100 Subject: Windows: Fix modal dialogs for declarative. Make it possible to show a modal dialog by just calling show(). Start an idle timer, which will start the dialog thread. This timer is stopped in exec(). Change-Id: I8f7352bf577b09a19be7df4484e0077bb1aa46ab Reviewed-by: Joerg Bornemann --- .../platforms/windows/qwindowsdialoghelpers.cpp | 38 +++++++++++++++++++--- .../platforms/windows/qwindowsdialoghelpers.h | 4 +++ 2 files changed, 38 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp index b4699b6306..e9c0cccc14 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp @@ -450,7 +450,8 @@ protected: template QWindowsDialogHelperBase::QWindowsDialogHelperBase() : m_nativeDialog(0), - m_ownerWindow(0) + m_ownerWindow(0), + m_timerId(0) { } @@ -471,6 +472,12 @@ void QWindowsDialogHelperBase::deleteNativeDialog() m_nativeDialog = 0; } +template +void QWindowsDialogHelperBase::timerEvent(QTimerEvent *) +{ + startDialogThread(); +} + template QWindowsNativeDialogBase *QWindowsDialogHelperBase::ensureNativeDialog() { @@ -527,13 +534,35 @@ bool QWindowsDialogHelperBase::show(Qt::WindowFlags, return false; // Was it changed in-between? if (!ensureNativeDialog()) return false; - if (!modal) { // Modal dialogs are shown in separate slot. - QWindowsDialogThread *thread = new QWindowsDialogThread(this); - thread->start(); + // Start a background thread to show the dialog. For modal dialogs, + // a subsequent call to exec() may follow. So, start an idle timer + // which will start the dialog thread. If exec() is then called, the + // timer is stopped and dialog->exec() is called directly. + if (modal) { + m_timerId = this->startTimer(0); + } else { + startDialogThread(); } return true; } +template +void QWindowsDialogHelperBase::startDialogThread() +{ + QWindowsDialogThread *thread = new QWindowsDialogThread(this); + thread->start(); + stopTimer(); +} + +template +void QWindowsDialogHelperBase::stopTimer() +{ + if (m_timerId) { + this->killTimer(m_timerId); + m_timerId = 0; + } +} + template void QWindowsDialogHelperBase::hide() { @@ -547,6 +576,7 @@ void QWindowsDialogHelperBase::exec() { if (QWindowsContext::verboseDialogs) qDebug("%s" , __FUNCTION__); + stopTimer(); if (QWindowsNativeDialogBase *nd = nativeDialog()) { nd->exec(m_ownerWindow); deleteNativeDialog(); diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.h b/src/plugins/platforms/windows/qwindowsdialoghelpers.h index a46caf0e1e..7884f398f3 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.h +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.h @@ -81,13 +81,17 @@ protected: QWindowsNativeDialogBase *nativeDialog() const; inline bool hasNativeDialog() const { return m_nativeDialog; } void deleteNativeDialog(); + void timerEvent(QTimerEvent *); private: virtual QWindowsNativeDialogBase *createNativeDialog() = 0; inline QWindowsNativeDialogBase *ensureNativeDialog(); + inline void startDialogThread(); + inline void stopTimer(); QWindowsNativeDialogBase *m_nativeDialog; HWND m_ownerWindow; + int m_timerId; }; QT_END_NAMESPACE -- cgit v1.2.3 From 70a9caf4de9ddac52783a276a6cdd196eb5fef44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20K=C3=BCmmel?= Date: Wed, 10 Oct 2012 16:35:44 +0200 Subject: QVarLengthArray: add squeeze function Add function to move back data to the stack. Change-Id: Ic78a368459bce68629e29602e4eeae2e1afe398b Reviewed-by: Thiago Macieira --- src/corelib/tools/qvarlengtharray.h | 5 +++++ src/corelib/tools/qvarlengtharray.qdoc | 20 +++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h index 5e57de5767..095e6e929e 100644 --- a/src/corelib/tools/qvarlengtharray.h +++ b/src/corelib/tools/qvarlengtharray.h @@ -103,6 +103,7 @@ public: inline bool isEmpty() const { return (s == 0); } inline void resize(int size); inline void clear() { resize(0); } + inline void squeeze(); inline int capacity() const { return a; } inline void reserve(int size); @@ -243,6 +244,10 @@ Q_OUTOFLINE_TEMPLATE void QVarLengthArray::append(const T *abuf, in } } +template +Q_INLINE_TEMPLATE void QVarLengthArray::squeeze() +{ realloc(s, s); } + template Q_OUTOFLINE_TEMPLATE void QVarLengthArray::realloc(int asize, int aalloc) { diff --git a/src/corelib/tools/qvarlengtharray.qdoc b/src/corelib/tools/qvarlengtharray.qdoc index 5e78946892..93aa5e993e 100644 --- a/src/corelib/tools/qvarlengtharray.qdoc +++ b/src/corelib/tools/qvarlengtharray.qdoc @@ -210,7 +210,7 @@ initialized. For other types, the elements are initialized with a \l{default-constructed value}. - \sa size() + \sa size(), squeeze() */ /*! \fn int QVarLengthArray::capacity() const @@ -223,7 +223,7 @@ need to call this function. If you want to know how many items are in the array, call size(). - \sa reserve() + \sa reserve(), squeeze() */ /*! \fn void QVarLengthArray::reserve(int size) @@ -240,7 +240,21 @@ rarely ever need to call this function. If you want to change the size of the array, call resize(). - \sa capacity() + \sa capacity(), squeeze() +*/ + +/*! \fn void QVarLengthArray::squeeze() + \since 5.1 + + Releases any memory not required to store the items. + If the container can fit its storage on the stack allocation, + it will free the heap allocation and copy the elements back to the stack. + + The sole purpose of this function is to provide a means of fine + tuning QVarLengthArray's memory usage. In general, you will rarely ever + need to call this function. + + \sa reserve(), capacity(), resize() */ /*! \fn T &QVarLengthArray::operator[](int i) -- cgit v1.2.3 From 15d7044c82e5f222b6533f3c3876b540dfac2ae0 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 11 Aug 2012 17:13:59 +0200 Subject: Set some attributes on pthread condattrs Make them use the monotonic clock if that's available. On Mac, the monotonic clock is not available -- Qt fakes monotonic support by using the Mach timebase -- so we need to use gettimeofday. Change-Id: Iaea0b0c0de1b4802780e2476dc3643b703db392c Reviewed-by: Olivier Goffart --- src/corelib/thread/qmutex_p.h | 9 ++++++ src/corelib/thread/qmutex_unix.cpp | 11 ++++--- src/corelib/thread/qwaitcondition_unix.cpp | 46 ++++++++++++++++++++++++------ 3 files changed, 52 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/corelib/thread/qmutex_p.h b/src/corelib/thread/qmutex_p.h index 1b8bcd6b3a..bec2d934c1 100644 --- a/src/corelib/thread/qmutex_p.h +++ b/src/corelib/thread/qmutex_p.h @@ -70,6 +70,8 @@ # define QT_LINUX_FUTEX #endif +struct timespec; + QT_BEGIN_NAMESPACE class QMutexData @@ -137,6 +139,13 @@ public: #endif //QT_LINUX_FUTEX +#ifdef Q_OS_UNIX +// helper functions for qmutex_unix.cpp and qwaitcondition_unix.cpp +// they are in qwaitcondition_unix.cpp actually +void qt_initialize_pthread_cond(pthread_cond_t *cond, const char *where); +void qt_abstime_for_timeout(struct timespec *ts, int timeout); +#endif + QT_END_NAMESPACE #endif // QMUTEX_P_H diff --git a/src/corelib/thread/qmutex_unix.cpp b/src/corelib/thread/qmutex_unix.cpp index ef030cb49a..2f8c2e1dc8 100644 --- a/src/corelib/thread/qmutex_unix.cpp +++ b/src/corelib/thread/qmutex_unix.cpp @@ -42,11 +42,14 @@ #include "qplatformdefs.h" #include "qmutex.h" #include "qstring.h" +#include "qelapsedtimer.h" #ifndef QT_NO_THREAD #include "qatomic.h" #include "qmutex_p.h" #include +#include +#include #if defined(Q_OS_VXWORKS) && defined(wakeup) #undef wakeup @@ -64,7 +67,7 @@ QMutexPrivate::QMutexPrivate() : wakeup(false) { report_error(pthread_mutex_init(&mutex, NULL), "QMutex", "mutex init"); - report_error(pthread_cond_init(&cond, NULL), "QMutex", "cv init"); + qt_initialize_pthread_cond(&cond, "QMutex"); } QMutexPrivate::~QMutexPrivate() @@ -81,12 +84,8 @@ bool QMutexPrivate::wait(int timeout) if (timeout < 0) { errorCode = pthread_cond_wait(&cond, &mutex); } else { - struct timeval tv; - gettimeofday(&tv, 0); timespec ti; - ti.tv_nsec = (tv.tv_usec + (timeout % 1000) * 1000) * 1000; - ti.tv_sec = tv.tv_sec + (timeout / 1000) + (ti.tv_nsec / 1000000000); - ti.tv_nsec %= 1000000000; + qt_abstime_for_timeout(&ti, timeout); errorCode = pthread_cond_timedwait(&cond, &mutex, &ti); } if (errorCode) { diff --git a/src/corelib/thread/qwaitcondition_unix.cpp b/src/corelib/thread/qwaitcondition_unix.cpp index ab4e7872fb..9b5c8d000d 100644 --- a/src/corelib/thread/qwaitcondition_unix.cpp +++ b/src/corelib/thread/qwaitcondition_unix.cpp @@ -45,11 +45,15 @@ #include "qreadwritelock.h" #include "qatomic.h" #include "qstring.h" +#include "qelapsedtimer.h" +#include "private/qcore_unix_p.h" #include "qmutex_p.h" #include "qreadwritelock_p.h" #include +#include +#include #ifndef QT_NO_THREAD @@ -61,6 +65,38 @@ static void report_error(int code, const char *where, const char *what) qWarning("%s: %s failure: %s", where, what, qPrintable(qt_error_string(code))); } +void qt_initialize_pthread_cond(pthread_cond_t *cond, const char *where) +{ + pthread_condattr_t condattr; + + pthread_condattr_init(&condattr); +#if !defined(Q_OS_MAC) && (_POSIX_MONOTONIC_CLOCK-0 >= 0) + if (QElapsedTimer::clockType() == QElapsedTimer::MonotonicClock) + pthread_condattr_setclock(&condattr, CLOCK_MONOTONIC); +#endif + report_error(pthread_cond_init(cond, &condattr), where, "cv init"); + pthread_condattr_destroy(&condattr); +} + +void qt_abstime_for_timeout(timespec *ts, int timeout) +{ +#ifdef Q_OS_MAC + // on Mac, qt_gettime() (on qelapsedtimer_mac.cpp) returns ticks related to the Mach absolute time + // that doesn't work with pthread + // Mac also doesn't have clock_gettime + struct timeval tv; + gettimeofday(&tv, 0); + ts->tv_sec = tv.tv_sec; + ts->tv_nsec = tv.tv_usec * 1000; +#else + *ts = qt_gettime(); +#endif + + ts->tv_sec += timeout / 1000; + ts->tv_nsec += timeout % 1000 * Q_UINT64_C(1000) * 1000; + normalizedTimespec(*ts); +} + class QWaitConditionPrivate { public: pthread_mutex_t mutex; @@ -73,14 +109,8 @@ public: int code; forever { if (time != ULONG_MAX) { - struct timeval tv; - gettimeofday(&tv, 0); - timespec ti; - ti.tv_nsec = (tv.tv_usec + (time % 1000) * 1000) * 1000; - ti.tv_sec = tv.tv_sec + (time / 1000) + (ti.tv_nsec / 1000000000); - ti.tv_nsec %= 1000000000; - + qt_abstime_for_timeout(&ti, time); code = pthread_cond_timedwait(&cond, &mutex, &ti); } else { code = pthread_cond_wait(&cond, &mutex); @@ -114,7 +144,7 @@ QWaitCondition::QWaitCondition() { d = new QWaitConditionPrivate; report_error(pthread_mutex_init(&d->mutex, NULL), "QWaitCondition", "mutex init"); - report_error(pthread_cond_init(&d->cond, NULL), "QWaitCondition", "cv init"); + qt_initialize_pthread_cond(&d->cond, "QWaitCondition"); d->waiters = d->wakeups = 0; } -- cgit v1.2.3 From 07e3bcdc106ac42703ae0fb88b6cac2d2bfdd072 Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Sat, 26 Jan 2013 21:42:12 +0100 Subject: Remove QT_{BEGIN,END}_HEADER macro usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The macro was made empty in ba3dc5f3b56d1fab6fe37fe7ae08096d7dc68bcb and is no longer necessary or used. Discussed-on: http://lists.qt-project.org/pipermail/development/2013-January/009284.html Change-Id: Id2bb2e2cabde059305d4af5f12593344ba30f001 Reviewed-by: Laszlo Papp Reviewed-by: Jędrzej Nowacki Reviewed-by: hjk --- src/concurrent/qtconcurrent_global.h | 2 -- src/concurrent/qtconcurrentcompilertest.h | 2 -- src/concurrent/qtconcurrentexception.h | 2 -- src/concurrent/qtconcurrentfilter.h | 2 -- src/concurrent/qtconcurrentfilterkernel.h | 2 -- src/concurrent/qtconcurrentfunctionwrappers.h | 2 -- src/concurrent/qtconcurrentiteratekernel.h | 2 -- src/concurrent/qtconcurrentmap.h | 2 -- src/concurrent/qtconcurrentmapkernel.h | 2 -- src/concurrent/qtconcurrentmedian.h | 2 -- src/concurrent/qtconcurrentreducekernel.h | 2 -- src/concurrent/qtconcurrentrun.h | 2 -- src/concurrent/qtconcurrentrunbase.h | 2 -- src/concurrent/qtconcurrentstoredfunctioncall.h | 2 -- src/concurrent/qtconcurrentthreadengine.h | 2 -- src/corelib/animation/qabstractanimation.h | 4 ---- src/corelib/animation/qanimationgroup.h | 4 ---- src/corelib/animation/qparallelanimationgroup.h | 4 ---- src/corelib/animation/qpauseanimation.h | 4 ---- src/corelib/animation/qpropertyanimation.h | 4 ---- src/corelib/animation/qsequentialanimationgroup.h | 4 ---- src/corelib/animation/qvariantanimation.h | 4 ---- src/corelib/arch/qatomic_alpha.h | 4 ---- src/corelib/arch/qatomic_armv5.h | 6 ------ src/corelib/arch/qatomic_armv6.h | 6 ------ src/corelib/arch/qatomic_armv7.h | 2 -- src/corelib/arch/qatomic_bfin.h | 4 ---- src/corelib/arch/qatomic_bootstrap.h | 6 ------ src/corelib/arch/qatomic_cxx11.h | 4 ---- src/corelib/arch/qatomic_gcc.h | 5 ----- src/corelib/arch/qatomic_ia64.h | 6 ------ src/corelib/arch/qatomic_integrity.h | 4 ---- src/corelib/arch/qatomic_mips.h | 6 ------ src/corelib/arch/qatomic_msvc.h | 5 ----- src/corelib/arch/qatomic_power.h | 4 ---- src/corelib/arch/qatomic_s390.h | 4 ---- src/corelib/arch/qatomic_sh4a.h | 4 ---- src/corelib/arch/qatomic_sparc.h | 4 ---- src/corelib/arch/qatomic_unix.h | 5 ----- src/corelib/arch/qatomic_vxworks.h | 4 ---- src/corelib/arch/qatomic_x86.h | 6 ------ src/corelib/codecs/qtextcodec.h | 4 ---- src/corelib/global/qendian.h | 4 ---- src/corelib/global/qflags.h | 4 ---- src/corelib/global/qglobal.h | 6 ------ src/corelib/global/qglobalstatic.h | 3 --- src/corelib/global/qisenum.h | 3 --- src/corelib/global/qlibraryinfo.h | 4 ---- src/corelib/global/qlogging.h | 3 --- src/corelib/global/qnamespace.h | 4 ---- src/corelib/global/qnumeric.h | 4 ---- src/corelib/global/qsysinfo.h | 3 --- src/corelib/global/qtypeinfo.h | 3 --- src/corelib/global/qtypetraits.h | 3 --- src/corelib/io/qbuffer.h | 4 ---- src/corelib/io/qdatastream.h | 4 ---- src/corelib/io/qdebug.h | 4 ---- src/corelib/io/qdir.h | 4 ---- src/corelib/io/qdiriterator.h | 4 ---- src/corelib/io/qfile.h | 4 ---- src/corelib/io/qfiledevice.h | 4 ---- src/corelib/io/qfileinfo.h | 4 ---- src/corelib/io/qfilesystemwatcher.h | 4 ---- src/corelib/io/qiodevice.h | 4 ---- src/corelib/io/qprocess.h | 4 ---- src/corelib/io/qresource.h | 4 ---- src/corelib/io/qsavefile.h | 4 ---- src/corelib/io/qsettings.h | 4 ---- src/corelib/io/qstandardpaths.h | 4 ---- src/corelib/io/qtemporarydir.h | 4 ---- src/corelib/io/qtemporaryfile.h | 4 ---- src/corelib/io/qtextstream.h | 4 ---- src/corelib/io/qurl.h | 4 ---- src/corelib/io/qurlquery.h | 4 ---- src/corelib/io/qwindowspipereader_p.h | 4 ---- src/corelib/io/qwindowspipewriter_p.h | 4 ---- src/corelib/io/qwinoverlappedionotifier_p.h | 4 ---- src/corelib/itemmodels/qabstractitemmodel.h | 4 ---- src/corelib/itemmodels/qabstractproxymodel.h | 4 ---- src/corelib/itemmodels/qidentityproxymodel.h | 4 ---- src/corelib/itemmodels/qitemselectionmodel.h | 4 ---- src/corelib/itemmodels/qsortfilterproxymodel.h | 4 ---- src/corelib/itemmodels/qstringlistmodel.h | 4 ---- src/corelib/json/qjsonarray.h | 4 ---- src/corelib/json/qjsondocument.h | 4 ---- src/corelib/json/qjsonobject.h | 4 ---- src/corelib/json/qjsonvalue.h | 4 ---- src/corelib/kernel/qabstracteventdispatcher.h | 4 ---- src/corelib/kernel/qabstractnativeeventfilter.h | 4 ---- src/corelib/kernel/qbasictimer.h | 4 ---- src/corelib/kernel/qcoreapplication.h | 4 ---- src/corelib/kernel/qcoreevent.h | 4 ---- src/corelib/kernel/qeventloop.h | 4 ---- src/corelib/kernel/qeventloop_p.h | 4 ---- src/corelib/kernel/qfunctions_nacl.h | 4 ---- src/corelib/kernel/qfunctions_p.h | 3 --- src/corelib/kernel/qfunctions_vxworks.h | 3 --- src/corelib/kernel/qfunctions_wince.h | 3 --- src/corelib/kernel/qmath.h | 4 ---- src/corelib/kernel/qmetaobject.h | 4 ---- src/corelib/kernel/qmetatype.h | 4 ---- src/corelib/kernel/qmimedata.h | 4 ---- src/corelib/kernel/qobject.h | 4 ---- src/corelib/kernel/qobject_impl.h | 4 ---- src/corelib/kernel/qobjectcleanuphandler.h | 4 ---- src/corelib/kernel/qobjectdefs.h | 4 ---- src/corelib/kernel/qobjectdefs_impl.h | 4 ---- src/corelib/kernel/qpointer.h | 4 ---- src/corelib/kernel/qsharedmemory.h | 4 ---- src/corelib/kernel/qsignalmapper.h | 4 ---- src/corelib/kernel/qsocketnotifier.h | 4 ---- src/corelib/kernel/qsystemsemaphore.h | 4 ---- src/corelib/kernel/qtimer.h | 4 ---- src/corelib/kernel/qtranslator.h | 4 ---- src/corelib/kernel/qvariant.h | 4 ---- src/corelib/kernel/qwineventnotifier.h | 4 ---- src/corelib/mimetypes/qmimedatabase.h | 3 --- src/corelib/mimetypes/qmimetype.h | 3 --- src/corelib/plugin/qfactoryinterface.h | 4 ---- src/corelib/plugin/qlibrary.h | 4 ---- src/corelib/plugin/qplugin.h | 4 ---- src/corelib/plugin/qpluginloader.h | 4 ---- src/corelib/plugin/quuid.h | 4 ---- src/corelib/statemachine/qabstractstate.h | 4 ---- src/corelib/statemachine/qabstracttransition.h | 4 ---- src/corelib/statemachine/qeventtransition.h | 4 ---- src/corelib/statemachine/qfinalstate.h | 4 ---- src/corelib/statemachine/qhistorystate.h | 4 ---- src/corelib/statemachine/qsignaltransition.h | 4 ---- src/corelib/statemachine/qstate.h | 4 ---- src/corelib/statemachine/qstatemachine.h | 4 ---- src/corelib/thread/qatomic.h | 4 ---- src/corelib/thread/qbasicatomic.h | 6 ------ src/corelib/thread/qexception.h | 2 -- src/corelib/thread/qfuture.h | 2 -- src/corelib/thread/qfutureinterface.h | 3 --- src/corelib/thread/qfuturesynchronizer.h | 3 --- src/corelib/thread/qfuturewatcher.h | 3 --- src/corelib/thread/qgenericatomic.h | 5 ----- src/corelib/thread/qmutex.h | 4 ---- src/corelib/thread/qoldbasicatomic.h | 5 ----- src/corelib/thread/qreadwritelock.h | 4 ---- src/corelib/thread/qresultstore.h | 2 -- src/corelib/thread/qrunnable.h | 2 -- src/corelib/thread/qsemaphore.h | 4 ---- src/corelib/thread/qthread.h | 4 ---- src/corelib/thread/qthreadpool.h | 2 -- src/corelib/thread/qthreadstorage.h | 4 ---- src/corelib/thread/qwaitcondition.h | 4 ---- src/corelib/tools/qalgorithms.h | 4 ---- src/corelib/tools/qarraydata.h | 4 ---- src/corelib/tools/qarraydataops.h | 4 ---- src/corelib/tools/qarraydatapointer.h | 4 ---- src/corelib/tools/qbitarray.h | 4 ---- src/corelib/tools/qbytearray.h | 4 ---- src/corelib/tools/qbytearraymatcher.h | 4 ---- src/corelib/tools/qcache.h | 4 ---- src/corelib/tools/qchar.h | 4 ---- src/corelib/tools/qcollator_p.h | 4 ---- src/corelib/tools/qcontainerfwd.h | 4 ---- src/corelib/tools/qcontiguouscache.h | 4 ---- src/corelib/tools/qcryptographichash.h | 4 ---- src/corelib/tools/qdatetime.h | 4 ---- src/corelib/tools/qeasingcurve.h | 4 ---- src/corelib/tools/qelapsedtimer.h | 4 ---- src/corelib/tools/qfreelist_p.h | 4 ---- src/corelib/tools/qhash.h | 4 ---- src/corelib/tools/qiterator.h | 4 ---- src/corelib/tools/qline.h | 4 ---- src/corelib/tools/qlinkedlist.h | 4 ---- src/corelib/tools/qlist.h | 4 ---- src/corelib/tools/qlocale.h | 4 ---- src/corelib/tools/qmap.h | 4 ---- src/corelib/tools/qmargins.h | 4 ---- src/corelib/tools/qmessageauthenticationcode.h | 4 ---- src/corelib/tools/qpair.h | 4 ---- src/corelib/tools/qpodlist_p.h | 4 ---- src/corelib/tools/qpoint.h | 4 ---- src/corelib/tools/qqueue.h | 4 ---- src/corelib/tools/qrect.h | 4 ---- src/corelib/tools/qrefcount.h | 4 ---- src/corelib/tools/qregexp.h | 4 ---- src/corelib/tools/qregularexpression.h | 4 ---- src/corelib/tools/qscopedpointer.h | 2 -- src/corelib/tools/qscopedpointer_p.h | 2 -- src/corelib/tools/qscopedvaluerollback.h | 2 -- src/corelib/tools/qset.h | 4 ---- src/corelib/tools/qshareddata.h | 4 ---- src/corelib/tools/qsharedpointer.h | 4 ---- src/corelib/tools/qsharedpointer_impl.h | 6 ------ src/corelib/tools/qsimd_p.h | 4 ---- src/corelib/tools/qsize.h | 4 ---- src/corelib/tools/qstack.h | 4 ---- src/corelib/tools/qstring.h | 4 ---- src/corelib/tools/qstringbuilder.h | 4 ---- src/corelib/tools/qstringlist.h | 4 ---- src/corelib/tools/qstringmatcher.h | 4 ---- src/corelib/tools/qtextboundaryfinder.h | 4 ---- src/corelib/tools/qtimeline.h | 4 ---- src/corelib/tools/qvarlengtharray.h | 4 ---- src/corelib/tools/qvector.h | 4 ---- src/corelib/xml/qxmlstream.h | 4 ---- src/dbus/qdbusabstractadaptor.h | 4 ---- src/dbus/qdbusabstractinterface.h | 4 ---- src/dbus/qdbusargument.h | 4 ---- src/dbus/qdbusconnection.h | 4 ---- src/dbus/qdbusconnectioninterface.h | 4 ---- src/dbus/qdbuscontext.h | 4 ---- src/dbus/qdbuserror.h | 4 ---- src/dbus/qdbusextratypes.h | 4 ---- src/dbus/qdbusinterface.h | 4 ---- src/dbus/qdbusmacros.h | 2 -- src/dbus/qdbusmessage.h | 4 ---- src/dbus/qdbusmetatype.h | 4 ---- src/dbus/qdbuspendingcall.h | 4 ---- src/dbus/qdbuspendingreply.h | 4 ---- src/dbus/qdbusreply.h | 4 ---- src/dbus/qdbusserver.h | 4 ---- src/dbus/qdbusservicewatcher.h | 4 ---- src/dbus/qdbusunixfiledescriptor.h | 4 ---- src/dbus/qdbusutil_p.h | 4 ---- src/dbus/qdbusvirtualobject.h | 4 ---- src/gui/accessible/qaccessible.h | 4 ---- src/gui/accessible/qaccessible2.h | 4 ---- src/gui/accessible/qaccessiblebridge.h | 4 ---- src/gui/accessible/qaccessibleobject.h | 4 ---- src/gui/accessible/qaccessibleplugin.h | 4 ---- src/gui/accessible/qplatformaccessibility.h | 4 ---- src/gui/image/qbitmap.h | 4 ---- src/gui/image/qicon.h | 4 ---- src/gui/image/qiconengine.h | 4 ---- src/gui/image/qiconengineplugin.h | 4 ---- src/gui/image/qimage.h | 4 ---- src/gui/image/qimageiohandler.h | 4 ---- src/gui/image/qimagereader.h | 4 ---- src/gui/image/qimagewriter.h | 4 ---- src/gui/image/qmovie.h | 4 ---- src/gui/image/qpicture.h | 4 ---- src/gui/image/qpictureformatplugin.h | 4 ---- src/gui/image/qpixmap.h | 4 ---- src/gui/image/qpixmapcache.h | 4 ---- src/gui/image/qplatformpixmap.h | 4 ---- src/gui/itemmodels/qstandarditemmodel.h | 4 ---- src/gui/kernel/qclipboard.h | 4 ---- src/gui/kernel/qcursor.h | 4 ---- src/gui/kernel/qdrag.h | 4 ---- src/gui/kernel/qevent.h | 4 ---- src/gui/kernel/qgenericplugin.h | 4 ---- src/gui/kernel/qgenericpluginfactory.h | 4 ---- src/gui/kernel/qguiapplication.h | 4 ---- src/gui/kernel/qguiapplication_p.h | 4 ---- src/gui/kernel/qinputmethod.h | 4 ---- src/gui/kernel/qinputmethod_p.h | 4 ---- src/gui/kernel/qkeysequence.h | 4 ---- src/gui/kernel/qopenglcontext.h | 4 ---- src/gui/kernel/qopenglcontext_p.h | 4 ---- src/gui/kernel/qpalette.h | 4 ---- src/gui/kernel/qplatformclipboard.h | 4 ---- src/gui/kernel/qplatformcursor.h | 4 ---- src/gui/kernel/qplatformdialoghelper.h | 4 ---- src/gui/kernel/qplatformdrag.h | 4 ---- src/gui/kernel/qplatforminputcontext.h | 4 ---- src/gui/kernel/qplatforminputcontext_p.h | 4 ---- src/gui/kernel/qplatforminputcontextfactory_p.h | 4 ---- src/gui/kernel/qplatforminputcontextplugin_p.h | 4 ---- src/gui/kernel/qplatformintegration.h | 4 ---- src/gui/kernel/qplatformintegrationfactory_p.h | 4 ---- src/gui/kernel/qplatformintegrationplugin.h | 4 ---- src/gui/kernel/qplatformmenu.h | 4 ---- src/gui/kernel/qplatformnativeinterface.h | 4 ---- src/gui/kernel/qplatformopenglcontext.h | 4 ---- src/gui/kernel/qplatformscreen.h | 4 ---- src/gui/kernel/qplatformscreen_p.h | 4 ---- src/gui/kernel/qplatformscreenpageflipper.h | 4 ---- src/gui/kernel/qplatformservices.h | 3 --- src/gui/kernel/qplatformsharedgraphicscache.h | 4 ---- src/gui/kernel/qplatformsurface.h | 4 ---- src/gui/kernel/qplatformtheme.h | 4 ---- src/gui/kernel/qplatformthemefactory_p.h | 4 ---- src/gui/kernel/qplatformthemeplugin.h | 4 ---- src/gui/kernel/qplatformwindow.h | 3 --- src/gui/kernel/qplatformwindow_p.h | 4 ---- src/gui/kernel/qscreen.h | 4 ---- src/gui/kernel/qscreen_p.h | 4 ---- src/gui/kernel/qsessionmanager.h | 4 ---- src/gui/kernel/qstylehints.h | 4 ---- src/gui/kernel/qsurface.h | 4 ---- src/gui/kernel/qsurfaceformat.h | 4 ---- src/gui/kernel/qtouchdevice.h | 4 ---- src/gui/kernel/qtouchdevice_p.h | 4 ---- src/gui/kernel/qwindow.h | 4 ---- src/gui/kernel/qwindow_p.h | 4 ---- src/gui/kernel/qwindowdefs.h | 4 ---- src/gui/kernel/qwindowdefs_win.h | 4 ---- src/gui/kernel/qwindowsysteminterface.h | 4 +--- src/gui/kernel/qwindowsysteminterface_p.h | 3 --- src/gui/math3d/qgenericmatrix.h | 4 ---- src/gui/math3d/qmatrix4x4.h | 4 ---- src/gui/math3d/qquaternion.h | 4 ---- src/gui/math3d/qvector2d.h | 4 ---- src/gui/math3d/qvector3d.h | 4 ---- src/gui/math3d/qvector4d.h | 4 ---- src/gui/opengl/qopengl.h | 4 ---- src/gui/opengl/qopengl_p.h | 4 ---- src/gui/opengl/qopenglbuffer.h | 4 ---- src/gui/opengl/qopenglcustomshaderstage_p.h | 4 ---- src/gui/opengl/qopenglengineshadermanager_p.h | 4 ---- src/gui/opengl/qopenglengineshadersource_p.h | 4 ---- src/gui/opengl/qopenglextensions_p.h | 4 ---- src/gui/opengl/qopenglframebufferobject.h | 4 ---- src/gui/opengl/qopenglfunctions.h | 4 ---- src/gui/opengl/qopenglpaintdevice.h | 4 ---- src/gui/opengl/qopenglshadercache_meego_p.h | 4 ---- src/gui/opengl/qopenglshadercache_p.h | 4 ---- src/gui/opengl/qopenglshaderprogram.h | 4 ---- src/gui/painting/qbackingstore.h | 4 ---- src/gui/painting/qbrush.h | 4 ---- src/gui/painting/qcolor.h | 4 ---- src/gui/painting/qcosmeticstroker_p.h | 4 ---- src/gui/painting/qemulationpaintengine_p.h | 4 ---- src/gui/painting/qmatrix.h | 4 ---- src/gui/painting/qpagedpaintdevice.h | 4 ---- src/gui/painting/qpaintdevice.h | 4 ---- src/gui/painting/qpaintengine.h | 4 ---- src/gui/painting/qpaintengineex_p.h | 4 ---- src/gui/painting/qpainter.h | 4 ---- src/gui/painting/qpainterpath.h | 4 ---- src/gui/painting/qpathclipper_p.h | 4 ---- src/gui/painting/qpdfwriter.h | 4 ---- src/gui/painting/qpen.h | 4 ---- src/gui/painting/qplatformbackingstore.h | 4 ---- src/gui/painting/qpolygon.h | 4 ---- src/gui/painting/qregion.h | 4 ---- src/gui/painting/qrgb.h | 4 ---- src/gui/painting/qtransform.h | 4 ---- src/gui/painting/qvectorpath_p.h | 4 ---- src/gui/text/qabstracttextdocumentlayout.h | 4 ---- src/gui/text/qfont.h | 4 ---- src/gui/text/qfontdatabase.h | 4 ---- src/gui/text/qfontengine_qpa_p.h | 4 ---- src/gui/text/qfontinfo.h | 4 ---- src/gui/text/qfontmetrics.h | 4 ---- src/gui/text/qglyphrun.h | 4 ---- src/gui/text/qglyphrun_p.h | 4 ---- src/gui/text/qplatformfontdatabase.h | 4 ---- src/gui/text/qrawfont.h | 4 ---- src/gui/text/qstatictext.h | 4 ---- src/gui/text/qsyntaxhighlighter.h | 4 ---- src/gui/text/qtextcursor.h | 4 ---- src/gui/text/qtextdocument.h | 4 ---- src/gui/text/qtextdocumentfragment.h | 4 ---- src/gui/text/qtextdocumentwriter.h | 4 ---- src/gui/text/qtextformat.h | 4 ---- src/gui/text/qtextlayout.h | 4 ---- src/gui/text/qtextlist.h | 4 ---- src/gui/text/qtextobject.h | 4 ---- src/gui/text/qtextoption.h | 4 ---- src/gui/text/qtexttable.h | 4 ---- src/gui/util/qdesktopservices.h | 4 ---- src/gui/util/qvalidator.h | 4 ---- src/network/access/qabstractnetworkcache.h | 4 ---- src/network/access/qftp_p.h | 4 ---- src/network/access/qhttpmultipart.h | 4 ---- src/network/access/qnetworkaccessmanager.h | 4 ---- src/network/access/qnetworkcookie.h | 4 ---- src/network/access/qnetworkcookiejar.h | 4 ---- src/network/access/qnetworkdiskcache.h | 4 ---- src/network/access/qnetworkreply.h | 4 ---- src/network/access/qnetworkrequest.h | 4 ---- src/network/bearer/qbearerplugin_p.h | 4 ---- src/network/bearer/qnetworkconfigmanager.h | 4 ---- src/network/bearer/qnetworkconfiguration.h | 4 ---- src/network/bearer/qnetworksession.h | 4 ---- src/network/kernel/qauthenticator.h | 4 ---- src/network/kernel/qdnslookup.h | 4 ---- src/network/kernel/qhostaddress.h | 3 --- src/network/kernel/qhostinfo.h | 4 ---- src/network/kernel/qnetworkfunctions_wince.h | 4 ---- src/network/kernel/qnetworkinterface.h | 4 ---- src/network/kernel/qnetworkproxy.h | 4 ---- src/network/kernel/qurlinfo_p.h | 4 ---- src/network/socket/qabstractsocket.h | 4 ---- src/network/socket/qlocalserver.h | 4 ---- src/network/socket/qlocalsocket.h | 4 ---- src/network/socket/qtcpserver.h | 4 ---- src/network/socket/qtcpsocket.h | 4 ---- src/network/socket/qudpsocket.h | 4 ---- src/network/ssl/qssl.h | 4 ---- src/network/ssl/qsslcertificate.h | 4 ---- src/network/ssl/qsslcertificateextension.h | 4 ---- src/network/ssl/qsslcipher.h | 4 ---- src/network/ssl/qsslconfiguration.h | 4 ---- src/network/ssl/qsslerror.h | 4 ---- src/network/ssl/qsslkey.h | 4 ---- src/network/ssl/qsslsocket.h | 4 ---- src/opengl/gl2paintengineex/qglcustomshaderstage_p.h | 4 ---- src/opengl/gl2paintengineex/qglengineshadermanager_p.h | 4 ---- src/opengl/gl2paintengineex/qglengineshadersource_p.h | 4 ---- src/opengl/gl2paintengineex/qglshadercache_meego_p.h | 4 ---- src/opengl/gl2paintengineex/qglshadercache_p.h | 4 ---- src/opengl/qgl.h | 4 ---- src/opengl/qglbuffer.h | 4 ---- src/opengl/qglcolormap.h | 4 ---- src/opengl/qglframebufferobject.h | 3 --- src/opengl/qglfunctions.h | 4 ---- src/opengl/qglpixelbuffer.h | 4 ---- src/opengl/qglshaderprogram.h | 4 ---- src/opengl/qgraphicsshadereffect_p.h | 4 ---- src/opengl/qtopenglglobal.h | 4 ---- src/platformsupport/dnd/qshapedpixmapdndwindow_p.h | 4 ---- src/platformsupport/dnd/qsimpledrag_p.h | 4 ---- src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h | 4 ---- src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h | 4 ---- src/platformsupport/input/evdevkeyboard/qevdevkeyboardmanager_p.h | 4 ---- src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h | 4 ---- src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h | 4 ---- src/platformsupport/input/evdevtablet/qevdevtablet_p.h | 4 ---- src/platformsupport/input/evdevtouch/qevdevtouch_p.h | 4 ---- src/platformsupport/linuxaccessibility/application_p.h | 2 -- src/platformsupport/linuxaccessibility/atspiadaptor_p.h | 2 -- src/platformsupport/linuxaccessibility/bridge_p.h | 2 -- src/platformsupport/linuxaccessibility/cache_p.h | 2 -- src/platformsupport/linuxaccessibility/constant_mappings_p.h | 2 -- src/platformsupport/linuxaccessibility/dbusconnection_p.h | 2 -- src/platformsupport/linuxaccessibility/struct_marshallers_p.h | 2 -- src/platformsupport/services/genericunix/qgenericunixservices_p.h | 4 ---- src/platformsupport/themes/genericunix/qgenericunixthemes_p.h | 4 ---- src/plugins/generic/meego/qmeegointegration.h | 4 ---- src/plugins/generic/tslib/qtslib.h | 4 ---- src/plugins/platforms/cocoa/qcocoamenu.h | 4 ---- src/plugins/platforms/cocoa/qcocoamenuitem.h | 4 ---- src/plugins/platforms/cocoa/qmacdefines_mac.h | 4 ---- src/plugins/platforms/eglfs/qeglfsintegration.h | 3 --- src/plugins/platforms/minimalegl/qminimaleglintegration.h | 3 --- src/plugins/platforms/windows/accessible/qwindowsaccessibility.h | 2 -- src/plugins/printsupport/cups/qcupsprintersupport_p.h | 2 -- src/plugins/printsupport/windows/qwindowsprintersupport.h | 2 -- src/printsupport/dialogs/qabstractprintdialog.h | 4 ---- src/printsupport/dialogs/qpagesetupdialog.h | 4 ---- src/printsupport/dialogs/qprintdialog.h | 4 ---- src/printsupport/dialogs/qprintpreviewdialog.h | 4 ---- src/printsupport/kernel/qplatformprintersupport.h | 4 ---- src/printsupport/kernel/qplatformprintplugin.h | 4 ---- src/printsupport/kernel/qprintengine.h | 4 ---- src/printsupport/kernel/qprinter.h | 4 ---- src/printsupport/kernel/qprinterinfo.h | 4 ---- src/printsupport/kernel/qtprintsupportglobal.h | 4 ---- src/printsupport/widgets/qprintpreviewwidget.h | 4 ---- src/sql/drivers/db2/qsql_db2.h | 4 ---- src/sql/drivers/ibase/qsql_ibase.h | 3 --- src/sql/drivers/mysql/qsql_mysql.h | 4 ---- src/sql/drivers/oci/qsql_oci.h | 4 ---- src/sql/drivers/odbc/qsql_odbc.h | 4 ---- src/sql/drivers/psql/qsql_psql.h | 4 ---- src/sql/drivers/sqlite/qsql_sqlite.h | 4 ---- src/sql/drivers/sqlite2/qsql_sqlite2.h | 4 ---- src/sql/drivers/tds/qsql_tds.h | 4 ---- src/sql/kernel/qsql.h | 4 ---- src/sql/kernel/qsqldatabase.h | 4 ---- src/sql/kernel/qsqldriver.h | 4 ---- src/sql/kernel/qsqldriverplugin.h | 4 ---- src/sql/kernel/qsqlerror.h | 4 ---- src/sql/kernel/qsqlfield.h | 4 ---- src/sql/kernel/qsqlindex.h | 4 ---- src/sql/kernel/qsqlquery.h | 4 ---- src/sql/kernel/qsqlrecord.h | 4 ---- src/sql/kernel/qsqlresult.h | 4 ---- src/sql/models/qsqlquerymodel.h | 4 ---- src/sql/models/qsqlrelationaldelegate.h | 4 ---- src/sql/models/qsqlrelationaltablemodel.h | 4 ---- src/sql/models/qsqltablemodel.h | 4 ---- src/testlib/qbenchmark.h | 4 ---- src/testlib/qbenchmarkmetric.h | 4 ---- src/testlib/qbenchmarkmetric_p.h | 4 ---- src/testlib/qsignalspy.h | 4 ---- src/testlib/qtest.h | 4 ---- src/testlib/qtest_global.h | 4 ---- src/testlib/qtest_gui.h | 4 ---- src/testlib/qtest_widgets.h | 2 -- src/testlib/qtestaccessible.h | 4 ---- src/testlib/qtestassert.h | 4 ---- src/testlib/qtestcase.h | 4 ---- src/testlib/qtestcoreelement_p.h | 4 ---- src/testlib/qtestcorelist_p.h | 4 ---- src/testlib/qtestdata.h | 4 ---- src/testlib/qtestelement_p.h | 4 ---- src/testlib/qtestelementattribute_p.h | 4 ---- src/testlib/qtestevent.h | 4 ---- src/testlib/qtesteventloop.h | 4 ---- src/testlib/qtestkeyboard.h | 4 ---- src/testlib/qtestmouse.h | 4 ---- src/testlib/qtestspontaneevent.h | 4 ---- src/testlib/qtestsystem.h | 4 ---- src/testlib/qtesttouch.h | 4 ---- src/testlib/qtestxunitstreamer_p.h | 4 ---- src/widgets/accessible/qaccessiblewidget.h | 4 ---- src/widgets/dialogs/qcolordialog.h | 4 ---- src/widgets/dialogs/qdialog.h | 4 ---- src/widgets/dialogs/qerrormessage.h | 4 ---- src/widgets/dialogs/qfiledialog.h | 4 ---- src/widgets/dialogs/qfilesystemmodel.h | 4 ---- src/widgets/dialogs/qfontdialog.h | 4 ---- src/widgets/dialogs/qinputdialog.h | 4 ---- src/widgets/dialogs/qmessagebox.h | 4 ---- src/widgets/dialogs/qprogressdialog.h | 4 ---- src/widgets/dialogs/qwizard.h | 4 ---- src/widgets/effects/qgraphicseffect.h | 3 --- src/widgets/effects/qpixmapfilter_p.h | 4 ---- src/widgets/graphicsview/qgraphicsanchorlayout.h | 4 ---- src/widgets/graphicsview/qgraphicsgridlayout.h | 4 ---- src/widgets/graphicsview/qgraphicsitem.h | 4 ---- src/widgets/graphicsview/qgraphicsitemanimation.h | 4 ---- src/widgets/graphicsview/qgraphicslayout.h | 4 ---- src/widgets/graphicsview/qgraphicslayoutitem.h | 4 ---- src/widgets/graphicsview/qgraphicslinearlayout.h | 4 ---- src/widgets/graphicsview/qgraphicsproxywidget.h | 4 ---- src/widgets/graphicsview/qgraphicsscene.h | 4 ---- src/widgets/graphicsview/qgraphicssceneevent.h | 4 ---- src/widgets/graphicsview/qgraphicssceneindex_p.h | 4 ---- src/widgets/graphicsview/qgraphicsscenelinearindex_p.h | 4 ---- src/widgets/graphicsview/qgraphicstransform.h | 3 --- src/widgets/graphicsview/qgraphicsview.h | 4 ---- src/widgets/graphicsview/qgraphicswidget.h | 4 ---- src/widgets/itemviews/qabstractitemdelegate.h | 4 ---- src/widgets/itemviews/qabstractitemview.h | 4 ---- src/widgets/itemviews/qcolumnview.h | 4 ---- src/widgets/itemviews/qdatawidgetmapper.h | 4 ---- src/widgets/itemviews/qdirmodel.h | 4 ---- src/widgets/itemviews/qfileiconprovider.h | 4 ---- src/widgets/itemviews/qheaderview.h | 4 ---- src/widgets/itemviews/qitemdelegate.h | 4 ---- src/widgets/itemviews/qitemeditorfactory.h | 4 ---- src/widgets/itemviews/qlistview.h | 4 ---- src/widgets/itemviews/qlistwidget.h | 4 ---- src/widgets/itemviews/qstyleditemdelegate.h | 4 ---- src/widgets/itemviews/qtableview.h | 4 ---- src/widgets/itemviews/qtablewidget.h | 4 ---- src/widgets/itemviews/qtreeview.h | 4 ---- src/widgets/itemviews/qtreewidget.h | 4 ---- src/widgets/itemviews/qtreewidgetitemiterator.h | 4 ---- src/widgets/kernel/qaction.h | 4 ---- src/widgets/kernel/qactiongroup.h | 4 ---- src/widgets/kernel/qapplication.h | 4 ---- src/widgets/kernel/qboxlayout.h | 4 ---- src/widgets/kernel/qdesktopwidget.h | 4 ---- src/widgets/kernel/qformlayout.h | 4 ---- src/widgets/kernel/qgesture.h | 4 ---- src/widgets/kernel/qgesturerecognizer.h | 4 ---- src/widgets/kernel/qgridlayout.h | 4 ---- src/widgets/kernel/qlayout.h | 4 ---- src/widgets/kernel/qlayoutitem.h | 4 ---- src/widgets/kernel/qshortcut.h | 4 ---- src/widgets/kernel/qsizepolicy.h | 4 ---- src/widgets/kernel/qstackedlayout.h | 4 ---- src/widgets/kernel/qtooltip.h | 4 ---- src/widgets/kernel/qwhatsthis.h | 4 ---- src/widgets/kernel/qwidget.h | 4 ---- src/widgets/kernel/qwidgetaction.h | 4 ---- src/widgets/kernel/qwidgetsfunctions_wince.h | 2 -- src/widgets/kernel/qwidgetwindow_qpa_p.h | 4 ---- src/widgets/kernel/qwindowcontainer_p.h | 4 ---- src/widgets/statemachine/qkeyeventtransition.h | 4 ---- src/widgets/statemachine/qmouseeventtransition.h | 4 ---- src/widgets/styles/qcommonstyle.h | 4 ---- src/widgets/styles/qdrawutil.h | 4 ---- src/widgets/styles/qfusionstyle_p.h | 4 ---- src/widgets/styles/qgtkstyle_p.h | 4 ---- src/widgets/styles/qmacstyle_mac_p.h | 4 ---- src/widgets/styles/qproxystyle.h | 4 ---- src/widgets/styles/qstyle.h | 4 ---- src/widgets/styles/qstylefactory.h | 4 ---- src/widgets/styles/qstyleoption.h | 4 ---- src/widgets/styles/qstylepainter.h | 4 ---- src/widgets/styles/qstyleplugin.h | 4 ---- src/widgets/styles/qwindowscestyle_p.h | 4 ---- src/widgets/styles/qwindowsmobilestyle_p.h | 4 ---- src/widgets/styles/qwindowsstyle_p.h | 4 ---- src/widgets/styles/qwindowsvistastyle_p.h | 4 ---- src/widgets/styles/qwindowsxpstyle_p.h | 4 ---- src/widgets/util/qcolormap.h | 4 ---- src/widgets/util/qcompleter.h | 4 ---- src/widgets/util/qscroller.h | 4 ---- src/widgets/util/qscrollerproperties.h | 4 ---- src/widgets/util/qsystemtrayicon.h | 4 ---- src/widgets/util/qundogroup.h | 4 ---- src/widgets/util/qundostack.h | 4 ---- src/widgets/util/qundoview.h | 4 ---- src/widgets/widgets/qabstractbutton.h | 4 ---- src/widgets/widgets/qabstractscrollarea.h | 4 ---- src/widgets/widgets/qabstractslider.h | 4 ---- src/widgets/widgets/qabstractspinbox.h | 4 ---- src/widgets/widgets/qbuttongroup.h | 4 ---- src/widgets/widgets/qcalendarwidget.h | 4 ---- src/widgets/widgets/qcheckbox.h | 4 ---- src/widgets/widgets/qcombobox.h | 4 ---- src/widgets/widgets/qcommandlinkbutton.h | 4 ---- src/widgets/widgets/qdatetimeedit.h | 4 ---- src/widgets/widgets/qdial.h | 4 ---- src/widgets/widgets/qdialogbuttonbox.h | 4 ---- src/widgets/widgets/qdockwidget.h | 4 ---- src/widgets/widgets/qfocusframe.h | 4 ---- src/widgets/widgets/qfontcombobox.h | 4 ---- src/widgets/widgets/qframe.h | 4 ---- src/widgets/widgets/qgroupbox.h | 4 ---- src/widgets/widgets/qlabel.h | 4 ---- src/widgets/widgets/qlcdnumber.h | 4 ---- src/widgets/widgets/qlineedit.h | 4 ---- src/widgets/widgets/qmaccocoaviewcontainer_mac.h | 4 ---- src/widgets/widgets/qmacnativewidget_mac.h | 4 ---- src/widgets/widgets/qmainwindow.h | 4 ---- src/widgets/widgets/qmdiarea.h | 4 ---- src/widgets/widgets/qmdisubwindow.h | 4 ---- src/widgets/widgets/qmenu.h | 4 ---- src/widgets/widgets/qmenu_wince_resource_p.h | 3 --- src/widgets/widgets/qmenubar.h | 4 ---- src/widgets/widgets/qplaintextedit.h | 4 ---- src/widgets/widgets/qprogressbar.h | 4 ---- src/widgets/widgets/qpushbutton.h | 4 ---- src/widgets/widgets/qradiobutton.h | 4 ---- src/widgets/widgets/qrubberband.h | 4 ---- src/widgets/widgets/qscrollarea.h | 4 ---- src/widgets/widgets/qscrollbar.h | 4 ---- src/widgets/widgets/qsizegrip.h | 4 ---- src/widgets/widgets/qslider.h | 4 ---- src/widgets/widgets/qspinbox.h | 4 ---- src/widgets/widgets/qsplashscreen.h | 4 ---- src/widgets/widgets/qsplitter.h | 4 ---- src/widgets/widgets/qstackedwidget.h | 4 ---- src/widgets/widgets/qstatusbar.h | 4 ---- src/widgets/widgets/qtabbar.h | 4 ---- src/widgets/widgets/qtabwidget.h | 4 ---- src/widgets/widgets/qtextbrowser.h | 4 ---- src/widgets/widgets/qtextedit.h | 4 ---- src/widgets/widgets/qtoolbar.h | 4 ---- src/widgets/widgets/qtoolbox.h | 4 ---- src/widgets/widgets/qtoolbutton.h | 4 ---- src/widgets/widgets/qwidgetlinecontrol_p.h | 4 ---- src/widgets/widgets/qwidgettextcontrol_p.h | 4 ---- src/xml/dom/qdom.h | 4 ---- src/xml/qtxmlglobal.h | 4 ---- src/xml/sax/qxml.h | 4 ---- 641 files changed, 1 insertion(+), 2487 deletions(-) (limited to 'src') diff --git a/src/concurrent/qtconcurrent_global.h b/src/concurrent/qtconcurrent_global.h index d98319d3c0..965d33f3d9 100644 --- a/src/concurrent/qtconcurrent_global.h +++ b/src/concurrent/qtconcurrent_global.h @@ -44,7 +44,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE #ifndef QT_STATIC @@ -58,6 +57,5 @@ QT_BEGIN_NAMESPACE #endif QT_END_NAMESPACE -QT_END_HEADER #endif // include guard diff --git a/src/concurrent/qtconcurrentcompilertest.h b/src/concurrent/qtconcurrentcompilertest.h index 7b78e3a307..7652a6946f 100644 --- a/src/concurrent/qtconcurrentcompilertest.h +++ b/src/concurrent/qtconcurrentcompilertest.h @@ -46,7 +46,6 @@ #ifndef QT_NO_CONCURRENT -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE namespace QtPrivate { @@ -64,7 +63,6 @@ public: } QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentexception.h b/src/concurrent/qtconcurrentexception.h index de7f74eaef..21fdb25c2d 100644 --- a/src/concurrent/qtconcurrentexception.h +++ b/src/concurrent/qtconcurrentexception.h @@ -48,7 +48,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -65,7 +64,6 @@ typedef Q_DECL_DEPRECATED QUnhandledException UnhandledException; } // namespace QtConcurrent QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_QFUTURE diff --git a/src/concurrent/qtconcurrentfilter.h b/src/concurrent/qtconcurrentfilter.h index cac57f6084..4c6f2ed896 100644 --- a/src/concurrent/qtconcurrentfilter.h +++ b/src/concurrent/qtconcurrentfilter.h @@ -49,7 +49,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -261,7 +260,6 @@ OutputSequence blockingFiltered(Iterator begin, Iterator end, KeepFunctor keep) #endif // Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentfilterkernel.h b/src/concurrent/qtconcurrentfilterkernel.h index 7e1555d4d8..63e77ab40d 100644 --- a/src/concurrent/qtconcurrentfilterkernel.h +++ b/src/concurrent/qtconcurrentfilterkernel.h @@ -50,7 +50,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -343,7 +342,6 @@ inline ThreadEngineStarter startFilteredReduced(Iterator begin, Iter #endif // Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentfunctionwrappers.h b/src/concurrent/qtconcurrentfunctionwrappers.h index 3925d0eda5..abd316b7fa 100644 --- a/src/concurrent/qtconcurrentfunctionwrappers.h +++ b/src/concurrent/qtconcurrentfunctionwrappers.h @@ -47,7 +47,6 @@ #ifndef QT_NO_CONCURRENT -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -297,7 +296,6 @@ struct MapResultType #endif //Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentiteratekernel.h b/src/concurrent/qtconcurrentiteratekernel.h index d4a6a72650..70a7f161de 100644 --- a/src/concurrent/qtconcurrentiteratekernel.h +++ b/src/concurrent/qtconcurrentiteratekernel.h @@ -52,7 +52,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -303,7 +302,6 @@ public: #endif //Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentmap.h b/src/concurrent/qtconcurrentmap.h index d98ec59da3..bc1c3638d9 100644 --- a/src/concurrent/qtconcurrentmap.h +++ b/src/concurrent/qtconcurrentmap.h @@ -51,7 +51,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -312,7 +311,6 @@ typename QtPrivate::MapResultType::ResultType blockingMapp #endif // Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentmapkernel.h b/src/concurrent/qtconcurrentmapkernel.h index 2d42b24653..b456c42285 100644 --- a/src/concurrent/qtconcurrentmapkernel.h +++ b/src/concurrent/qtconcurrentmapkernel.h @@ -49,7 +49,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -265,7 +264,6 @@ inline ThreadEngineStarter startMappedReduced(Iterator begin, Iterat #endif //Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentmedian.h b/src/concurrent/qtconcurrentmedian.h index e1840ed3fd..7d3b50a45b 100644 --- a/src/concurrent/qtconcurrentmedian.h +++ b/src/concurrent/qtconcurrentmedian.h @@ -49,7 +49,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -122,7 +121,6 @@ private: #endif //Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentreducekernel.h b/src/concurrent/qtconcurrentreducekernel.h index 54bfcdeefe..a4a626d6c9 100644 --- a/src/concurrent/qtconcurrentreducekernel.h +++ b/src/concurrent/qtconcurrentreducekernel.h @@ -54,7 +54,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -247,7 +246,6 @@ struct SequenceHolder2 : public Base } // namespace QtConcurrent QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentrun.h b/src/concurrent/qtconcurrentrun.h index 4dadc111dd..0bfe4bfd0a 100644 --- a/src/concurrent/qtconcurrentrun.h +++ b/src/concurrent/qtconcurrentrun.h @@ -50,7 +50,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -340,7 +339,6 @@ QFuture run(const Class *object, T (Class::*fn)(Param1, Param2, Param3, Param #endif // Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentrunbase.h b/src/concurrent/qtconcurrentrunbase.h index e7ed6207c9..bd24c42ce2 100644 --- a/src/concurrent/qtconcurrentrunbase.h +++ b/src/concurrent/qtconcurrentrunbase.h @@ -50,7 +50,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -147,7 +146,6 @@ public: #endif //Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentstoredfunctioncall.h b/src/concurrent/qtconcurrentstoredfunctioncall.h index aa590a3fb8..8d49ab3dfc 100644 --- a/src/concurrent/qtconcurrentstoredfunctioncall.h +++ b/src/concurrent/qtconcurrentstoredfunctioncall.h @@ -48,7 +48,6 @@ #ifndef QT_NO_CONCURRENT #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -1305,7 +1304,6 @@ private: #endif // Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/concurrent/qtconcurrentthreadengine.h b/src/concurrent/qtconcurrentthreadengine.h index 378ee07170..a3ee8ca202 100644 --- a/src/concurrent/qtconcurrentthreadengine.h +++ b/src/concurrent/qtconcurrentthreadengine.h @@ -54,7 +54,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -273,7 +272,6 @@ inline ThreadEngineStarter startThreadEngine( #endif //Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_CONCURRENT diff --git a/src/corelib/animation/qabstractanimation.h b/src/corelib/animation/qabstractanimation.h index e1884aa533..f1aa6c0d78 100644 --- a/src/corelib/animation/qabstractanimation.h +++ b/src/corelib/animation/qabstractanimation.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -177,6 +175,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTANIMATION_H diff --git a/src/corelib/animation/qanimationgroup.h b/src/corelib/animation/qanimationgroup.h index 987efa0f94..cf32f844d3 100644 --- a/src/corelib/animation/qanimationgroup.h +++ b/src/corelib/animation/qanimationgroup.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -82,6 +80,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif //QANIMATIONGROUP_H diff --git a/src/corelib/animation/qparallelanimationgroup.h b/src/corelib/animation/qparallelanimationgroup.h index ad9c0ccae7..31810cfca2 100644 --- a/src/corelib/animation/qparallelanimationgroup.h +++ b/src/corelib/animation/qparallelanimationgroup.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -80,6 +78,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPARALLELANIMATIONGROUP diff --git a/src/corelib/animation/qpauseanimation.h b/src/corelib/animation/qpauseanimation.h index 49abad4e5f..5c770015ef 100644 --- a/src/corelib/animation/qpauseanimation.h +++ b/src/corelib/animation/qpauseanimation.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -78,6 +76,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPAUSEANIMATION_H diff --git a/src/corelib/animation/qpropertyanimation.h b/src/corelib/animation/qpropertyanimation.h index 7b53eb3d96..f6b92cb515 100644 --- a/src/corelib/animation/qpropertyanimation.h +++ b/src/corelib/animation/qpropertyanimation.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -83,6 +81,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPROPERTYANIMATION_H diff --git a/src/corelib/animation/qsequentialanimationgroup.h b/src/corelib/animation/qsequentialanimationgroup.h index 9070720669..51b4227599 100644 --- a/src/corelib/animation/qsequentialanimationgroup.h +++ b/src/corelib/animation/qsequentialanimationgroup.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -90,6 +88,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif //QSEQUENTIALANIMATIONGROUP_H diff --git a/src/corelib/animation/qvariantanimation.h b/src/corelib/animation/qvariantanimation.h index b5ebbd235a..83018c30ae 100644 --- a/src/corelib/animation/qvariantanimation.h +++ b/src/corelib/animation/qvariantanimation.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -124,6 +122,4 @@ void qRegisterAnimationInterpolator(QVariant (*func)(const T &from, const T &to, QT_END_NAMESPACE -QT_END_HEADER - #endif //QVARIANTANIMATION_H diff --git a/src/corelib/arch/qatomic_alpha.h b/src/corelib/arch/qatomic_alpha.h index b842859336..c5657de9a8 100644 --- a/src/corelib/arch/qatomic_alpha.h +++ b/src/corelib/arch/qatomic_alpha.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE @@ -517,6 +515,4 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddOrdered(qptrdiff valueTo QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_ALPHA_H diff --git a/src/corelib/arch/qatomic_armv5.h b/src/corelib/arch/qatomic_armv5.h index cdb9c8f979..445379a99c 100644 --- a/src/corelib/arch/qatomic_armv5.h +++ b/src/corelib/arch/qatomic_armv5.h @@ -45,15 +45,11 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -190,6 +186,4 @@ T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveTy QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_ARMV5_H diff --git a/src/corelib/arch/qatomic_armv6.h b/src/corelib/arch/qatomic_armv6.h index 38ab1983d6..877d32af8b 100644 --- a/src/corelib/arch/qatomic_armv6.h +++ b/src/corelib/arch/qatomic_armv6.h @@ -45,15 +45,11 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -729,6 +725,4 @@ void QBasicAtomicOps::orderedMemoryFence(const T &) Q_DECL_NOTHROW QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_ARMV6_H diff --git a/src/corelib/arch/qatomic_armv7.h b/src/corelib/arch/qatomic_armv7.h index fc5dbc9175..70dc24f807 100644 --- a/src/corelib/arch/qatomic_armv7.h +++ b/src/corelib/arch/qatomic_armv7.h @@ -54,11 +54,9 @@ #if 0 // silence syncqt warnings -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER #endif #endif // QATOMIC_ARMV7_H diff --git a/src/corelib/arch/qatomic_bfin.h b/src/corelib/arch/qatomic_bfin.h index 24c9ea77e1..9791d80818 100644 --- a/src/corelib/arch/qatomic_bfin.h +++ b/src/corelib/arch/qatomic_bfin.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE @@ -340,6 +338,4 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelease(qptrdiff valueTo QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_BFIN_H diff --git a/src/corelib/arch/qatomic_bootstrap.h b/src/corelib/arch/qatomic_bootstrap.h index 5b2a2f86fd..810d9de722 100644 --- a/src/corelib/arch/qatomic_bootstrap.h +++ b/src/corelib/arch/qatomic_bootstrap.h @@ -45,15 +45,11 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -98,6 +94,4 @@ template struct QAtomicOps: QGenericAtomicOps > QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_BOOTSTRAP_H diff --git a/src/corelib/arch/qatomic_cxx11.h b/src/corelib/arch/qatomic_cxx11.h index f7a7ba4295..d56e5823c8 100644 --- a/src/corelib/arch/qatomic_cxx11.h +++ b/src/corelib/arch/qatomic_cxx11.h @@ -45,14 +45,11 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -247,6 +244,5 @@ template struct QAtomicOps #endif QT_END_NAMESPACE -QT_END_HEADER #endif // QATOMIC_CXX0X_H diff --git a/src/corelib/arch/qatomic_gcc.h b/src/corelib/arch/qatomic_gcc.h index 0940ed082f..38fd73ff15 100644 --- a/src/corelib/arch/qatomic_gcc.h +++ b/src/corelib/arch/qatomic_gcc.h @@ -44,14 +44,11 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -132,6 +129,4 @@ template struct QAtomicOps: QGenericAtomicOps > }; QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_GCC_H diff --git a/src/corelib/arch/qatomic_ia64.h b/src/corelib/arch/qatomic_ia64.h index 1a5259aa09..f57b44bcfd 100644 --- a/src/corelib/arch/qatomic_ia64.h +++ b/src/corelib/arch/qatomic_ia64.h @@ -45,15 +45,11 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -1089,6 +1085,4 @@ T QBasicAtomicOps::fetchAndAddOrdered(T &_q_value, typename QAtomicAdditiv QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_IA64_H diff --git a/src/corelib/arch/qatomic_integrity.h b/src/corelib/arch/qatomic_integrity.h index 50654e6713..307d9d51a7 100644 --- a/src/corelib/arch/qatomic_integrity.h +++ b/src/corelib/arch/qatomic_integrity.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #define qt_i2addr(a) reinterpret_cast
(const_cast(a)) @@ -284,7 +282,5 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelease(qptrdiff valueTo QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_INTEGRITY_H diff --git a/src/corelib/arch/qatomic_mips.h b/src/corelib/arch/qatomic_mips.h index 98ac928184..51e33bee35 100644 --- a/src/corelib/arch/qatomic_mips.h +++ b/src/corelib/arch/qatomic_mips.h @@ -45,15 +45,11 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -362,6 +358,4 @@ T QBasicAtomicOps<8>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveTy QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_MIPS_H diff --git a/src/corelib/arch/qatomic_msvc.h b/src/corelib/arch/qatomic_msvc.h index 58b2f30bb7..3d55471cb7 100644 --- a/src/corelib/arch/qatomic_msvc.h +++ b/src/corelib/arch/qatomic_msvc.h @@ -214,14 +214,11 @@ extern "C" { //////////////////////////////////////////////////////////////////////////////////////////////////// -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -383,6 +380,4 @@ inline T *QAtomicOps::fetchAndAddRelaxed(T *&_q_value, qptrdiff valueToAdd) #undef QT_INTERLOCKED_EXCHANGE_ADD_POINTER QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_MSVC_H diff --git a/src/corelib/arch/qatomic_power.h b/src/corelib/arch/qatomic_power.h index 5e4de3f9fd..1be2b770a8 100644 --- a/src/corelib/arch/qatomic_power.h +++ b/src/corelib/arch/qatomic_power.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE @@ -511,6 +509,4 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddOrdered(qptrdiff valueTo QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_POWER_H diff --git a/src/corelib/arch/qatomic_s390.h b/src/corelib/arch/qatomic_s390.h index c24c243c03..3e82110794 100644 --- a/src/corelib/arch/qatomic_s390.h +++ b/src/corelib/arch/qatomic_s390.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE @@ -423,6 +421,4 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelease(qptrdiff valueTo QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_S390_H diff --git a/src/corelib/arch/qatomic_sh4a.h b/src/corelib/arch/qatomic_sh4a.h index 0fd96d1f0f..75b9bed40b 100644 --- a/src/corelib/arch/qatomic_sh4a.h +++ b/src/corelib/arch/qatomic_sh4a.h @@ -44,15 +44,11 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER - #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE inline bool QBasicAtomicInt::isReferenceCountingNative() diff --git a/src/corelib/arch/qatomic_sparc.h b/src/corelib/arch/qatomic_sparc.h index 1bf625fbb1..8508638d02 100644 --- a/src/corelib/arch/qatomic_sparc.h +++ b/src/corelib/arch/qatomic_sparc.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if defined(_LP64) @@ -522,6 +520,4 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddRelease(qptrdiff valueTo QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_SPARC_H diff --git a/src/corelib/arch/qatomic_unix.h b/src/corelib/arch/qatomic_unix.h index 0e9c105d57..3bf8fa82f1 100644 --- a/src/corelib/arch/qatomic_unix.h +++ b/src/corelib/arch/qatomic_unix.h @@ -44,14 +44,11 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -112,6 +109,4 @@ struct QAtomicOps : QGenericAtomicOps > }; QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_UNIX_H diff --git a/src/corelib/arch/qatomic_vxworks.h b/src/corelib/arch/qatomic_vxworks.h index e6a7853c96..def5e24ff5 100644 --- a/src/corelib/arch/qatomic_vxworks.h +++ b/src/corelib/arch/qatomic_vxworks.h @@ -42,8 +42,6 @@ #ifndef QATOMIC_VXWORKS_H #define QATOMIC_VXWORKS_H -QT_BEGIN_HEADER - #if defined(__ppc) # include #else // generic implementation with taskLock() @@ -320,6 +318,4 @@ QT_END_NAMESPACE #endif // generic implementation with taskLock() -QT_END_HEADER - #endif // QATOMIC_VXWORKS_H diff --git a/src/corelib/arch/qatomic_x86.h b/src/corelib/arch/qatomic_x86.h index 077cfd1336..543b2e056c 100644 --- a/src/corelib/arch/qatomic_x86.h +++ b/src/corelib/arch/qatomic_x86.h @@ -45,15 +45,11 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -423,6 +419,4 @@ template <> struct QBasicAtomicOps<8>: QGenericAtomicOps > QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_X86_H diff --git a/src/corelib/codecs/qtextcodec.h b/src/corelib/codecs/qtextcodec.h index ac0bc77ea5..35ff83a27a 100644 --- a/src/corelib/codecs/qtextcodec.h +++ b/src/corelib/codecs/qtextcodec.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -166,6 +164,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTCODEC_H diff --git a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h index cdffb10d5a..c9c4d23aab 100644 --- a/src/corelib/global/qendian.h +++ b/src/corelib/global/qendian.h @@ -52,8 +52,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -386,6 +384,4 @@ template <> inline qint8 qbswap(qint8 source) QT_END_NAMESPACE -QT_END_HEADER - #endif // QENDIAN_H diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h index 4b75383213..4722fe2282 100644 --- a/src/corelib/global/qflags.h +++ b/src/corelib/global/qflags.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QFlag @@ -152,6 +150,4 @@ typedef uint Flags; QT_END_NAMESPACE -QT_END_HEADER - #endif // QFLAGS_H diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index f3be05a8ec..48df55e86e 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -151,14 +151,10 @@ namespace QT_NAMESPACE {} #endif /* __cplusplus */ -#define QT_BEGIN_HEADER -#define QT_END_HEADER - #if defined(Q_OS_DARWIN) && !defined(QT_LARGEFILE_SUPPORT) # define QT_LARGEFILE_SUPPORT 64 #endif -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE /* @@ -968,8 +964,6 @@ template struct QEnableIf { typedef T Type; }; } QT_END_NAMESPACE -QT_END_HEADER - // Q_GLOBAL_STATIC #include diff --git a/src/corelib/global/qglobalstatic.h b/src/corelib/global/qglobalstatic.h index 487b0dfdb4..336512eac3 100644 --- a/src/corelib/global/qglobalstatic.h +++ b/src/corelib/global/qglobalstatic.h @@ -46,7 +46,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE namespace QtGlobalStatic { @@ -139,6 +138,4 @@ struct QGlobalStatic Q_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ()) QT_END_NAMESPACE -QT_END_HEADER - #endif // QGLOBALSTATIC_H diff --git a/src/corelib/global/qisenum.h b/src/corelib/global/qisenum.h index 073d5a591f..577007b455 100644 --- a/src/corelib/global/qisenum.h +++ b/src/corelib/global/qisenum.h @@ -62,9 +62,6 @@ #endif // shut up syncqt -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER - #endif // QISENUM_H diff --git a/src/corelib/global/qlibraryinfo.h b/src/corelib/global/qlibraryinfo.h index 054231b084..1a00a14caf 100644 --- a/src/corelib/global/qlibraryinfo.h +++ b/src/corelib/global/qlibraryinfo.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class Q_CORE_EXPORT QLibraryInfo @@ -103,6 +101,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QLIBRARYINFO_H diff --git a/src/corelib/global/qlogging.h b/src/corelib/global/qlogging.h index 7d8f7313c8..a6f244698d 100644 --- a/src/corelib/global/qlogging.h +++ b/src/corelib/global/qlogging.h @@ -49,7 +49,6 @@ #pragma qt_no_master_include #endif -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE /* @@ -172,6 +171,4 @@ Q_CORE_EXPORT QtMessageHandler qInstallMessageHandler(QtMessageHandler); Q_CORE_EXPORT void qSetMessagePattern(const QString &messagePattern); QT_END_NAMESPACE -QT_END_HEADER - #endif // QLOGGING_H diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index e6cd166832..ebbfc9ca83 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -1603,6 +1601,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QNAMESPACE_H diff --git a/src/corelib/global/qnumeric.h b/src/corelib/global/qnumeric.h index f8e84825c0..25db5443eb 100644 --- a/src/corelib/global/qnumeric.h +++ b/src/corelib/global/qnumeric.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -65,6 +63,4 @@ Q_CORE_EXPORT double qInf(); QT_END_NAMESPACE -QT_END_HEADER - #endif // QNUMERIC_H diff --git a/src/corelib/global/qsysinfo.h b/src/corelib/global/qsysinfo.h index c95c1674eb..edeef3c461 100644 --- a/src/corelib/global/qsysinfo.h +++ b/src/corelib/global/qsysinfo.h @@ -44,7 +44,6 @@ #ifndef QSYSINFO_H #define QSYSINFO_H -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE /* @@ -151,6 +150,4 @@ public: }; QT_END_NAMESPACE -QT_END_HEADER - #endif // QSYSINFO_H diff --git a/src/corelib/global/qtypeinfo.h b/src/corelib/global/qtypeinfo.h index 754aa6712b..8e34c9792d 100644 --- a/src/corelib/global/qtypeinfo.h +++ b/src/corelib/global/qtypeinfo.h @@ -44,7 +44,6 @@ #ifndef QTYPEINFO_H #define QTYPEINFO_H -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE /* @@ -241,6 +240,4 @@ Q_DECLARE_TYPEINFO(long double, Q_PRIMITIVE_TYPE); #endif QT_END_NAMESPACE -QT_END_HEADER - #endif // QTYPEINFO_H diff --git a/src/corelib/global/qtypetraits.h b/src/corelib/global/qtypetraits.h index 54b48667b4..7ccad067d0 100644 --- a/src/corelib/global/qtypetraits.h +++ b/src/corelib/global/qtypetraits.h @@ -109,7 +109,6 @@ #include // For pair -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE namespace QtPrivate { @@ -505,6 +504,4 @@ Q_STATIC_ASSERT(( is_signed::value)); } // namespace QtPrivate QT_END_NAMESPACE -QT_END_HEADER - #endif // QTYPETRAITS_H diff --git a/src/corelib/io/qbuffer.h b/src/corelib/io/qbuffer.h index f246f1375f..de0fe9f36a 100644 --- a/src/corelib/io/qbuffer.h +++ b/src/corelib/io/qbuffer.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -106,6 +104,4 @@ inline void QBuffer::setData(const char *adata, int alen) QT_END_NAMESPACE -QT_END_HEADER - #endif // QBUFFER_H diff --git a/src/corelib/io/qdatastream.h b/src/corelib/io/qdatastream.h index f85dd0fb23..6017ba5e7d 100644 --- a/src/corelib/io/qdatastream.h +++ b/src/corelib/io/qdatastream.h @@ -50,8 +50,6 @@ #error qdatastream.h must be included before any header file that defines Status #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -435,6 +433,4 @@ inline QDataStream& operator<<(QDataStream& s, const QPair& p) QT_END_NAMESPACE -QT_END_HEADER - #endif // QDATASTREAM_H diff --git a/src/corelib/io/qdebug.h b/src/corelib/io/qdebug.h index b39397858e..ce72fcd26d 100644 --- a/src/corelib/io/qdebug.h +++ b/src/corelib/io/qdebug.h @@ -53,8 +53,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -291,6 +289,4 @@ inline QDebug operator<<(QDebug debug, const QFlags &flags) QT_END_NAMESPACE -QT_END_HEADER - #endif // QDEBUG_H diff --git a/src/corelib/io/qdir.h b/src/corelib/io/qdir.h index 00091bb0d1..dbb6d93d2e 100644 --- a/src/corelib/io/qdir.h +++ b/src/corelib/io/qdir.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -236,6 +234,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QDir &dir); QT_END_NAMESPACE -QT_END_HEADER - #endif // QDIR_H diff --git a/src/corelib/io/qdiriterator.h b/src/corelib/io/qdiriterator.h index f0601e602e..4a96005570 100644 --- a/src/corelib/io/qdiriterator.h +++ b/src/corelib/io/qdiriterator.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -91,6 +89,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QDirIterator::IteratorFlags) QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/io/qfile.h b/src/corelib/io/qfile.h index 2e86af3703..2e75e29995 100644 --- a/src/corelib/io/qfile.h +++ b/src/corelib/io/qfile.h @@ -50,8 +50,6 @@ #error qfile.h must be included before any header file that defines open #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QTemporaryFile; @@ -154,6 +152,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QFILE_H diff --git a/src/corelib/io/qfiledevice.h b/src/corelib/io/qfiledevice.h index fc07097b1c..fc2779086a 100644 --- a/src/corelib/io/qfiledevice.h +++ b/src/corelib/io/qfiledevice.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QFileDevicePrivate; @@ -142,6 +140,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QFileDevice::Permissions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QFILEDEVICE_H diff --git a/src/corelib/io/qfileinfo.h b/src/corelib/io/qfileinfo.h index 938114f9d1..211c18d0a0 100644 --- a/src/corelib/io/qfileinfo.h +++ b/src/corelib/io/qfileinfo.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -159,6 +157,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QFileInfo) -QT_END_HEADER - #endif // QFILEINFO_H diff --git a/src/corelib/io/qfilesystemwatcher.h b/src/corelib/io/qfilesystemwatcher.h index e2f48ce0bf..5a326075ba 100644 --- a/src/corelib/io/qfilesystemwatcher.h +++ b/src/corelib/io/qfilesystemwatcher.h @@ -46,8 +46,6 @@ #ifndef QT_NO_FILESYSTEMWATCHER -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -90,7 +88,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_FILESYSTEMWATCHER #endif // QFILESYSTEMWATCHER_H diff --git a/src/corelib/io/qiodevice.h b/src/corelib/io/qiodevice.h index 96a8971639..39c2d70492 100644 --- a/src/corelib/io/qiodevice.h +++ b/src/corelib/io/qiodevice.h @@ -54,8 +54,6 @@ #error qiodevice.h must be included before any header file that defines open #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -177,6 +175,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug debug, QIODevice::OpenMode modes); QT_END_NAMESPACE -QT_END_HEADER - #endif // QIODEVICE_H diff --git a/src/corelib/io/qprocess.h b/src/corelib/io/qprocess.h index 2c6746b0ab..e8ebadf101 100644 --- a/src/corelib/io/qprocess.h +++ b/src/corelib/io/qprocess.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -261,6 +259,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPROCESS_H diff --git a/src/corelib/io/qresource.h b/src/corelib/io/qresource.h index 1623792e0b..88467bd53b 100644 --- a/src/corelib/io/qresource.h +++ b/src/corelib/io/qresource.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -98,6 +96,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QRESOURCE_H diff --git a/src/corelib/io/qsavefile.h b/src/corelib/io/qsavefile.h index 47a02a0b83..32af4a708e 100644 --- a/src/corelib/io/qsavefile.h +++ b/src/corelib/io/qsavefile.h @@ -49,8 +49,6 @@ #error qsavefile.h must be included before any header file that defines open #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -89,6 +87,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSAVEFILE_H diff --git a/src/corelib/io/qsettings.h b/src/corelib/io/qsettings.h index 99b8ac108f..a720b3d709 100644 --- a/src/corelib/io/qsettings.h +++ b/src/corelib/io/qsettings.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE QT_END_NAMESPACE @@ -198,6 +196,4 @@ QT_END_NAMESPACE #endif // QT_NO_SETTINGS -QT_END_HEADER - #endif // QSETTINGS_H diff --git a/src/corelib/io/qstandardpaths.h b/src/corelib/io/qstandardpaths.h index 9b95d26ce1..2376b7d6c8 100644 --- a/src/corelib/io/qstandardpaths.h +++ b/src/corelib/io/qstandardpaths.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -102,6 +100,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTANDARDPATHS_H diff --git a/src/corelib/io/qtemporarydir.h b/src/corelib/io/qtemporarydir.h index b22c8f9329..47252cb5e5 100644 --- a/src/corelib/io/qtemporarydir.h +++ b/src/corelib/io/qtemporarydir.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -79,6 +77,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEMPORARYDIR_H diff --git a/src/corelib/io/qtemporaryfile.h b/src/corelib/io/qtemporaryfile.h index b497d9de93..249892e704 100644 --- a/src/corelib/io/qtemporaryfile.h +++ b/src/corelib/io/qtemporaryfile.h @@ -49,8 +49,6 @@ #error qtemporaryfile.h must be included before any header file that defines open #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -105,6 +103,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEMPORARYFILE_H diff --git a/src/corelib/io/qtextstream.h b/src/corelib/io/qtextstream.h index 0606b5f9ab..6d143bdca7 100644 --- a/src/corelib/io/qtextstream.h +++ b/src/corelib/io/qtextstream.h @@ -54,8 +54,6 @@ #error qtextstream.h must be included before any header file that defines Status #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -285,6 +283,4 @@ inline QTextStreamManipulator qSetRealNumberPrecision(int precision) QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTSTREAM_H diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h index 17012d1b3f..de4ce754fb 100644 --- a/src/corelib/io/qurl.h +++ b/src/corelib/io/qurl.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -384,6 +382,4 @@ QT_END_NAMESPACE # include #endif -QT_END_HEADER - #endif // QURL_H diff --git a/src/corelib/io/qurlquery.h b/src/corelib/io/qurlquery.h index 319fe3cf22..c515bf78c7 100644 --- a/src/corelib/io/qurlquery.h +++ b/src/corelib/io/qurlquery.h @@ -50,8 +50,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QUrlQueryPrivate; @@ -173,6 +171,4 @@ inline QList QUrl::allEncodedQueryItemValues(const QByteArray &key) QT_END_NAMESPACE -QT_END_HEADER - #endif // QURLQUERY_H diff --git a/src/corelib/io/qwindowspipereader_p.h b/src/corelib/io/qwindowspipereader_p.h index d29e77b034..ea3d3c271f 100644 --- a/src/corelib/io/qwindowspipereader_p.h +++ b/src/corelib/io/qwindowspipereader_p.h @@ -60,8 +60,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -117,6 +115,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWINDOWSPIPEREADER_P_H diff --git a/src/corelib/io/qwindowspipewriter_p.h b/src/corelib/io/qwindowspipewriter_p.h index fa2b386788..62cd49d66a 100644 --- a/src/corelib/io/qwindowspipewriter_p.h +++ b/src/corelib/io/qwindowspipewriter_p.h @@ -59,8 +59,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -156,6 +154,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_PROCESS diff --git a/src/corelib/io/qwinoverlappedionotifier_p.h b/src/corelib/io/qwinoverlappedionotifier_p.h index f117e31535..451bedf7cf 100644 --- a/src/corelib/io/qwinoverlappedionotifier_p.h +++ b/src/corelib/io/qwinoverlappedionotifier_p.h @@ -57,8 +57,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QWinIoCompletionPort; @@ -112,6 +110,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWINOVERLAPPEDIONOTIFIER_P_H diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h index 793a1ba169..f138f53487 100644 --- a/src/corelib/itemmodels/qabstractitemmodel.h +++ b/src/corelib/itemmodels/qabstractitemmodel.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -473,6 +471,4 @@ inline uint qHash(const QModelIndex &index) QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTITEMMODEL_H diff --git a/src/corelib/itemmodels/qabstractproxymodel.h b/src/corelib/itemmodels/qabstractproxymodel.h index e7a47214f8..a7c2b3383d 100644 --- a/src/corelib/itemmodels/qabstractproxymodel.h +++ b/src/corelib/itemmodels/qabstractproxymodel.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -116,6 +114,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTPROXYMODEL_H diff --git a/src/corelib/itemmodels/qidentityproxymodel.h b/src/corelib/itemmodels/qidentityproxymodel.h index da40836dd0..4ab125040d 100644 --- a/src/corelib/itemmodels/qidentityproxymodel.h +++ b/src/corelib/itemmodels/qidentityproxymodel.h @@ -47,8 +47,6 @@ #ifndef QT_NO_IDENTITYPROXYMODEL -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -113,8 +111,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_IDENTITYPROXYMODEL #endif // QIDENTITYPROXYMODEL_H diff --git a/src/corelib/itemmodels/qitemselectionmodel.h b/src/corelib/itemmodels/qitemselectionmodel.h index dd5f6061cd..2a1a4b0a2d 100644 --- a/src/corelib/itemmodels/qitemselectionmodel.h +++ b/src/corelib/itemmodels/qitemselectionmodel.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -253,6 +251,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QItemSelectionRange &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QITEMSELECTIONMODEL_H diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.h b/src/corelib/itemmodels/qsortfilterproxymodel.h index ffebec5283..a37c892c6c 100644 --- a/src/corelib/itemmodels/qsortfilterproxymodel.h +++ b/src/corelib/itemmodels/qsortfilterproxymodel.h @@ -48,8 +48,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -198,8 +196,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_SORTFILTERPROXYMODEL #endif // QSORTFILTERPROXYMODEL_H diff --git a/src/corelib/itemmodels/qstringlistmodel.h b/src/corelib/itemmodels/qstringlistmodel.h index 22e9294f74..3514b27508 100644 --- a/src/corelib/itemmodels/qstringlistmodel.h +++ b/src/corelib/itemmodels/qstringlistmodel.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -86,6 +84,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTRINGLISTMODEL_H diff --git a/src/corelib/json/qjsonarray.h b/src/corelib/json/qjsonarray.h index 24c04d2942..1474ccae41 100644 --- a/src/corelib/json/qjsonarray.h +++ b/src/corelib/json/qjsonarray.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QDebug; @@ -219,6 +217,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonArray &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QJSONARRAY_H diff --git a/src/corelib/json/qjsondocument.h b/src/corelib/json/qjsondocument.h index 0bb21d89cf..4d4f3885dc 100644 --- a/src/corelib/json/qjsondocument.h +++ b/src/corelib/json/qjsondocument.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QDebug; @@ -155,6 +153,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonDocument &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QJSONDOCUMENT_H diff --git a/src/corelib/json/qjsonobject.h b/src/corelib/json/qjsonobject.h index 4168e4b633..8226b614b4 100644 --- a/src/corelib/json/qjsonobject.h +++ b/src/corelib/json/qjsonobject.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QDebug; @@ -214,6 +212,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonObject &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QJSONOBJECT_H diff --git a/src/corelib/json/qjsonvalue.h b/src/corelib/json/qjsonvalue.h index 38f4a03c0f..b8bdf55aa3 100644 --- a/src/corelib/json/qjsonvalue.h +++ b/src/corelib/json/qjsonvalue.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QDebug; @@ -184,6 +182,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonValue &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QJSONVALUE_H diff --git a/src/corelib/kernel/qabstracteventdispatcher.h b/src/corelib/kernel/qabstracteventdispatcher.h index c07c395a84..6f21cefa4e 100644 --- a/src/corelib/kernel/qabstracteventdispatcher.h +++ b/src/corelib/kernel/qabstracteventdispatcher.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QAbstractNativeEventFilter; @@ -129,6 +127,4 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTEVENTDISPATCHER_H diff --git a/src/corelib/kernel/qabstractnativeeventfilter.h b/src/corelib/kernel/qabstractnativeeventfilter.h index 09701a4923..9d1db2c19b 100644 --- a/src/corelib/kernel/qabstractnativeeventfilter.h +++ b/src/corelib/kernel/qabstractnativeeventfilter.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QAbstractNativeEventFilterPrivate; @@ -65,6 +63,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif /* QABSTRACTNATIVEEVENTFILTER_H */ diff --git a/src/corelib/kernel/qbasictimer.h b/src/corelib/kernel/qbasictimer.h index 4fdb00d633..432e4d58c8 100644 --- a/src/corelib/kernel/qbasictimer.h +++ b/src/corelib/kernel/qbasictimer.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -70,6 +68,4 @@ Q_DECLARE_TYPEINFO(QBasicTimer, Q_MOVABLE_TYPE); QT_END_NAMESPACE -QT_END_HEADER - #endif // QBASICTIMER_H diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h index 5333ea22f4..b235e327e0 100644 --- a/src/corelib/kernel/qcoreapplication.h +++ b/src/corelib/kernel/qcoreapplication.h @@ -50,8 +50,6 @@ typedef struct tagMSG MSG; #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -241,6 +239,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const MSG &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOREAPPLICATION_H diff --git a/src/corelib/kernel/qcoreevent.h b/src/corelib/kernel/qcoreevent.h index d35b5198a9..47a461d330 100644 --- a/src/corelib/kernel/qcoreevent.h +++ b/src/corelib/kernel/qcoreevent.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -377,6 +375,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOREEVENT_H diff --git a/src/corelib/kernel/qeventloop.h b/src/corelib/kernel/qeventloop.h index d4141a05bc..926be08265 100644 --- a/src/corelib/kernel/qeventloop.h +++ b/src/corelib/kernel/qeventloop.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -106,6 +104,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QEVENTLOOP_H diff --git a/src/corelib/kernel/qeventloop_p.h b/src/corelib/kernel/qeventloop_p.h index 21a1dcda4c..8e2bfdb55e 100644 --- a/src/corelib/kernel/qeventloop_p.h +++ b/src/corelib/kernel/qeventloop_p.h @@ -44,8 +44,6 @@ #include "qobject_p.h" -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QEventLoopPrivate : public QObjectPrivate @@ -76,6 +74,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QEVENTLOOP_P_H diff --git a/src/corelib/kernel/qfunctions_nacl.h b/src/corelib/kernel/qfunctions_nacl.h index 2cb9d16c95..bc44a21cb8 100644 --- a/src/corelib/kernel/qfunctions_nacl.h +++ b/src/corelib/kernel/qfunctions_nacl.h @@ -52,8 +52,6 @@ #define PTHREAD_CANCEL_ENABLE 2 #define PTHREAD_INHERIT_SCHED 3 -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -89,8 +87,6 @@ int select(int nfds, fd_set * readfds, fd_set * writefds, fd_set * errorfds, str QT_END_NAMESPACE -QT_END_HEADER - #endif //Q_OS_NACL #endif //QFUNCTIONS_NACL_H diff --git a/src/corelib/kernel/qfunctions_p.h b/src/corelib/kernel/qfunctions_p.h index 57c6a8f295..6e094f1ed3 100644 --- a/src/corelib/kernel/qfunctions_p.h +++ b/src/corelib/kernel/qfunctions_p.h @@ -72,8 +72,5 @@ # define Q_STATIC_GLOBAL_INLINE_OPERATOR static inline #endif -QT_BEGIN_HEADER -QT_END_HEADER - #endif diff --git a/src/corelib/kernel/qfunctions_vxworks.h b/src/corelib/kernel/qfunctions_vxworks.h index 6776a6a721..d12a302c8d 100644 --- a/src/corelib/kernel/qfunctions_vxworks.h +++ b/src/corelib/kernel/qfunctions_vxworks.h @@ -103,15 +103,12 @@ # undef m_pkthdr #endif -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE #ifdef QT_BUILD_CORE_LIB #endif QT_END_NAMESPACE -QT_END_HEADER - #ifndef RTLD_LOCAL #define RTLD_LOCAL 0 diff --git a/src/corelib/kernel/qfunctions_wince.h b/src/corelib/kernel/qfunctions_wince.h index e20a4ceaca..4eeb9cff6a 100644 --- a/src/corelib/kernel/qfunctions_wince.h +++ b/src/corelib/kernel/qfunctions_wince.h @@ -56,15 +56,12 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE #ifdef QT_BUILD_CORE_LIB #endif QT_END_NAMESPACE -QT_END_HEADER - // The standard SDK misses this define... #define _control87 _controlfp diff --git a/src/corelib/kernel/qmath.h b/src/corelib/kernel/qmath.h index 097200d690..ce49a91e93 100644 --- a/src/corelib/kernel/qmath.h +++ b/src/corelib/kernel/qmath.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -266,6 +264,4 @@ inline qreal qFastCos(qreal x) QT_END_NAMESPACE -QT_END_HEADER - #endif // QMATH_H diff --git a/src/corelib/kernel/qmetaobject.h b/src/corelib/kernel/qmetaobject.h index 6d6b849d75..23fc89ffe3 100644 --- a/src/corelib/kernel/qmetaobject.h +++ b/src/corelib/kernel/qmetaobject.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -274,6 +272,4 @@ Q_DECLARE_TYPEINFO(QMetaClassInfo, Q_MOVABLE_TYPE); QT_END_NAMESPACE -QT_END_HEADER - #endif // QMETAOBJECT_H diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 3ffbfb8385..76cee612ce 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -56,8 +56,6 @@ #error qmetatype.h must be included before any header file that defines Bool #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -980,6 +978,4 @@ QT_END_NAMESPACE QT_FOR_EACH_STATIC_TYPE(Q_DECLARE_BUILTIN_METATYPE) -QT_END_HEADER - #endif // QMETATYPE_H diff --git a/src/corelib/kernel/qmimedata.h b/src/corelib/kernel/qmimedata.h index 774a6e4986..84c73262b2 100644 --- a/src/corelib/kernel/qmimedata.h +++ b/src/corelib/kernel/qmimedata.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -98,6 +96,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QMIMEDATA_H diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h index 92392fe994..7d47c377da 100644 --- a/src/corelib/kernel/qobject.h +++ b/src/corelib/kernel/qobject.h @@ -56,8 +56,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -508,8 +506,6 @@ namespace QtPrivate { QT_END_NAMESPACE -QT_END_HEADER - #endif #endif // QOBJECT_H diff --git a/src/corelib/kernel/qobject_impl.h b/src/corelib/kernel/qobject_impl.h index fbc523b8b7..49fa1897f7 100644 --- a/src/corelib/kernel/qobject_impl.h +++ b/src/corelib/kernel/qobject_impl.h @@ -45,8 +45,6 @@ #error Do not include qobject_impl.h directly #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -207,6 +205,4 @@ namespace QtPrivate { QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/kernel/qobjectcleanuphandler.h b/src/corelib/kernel/qobjectcleanuphandler.h index 96faabc173..1f053cc34b 100644 --- a/src/corelib/kernel/qobjectcleanuphandler.h +++ b/src/corelib/kernel/qobjectcleanuphandler.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -72,6 +70,4 @@ private Q_SLOTS: QT_END_NAMESPACE -QT_END_HEADER - #endif // QOBJECTCLEANUPHANDLER_H diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h index a0617379d5..afbe1a5ece 100644 --- a/src/corelib/kernel/qobjectdefs.h +++ b/src/corelib/kernel/qobjectdefs.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -483,6 +481,4 @@ inline const QMetaObject *QMetaObject::superClass() const QT_END_NAMESPACE -QT_END_HEADER - #endif // QOBJECTDEFS_H diff --git a/src/corelib/kernel/qobjectdefs_impl.h b/src/corelib/kernel/qobjectdefs_impl.h index 68d8fdf961..2d2107f666 100644 --- a/src/corelib/kernel/qobjectdefs_impl.h +++ b/src/corelib/kernel/qobjectdefs_impl.h @@ -45,8 +45,6 @@ #error Do not include qobjectdefs_impl.h directly #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -601,6 +599,4 @@ namespace QtPrivate { QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/kernel/qpointer.h b/src/corelib/kernel/qpointer.h index ebdeb156ba..e84900e3b1 100644 --- a/src/corelib/kernel/qpointer.h +++ b/src/corelib/kernel/qpointer.h @@ -46,8 +46,6 @@ #ifndef QT_NO_QOBJECT -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QVariant; @@ -194,8 +192,6 @@ qPointerFromVariant(const QVariant &variant) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_QOBJECT #endif // QPOINTER_H diff --git a/src/corelib/kernel/qsharedmemory.h b/src/corelib/kernel/qsharedmemory.h index d87ba02ac9..6b44548f44 100644 --- a/src/corelib/kernel/qsharedmemory.h +++ b/src/corelib/kernel/qsharedmemory.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -114,7 +112,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSHAREDMEMORY_H diff --git a/src/corelib/kernel/qsignalmapper.h b/src/corelib/kernel/qsignalmapper.h index f1f4428118..997e8e46de 100644 --- a/src/corelib/kernel/qsignalmapper.h +++ b/src/corelib/kernel/qsignalmapper.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QSignalMapperPrivate; @@ -86,6 +84,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSIGNALMAPPER_H diff --git a/src/corelib/kernel/qsocketnotifier.h b/src/corelib/kernel/qsocketnotifier.h index 97321521e4..8cc6b9c4c4 100644 --- a/src/corelib/kernel/qsocketnotifier.h +++ b/src/corelib/kernel/qsocketnotifier.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QSocketNotifierPrivate; @@ -84,6 +82,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSOCKETNOTIFIER_H diff --git a/src/corelib/kernel/qsystemsemaphore.h b/src/corelib/kernel/qsystemsemaphore.h index 52547f0c1f..b7dd220832 100644 --- a/src/corelib/kernel/qsystemsemaphore.h +++ b/src/corelib/kernel/qsystemsemaphore.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -96,7 +94,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSYSTEMSEMAPHORE_H diff --git a/src/corelib/kernel/qtimer.h b/src/corelib/kernel/qtimer.h index 9a90ecc772..34bfff9089 100644 --- a/src/corelib/kernel/qtimer.h +++ b/src/corelib/kernel/qtimer.h @@ -47,8 +47,6 @@ #include // conceptual inheritance #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -114,8 +112,6 @@ inline void QTimer::setSingleShot(bool asingleShot) { single = asingleShot; } QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_QOBJECT #endif // QTIMER_H diff --git a/src/corelib/kernel/qtranslator.h b/src/corelib/kernel/qtranslator.h index 98c0b81c97..c3957aff3f 100644 --- a/src/corelib/kernel/qtranslator.h +++ b/src/corelib/kernel/qtranslator.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -87,6 +85,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTRANSLATOR_H diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 166a5cad6f..172ce29050 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -51,8 +51,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -622,6 +620,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QVariant::Type); QT_END_NAMESPACE -QT_END_HEADER - #endif // QVARIANT_H diff --git a/src/corelib/kernel/qwineventnotifier.h b/src/corelib/kernel/qwineventnotifier.h index ca84054d71..56605d9aaa 100644 --- a/src/corelib/kernel/qwineventnotifier.h +++ b/src/corelib/kernel/qwineventnotifier.h @@ -47,8 +47,6 @@ #ifdef Q_OS_WIN #include "QtCore/qt_windows.h" -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QWinEventNotifierPrivate; @@ -83,8 +81,6 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif // Q_OS_WIN #endif // QWINEVENTNOTIFIER_H diff --git a/src/corelib/mimetypes/qmimedatabase.h b/src/corelib/mimetypes/qmimedatabase.h index a567d99749..17684e49da 100644 --- a/src/corelib/mimetypes/qmimedatabase.h +++ b/src/corelib/mimetypes/qmimedatabase.h @@ -45,7 +45,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QByteArray; @@ -90,6 +89,4 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER - #endif // QMIMEDATABASE_H diff --git a/src/corelib/mimetypes/qmimetype.h b/src/corelib/mimetypes/qmimetype.h index dcab8153ab..24d043eebc 100644 --- a/src/corelib/mimetypes/qmimetype.h +++ b/src/corelib/mimetypes/qmimetype.h @@ -45,7 +45,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QMimeTypePrivate; @@ -112,6 +111,4 @@ protected: Q_DECLARE_SHARED(QMimeType) QT_END_NAMESPACE -QT_END_HEADER - #endif // QMIMETYPE_H diff --git a/src/corelib/plugin/qfactoryinterface.h b/src/corelib/plugin/qfactoryinterface.h index 59bce69022..88fb1bf599 100644 --- a/src/corelib/plugin/qfactoryinterface.h +++ b/src/corelib/plugin/qfactoryinterface.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -61,6 +59,4 @@ Q_DECLARE_INTERFACE(QFactoryInterface, "org.qt-project.Qt.QFactoryInterface") QT_END_NAMESPACE -QT_END_HEADER - #endif // QFACTORYINTERFACE_H diff --git a/src/corelib/plugin/qlibrary.h b/src/corelib/plugin/qlibrary.h index f99c69c2d7..5c81e6af1a 100644 --- a/src/corelib/plugin/qlibrary.h +++ b/src/corelib/plugin/qlibrary.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -111,6 +109,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QLibrary::LoadHints) QT_END_NAMESPACE -QT_END_HEADER - #endif //QLIBRARY_H diff --git a/src/corelib/plugin/qplugin.h b/src/corelib/plugin/qplugin.h index b6a533b793..b91a0e9900 100644 --- a/src/corelib/plugin/qplugin.h +++ b/src/corelib/plugin/qplugin.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -139,6 +137,4 @@ void Q_CORE_EXPORT qRegisterStaticPluginFunction(QStaticPlugin staticPlugin); QT_END_NAMESPACE -QT_END_HEADER - #endif // Q_PLUGIN_H diff --git a/src/corelib/plugin/qpluginloader.h b/src/corelib/plugin/qpluginloader.h index 7eb48d530c..3d1d2dbe0b 100644 --- a/src/corelib/plugin/qpluginloader.h +++ b/src/corelib/plugin/qpluginloader.h @@ -51,8 +51,6 @@ #ifndef QT_NO_LIBRARY -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QLibraryPrivate; @@ -93,8 +91,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_LIBRARY #endif //QPLUGINLOADER_H diff --git a/src/corelib/plugin/quuid.h b/src/corelib/plugin/quuid.h index bfd6759344..8bda617a3c 100644 --- a/src/corelib/plugin/quuid.h +++ b/src/corelib/plugin/quuid.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - #if defined(Q_OS_WIN) #ifndef GUID_DEFINED #define GUID_DEFINED @@ -227,6 +225,4 @@ Q_CORE_EXPORT uint qHash(const QUuid &uuid, uint seed = 0) Q_DECL_NOTHROW; QT_END_NAMESPACE -QT_END_HEADER - #endif // QUUID_H diff --git a/src/corelib/statemachine/qabstractstate.h b/src/corelib/statemachine/qabstractstate.h index da13985316..a6ac248b85 100644 --- a/src/corelib/statemachine/qabstractstate.h +++ b/src/corelib/statemachine/qabstractstate.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -96,6 +94,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/statemachine/qabstracttransition.h b/src/corelib/statemachine/qabstracttransition.h index e8b2d0074f..a35ad4ca96 100644 --- a/src/corelib/statemachine/qabstracttransition.h +++ b/src/corelib/statemachine/qabstracttransition.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -113,6 +111,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/statemachine/qeventtransition.h b/src/corelib/statemachine/qeventtransition.h index 520c63e93b..f53a5e4732 100644 --- a/src/corelib/statemachine/qeventtransition.h +++ b/src/corelib/statemachine/qeventtransition.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -89,6 +87,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/statemachine/qfinalstate.h b/src/corelib/statemachine/qfinalstate.h index b0d8eb3a02..0343b99c1c 100644 --- a/src/corelib/statemachine/qfinalstate.h +++ b/src/corelib/statemachine/qfinalstate.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -74,6 +72,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/statemachine/qhistorystate.h b/src/corelib/statemachine/qhistorystate.h index e35385b1a1..62278ac47a 100644 --- a/src/corelib/statemachine/qhistorystate.h +++ b/src/corelib/statemachine/qhistorystate.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -89,6 +87,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/statemachine/qsignaltransition.h b/src/corelib/statemachine/qsignaltransition.h index 3038132da3..12f021d78e 100644 --- a/src/corelib/statemachine/qsignaltransition.h +++ b/src/corelib/statemachine/qsignaltransition.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -84,6 +82,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/statemachine/qstate.h b/src/corelib/statemachine/qstate.h index 8080c9062d..a5f2509ffb 100644 --- a/src/corelib/statemachine/qstate.h +++ b/src/corelib/statemachine/qstate.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -129,6 +127,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/statemachine/qstatemachine.h b/src/corelib/statemachine/qstatemachine.h index b33b95d25d..9305676bb5 100644 --- a/src/corelib/statemachine/qstatemachine.h +++ b/src/corelib/statemachine/qstatemachine.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -195,6 +193,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/thread/qatomic.h b/src/corelib/thread/qatomic.h index 06cee4894e..1ccaecc135 100644 --- a/src/corelib/thread/qatomic.h +++ b/src/corelib/thread/qatomic.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -220,6 +218,4 @@ inline void qAtomicDetach(T *&d) } QT_END_NAMESPACE -QT_END_HEADER - #endif // QATOMIC_H diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h index 70b69827c2..5c5d2637b3 100644 --- a/src/corelib/thread/qbasicatomic.h +++ b/src/corelib/thread/qbasicatomic.h @@ -101,15 +101,11 @@ // Only include if the implementation has been ported to QAtomicOps #ifndef QOLDBASICATOMIC_H -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_no_master_include #pragma qt_sync_stop_processing #endif @@ -271,8 +267,6 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QOLDBASICATOMIC_H #endif // QBASICATOMIC_H diff --git a/src/corelib/thread/qexception.h b/src/corelib/thread/qexception.h index fa944ce69d..accf0fc7b4 100644 --- a/src/corelib/thread/qexception.h +++ b/src/corelib/thread/qexception.h @@ -53,7 +53,6 @@ # include #endif -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -116,7 +115,6 @@ public: #endif // QT_NO_EXCEPTIONS QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_QFUTURE diff --git a/src/corelib/thread/qfuture.h b/src/corelib/thread/qfuture.h index d9c4f1af77..8071e80d1b 100644 --- a/src/corelib/thread/qfuture.h +++ b/src/corelib/thread/qfuture.h @@ -49,7 +49,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -269,7 +268,6 @@ QFuture qToVoidFuture(const QFuture &future) } QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_QFUTURE diff --git a/src/corelib/thread/qfutureinterface.h b/src/corelib/thread/qfutureinterface.h index 6ab1409f55..d2d58a9332 100644 --- a/src/corelib/thread/qfutureinterface.h +++ b/src/corelib/thread/qfutureinterface.h @@ -50,7 +50,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -310,8 +309,6 @@ public: }; QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_QFUTURE #endif // QFUTUREINTERFACE_H diff --git a/src/corelib/thread/qfuturesynchronizer.h b/src/corelib/thread/qfuturesynchronizer.h index 60960f7711..426bb42b0d 100644 --- a/src/corelib/thread/qfuturesynchronizer.h +++ b/src/corelib/thread/qfuturesynchronizer.h @@ -46,7 +46,6 @@ #ifndef QT_NO_QFUTURE -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -113,8 +112,6 @@ protected: }; QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_QFUTURE #endif // QFUTURESYNCHRONIZER_H diff --git a/src/corelib/thread/qfuturewatcher.h b/src/corelib/thread/qfuturewatcher.h index d41b6139b6..c78ed7a83b 100644 --- a/src/corelib/thread/qfuturewatcher.h +++ b/src/corelib/thread/qfuturewatcher.h @@ -48,7 +48,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -215,8 +214,6 @@ Q_INLINE_TEMPLATE void QFutureWatcher::setFuture(const QFuture &_fut } QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_QFUTURE #endif // QFUTUREWATCHER_H diff --git a/src/corelib/thread/qgenericatomic.h b/src/corelib/thread/qgenericatomic.h index 90f0223ccf..a8d626a43f 100644 --- a/src/corelib/thread/qgenericatomic.h +++ b/src/corelib/thread/qgenericatomic.h @@ -44,14 +44,11 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_sync_stop_processing #endif @@ -241,6 +238,4 @@ template struct QGenericAtomicOps #undef always_inline QT_END_NAMESPACE -QT_END_HEADER - #endif // QGENERICATOMIC_H diff --git a/src/corelib/thread/qmutex.h b/src/corelib/thread/qmutex.h index 94bcdd1750..0bca0def22 100644 --- a/src/corelib/thread/qmutex.h +++ b/src/corelib/thread/qmutex.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -211,6 +209,4 @@ typedef QMutex QBasicMutex; QT_END_NAMESPACE -QT_END_HEADER - #endif // QMUTEX_H diff --git a/src/corelib/thread/qoldbasicatomic.h b/src/corelib/thread/qoldbasicatomic.h index 15785e2232..220dade850 100644 --- a/src/corelib/thread/qoldbasicatomic.h +++ b/src/corelib/thread/qoldbasicatomic.h @@ -44,16 +44,12 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE -QT_END_HEADER - #pragma qt_no_master_include #pragma qt_sync_stop_processing #endif @@ -142,6 +138,5 @@ public: #define Q_BASIC_ATOMIC_INITIALIZER(a) { (a) } QT_END_NAMESPACE -QT_END_HEADER #endif // QOLDBASICATOMIC_H diff --git a/src/corelib/thread/qreadwritelock.h b/src/corelib/thread/qreadwritelock.h index 8217d4eacd..6815878ec5 100644 --- a/src/corelib/thread/qreadwritelock.h +++ b/src/corelib/thread/qreadwritelock.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -231,6 +229,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QREADWRITELOCK_H diff --git a/src/corelib/thread/qresultstore.h b/src/corelib/thread/qresultstore.h index 8c1787bc11..c14146656a 100644 --- a/src/corelib/thread/qresultstore.h +++ b/src/corelib/thread/qresultstore.h @@ -49,7 +49,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -234,7 +233,6 @@ public: #endif //Q_QDOC QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_QFUTURE diff --git a/src/corelib/thread/qrunnable.h b/src/corelib/thread/qrunnable.h index ba03519872..a6cc095258 100644 --- a/src/corelib/thread/qrunnable.h +++ b/src/corelib/thread/qrunnable.h @@ -44,7 +44,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -67,6 +66,5 @@ public: }; QT_END_NAMESPACE -QT_END_HEADER #endif diff --git a/src/corelib/thread/qsemaphore.h b/src/corelib/thread/qsemaphore.h index b47588ce62..40200151b0 100644 --- a/src/corelib/thread/qsemaphore.h +++ b/src/corelib/thread/qsemaphore.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -77,6 +75,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSEMAPHORE_H diff --git a/src/corelib/thread/qthread.h b/src/corelib/thread/qthread.h index c6c6167da7..19c0f82d86 100644 --- a/src/corelib/thread/qthread.h +++ b/src/corelib/thread/qthread.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -164,6 +162,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTHREAD_H diff --git a/src/corelib/thread/qthreadpool.h b/src/corelib/thread/qthreadpool.h index bc572fc8e8..ffc16dedbe 100644 --- a/src/corelib/thread/qthreadpool.h +++ b/src/corelib/thread/qthreadpool.h @@ -49,7 +49,6 @@ #ifndef QT_NO_THREAD -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -87,7 +86,6 @@ public: }; QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_THREAD diff --git a/src/corelib/thread/qthreadstorage.h b/src/corelib/thread/qthreadstorage.h index c98d181c1f..86285de84f 100644 --- a/src/corelib/thread/qthreadstorage.h +++ b/src/corelib/thread/qthreadstorage.h @@ -46,8 +46,6 @@ #ifndef QT_NO_THREAD -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -156,8 +154,6 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_THREAD #endif // QTHREADSTORAGE_H diff --git a/src/corelib/thread/qwaitcondition.h b/src/corelib/thread/qwaitcondition.h index e8f51dad54..1468951373 100644 --- a/src/corelib/thread/qwaitcondition.h +++ b/src/corelib/thread/qwaitcondition.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -99,6 +97,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWAITCONDITION_H diff --git a/src/corelib/tools/qalgorithms.h b/src/corelib/tools/qalgorithms.h index 936ebd1cbb..e3b76886f1 100644 --- a/src/corelib/tools/qalgorithms.h +++ b/src/corelib/tools/qalgorithms.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -520,6 +518,4 @@ Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFindHelper(RandomAccessIterator QT_END_NAMESPACE -QT_END_HEADER - #endif // QALGORITHMS_H diff --git a/src/corelib/tools/qarraydata.h b/src/corelib/tools/qarraydata.h index aab01c5f41..27f2606954 100644 --- a/src/corelib/tools/qarraydata.h +++ b/src/corelib/tools/qarraydata.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE struct Q_CORE_EXPORT QArrayData @@ -361,6 +359,4 @@ namespace QtPrivate { QT_END_NAMESPACE -QT_END_HEADER - #endif // include guard diff --git a/src/corelib/tools/qarraydataops.h b/src/corelib/tools/qarraydataops.h index 6c95e9364d..3cd8c51c07 100644 --- a/src/corelib/tools/qarraydataops.h +++ b/src/corelib/tools/qarraydataops.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE namespace QtPrivate { @@ -423,6 +421,4 @@ struct QArrayDataOps QT_END_NAMESPACE -QT_END_HEADER - #endif // include guard diff --git a/src/corelib/tools/qarraydatapointer.h b/src/corelib/tools/qarraydatapointer.h index 52d054b035..533f7a306f 100644 --- a/src/corelib/tools/qarraydatapointer.h +++ b/src/corelib/tools/qarraydatapointer.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE template @@ -219,6 +217,4 @@ namespace std } } -QT_END_HEADER - #endif // include guard diff --git a/src/corelib/tools/qbitarray.h b/src/corelib/tools/qbitarray.h index e622d6515c..1103712627 100644 --- a/src/corelib/tools/qbitarray.h +++ b/src/corelib/tools/qbitarray.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -176,6 +174,4 @@ Q_DECLARE_SHARED(QBitArray) QT_END_NAMESPACE -QT_END_HEADER - #endif // QBITARRAY_H diff --git a/src/corelib/tools/qbytearray.h b/src/corelib/tools/qbytearray.h index 8d03951073..f3cc301a49 100644 --- a/src/corelib/tools/qbytearray.h +++ b/src/corelib/tools/qbytearray.h @@ -66,8 +66,6 @@ #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -610,8 +608,6 @@ Q_DECLARE_SHARED(QByteArray) QT_END_NAMESPACE -QT_END_HEADER - #ifdef QT_USE_QSTRINGBUILDER #include #endif diff --git a/src/corelib/tools/qbytearraymatcher.h b/src/corelib/tools/qbytearraymatcher.h index 370116e643..da6a337a69 100644 --- a/src/corelib/tools/qbytearraymatcher.h +++ b/src/corelib/tools/qbytearraymatcher.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -97,6 +95,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QBYTEARRAYMATCHER_H diff --git a/src/corelib/tools/qcache.h b/src/corelib/tools/qcache.h index 2d2b9f3d45..5890a94dc2 100644 --- a/src/corelib/tools/qcache.h +++ b/src/corelib/tools/qcache.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -200,6 +198,4 @@ void QCache::trim(int m) QT_END_NAMESPACE -QT_END_HEADER - #endif // QCACHE_H diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h index 3679a597ff..8afa05bb00 100644 --- a/src/corelib/tools/qchar.h +++ b/src/corelib/tools/qchar.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -526,6 +524,4 @@ Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QChar &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QCHAR_H diff --git a/src/corelib/tools/qcollator_p.h b/src/corelib/tools/qcollator_p.h index 4420c6592e..51de205565 100644 --- a/src/corelib/tools/qcollator_p.h +++ b/src/corelib/tools/qcollator_p.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QCollatorPrivate; @@ -119,6 +117,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOLLATOR_P_H diff --git a/src/corelib/tools/qcontainerfwd.h b/src/corelib/tools/qcontainerfwd.h index c4866253ee..6b79e40635 100644 --- a/src/corelib/tools/qcontainerfwd.h +++ b/src/corelib/tools/qcontainerfwd.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -65,6 +63,4 @@ template class QVector; QT_END_NAMESPACE -QT_END_HEADER - #endif // QCONTAINERFWD_H diff --git a/src/corelib/tools/qcontiguouscache.h b/src/corelib/tools/qcontiguouscache.h index 1075284491..d601ddb819 100644 --- a/src/corelib/tools/qcontiguouscache.h +++ b/src/corelib/tools/qcontiguouscache.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #undef QT_QCONTIGUOUSCACHE_DEBUG @@ -464,6 +462,4 @@ inline T QContiguousCache::takeLast() QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qcryptographichash.h b/src/corelib/tools/qcryptographichash.h index 1a7e3751e8..847ba9c3f7 100644 --- a/src/corelib/tools/qcryptographichash.h +++ b/src/corelib/tools/qcryptographichash.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -84,6 +82,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qdatetime.h b/src/corelib/tools/qdatetime.h index ae545eda4f..d1cc10c877 100644 --- a/src/corelib/tools/qdatetime.h +++ b/src/corelib/tools/qdatetime.h @@ -48,8 +48,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -296,6 +294,4 @@ Q_CORE_EXPORT uint qHash(const QTime &key, uint seed = 0) Q_DECL_NOTHROW; QT_END_NAMESPACE -QT_END_HEADER - #endif // QDATETIME_H diff --git a/src/corelib/tools/qeasingcurve.h b/src/corelib/tools/qeasingcurve.h index cb8519d204..2e65754989 100644 --- a/src/corelib/tools/qeasingcurve.h +++ b/src/corelib/tools/qeasingcurve.h @@ -50,8 +50,6 @@ # include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -142,6 +140,4 @@ Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QEasingCurve &); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qelapsedtimer.h b/src/corelib/tools/qelapsedtimer.h index 3fb9c6bffe..b06afe4ab4 100644 --- a/src/corelib/tools/qelapsedtimer.h +++ b/src/corelib/tools/qelapsedtimer.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -89,6 +87,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QELAPSEDTIMER_H diff --git a/src/corelib/tools/qfreelist_p.h b/src/corelib/tools/qfreelist_p.h index 3de0d0b204..5e90a03d7f 100644 --- a/src/corelib/tools/qfreelist_p.h +++ b/src/corelib/tools/qfreelist_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -288,6 +286,4 @@ inline void QFreeList::release(int id) QT_END_NAMESPACE -QT_END_HEADER - #endif // QFREELIST_P_H diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h index 69a8afe195..5d9238f453 100644 --- a/src/corelib/tools/qhash.h +++ b/src/corelib/tools/qhash.h @@ -52,8 +52,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QBitArray; @@ -1055,6 +1053,4 @@ Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(Hash) QT_END_NAMESPACE -QT_END_HEADER - #endif // QHASH_H diff --git a/src/corelib/tools/qiterator.h b/src/corelib/tools/qiterator.h index ad2d8bae41..3b86edd750 100644 --- a/src/corelib/tools/qiterator.h +++ b/src/corelib/tools/qiterator.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #define Q_DECLARE_SEQUENTIAL_ITERATOR(C) \ @@ -190,6 +188,4 @@ public: \ QT_END_NAMESPACE -QT_END_HEADER - #endif // QITERATOR_H diff --git a/src/corelib/tools/qline.h b/src/corelib/tools/qline.h index cf87067b61..69e8a8245a 100644 --- a/src/corelib/tools/qline.h +++ b/src/corelib/tools/qline.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -421,6 +419,4 @@ Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QLineF &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QLINE_H diff --git a/src/corelib/tools/qlinkedlist.h b/src/corelib/tools/qlinkedlist.h index 383d6eb990..b9ca1b964a 100644 --- a/src/corelib/tools/qlinkedlist.h +++ b/src/corelib/tools/qlinkedlist.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -501,6 +499,4 @@ Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(LinkedList) QT_END_NAMESPACE -QT_END_HEADER - #endif // QLINKEDLIST_H diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h index 98326e5e00..0592c24e9f 100644 --- a/src/corelib/tools/qlist.h +++ b/src/corelib/tools/qlist.h @@ -57,8 +57,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -910,6 +908,4 @@ Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(List) QT_END_NAMESPACE -QT_END_HEADER - #endif // QLIST_H diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h index 4283a31c43..cb008da0c9 100644 --- a/src/corelib/tools/qlocale.h +++ b/src/corelib/tools/qlocale.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -843,6 +841,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QLocale &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QLOCALE_H diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h index 93134a43dd..280696c534 100644 --- a/src/corelib/tools/qmap.h +++ b/src/corelib/tools/qmap.h @@ -58,8 +58,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE /* @@ -1091,6 +1089,4 @@ Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(Map) QT_END_NAMESPACE -QT_END_HEADER - #endif // QMAP_H diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h index 41437c7244..0d68be961e 100644 --- a/src/corelib/tools/qmargins.h +++ b/src/corelib/tools/qmargins.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -275,6 +273,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QMargins &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QMARGINS_H diff --git a/src/corelib/tools/qmessageauthenticationcode.h b/src/corelib/tools/qmessageauthenticationcode.h index e84a1c84b4..77c22152e4 100644 --- a/src/corelib/tools/qmessageauthenticationcode.h +++ b/src/corelib/tools/qmessageauthenticationcode.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -79,6 +77,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qpair.h b/src/corelib/tools/qpair.h index 65622f78cb..96b1b65e33 100644 --- a/src/corelib/tools/qpair.h +++ b/src/corelib/tools/qpair.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -108,6 +106,4 @@ Q_OUTOFLINE_TEMPLATE QPair qMakePair(const T1 &x, const T2 &y) QT_END_NAMESPACE -QT_END_HEADER - #endif // QPAIR_H diff --git a/src/corelib/tools/qpodlist_p.h b/src/corelib/tools/qpodlist_p.h index f307e279e8..cfe4cab9ae 100644 --- a/src/corelib/tools/qpodlist_p.h +++ b/src/corelib/tools/qpodlist_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -109,6 +107,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPODLIST_P_H diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h index cb7a5ecd23..4e0f4d5a4e 100644 --- a/src/corelib/tools/qpoint.h +++ b/src/corelib/tools/qpoint.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -405,6 +403,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug d, const QPointF &p); QT_END_NAMESPACE -QT_END_HEADER - #endif // QPOINT_H diff --git a/src/corelib/tools/qqueue.h b/src/corelib/tools/qqueue.h index ed275a121a..b83021434e 100644 --- a/src/corelib/tools/qqueue.h +++ b/src/corelib/tools/qqueue.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -64,6 +62,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QQUEUE_H diff --git a/src/corelib/tools/qrect.h b/src/corelib/tools/qrect.h index 16c737852b..62ebdd10cd 100644 --- a/src/corelib/tools/qrect.h +++ b/src/corelib/tools/qrect.h @@ -49,8 +49,6 @@ #error qrect.h must be included before any header file that defines topLeft #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QMargins; @@ -792,6 +790,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QRectF &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QRECT_H diff --git a/src/corelib/tools/qrefcount.h b/src/corelib/tools/qrefcount.h index 4036bc6508..84314b1fcc 100644 --- a/src/corelib/tools/qrefcount.h +++ b/src/corelib/tools/qrefcount.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -112,6 +110,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qregexp.h b/src/corelib/tools/qregexp.h index f5003fed0a..acf59d7196 100644 --- a/src/corelib/tools/qregexp.h +++ b/src/corelib/tools/qregexp.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -129,8 +127,6 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QRegExp &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_REGEXP #endif // QREGEXP_H diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index a5c273e4a2..a056b4f01b 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QRegularExpressionMatch; @@ -243,8 +241,6 @@ Q_DECLARE_SHARED(QRegularExpressionMatchIterator) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_REGULAREXPRESSION #endif // QREGULAREXPRESSION_H diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h index f7ac8da572..2155c56e27 100644 --- a/src/corelib/tools/qscopedpointer.h +++ b/src/corelib/tools/qscopedpointer.h @@ -46,7 +46,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE template @@ -238,6 +237,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif // QSCOPEDPOINTER_H diff --git a/src/corelib/tools/qscopedpointer_p.h b/src/corelib/tools/qscopedpointer_p.h index f92ce0a454..06ebac1853 100644 --- a/src/corelib/tools/qscopedpointer_p.h +++ b/src/corelib/tools/qscopedpointer_p.h @@ -55,7 +55,6 @@ #include "QtCore/qscopedpointer.h" -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -145,6 +144,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER #endif diff --git a/src/corelib/tools/qscopedvaluerollback.h b/src/corelib/tools/qscopedvaluerollback.h index 8d6293c514..dfaf1984be 100644 --- a/src/corelib/tools/qscopedvaluerollback.h +++ b/src/corelib/tools/qscopedvaluerollback.h @@ -44,7 +44,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE template @@ -75,6 +74,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif // QSCOPEDVALUEROLLBACK_H diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h index ee91336c51..d5c3637293 100644 --- a/src/corelib/tools/qset.h +++ b/src/corelib/tools/qset.h @@ -47,8 +47,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -366,6 +364,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSET_H diff --git a/src/corelib/tools/qshareddata.h b/src/corelib/tools/qshareddata.h index 276fef4446..00bf4cba2a 100644 --- a/src/corelib/tools/qshareddata.h +++ b/src/corelib/tools/qshareddata.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -281,6 +279,4 @@ template Q_DECLARE_TYPEINFO_BODY(QExplicitlySharedDataPointer, Q_ QT_END_NAMESPACE -QT_END_HEADER - #endif // QSHAREDDATA_H diff --git a/src/corelib/tools/qsharedpointer.h b/src/corelib/tools/qsharedpointer.h index ccfffb5b18..7d1f00814d 100644 --- a/src/corelib/tools/qsharedpointer.h +++ b/src/corelib/tools/qsharedpointer.h @@ -50,8 +50,6 @@ # include #else -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -152,8 +150,6 @@ template QWeakPointer qWeakPointerCast(const QWeakPointer< QT_END_NAMESPACE -QT_END_HEADER - #endif // Q_QDOC #endif // QSHAREDPOINTER_H diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h index 0d3d410bf5..f6ef7cd55d 100644 --- a/src/corelib/tools/qsharedpointer_impl.h +++ b/src/corelib/tools/qsharedpointer_impl.h @@ -50,10 +50,8 @@ // this header, as we have a "qt_sync_stop_processing" below, which in turn // is here because this file contains a template mess and duplicates the // classes found in qsharedpointer.h -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER #pragma qt_sync_stop_processing #endif @@ -66,8 +64,6 @@ QT_END_HEADER # include // for std::forward #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -889,6 +885,4 @@ template Q_DECLARE_TYPEINFO_BODY(QSharedPointer, Q_MOVABLE_TYPE); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 2d0e554de8..1a9c25837e 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - /* * qt_module_config.prf defines the QT_COMPILER_SUPPORTS_XXX macros. * They mean the compiler supports the necessary flags and the headers @@ -251,6 +249,4 @@ inline uint qCpuHasFeature(CPUFeatures feature) QT_END_NAMESPACE -QT_END_HEADER - #endif // QSIMD_P_H diff --git a/src/corelib/tools/qsize.h b/src/corelib/tools/qsize.h index bb2cfaff29..76f2ae05f1 100644 --- a/src/corelib/tools/qsize.h +++ b/src/corelib/tools/qsize.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -379,6 +377,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QSizeF &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QSIZE_H diff --git a/src/corelib/tools/qstack.h b/src/corelib/tools/qstack.h index 158e1af6b2..135c4dd527 100644 --- a/src/corelib/tools/qstack.h +++ b/src/corelib/tools/qstack.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -77,6 +75,4 @@ inline const T &QStack::top() const QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTACK_H diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index f7631b4143..35f8a3dc8e 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -64,8 +64,6 @@ namespace std #error qstring.h must be included before any header file that defines truncate #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -1390,8 +1388,6 @@ QT_DEPRECATED inline QString escape(const QString &plain) { QT_END_NAMESPACE -QT_END_HEADER - #if defined(QT_USE_FAST_OPERATOR_PLUS) || defined(QT_USE_QSTRINGBUILDER) #include #endif diff --git a/src/corelib/tools/qstringbuilder.h b/src/corelib/tools/qstringbuilder.h index 67d5bde2ce..e09b02b5a9 100644 --- a/src/corelib/tools/qstringbuilder.h +++ b/src/corelib/tools/qstringbuilder.h @@ -54,8 +54,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -429,6 +427,4 @@ QString &operator+=(QString &a, const QStringBuilder &b) QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTRINGBUILDER_H diff --git a/src/corelib/tools/qstringlist.h b/src/corelib/tools/qstringlist.h index 597e1f7a6b..a962b7c528 100644 --- a/src/corelib/tools/qstringlist.h +++ b/src/corelib/tools/qstringlist.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -257,6 +255,4 @@ inline QDataStream &operator<<(QDataStream &out, const QStringList &list) QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTRINGLIST_H diff --git a/src/corelib/tools/qstringmatcher.h b/src/corelib/tools/qstringmatcher.h index 1634255f2e..792b97591a 100644 --- a/src/corelib/tools/qstringmatcher.h +++ b/src/corelib/tools/qstringmatcher.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -97,6 +95,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTRINGMATCHER_H diff --git a/src/corelib/tools/qtextboundaryfinder.h b/src/corelib/tools/qtextboundaryfinder.h index e05547359f..81cd0dddf0 100644 --- a/src/corelib/tools/qtextboundaryfinder.h +++ b/src/corelib/tools/qtextboundaryfinder.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -111,7 +109,5 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QTextBoundaryFinder::BoundaryReasons) QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qtimeline.h b/src/corelib/tools/qtimeline.h index 6b5c479cb1..be2a4ae734 100644 --- a/src/corelib/tools/qtimeline.h +++ b/src/corelib/tools/qtimeline.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -156,7 +154,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h index 095e6e929e..3a2028057d 100644 --- a/src/corelib/tools/qvarlengtharray.h +++ b/src/corelib/tools/qvarlengtharray.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -420,6 +418,4 @@ bool operator!=(const QVarLengthArray &l, const QVarLengthArray #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QRegion; @@ -814,6 +812,4 @@ Q_TEMPLATE_EXTERN template class Q_CORE_EXPORT QVector; QT_END_NAMESPACE -QT_END_HEADER - #endif // QVECTOR_H diff --git a/src/corelib/xml/qxmlstream.h b/src/corelib/xml/qxmlstream.h index e3336122f9..8a9c2fcb76 100644 --- a/src/corelib/xml/qxmlstream.h +++ b/src/corelib/xml/qxmlstream.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -426,7 +424,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_XMLSTREAM #endif // QXMLSTREAM_H diff --git a/src/dbus/qdbusabstractadaptor.h b/src/dbus/qdbusabstractadaptor.h index 1f414b0d92..2a32344de5 100644 --- a/src/dbus/qdbusabstractadaptor.h +++ b/src/dbus/qdbusabstractadaptor.h @@ -47,8 +47,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -72,8 +70,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusabstractinterface.h b/src/dbus/qdbusabstractinterface.h index ae094c000b..8f014ce151 100644 --- a/src/dbus/qdbusabstractinterface.h +++ b/src/dbus/qdbusabstractinterface.h @@ -53,8 +53,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -161,7 +159,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusargument.h b/src/dbus/qdbusargument.h index dc79843d1e..a3a6f990fc 100644 --- a/src/dbus/qdbusargument.h +++ b/src/dbus/qdbusargument.h @@ -55,8 +55,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -417,7 +415,5 @@ inline const QDBusArgument &operator>>(const QDBusArgument &arg, QPair & QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusconnection.h b/src/dbus/qdbusconnection.h index 35559ba37a..20a579f8d6 100644 --- a/src/dbus/qdbusconnection.h +++ b/src/dbus/qdbusconnection.h @@ -47,8 +47,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -208,7 +206,5 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusConnection::VirtualObjectRegisterOptions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusconnectioninterface.h b/src/dbus/qdbusconnectioninterface.h index 6c45201445..b900d2a64c 100644 --- a/src/dbus/qdbusconnectioninterface.h +++ b/src/dbus/qdbusconnectioninterface.h @@ -49,8 +49,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -125,7 +123,5 @@ QT_END_NAMESPACE Q_DECLARE_BUILTIN_METATYPE(UInt, QMetaType::UInt, QDBusConnectionInterface::RegisterServiceReply) -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbuscontext.h b/src/dbus/qdbuscontext.h index 4578c30626..82dc7783bf 100644 --- a/src/dbus/qdbuscontext.h +++ b/src/dbus/qdbuscontext.h @@ -47,8 +47,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -80,7 +78,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbuserror.h b/src/dbus/qdbuserror.h index ae738d0860..2c4ec6ce71 100644 --- a/src/dbus/qdbuserror.h +++ b/src/dbus/qdbuserror.h @@ -47,8 +47,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - struct DBusError; QT_BEGIN_NAMESPACE @@ -129,7 +127,5 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QDBusError) -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusextratypes.h b/src/dbus/qdbusextratypes.h index 0c68c79ac1..ba99d45c0d 100644 --- a/src/dbus/qdbusextratypes.h +++ b/src/dbus/qdbusextratypes.h @@ -51,8 +51,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -177,7 +175,5 @@ Q_DECLARE_METATYPE(QDBusVariant) Q_DECLARE_METATYPE(QDBusObjectPath) Q_DECLARE_METATYPE(QDBusSignature) -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusinterface.h b/src/dbus/qdbusinterface.h index 5750feb027..d2bb1da369 100644 --- a/src/dbus/qdbusinterface.h +++ b/src/dbus/qdbusinterface.h @@ -47,8 +47,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -75,7 +73,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusmacros.h b/src/dbus/qdbusmacros.h index f2c0fafa8f..5a95f53261 100644 --- a/src/dbus/qdbusmacros.h +++ b/src/dbus/qdbusmacros.h @@ -57,7 +57,6 @@ #include #endif -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE #ifndef QT_NO_DBUS @@ -75,6 +74,5 @@ QT_BEGIN_NAMESPACE #endif // QT_NO_DBUS QT_END_NAMESPACE -QT_END_HEADER #endif diff --git a/src/dbus/qdbusmessage.h b/src/dbus/qdbusmessage.h index 8560440881..92553544eb 100644 --- a/src/dbus/qdbusmessage.h +++ b/src/dbus/qdbusmessage.h @@ -49,8 +49,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -126,8 +124,6 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QDBusMessage) -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusmetatype.h b/src/dbus/qdbusmetatype.h index af73902ee5..bc556a0157 100644 --- a/src/dbus/qdbusmetatype.h +++ b/src/dbus/qdbusmetatype.h @@ -47,8 +47,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -93,7 +91,5 @@ int qDBusRegisterMetaType( QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbuspendingcall.h b/src/dbus/qdbuspendingcall.h index 9fa78f3702..19bc34c26b 100644 --- a/src/dbus/qdbuspendingcall.h +++ b/src/dbus/qdbuspendingcall.h @@ -51,8 +51,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -122,7 +120,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbuspendingreply.h b/src/dbus/qdbuspendingreply.h index c7a030d78f..d92c817a0a 100644 --- a/src/dbus/qdbuspendingreply.h +++ b/src/dbus/qdbuspendingreply.h @@ -49,8 +49,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -208,7 +206,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusreply.h b/src/dbus/qdbusreply.h index 22242bc97d..1d73e61cc4 100644 --- a/src/dbus/qdbusreply.h +++ b/src/dbus/qdbusreply.h @@ -53,8 +53,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -192,7 +190,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusserver.h b/src/dbus/qdbusserver.h index 0fbb96d206..d455f8e0ec 100644 --- a/src/dbus/qdbusserver.h +++ b/src/dbus/qdbusserver.h @@ -47,8 +47,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -78,7 +76,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusservicewatcher.h b/src/dbus/qdbusservicewatcher.h index 5f14b5e64c..0988d82550 100644 --- a/src/dbus/qdbusservicewatcher.h +++ b/src/dbus/qdbusservicewatcher.h @@ -47,8 +47,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -99,7 +97,5 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusServiceWatcher::WatchMode) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif // QDBUSSERVICEWATCHER_H diff --git a/src/dbus/qdbusunixfiledescriptor.h b/src/dbus/qdbusunixfiledescriptor.h index 74c2ba307e..5e8f60817f 100644 --- a/src/dbus/qdbusunixfiledescriptor.h +++ b/src/dbus/qdbusunixfiledescriptor.h @@ -52,8 +52,6 @@ # include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -97,7 +95,5 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QDBusUnixFileDescriptor) -QT_END_HEADER - #endif // QT_NO_DBUS #endif // QDBUSUNIXFILEDESCRIPTOR_H diff --git a/src/dbus/qdbusutil_p.h b/src/dbus/qdbusutil_p.h index c77d8791df..5d8b3a1293 100644 --- a/src/dbus/qdbusutil_p.h +++ b/src/dbus/qdbusutil_p.h @@ -61,8 +61,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE namespace QDBusUtil @@ -161,7 +159,5 @@ namespace QDBusUtil QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/dbus/qdbusvirtualobject.h b/src/dbus/qdbusvirtualobject.h index ada800940d..da63082c70 100644 --- a/src/dbus/qdbusvirtualobject.h +++ b/src/dbus/qdbusvirtualobject.h @@ -48,8 +48,6 @@ #ifndef QT_NO_DBUS -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -74,7 +72,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DBUS #endif diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h index b26f592e11..c77aa0bcb9 100644 --- a/src/gui/accessible/qaccessible.h +++ b/src/gui/accessible/qaccessible.h @@ -53,8 +53,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -678,6 +676,4 @@ inline void QAccessible::updateAccessibility(QObject *object, int child, Event r QT_END_NAMESPACE -QT_END_HEADER - #endif // QACCESSIBLE_H diff --git a/src/gui/accessible/qaccessible2.h b/src/gui/accessible/qaccessible2.h index 6081cde566..169ca2b5e5 100644 --- a/src/gui/accessible/qaccessible2.h +++ b/src/gui/accessible/qaccessible2.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -234,6 +232,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/accessible/qaccessiblebridge.h b/src/gui/accessible/qaccessiblebridge.h index 077996900b..0a0002af2c 100644 --- a/src/gui/accessible/qaccessiblebridge.h +++ b/src/gui/accessible/qaccessiblebridge.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -79,6 +77,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QACCESSIBLEBRIDGE_H diff --git a/src/gui/accessible/qaccessibleobject.h b/src/gui/accessible/qaccessibleobject.h index abe55f38c6..fcbaa59dc9 100644 --- a/src/gui/accessible/qaccessibleobject.h +++ b/src/gui/accessible/qaccessibleobject.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -101,6 +99,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QACCESSIBLEOBJECT_H diff --git a/src/gui/accessible/qaccessibleplugin.h b/src/gui/accessible/qaccessibleplugin.h index 6f7915d025..ac56c83f98 100644 --- a/src/gui/accessible/qaccessibleplugin.h +++ b/src/gui/accessible/qaccessibleplugin.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -73,6 +71,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QACCESSIBLEPLUGIN_H diff --git a/src/gui/accessible/qplatformaccessibility.h b/src/gui/accessible/qplatformaccessibility.h index f10e8a7f12..26a22e492d 100644 --- a/src/gui/accessible/qplatformaccessibility.h +++ b/src/gui/accessible/qplatformaccessibility.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -75,8 +73,6 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_ACCESSIBILITY #endif // QPLATFORMACCESSIBILITY_H diff --git a/src/gui/image/qbitmap.h b/src/gui/image/qbitmap.h index 1f062a0758..f8bd2feed7 100644 --- a/src/gui/image/qbitmap.h +++ b/src/gui/image/qbitmap.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -80,6 +78,4 @@ Q_DECLARE_SHARED(QBitmap) QT_END_NAMESPACE -QT_END_HEADER - #endif // QBITMAP_H diff --git a/src/gui/image/qicon.h b/src/gui/image/qicon.h index ad459005f5..cda2360bed 100644 --- a/src/gui/image/qicon.h +++ b/src/gui/image/qicon.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -140,6 +138,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QIcon &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QICON_H diff --git a/src/gui/image/qiconengine.h b/src/gui/image/qiconengine.h index 1d296b9f66..9fb21adf97 100644 --- a/src/gui/image/qiconengine.h +++ b/src/gui/image/qiconengine.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -90,6 +88,4 @@ typedef QIconEngine QIconEngineV2; QT_END_NAMESPACE -QT_END_HEADER - #endif // QICONENGINE_H diff --git a/src/gui/image/qiconengineplugin.h b/src/gui/image/qiconengineplugin.h index 58bade1d09..a62659f8cb 100644 --- a/src/gui/image/qiconengineplugin.h +++ b/src/gui/image/qiconengineplugin.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -66,6 +64,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QICONENGINEPLUGIN_H diff --git a/src/gui/image/qimage.h b/src/gui/image/qimage.h index bce25c49ea..50d4bc7666 100644 --- a/src/gui/image/qimage.h +++ b/src/gui/image/qimage.h @@ -53,8 +53,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -430,6 +428,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QImage &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QIMAGE_H diff --git a/src/gui/image/qimageiohandler.h b/src/gui/image/qimageiohandler.h index f6d905bc6b..2ba99beab3 100644 --- a/src/gui/image/qimageiohandler.h +++ b/src/gui/image/qimageiohandler.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -142,6 +140,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QImageIOPlugin::Capabilities) QT_END_NAMESPACE -QT_END_HEADER - #endif // QIMAGEIOHANDLER_H diff --git a/src/gui/image/qimagereader.h b/src/gui/image/qimagereader.h index a989ded0db..4f3c93af7d 100644 --- a/src/gui/image/qimagereader.h +++ b/src/gui/image/qimagereader.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -142,6 +140,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QIMAGEREADER_H diff --git a/src/gui/image/qimagewriter.h b/src/gui/image/qimagewriter.h index 7a93f00d8e..3f5cf9c454 100644 --- a/src/gui/image/qimagewriter.h +++ b/src/gui/image/qimagewriter.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -111,6 +109,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QIMAGEWRITER_H diff --git a/src/gui/image/qmovie.h b/src/gui/image/qmovie.h index 60df9199c4..94d7c79e7b 100644 --- a/src/gui/image/qmovie.h +++ b/src/gui/image/qmovie.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -146,8 +144,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_MOVIE #endif // QMOVIE_H diff --git a/src/gui/image/qpicture.h b/src/gui/image/qpicture.h index f0abb50764..08445a3143 100644 --- a/src/gui/image/qpicture.h +++ b/src/gui/image/qpicture.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -193,6 +191,4 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPicture &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QPICTURE_H diff --git a/src/gui/image/qpictureformatplugin.h b/src/gui/image/qpictureformatplugin.h index 16e7feaffe..30989c084c 100644 --- a/src/gui/image/qpictureformatplugin.h +++ b/src/gui/image/qpictureformatplugin.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -76,6 +74,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPICTUREFORMATPLUGIN_H diff --git a/src/gui/image/qpixmap.h b/src/gui/image/qpixmap.h index a25ecb21e4..f1fce03c80 100644 --- a/src/gui/image/qpixmap.h +++ b/src/gui/image/qpixmap.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -245,6 +243,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QPixmap &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QPIXMAP_H diff --git a/src/gui/image/qpixmapcache.h b/src/gui/image/qpixmapcache.h index 7f7db7dc35..83e6610f2a 100644 --- a/src/gui/image/qpixmapcache.h +++ b/src/gui/image/qpixmapcache.h @@ -48,8 +48,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -96,6 +94,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPIXMAPCACHE_H diff --git a/src/gui/image/qplatformpixmap.h b/src/gui/image/qplatformpixmap.h index b6438a95d7..08e03f10bd 100644 --- a/src/gui/image/qplatformpixmap.h +++ b/src/gui/image/qplatformpixmap.h @@ -54,8 +54,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -159,6 +157,4 @@ extern bool qt_xForm_helper(const QTransform&, int, int, int, uchar*, int, int, QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMPIXMAP_H diff --git a/src/gui/itemmodels/qstandarditemmodel.h b/src/gui/itemmodels/qstandarditemmodel.h index b4f03008fd..ef19a03125 100644 --- a/src/gui/itemmodels/qstandarditemmodel.h +++ b/src/gui/itemmodels/qstandarditemmodel.h @@ -50,8 +50,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -453,6 +451,4 @@ Q_GUI_EXPORT QDataStream &operator<<(QDataStream &out, const QStandardItem &item QT_END_NAMESPACE -QT_END_HEADER - #endif //QSTANDARDITEMMODEL_H diff --git a/src/gui/kernel/qclipboard.h b/src/gui/kernel/qclipboard.h index 520d731717..7235a03b6b 100644 --- a/src/gui/kernel/qclipboard.h +++ b/src/gui/kernel/qclipboard.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -112,6 +110,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCLIPBOARD_H diff --git a/src/gui/kernel/qcursor.h b/src/gui/kernel/qcursor.h index d4ca15ff93..016a0ef798 100644 --- a/src/gui/kernel/qcursor.h +++ b/src/gui/kernel/qcursor.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -130,6 +128,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QCursor &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QCURSOR_H diff --git a/src/gui/kernel/qdrag.h b/src/gui/kernel/qdrag.h index abbb382400..553b0e1922 100644 --- a/src/gui/kernel/qdrag.h +++ b/src/gui/kernel/qdrag.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -100,6 +98,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QDRAG_H diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h index e84765cae6..0b4e708bdb 100644 --- a/src/gui/kernel/qevent.h +++ b/src/gui/kernel/qevent.h @@ -58,8 +58,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -909,6 +907,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QEVENT_H diff --git a/src/gui/kernel/qgenericplugin.h b/src/gui/kernel/qgenericplugin.h index 10bde146bd..f00a532283 100644 --- a/src/gui/kernel/qgenericplugin.h +++ b/src/gui/kernel/qgenericplugin.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -68,6 +66,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QGENERICPLUGIN_H diff --git a/src/gui/kernel/qgenericpluginfactory.h b/src/gui/kernel/qgenericpluginfactory.h index 03d688a5c5..2443e670cc 100644 --- a/src/gui/kernel/qgenericpluginfactory.h +++ b/src/gui/kernel/qgenericpluginfactory.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -61,6 +59,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QGENERICPLUGINFACTORY_H diff --git a/src/gui/kernel/qguiapplication.h b/src/gui/kernel/qguiapplication.h index f90321f396..0e9d6f2336 100644 --- a/src/gui/kernel/qguiapplication.h +++ b/src/gui/kernel/qguiapplication.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -187,6 +185,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QGUIAPPLICATION_H diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h index 0946591887..e5f08934c1 100644 --- a/src/gui/kernel/qguiapplication_p.h +++ b/src/gui/kernel/qguiapplication_p.h @@ -65,8 +65,6 @@ #include "private/qshortcutmap_p.h" #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QPlatformIntegration; @@ -293,6 +291,4 @@ Q_GUI_EXPORT bool operator==(const QGuiApplicationPrivate::ActiveTouchPointsKey QT_END_NAMESPACE -QT_END_HEADER - #endif // QGUIAPPLICATION_P_H diff --git a/src/gui/kernel/qinputmethod.h b/src/gui/kernel/qinputmethod.h index 35e29e9cb5..eceebb1c0f 100644 --- a/src/gui/kernel/qinputmethod.h +++ b/src/gui/kernel/qinputmethod.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QInputMethodPrivate; @@ -116,6 +114,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/kernel/qinputmethod_p.h b/src/gui/kernel/qinputmethod_p.h index ab91660e3f..6cfc5e2f88 100644 --- a/src/gui/kernel/qinputmethod_p.h +++ b/src/gui/kernel/qinputmethod_p.h @@ -61,8 +61,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QInputMethodPrivate : public QObjectPrivate @@ -91,6 +89,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/kernel/qkeysequence.h b/src/gui/kernel/qkeysequence.h index dd26efda8e..6324e203f0 100644 --- a/src/gui/kernel/qkeysequence.h +++ b/src/gui/kernel/qkeysequence.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -231,6 +229,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QKEYSEQUENCE_H diff --git a/src/gui/kernel/qopenglcontext.h b/src/gui/kernel/qopenglcontext.h index d6d812a98d..e8d04d7446 100644 --- a/src/gui/kernel/qopenglcontext.h +++ b/src/gui/kernel/qopenglcontext.h @@ -59,8 +59,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QOpenGLContextPrivate; @@ -159,8 +157,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_OPENGL #endif // QGUIGLCONTEXT_H diff --git a/src/gui/kernel/qopenglcontext_p.h b/src/gui/kernel/qopenglcontext_p.h index fb81412b2b..ba5434e8ac 100644 --- a/src/gui/kernel/qopenglcontext_p.h +++ b/src/gui/kernel/qopenglcontext_p.h @@ -64,8 +64,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -259,7 +257,5 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_OPENGL #endif // QOPENGLCONTEXT_P_H diff --git a/src/gui/kernel/qpalette.h b/src/gui/kernel/qpalette.h index 9ea0830442..2248f6727e 100644 --- a/src/gui/kernel/qpalette.h +++ b/src/gui/kernel/qpalette.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -210,6 +208,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QPalette &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QPALETTE_H diff --git a/src/gui/kernel/qplatformclipboard.h b/src/gui/kernel/qplatformclipboard.h index a925b16e9e..3ffc020e8d 100644 --- a/src/gui/kernel/qplatformclipboard.h +++ b/src/gui/kernel/qplatformclipboard.h @@ -57,8 +57,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -76,8 +74,6 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_CLIPBOARD #endif //QPLATFORMCLIPBOARD_H diff --git a/src/gui/kernel/qplatformcursor.h b/src/gui/kernel/qplatformcursor.h index d624a068f1..011209aa3a 100644 --- a/src/gui/kernel/qplatformcursor.h +++ b/src/gui/kernel/qplatformcursor.h @@ -58,8 +58,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -106,6 +104,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMCURSOR_H diff --git a/src/gui/kernel/qplatformdialoghelper.h b/src/gui/kernel/qplatformdialoghelper.h index fe3c5d2b99..ecc00ed8c6 100644 --- a/src/gui/kernel/qplatformdialoghelper.h +++ b/src/gui/kernel/qplatformdialoghelper.h @@ -59,8 +59,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -319,6 +317,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMDIALOGHELPER_H diff --git a/src/gui/kernel/qplatformdrag.h b/src/gui/kernel/qplatformdrag.h index 61ff2dddf6..59f9899f23 100644 --- a/src/gui/kernel/qplatformdrag.h +++ b/src/gui/kernel/qplatformdrag.h @@ -54,8 +54,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #ifndef QT_NO_DRAGANDDROP @@ -118,6 +116,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/kernel/qplatforminputcontext.h b/src/gui/kernel/qplatforminputcontext.h index 2efe9486ca..0e4121eed4 100644 --- a/src/gui/kernel/qplatforminputcontext.h +++ b/src/gui/kernel/qplatforminputcontext.h @@ -53,8 +53,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QPlatformInputContextPrivate; @@ -102,6 +100,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMINPUTCONTEXT_H diff --git a/src/gui/kernel/qplatforminputcontext_p.h b/src/gui/kernel/qplatforminputcontext_p.h index f55acbd79f..29d6e45269 100644 --- a/src/gui/kernel/qplatforminputcontext_p.h +++ b/src/gui/kernel/qplatforminputcontext_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QPlatformInputContextPrivate: public QObjectPrivate @@ -73,6 +71,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/kernel/qplatforminputcontextfactory_p.h b/src/gui/kernel/qplatforminputcontextfactory_p.h index 2e82f7c4d5..2177d7965d 100644 --- a/src/gui/kernel/qplatforminputcontextfactory_p.h +++ b/src/gui/kernel/qplatforminputcontextfactory_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -72,7 +70,5 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMINPUTCONTEXTFACTORY_H diff --git a/src/gui/kernel/qplatforminputcontextplugin_p.h b/src/gui/kernel/qplatforminputcontextplugin_p.h index ac97df15a3..ff79bb94b9 100644 --- a/src/gui/kernel/qplatforminputcontextplugin_p.h +++ b/src/gui/kernel/qplatforminputcontextplugin_p.h @@ -56,8 +56,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -77,6 +75,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMINPUTCONTEXTPLUGIN_H diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h index ee796bf323..0b6cbb5a5c 100644 --- a/src/gui/kernel/qplatformintegration.h +++ b/src/gui/kernel/qplatformintegration.h @@ -55,8 +55,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -154,6 +152,4 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMINTEGRATION_H diff --git a/src/gui/kernel/qplatformintegrationfactory_p.h b/src/gui/kernel/qplatformintegrationfactory_p.h index 859e6f9c4d..fb3ba55316 100644 --- a/src/gui/kernel/qplatformintegrationfactory_p.h +++ b/src/gui/kernel/qplatformintegrationfactory_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -71,7 +69,5 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMINTEGRATIONFACTORY_H diff --git a/src/gui/kernel/qplatformintegrationplugin.h b/src/gui/kernel/qplatformintegrationplugin.h index 4de0d3edc0..434366f0b0 100644 --- a/src/gui/kernel/qplatformintegrationplugin.h +++ b/src/gui/kernel/qplatformintegrationplugin.h @@ -54,8 +54,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -75,6 +73,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMINTEGRATIONPLUGIN_H diff --git a/src/gui/kernel/qplatformmenu.h b/src/gui/kernel/qplatformmenu.h index acaa57f071..e291bfb2ac 100644 --- a/src/gui/kernel/qplatformmenu.h +++ b/src/gui/kernel/qplatformmenu.h @@ -57,8 +57,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QPlatformMenu; @@ -135,7 +133,5 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/kernel/qplatformnativeinterface.h b/src/gui/kernel/qplatformnativeinterface.h index fd892c1e75..eaa24a9e55 100644 --- a/src/gui/kernel/qplatformnativeinterface.h +++ b/src/gui/kernel/qplatformnativeinterface.h @@ -55,8 +55,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -98,6 +96,4 @@ Q_SIGNALS: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMNATIVEINTERFACE_H diff --git a/src/gui/kernel/qplatformopenglcontext.h b/src/gui/kernel/qplatformopenglcontext.h index 6a0c819752..9e13622283 100644 --- a/src/gui/kernel/qplatformopenglcontext.h +++ b/src/gui/kernel/qplatformopenglcontext.h @@ -58,8 +58,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -102,8 +100,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_OPENGL #endif // QPLATFORMOPENGLCONTEXT_H diff --git a/src/gui/kernel/qplatformscreen.h b/src/gui/kernel/qplatformscreen.h index eae9c5a739..085a147e8d 100644 --- a/src/gui/kernel/qplatformscreen.h +++ b/src/gui/kernel/qplatformscreen.h @@ -63,8 +63,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -133,6 +131,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMSCREEN_H diff --git a/src/gui/kernel/qplatformscreen_p.h b/src/gui/kernel/qplatformscreen_p.h index 6914a82a06..588496b494 100644 --- a/src/gui/kernel/qplatformscreen_p.h +++ b/src/gui/kernel/qplatformscreen_p.h @@ -53,8 +53,6 @@ // We mean it. // -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QScreen; @@ -67,6 +65,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMSCREEN_P_H diff --git a/src/gui/kernel/qplatformscreenpageflipper.h b/src/gui/kernel/qplatformscreenpageflipper.h index c6eac28564..232e37d24a 100644 --- a/src/gui/kernel/qplatformscreenpageflipper.h +++ b/src/gui/kernel/qplatformscreenpageflipper.h @@ -53,8 +53,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class Q_GUI_EXPORT QPlatformScreenBuffer { @@ -91,6 +89,4 @@ Q_SIGNALS: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMSCREENPAGEFLIPPER_H diff --git a/src/gui/kernel/qplatformservices.h b/src/gui/kernel/qplatformservices.h index 200298f2ba..609a4a04be 100644 --- a/src/gui/kernel/qplatformservices.h +++ b/src/gui/kernel/qplatformservices.h @@ -53,8 +53,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QUrl; @@ -71,6 +69,5 @@ public: }; QT_END_NAMESPACE -QT_END_HEADER #endif // QPLATFORMSERVICES_H diff --git a/src/gui/kernel/qplatformsharedgraphicscache.h b/src/gui/kernel/qplatformsharedgraphicscache.h index 20a551688f..bb2dfe00e5 100644 --- a/src/gui/kernel/qplatformsharedgraphicscache.h +++ b/src/gui/kernel/qplatformsharedgraphicscache.h @@ -54,8 +54,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class Q_GUI_EXPORT QPlatformSharedGraphicsCache: public QObject @@ -103,6 +101,4 @@ Q_SIGNALS: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMSHAREDGRAPHICSCACHE_H diff --git a/src/gui/kernel/qplatformsurface.h b/src/gui/kernel/qplatformsurface.h index bffb3c5848..18af7927bf 100644 --- a/src/gui/kernel/qplatformsurface.h +++ b/src/gui/kernel/qplatformsurface.h @@ -55,8 +55,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -78,6 +76,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif //QPLATFORMSURFACE_H diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h index 3ac2b904d2..14e2dac19d 100644 --- a/src/gui/kernel/qplatformtheme.h +++ b/src/gui/kernel/qplatformtheme.h @@ -53,8 +53,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QMenu; @@ -277,6 +275,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMTHEME_H diff --git a/src/gui/kernel/qplatformthemefactory_p.h b/src/gui/kernel/qplatformthemefactory_p.h index 632aae86ee..ad954f39b6 100644 --- a/src/gui/kernel/qplatformthemefactory_p.h +++ b/src/gui/kernel/qplatformthemefactory_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -71,6 +69,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMTHEMEFACTORY_H diff --git a/src/gui/kernel/qplatformthemeplugin.h b/src/gui/kernel/qplatformthemeplugin.h index e3f106753a..cef5fb77b4 100644 --- a/src/gui/kernel/qplatformthemeplugin.h +++ b/src/gui/kernel/qplatformthemeplugin.h @@ -54,8 +54,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QPlatformTheme; @@ -74,6 +72,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMTHEMEPLUGIN_H diff --git a/src/gui/kernel/qplatformwindow.h b/src/gui/kernel/qplatformwindow.h index d435198349..2fa5d3ed0b 100644 --- a/src/gui/kernel/qplatformwindow.h +++ b/src/gui/kernel/qplatformwindow.h @@ -59,8 +59,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -138,5 +136,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER #endif //QPLATFORMWINDOW_H diff --git a/src/gui/kernel/qplatformwindow_p.h b/src/gui/kernel/qplatformwindow_p.h index 24e18ca379..ac47afb6f1 100644 --- a/src/gui/kernel/qplatformwindow_p.h +++ b/src/gui/kernel/qplatformwindow_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QPlatformWindowPrivate @@ -67,6 +65,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMWINDOW_P_H diff --git a/src/gui/kernel/qscreen.h b/src/gui/kernel/qscreen.h index 557cd019a3..9fe4379646 100644 --- a/src/gui/kernel/qscreen.h +++ b/src/gui/kernel/qscreen.h @@ -52,8 +52,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -160,7 +158,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSCREEN_H diff --git a/src/gui/kernel/qscreen_p.h b/src/gui/kernel/qscreen_p.h index 7b26159c20..3e5feb2932 100644 --- a/src/gui/kernel/qscreen_p.h +++ b/src/gui/kernel/qscreen_p.h @@ -58,8 +58,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QScreenPrivate : public QObjectPrivate @@ -98,6 +96,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSCREEN_P_H diff --git a/src/gui/kernel/qsessionmanager.h b/src/gui/kernel/qsessionmanager.h index 4eac11e403..a1cd8741d2 100644 --- a/src/gui/kernel/qsessionmanager.h +++ b/src/gui/kernel/qsessionmanager.h @@ -49,8 +49,6 @@ #ifndef QT_NO_SESSIONMANAGER -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -101,8 +99,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_SESSIONMANAGER #endif // QSESSIONMANAGER_H diff --git a/src/gui/kernel/qstylehints.h b/src/gui/kernel/qstylehints.h index c9c8185b9a..7a447aae67 100644 --- a/src/gui/kernel/qstylehints.h +++ b/src/gui/kernel/qstylehints.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -74,6 +72,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/kernel/qsurface.h b/src/gui/kernel/qsurface.h index 36d85342c5..a2589c733b 100644 --- a/src/gui/kernel/qsurface.h +++ b/src/gui/kernel/qsurface.h @@ -47,8 +47,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -89,6 +87,4 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif //QSURFACE_H diff --git a/src/gui/kernel/qsurfaceformat.h b/src/gui/kernel/qsurfaceformat.h index 8ab89225de..69dece0941 100644 --- a/src/gui/kernel/qsurfaceformat.h +++ b/src/gui/kernel/qsurfaceformat.h @@ -43,8 +43,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -156,6 +154,4 @@ inline bool QSurfaceFormat::stereo() const QT_END_NAMESPACE -QT_END_HEADER - #endif //QSURFACEFORMAT_H diff --git a/src/gui/kernel/qtouchdevice.h b/src/gui/kernel/qtouchdevice.h index d9892bfbd3..312bdce3e6 100644 --- a/src/gui/kernel/qtouchdevice.h +++ b/src/gui/kernel/qtouchdevice.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -90,6 +88,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QTouchDevice::Capabilities) QT_END_NAMESPACE -QT_END_HEADER - #endif // QTOUCHDEVICE_H diff --git a/src/gui/kernel/qtouchdevice_p.h b/src/gui/kernel/qtouchdevice_p.h index a358d77e92..435f8a5c37 100644 --- a/src/gui/kernel/qtouchdevice_p.h +++ b/src/gui/kernel/qtouchdevice_p.h @@ -56,8 +56,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -79,6 +77,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTOUCHDEVICE_P_H diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index 478262da3f..e304fd4c4f 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -59,8 +59,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -335,6 +333,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWINDOW_H diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h index dd526cb505..a5c26e380e 100644 --- a/src/gui/kernel/qwindow_p.h +++ b/src/gui/kernel/qwindow_p.h @@ -59,8 +59,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #define QWINDOWSIZE_MAX ((1<<24)-1) @@ -162,6 +160,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWINDOW_P_H diff --git a/src/gui/kernel/qwindowdefs.h b/src/gui/kernel/qwindowdefs.h index 9aaca3ff60..42f4bc7c9b 100644 --- a/src/gui/kernel/qwindowdefs.h +++ b/src/gui/kernel/qwindowdefs.h @@ -46,7 +46,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -88,7 +87,6 @@ typedef QList QWidgetList; typedef QList QWindowList; QT_END_NAMESPACE -QT_END_HEADER // Window system dependent definitions @@ -104,7 +102,6 @@ typedef QT_PREPEND_NAMESPACE(quintptr) WId; -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE template class QHash; @@ -114,7 +111,6 @@ template class QSet; typedef QSet QWidgetSet; QT_END_NAMESPACE -QT_END_HEADER #if defined(QT_NEEDS_QMAIN) #define main qMain diff --git a/src/gui/kernel/qwindowdefs_win.h b/src/gui/kernel/qwindowdefs_win.h index 8f551900ae..fea995a0f5 100644 --- a/src/gui/kernel/qwindowdefs_win.h +++ b/src/gui/kernel/qwindowdefs_win.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -124,6 +122,4 @@ Q_WIDGETS_EXPORT HDC qt_win_display_dc(); QT_END_NAMESPACE -QT_END_HEADER - #endif // QWINDOWDEFS_WIN_H diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h index 5715b69ee5..7582f092a3 100644 --- a/src/gui/kernel/qwindowsysteminterface.h +++ b/src/gui/kernel/qwindowsysteminterface.h @@ -62,8 +62,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QMimeData; @@ -192,5 +190,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER + #endif // QWINDOWSYSTEMINTERFACE_H diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h index 4131568461..6c12877035 100644 --- a/src/gui/kernel/qwindowsysteminterface_p.h +++ b/src/gui/kernel/qwindowsysteminterface_p.h @@ -59,8 +59,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class Q_GUI_EXPORT QWindowSystemInterfacePrivate { @@ -424,7 +422,6 @@ public: static QList convertTouchPoints(const QList &points, QEvent::Type *type); }; -QT_END_HEADER QT_END_NAMESPACE #endif // QWINDOWSYSTEMINTERFACE_P_H diff --git a/src/gui/math3d/qgenericmatrix.h b/src/gui/math3d/qgenericmatrix.h index 911e7f036c..c243647d33 100644 --- a/src/gui/math3d/qgenericmatrix.h +++ b/src/gui/math3d/qgenericmatrix.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -401,6 +399,4 @@ Q_DECLARE_METATYPE(QMatrix3x4) Q_DECLARE_METATYPE(QMatrix4x2) Q_DECLARE_METATYPE(QMatrix4x3) -QT_END_HEADER - #endif diff --git a/src/gui/math3d/qmatrix4x4.h b/src/gui/math3d/qmatrix4x4.h index d41602f0cb..d4ba7d64d8 100644 --- a/src/gui/math3d/qmatrix4x4.h +++ b/src/gui/math3d/qmatrix4x4.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -1119,6 +1117,4 @@ QT_DEPRECATED QGenericMatrix qGenericMatrixFromMatrix4x4(const QMat QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/math3d/qquaternion.h b/src/gui/math3d/qquaternion.h index 13fbac8f4a..c12b0f4fec 100644 --- a/src/gui/math3d/qquaternion.h +++ b/src/gui/math3d/qquaternion.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -324,6 +322,4 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QQuaternion &); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/math3d/qvector2d.h b/src/gui/math3d/qvector2d.h index 9ac738fa2d..647e5e36f2 100644 --- a/src/gui/math3d/qvector2d.h +++ b/src/gui/math3d/qvector2d.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -252,6 +250,4 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QVector2D &); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/math3d/qvector3d.h b/src/gui/math3d/qvector3d.h index 28700d7d97..879b2125ea 100644 --- a/src/gui/math3d/qvector3d.h +++ b/src/gui/math3d/qvector3d.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -276,6 +274,4 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QVector3D &); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/math3d/qvector4d.h b/src/gui/math3d/qvector4d.h index 5acd1d3f48..4bd3822133 100644 --- a/src/gui/math3d/qvector4d.h +++ b/src/gui/math3d/qvector4d.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -281,6 +279,4 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QVector4D &); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h index ba421bd1c1..adb8cbd962 100644 --- a/src/gui/opengl/qopengl.h +++ b/src/gui/opengl/qopengl.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - #if defined(QT_OPENGL_ES_2) # if defined(Q_OS_MAC) # include @@ -112,8 +110,6 @@ QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_OPENGL #endif // QOPENGL_H diff --git a/src/gui/opengl/qopengl_p.h b/src/gui/opengl/qopengl_p.h index 84245fb670..777791e32b 100644 --- a/src/gui/opengl/qopengl_p.h +++ b/src/gui/opengl/qopengl_p.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QOpenGLExtensionMatcher @@ -68,6 +66,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QOPENGL_H diff --git a/src/gui/opengl/qopenglbuffer.h b/src/gui/opengl/qopenglbuffer.h index 5ce8c3db49..014060086d 100644 --- a/src/gui/opengl/qopenglbuffer.h +++ b/src/gui/opengl/qopenglbuffer.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -128,8 +126,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_OPENGL #endif diff --git a/src/gui/opengl/qopenglcustomshaderstage_p.h b/src/gui/opengl/qopenglcustomshaderstage_p.h index 2accb03fa3..bb671b0d3b 100644 --- a/src/gui/opengl/qopenglcustomshaderstage_p.h +++ b/src/gui/opengl/qopenglcustomshaderstage_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -87,7 +85,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/opengl/qopenglengineshadermanager_p.h b/src/gui/opengl/qopenglengineshadermanager_p.h index 462ffbf703..49c03a7fee 100644 --- a/src/gui/opengl/qopenglengineshadermanager_p.h +++ b/src/gui/opengl/qopenglengineshadermanager_p.h @@ -228,8 +228,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -508,6 +506,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif //QOPENGLENGINE_SHADER_MANAGER_H diff --git a/src/gui/opengl/qopenglengineshadersource_p.h b/src/gui/opengl/qopenglengineshadersource_p.h index f1b1dbe5a6..869bd057f2 100644 --- a/src/gui/opengl/qopenglengineshadersource_p.h +++ b/src/gui/opengl/qopenglengineshadersource_p.h @@ -56,8 +56,6 @@ #include "qopenglengineshadermanager_p.h" -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -523,6 +521,4 @@ static const char* const qopenglslRgbMaskFragmentShaderPass2 = "\n\ QT_END_NAMESPACE -QT_END_HEADER - #endif // GLGC_SHADER_SOURCE_H diff --git a/src/gui/opengl/qopenglextensions_p.h b/src/gui/opengl/qopenglextensions_p.h index a4e473c049..265771ce1b 100644 --- a/src/gui/opengl/qopenglextensions_p.h +++ b/src/gui/opengl/qopenglextensions_p.h @@ -55,8 +55,6 @@ #include "qopenglfunctions.h" -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -193,6 +191,4 @@ inline void QOpenGLExtensions::glGetBufferSubData(GLenum target, qopengl_GLintpt QT_END_NAMESPACE -QT_END_HEADER - #endif // QOPENGL_EXTENSIONS_P_H diff --git a/src/gui/opengl/qopenglframebufferobject.h b/src/gui/opengl/qopenglframebufferobject.h index 9dbef318f0..e4fd7c8e95 100644 --- a/src/gui/opengl/qopenglframebufferobject.h +++ b/src/gui/opengl/qopenglframebufferobject.h @@ -49,8 +49,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -161,8 +159,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_OPENGL #endif // QOPENGLFRAMEBUFFEROBJECT_H diff --git a/src/gui/opengl/qopenglfunctions.h b/src/gui/opengl/qopenglfunctions.h index 5f3b63d0a0..100e3751be 100644 --- a/src/gui/opengl/qopenglfunctions.h +++ b/src/gui/opengl/qopenglfunctions.h @@ -71,8 +71,6 @@ #define Q_OPENGL_FUNCTIONS_DEBUG #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -1520,8 +1518,6 @@ inline void QOpenGLFunctions::glVertexAttribPointer(GLuint indx, GLint size, GLe QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_OPENGL #endif diff --git a/src/gui/opengl/qopenglpaintdevice.h b/src/gui/opengl/qopenglpaintdevice.h index 66850c73fc..731000f131 100644 --- a/src/gui/opengl/qopenglpaintdevice.h +++ b/src/gui/opengl/qopenglpaintdevice.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -91,8 +89,6 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_OPENGL #endif // QOPENGLPAINTDEVICE_H diff --git a/src/gui/opengl/qopenglshadercache_meego_p.h b/src/gui/opengl/qopenglshadercache_meego_p.h index 3d62d79ee7..d1c14150d1 100644 --- a/src/gui/opengl/qopenglshadercache_meego_p.h +++ b/src/gui/opengl/qopenglshadercache_meego_p.h @@ -68,8 +68,6 @@ # include #endif -QT_BEGIN_HEADER - /* This cache stores internal Qt shader programs in shared memory. @@ -450,7 +448,5 @@ QT_END_NAMESPACE #endif -QT_END_HEADER - #endif #endif diff --git a/src/gui/opengl/qopenglshadercache_p.h b/src/gui/opengl/qopenglshadercache_p.h index 0e0b6c3735..17305539df 100644 --- a/src/gui/opengl/qopenglshadercache_p.h +++ b/src/gui/opengl/qopenglshadercache_p.h @@ -59,8 +59,6 @@ # include "qopenglshadercache_meego_p.h" #else -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -91,7 +89,5 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif #endif diff --git a/src/gui/opengl/qopenglshaderprogram.h b/src/gui/opengl/qopenglshaderprogram.h index cd05d0f96b..f371326239 100644 --- a/src/gui/opengl/qopenglshaderprogram.h +++ b/src/gui/opengl/qopenglshaderprogram.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -293,8 +291,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_OPENGL #endif diff --git a/src/gui/painting/qbackingstore.h b/src/gui/painting/qbackingstore.h index 2a3f91246b..65efab2f48 100644 --- a/src/gui/painting/qbackingstore.h +++ b/src/gui/painting/qbackingstore.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -93,6 +91,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QBACKINGSTORE_H diff --git a/src/gui/painting/qbrush.h b/src/gui/painting/qbrush.h index 294e0b7931..6a89db6a52 100644 --- a/src/gui/painting/qbrush.h +++ b/src/gui/painting/qbrush.h @@ -61,8 +61,6 @@ # endif #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -326,6 +324,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QBRUSH_H diff --git a/src/gui/painting/qcolor.h b/src/gui/painting/qcolor.h index cd65984f4e..5bd879ed63 100644 --- a/src/gui/painting/qcolor.h +++ b/src/gui/painting/qcolor.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -276,6 +274,4 @@ inline QColor QColor::darker(int f) const QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOLOR_H diff --git a/src/gui/painting/qcosmeticstroker_p.h b/src/gui/painting/qcosmeticstroker_p.h index 136b014424..fb37b70ba5 100644 --- a/src/gui/painting/qcosmeticstroker_p.h +++ b/src/gui/painting/qcosmeticstroker_p.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -155,6 +153,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOSMETICLINE_H diff --git a/src/gui/painting/qemulationpaintengine_p.h b/src/gui/painting/qemulationpaintengine_p.h index f706ef3705..72093a3612 100644 --- a/src/gui/painting/qemulationpaintengine_p.h +++ b/src/gui/painting/qemulationpaintengine_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -107,6 +105,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/painting/qmatrix.h b/src/gui/painting/qmatrix.h index 672bbdcfd1..d2c1ae3a3c 100644 --- a/src/gui/painting/qmatrix.h +++ b/src/gui/painting/qmatrix.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -185,6 +183,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QMatrix &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QMATRIX_H diff --git a/src/gui/painting/qpagedpaintdevice.h b/src/gui/painting/qpagedpaintdevice.h index 02ed2583ee..aa8506492f 100644 --- a/src/gui/painting/qpagedpaintdevice.h +++ b/src/gui/painting/qpagedpaintdevice.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -87,6 +85,4 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/painting/qpaintdevice.h b/src/gui/painting/qpaintdevice.h index 1a638ffeba..1529b701cf 100644 --- a/src/gui/painting/qpaintdevice.h +++ b/src/gui/painting/qpaintdevice.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -120,6 +118,4 @@ inline bool QPaintDevice::paintingActive() const QT_END_NAMESPACE -QT_END_HEADER - #endif // QPAINTDEVICE_H diff --git a/src/gui/painting/qpaintengine.h b/src/gui/painting/qpaintengine.h index 85f4d2159e..b3e3762cc8 100644 --- a/src/gui/painting/qpaintengine.h +++ b/src/gui/painting/qpaintengine.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -348,6 +346,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QPaintEngine::DirtyFlags) QT_END_NAMESPACE -QT_END_HEADER - #endif // QPAINTENGINE_H diff --git a/src/gui/painting/qpaintengineex_p.h b/src/gui/painting/qpaintengineex_p.h index 4b578d8f97..5a9df72c76 100644 --- a/src/gui/painting/qpaintengineex_p.h +++ b/src/gui/painting/qpaintengineex_p.h @@ -61,8 +61,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -192,6 +190,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h index 9f390b9865..874b244bd6 100644 --- a/src/gui/painting/qpainter.h +++ b/src/gui/painting/qpainter.h @@ -60,8 +60,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -932,6 +930,4 @@ inline void QPainter::drawPicture(const QPoint &pt, const QPicture &p) QT_END_NAMESPACE -QT_END_HEADER - #endif // QPAINTER_H diff --git a/src/gui/painting/qpainterpath.h b/src/gui/painting/qpainterpath.h index 7c3365875e..e22c1729f3 100644 --- a/src/gui/painting/qpainterpath.h +++ b/src/gui/painting/qpainterpath.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -375,6 +373,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QPainterPath &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QPAINTERPATH_H diff --git a/src/gui/painting/qpathclipper_p.h b/src/gui/painting/qpathclipper_p.h index 4ab2b9d88a..45cce640c5 100644 --- a/src/gui/painting/qpathclipper_p.h +++ b/src/gui/painting/qpathclipper_p.h @@ -60,8 +60,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -488,6 +486,4 @@ inline QPathEdge::Direction QWingedEdge::flip(QPathEdge::Direction direction) QT_END_NAMESPACE -QT_END_HEADER - #endif // QPATHCLIPPER_P_H diff --git a/src/gui/painting/qpdfwriter.h b/src/gui/painting/qpdfwriter.h index 792aeefad1..45bb5ad4b4 100644 --- a/src/gui/painting/qpdfwriter.h +++ b/src/gui/painting/qpdfwriter.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -85,6 +83,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/painting/qpen.h b/src/gui/painting/qpen.h index 3e5e258123..c5144f784f 100644 --- a/src/gui/painting/qpen.h +++ b/src/gui/painting/qpen.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -139,6 +137,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QPen &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QPEN_H diff --git a/src/gui/painting/qplatformbackingstore.h b/src/gui/painting/qplatformbackingstore.h index 0429ec7e89..1b19b2c379 100644 --- a/src/gui/painting/qplatformbackingstore.h +++ b/src/gui/painting/qplatformbackingstore.h @@ -56,8 +56,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -95,6 +93,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMBACKINGSTORE_H diff --git a/src/gui/painting/qpolygon.h b/src/gui/painting/qpolygon.h index 32de4ddd65..1039e842ab 100644 --- a/src/gui/painting/qpolygon.h +++ b/src/gui/painting/qpolygon.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -185,6 +183,4 @@ inline QPolygonF QPolygonF::translated(qreal dx, qreal dy) const QT_END_NAMESPACE -QT_END_HEADER - #endif // QPOLYGON_H diff --git a/src/gui/painting/qregion.h b/src/gui/painting/qregion.h index dee996c523..0e436e3fb4 100644 --- a/src/gui/painting/qregion.h +++ b/src/gui/painting/qregion.h @@ -50,8 +50,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -173,6 +171,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QRegion &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QREGION_H diff --git a/src/gui/painting/qrgb.h b/src/gui/painting/qrgb.h index 06c479e5cd..834ebec5a9 100644 --- a/src/gui/painting/qrgb.h +++ b/src/gui/painting/qrgb.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -82,6 +80,4 @@ inline bool qIsGray(QRgb rgb) QT_END_NAMESPACE -QT_END_HEADER - #endif // QRGB_H diff --git a/src/gui/painting/qtransform.h b/src/gui/painting/qtransform.h index f98642cd98..22fc82bb58 100644 --- a/src/gui/painting/qtransform.h +++ b/src/gui/painting/qtransform.h @@ -54,8 +54,6 @@ # undef m_type #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -389,6 +387,4 @@ inline QTransform operator -(const QTransform &a, qreal n) QT_END_NAMESPACE -QT_END_HEADER - #endif // QTRANSFORM_H diff --git a/src/gui/painting/qvectorpath_p.h b/src/gui/painting/qvectorpath_p.h index f8ba02dc79..e97d6e1dce 100644 --- a/src/gui/painting/qvectorpath_p.h +++ b/src/gui/painting/qvectorpath_p.h @@ -60,8 +60,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -187,6 +185,4 @@ Q_GUI_EXPORT const QVectorPath &qtVectorPathForPath(const QPainterPath &path); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/text/qabstracttextdocumentlayout.h b/src/gui/text/qabstracttextdocumentlayout.h index 4979c3b03b..95733f5da7 100644 --- a/src/gui/text/qabstracttextdocumentlayout.h +++ b/src/gui/text/qabstracttextdocumentlayout.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -144,6 +142,4 @@ Q_DECLARE_INTERFACE(QTextObjectInterface, "org.qt-project.Qt.QTextObjectInterfac QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTTEXTDOCUMENTLAYOUT_H diff --git a/src/gui/text/qfont.h b/src/gui/text/qfont.h index c59b222ccc..24a1c4c7c3 100644 --- a/src/gui/text/qfont.h +++ b/src/gui/text/qfont.h @@ -47,8 +47,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -350,6 +348,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QFont &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QFONT_H diff --git a/src/gui/text/qfontdatabase.h b/src/gui/text/qfontdatabase.h index 373ff5e950..05f1a85f24 100644 --- a/src/gui/text/qfontdatabase.h +++ b/src/gui/text/qfontdatabase.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -166,6 +164,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QFONTDATABASE_H diff --git a/src/gui/text/qfontengine_qpa_p.h b/src/gui/text/qfontengine_qpa_p.h index 161b11e2d5..5fbdafdf56 100644 --- a/src/gui/text/qfontengine_qpa_p.h +++ b/src/gui/text/qfontengine_qpa_p.h @@ -61,8 +61,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QFontEngine; @@ -268,6 +266,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QFONTENGINE_QPA_P_H diff --git a/src/gui/text/qfontinfo.h b/src/gui/text/qfontinfo.h index c9cc42ead5..efa8f6ef61 100644 --- a/src/gui/text/qfontinfo.h +++ b/src/gui/text/qfontinfo.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -87,6 +85,4 @@ Q_DECLARE_SHARED(QFontInfo) QT_END_NAMESPACE -QT_END_HEADER - #endif // QFONTINFO_H diff --git a/src/gui/text/qfontmetrics.h b/src/gui/text/qfontmetrics.h index ab7437b6fb..00b38eb674 100644 --- a/src/gui/text/qfontmetrics.h +++ b/src/gui/text/qfontmetrics.h @@ -48,8 +48,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -191,6 +189,4 @@ Q_DECLARE_SHARED(QFontMetricsF) QT_END_NAMESPACE -QT_END_HEADER - #endif // QFONTMETRICS_H diff --git a/src/gui/text/qglyphrun.h b/src/gui/text/qglyphrun.h index 43743d8a99..435379085e 100644 --- a/src/gui/text/qglyphrun.h +++ b/src/gui/text/qglyphrun.h @@ -49,8 +49,6 @@ #if !defined(QT_NO_RAWFONT) -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -130,8 +128,6 @@ Q_DECLARE_SHARED(QGlyphRun) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_RAWFONT #endif // QGLYPHRUN_H diff --git a/src/gui/text/qglyphrun_p.h b/src/gui/text/qglyphrun_p.h index c70aa91db1..2e209a3429 100644 --- a/src/gui/text/qglyphrun_p.h +++ b/src/gui/text/qglyphrun_p.h @@ -60,8 +60,6 @@ #if !defined(QT_NO_RAWFONT) -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QGlyphRunPrivate: public QSharedData @@ -111,8 +109,6 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_RAWFONT #endif // QGLYPHRUN_P_H diff --git a/src/gui/text/qplatformfontdatabase.h b/src/gui/text/qplatformfontdatabase.h index 0c876505fb..4b20677cbb 100644 --- a/src/gui/text/qplatformfontdatabase.h +++ b/src/gui/text/qplatformfontdatabase.h @@ -59,8 +59,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -125,6 +123,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMFONTDATABASE_H diff --git a/src/gui/text/qrawfont.h b/src/gui/text/qrawfont.h index 9a8af41437..9fee7f1e44 100644 --- a/src/gui/text/qrawfont.h +++ b/src/gui/text/qrawfont.h @@ -53,8 +53,6 @@ #if !defined(QT_NO_RAWFONT) -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -157,8 +155,6 @@ inline QVector QRawFont::advancesForGlyphIndexes(const QVector QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_RAWFONT #endif // QRAWFONT_H diff --git a/src/gui/text/qstatictext.h b/src/gui/text/qstatictext.h index f11e7403fc..60fa82712b 100644 --- a/src/gui/text/qstatictext.h +++ b/src/gui/text/qstatictext.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -107,6 +105,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QStaticText) -QT_END_HEADER - #endif // QSTATICTEXT_H diff --git a/src/gui/text/qsyntaxhighlighter.h b/src/gui/text/qsyntaxhighlighter.h index 0bd81c4273..8af35a1345 100644 --- a/src/gui/text/qsyntaxhighlighter.h +++ b/src/gui/text/qsyntaxhighlighter.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -102,8 +100,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_SYNTAXHIGHLIGHTER #endif // QSYNTAXHIGHLIGHTER_H diff --git a/src/gui/text/qtextcursor.h b/src/gui/text/qtextcursor.h index b302fc220c..560e80d174 100644 --- a/src/gui/text/qtextcursor.h +++ b/src/gui/text/qtextcursor.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -239,6 +237,4 @@ Q_DECLARE_SHARED(QTextCursor) QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTCURSOR_H diff --git a/src/gui/text/qtextdocument.h b/src/gui/text/qtextdocument.h index 7176cb8d12..9d9cbcf6c1 100644 --- a/src/gui/text/qtextdocument.h +++ b/src/gui/text/qtextdocument.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -296,6 +294,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QTextDocument::FindFlags) QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTDOCUMENT_H diff --git a/src/gui/text/qtextdocumentfragment.h b/src/gui/text/qtextdocumentfragment.h index f474541c1b..fe9fbffa56 100644 --- a/src/gui/text/qtextdocumentfragment.h +++ b/src/gui/text/qtextdocumentfragment.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -85,6 +83,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTDOCUMENTFRAGMENT_H diff --git a/src/gui/text/qtextdocumentwriter.h b/src/gui/text/qtextdocumentwriter.h index 7fe82ac919..7fba23139b 100644 --- a/src/gui/text/qtextdocumentwriter.h +++ b/src/gui/text/qtextdocumentwriter.h @@ -43,8 +43,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -87,6 +85,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/gui/text/qtextformat.h b/src/gui/text/qtextformat.h index bdecdad66a..2098369811 100644 --- a/src/gui/text/qtextformat.h +++ b/src/gui/text/qtextformat.h @@ -51,8 +51,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -1009,6 +1007,4 @@ inline void QTextTableCellFormat::setPadding(qreal padding) QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTFORMAT_H diff --git a/src/gui/text/qtextlayout.h b/src/gui/text/qtextlayout.h index f1a027ade4..8a26fed924 100644 --- a/src/gui/text/qtextlayout.h +++ b/src/gui/text/qtextlayout.h @@ -52,8 +52,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -266,6 +264,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTLAYOUT_H diff --git a/src/gui/text/qtextlist.h b/src/gui/text/qtextlist.h index 4aebd1ed0c..1fcc99d963 100644 --- a/src/gui/text/qtextlist.h +++ b/src/gui/text/qtextlist.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -88,6 +86,4 @@ inline void QTextList::setFormat(const QTextListFormat &aformat) QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTLIST_H diff --git a/src/gui/text/qtextobject.h b/src/gui/text/qtextobject.h index 08eaf943a5..87f2cf6197 100644 --- a/src/gui/text/qtextobject.h +++ b/src/gui/text/qtextobject.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -329,6 +327,4 @@ Q_DECLARE_TYPEINFO(QTextFragment, Q_MOVABLE_TYPE); QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTOBJECT_H diff --git a/src/gui/text/qtextoption.h b/src/gui/text/qtextoption.h index 0030fabe40..a6818eb79a 100644 --- a/src/gui/text/qtextoption.h +++ b/src/gui/text/qtextoption.h @@ -47,8 +47,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -157,6 +155,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE( QTextOption::Tab ) -QT_END_HEADER - #endif // QTEXTOPTION_H diff --git a/src/gui/text/qtexttable.h b/src/gui/text/qtexttable.h index 6dddda210f..9da205af7f 100644 --- a/src/gui/text/qtexttable.h +++ b/src/gui/text/qtexttable.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -139,6 +137,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTTABLE_H diff --git a/src/gui/util/qdesktopservices.h b/src/gui/util/qdesktopservices.h index 15139ea7b7..9b1d71052c 100644 --- a/src/gui/util/qdesktopservices.h +++ b/src/gui/util/qdesktopservices.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -94,7 +92,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QDESKTOPSERVICES_H diff --git a/src/gui/util/qvalidator.h b/src/gui/util/qvalidator.h index 8aba8ccfc3..386af1bc74 100644 --- a/src/gui/util/qvalidator.h +++ b/src/gui/util/qvalidator.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -232,6 +230,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QVALIDATOR_H diff --git a/src/network/access/qabstractnetworkcache.h b/src/network/access/qabstractnetworkcache.h index 6a4d36ced3..b9a086f047 100644 --- a/src/network/access/qabstractnetworkcache.h +++ b/src/network/access/qabstractnetworkcache.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -141,6 +139,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/network/access/qftp_p.h b/src/network/access/qftp_p.h index d87a743036..ee5d124650 100644 --- a/src/network/access/qftp_p.h +++ b/src/network/access/qftp_p.h @@ -57,8 +57,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -176,6 +174,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QFTP_H diff --git a/src/network/access/qhttpmultipart.h b/src/network/access/qhttpmultipart.h index 9913b64de6..71075ad2f3 100644 --- a/src/network/access/qhttpmultipart.h +++ b/src/network/access/qhttpmultipart.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -119,6 +117,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QHTTPMULTIPART_H diff --git a/src/network/access/qnetworkaccessmanager.h b/src/network/access/qnetworkaccessmanager.h index af5f6933a4..0caba127fc 100644 --- a/src/network/access/qnetworkaccessmanager.h +++ b/src/network/access/qnetworkaccessmanager.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -170,6 +168,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/network/access/qnetworkcookie.h b/src/network/access/qnetworkcookie.h index e7f6c8fe3f..2a4e686b2c 100644 --- a/src/network/access/qnetworkcookie.h +++ b/src/network/access/qnetworkcookie.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -121,6 +119,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QNetworkCookie) -QT_END_HEADER - #endif diff --git a/src/network/access/qnetworkcookiejar.h b/src/network/access/qnetworkcookiejar.h index 7868e1fc04..3c787c5dd8 100644 --- a/src/network/access/qnetworkcookiejar.h +++ b/src/network/access/qnetworkcookiejar.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -79,6 +77,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/network/access/qnetworkdiskcache.h b/src/network/access/qnetworkdiskcache.h index 1d5f293a2c..20a412c96e 100644 --- a/src/network/access/qnetworkdiskcache.h +++ b/src/network/access/qnetworkdiskcache.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -91,6 +89,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QNETWORKDISKCACHE_H diff --git a/src/network/access/qnetworkreply.h b/src/network/access/qnetworkreply.h index 8e770bc96b..39901aafb6 100644 --- a/src/network/access/qnetworkreply.h +++ b/src/network/access/qnetworkreply.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -182,6 +180,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QNetworkReply::NetworkError) -QT_END_HEADER - #endif diff --git a/src/network/access/qnetworkrequest.h b/src/network/access/qnetworkrequest.h index 0d3c72d18a..1512c6dadd 100644 --- a/src/network/access/qnetworkrequest.h +++ b/src/network/access/qnetworkrequest.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -159,6 +157,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QNetworkRequest) -QT_END_HEADER - #endif diff --git a/src/network/bearer/qbearerplugin_p.h b/src/network/bearer/qbearerplugin_p.h index cd646d61a5..7b4611074b 100644 --- a/src/network/bearer/qbearerplugin_p.h +++ b/src/network/bearer/qbearerplugin_p.h @@ -60,8 +60,6 @@ #ifndef QT_NO_BEARERMANAGEMENT -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -79,8 +77,6 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_BEARERMANAGEMENT #endif // QBEARERPLUGIN_P_H diff --git a/src/network/bearer/qnetworkconfigmanager.h b/src/network/bearer/qnetworkconfigmanager.h index c1b3b57825..62b93b19c1 100644 --- a/src/network/bearer/qnetworkconfigmanager.h +++ b/src/network/bearer/qnetworkconfigmanager.h @@ -47,8 +47,6 @@ #ifndef QT_NO_BEARERMANAGEMENT -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QNetworkConfigurationManagerPrivate; @@ -98,8 +96,6 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QNetworkConfigurationManager::Capabilities) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_BEARERMANAGEMENT #endif // QNETWORKCONFIGMANAGER_H diff --git a/src/network/bearer/qnetworkconfiguration.h b/src/network/bearer/qnetworkconfiguration.h index 97fb1d270b..25dafcb282 100644 --- a/src/network/bearer/qnetworkconfiguration.h +++ b/src/network/bearer/qnetworkconfiguration.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QNetworkConfigurationPrivate; @@ -130,6 +128,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QNetworkConfiguration) -QT_END_HEADER - #endif // QNETWORKCONFIGURATION_H diff --git a/src/network/bearer/qnetworksession.h b/src/network/bearer/qnetworksession.h index 94ab133040..1a76b232e7 100644 --- a/src/network/bearer/qnetworksession.h +++ b/src/network/bearer/qnetworksession.h @@ -54,8 +54,6 @@ #undef interface #endif -QT_BEGIN_HEADER - #include QT_BEGIN_NAMESPACE @@ -148,8 +146,6 @@ Q_DECLARE_METATYPE(QNetworkSession::State) Q_DECLARE_METATYPE(QNetworkSession::SessionError) Q_DECLARE_METATYPE(QNetworkSession::UsagePolicies) -QT_END_HEADER - #endif // QT_NO_BEARERMANAGEMENT #endif // QNETWORKSESSION_H diff --git a/src/network/kernel/qauthenticator.h b/src/network/kernel/qauthenticator.h index 7d199d1dce..b784cd7f50 100644 --- a/src/network/kernel/qauthenticator.h +++ b/src/network/kernel/qauthenticator.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -86,6 +84,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/network/kernel/qdnslookup.h b/src/network/kernel/qdnslookup.h index 5218c2618a..1df21d866e 100644 --- a/src/network/kernel/qdnslookup.h +++ b/src/network/kernel/qdnslookup.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QHostAddress; @@ -248,6 +246,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QDNSLOOKUP_H diff --git a/src/network/kernel/qhostaddress.h b/src/network/kernel/qhostaddress.h index 0e50a677ed..77a2ec4105 100644 --- a/src/network/kernel/qhostaddress.h +++ b/src/network/kernel/qhostaddress.h @@ -49,8 +49,6 @@ struct sockaddr; -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -142,5 +140,4 @@ Q_NETWORK_EXPORT QDataStream &operator>>(QDataStream &, QHostAddress &); QT_END_NAMESPACE -QT_END_HEADER #endif // QHOSTADDRESS_H diff --git a/src/network/kernel/qhostinfo.h b/src/network/kernel/qhostinfo.h index 89cc5ba26b..38d55def34 100644 --- a/src/network/kernel/qhostinfo.h +++ b/src/network/kernel/qhostinfo.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -98,6 +96,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QHostInfo) -QT_END_HEADER - #endif // QHOSTINFO_H diff --git a/src/network/kernel/qnetworkfunctions_wince.h b/src/network/kernel/qnetworkfunctions_wince.h index 858600bcca..ccf1ed9e38 100644 --- a/src/network/kernel/qnetworkfunctions_wince.h +++ b/src/network/kernel/qnetworkfunctions_wince.h @@ -50,8 +50,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE DECLARE_HANDLE(SC_HANDLE); @@ -96,7 +94,5 @@ typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS; QT_END_NAMESPACE -QT_END_HEADER - #endif // Q_OS_WINCE #endif // QNETWORKFUNCTIONS_WINCE_H diff --git a/src/network/kernel/qnetworkinterface.h b/src/network/kernel/qnetworkinterface.h index 9ecc371b54..f288b8d938 100644 --- a/src/network/kernel/qnetworkinterface.h +++ b/src/network/kernel/qnetworkinterface.h @@ -48,8 +48,6 @@ #ifndef QT_NO_NETWORKINTERFACE -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -137,8 +135,6 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkInterface &networ QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_NETWORKINTERFACE #endif diff --git a/src/network/kernel/qnetworkproxy.h b/src/network/kernel/qnetworkproxy.h index 081a993e33..153c84028a 100644 --- a/src/network/kernel/qnetworkproxy.h +++ b/src/network/kernel/qnetworkproxy.h @@ -48,8 +48,6 @@ #ifndef QT_NO_NETWORKPROXY -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -220,8 +218,6 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QNetworkProxy) -QT_END_HEADER - #endif // QT_NO_NETWORKPROXY #endif // QHOSTINFO_H diff --git a/src/network/kernel/qurlinfo_p.h b/src/network/kernel/qurlinfo_p.h index 955a2eb325..1aa59f25ad 100644 --- a/src/network/kernel/qurlinfo_p.h +++ b/src/network/kernel/qurlinfo_p.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -125,6 +123,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QURLINFO_H diff --git a/src/network/socket/qabstractsocket.h b/src/network/socket/qabstractsocket.h index b7e3f2853a..46114abf73 100644 --- a/src/network/socket/qabstractsocket.h +++ b/src/network/socket/qabstractsocket.h @@ -48,8 +48,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -242,6 +240,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QAbstractSocket::SocketState) Q_DECLARE_METATYPE(QAbstractSocket::SocketError) -QT_END_HEADER - #endif // QABSTRACTSOCKET_H diff --git a/src/network/socket/qlocalserver.h b/src/network/socket/qlocalserver.h index d7d6b16e10..b5791db653 100644 --- a/src/network/socket/qlocalserver.h +++ b/src/network/socket/qlocalserver.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -109,7 +107,5 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QLocalServer::SocketOptions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QLOCALSERVER_H diff --git a/src/network/socket/qlocalsocket.h b/src/network/socket/qlocalsocket.h index e1ee174608..2ff4b2fc5b 100644 --- a/src/network/socket/qlocalsocket.h +++ b/src/network/socket/qlocalsocket.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -152,6 +150,4 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketState); QT_END_NAMESPACE -QT_END_HEADER - #endif // QLOCALSOCKET_H diff --git a/src/network/socket/qtcpserver.h b/src/network/socket/qtcpserver.h index dfabfa1be7..8e25aa5a29 100644 --- a/src/network/socket/qtcpserver.h +++ b/src/network/socket/qtcpserver.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -108,6 +106,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTCPSERVER_H diff --git a/src/network/socket/qtcpsocket.h b/src/network/socket/qtcpsocket.h index 44fb68a207..ed5ce4aeed 100644 --- a/src/network/socket/qtcpsocket.h +++ b/src/network/socket/qtcpsocket.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -69,6 +67,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTCPSOCKET_H diff --git a/src/network/socket/qudpsocket.h b/src/network/socket/qudpsocket.h index 7a064a3432..da6306a430 100644 --- a/src/network/socket/qudpsocket.h +++ b/src/network/socket/qudpsocket.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -90,6 +88,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QUDPSOCKET_H diff --git a/src/network/ssl/qssl.h b/src/network/ssl/qssl.h index 80ccfadecb..06d80965e2 100644 --- a/src/network/ssl/qssl.h +++ b/src/network/ssl/qssl.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -106,6 +104,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QSsl::SslOptions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QSSL_H diff --git a/src/network/ssl/qsslcertificate.h b/src/network/ssl/qsslcertificate.h index 23f9638981..988071eb9d 100644 --- a/src/network/ssl/qsslcertificate.h +++ b/src/network/ssl/qsslcertificate.h @@ -56,8 +56,6 @@ #include #include -QT_BEGIN_HEADER - #ifndef QT_NO_SSL QT_BEGIN_NAMESPACE @@ -164,6 +162,4 @@ Q_DECLARE_METATYPE(QSslCertificate) #endif // QT_NO_SSL -QT_END_HEADER - #endif diff --git a/src/network/ssl/qsslcertificateextension.h b/src/network/ssl/qsslcertificateextension.h index ce7ff54941..080b1ccc4e 100644 --- a/src/network/ssl/qsslcertificateextension.h +++ b/src/network/ssl/qsslcertificateextension.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -85,8 +83,6 @@ Q_DECLARE_SHARED(QSslCertificateExtension) QT_END_NAMESPACE -QT_END_HEADER - #endif // QSSLCERTIFICATEEXTENSION_H diff --git a/src/network/ssl/qsslcipher.h b/src/network/ssl/qsslcipher.h index 93ae15c3f5..e351d7949b 100644 --- a/src/network/ssl/qsslcipher.h +++ b/src/network/ssl/qsslcipher.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -97,7 +95,5 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslCipher &cipher); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/network/ssl/qsslconfiguration.h b/src/network/ssl/qsslconfiguration.h index 701dc4cfe1..5bde5cb446 100644 --- a/src/network/ssl/qsslconfiguration.h +++ b/src/network/ssl/qsslconfiguration.h @@ -61,8 +61,6 @@ #include #include -QT_BEGIN_HEADER - #ifndef QT_NO_SSL QT_BEGIN_NAMESPACE @@ -141,6 +139,4 @@ Q_DECLARE_METATYPE(QSslConfiguration) #endif // QT_NO_SSL -QT_END_HEADER - #endif diff --git a/src/network/ssl/qsslerror.h b/src/network/ssl/qsslerror.h index 847a48cbc1..135ba11ece 100644 --- a/src/network/ssl/qsslerror.h +++ b/src/network/ssl/qsslerror.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -126,6 +124,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QList) #endif -QT_END_HEADER - #endif diff --git a/src/network/ssl/qsslkey.h b/src/network/ssl/qsslkey.h index 986b1c41de..145d4a28f1 100644 --- a/src/network/ssl/qsslkey.h +++ b/src/network/ssl/qsslkey.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -110,6 +108,4 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslKey &key); QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/network/ssl/qsslsocket.h b/src/network/ssl/qsslsocket.h index 929e437554..55141243ff 100644 --- a/src/network/ssl/qsslsocket.h +++ b/src/network/ssl/qsslsocket.h @@ -50,8 +50,6 @@ # include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -223,6 +221,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/opengl/gl2paintengineex/qglcustomshaderstage_p.h b/src/opengl/gl2paintengineex/qglcustomshaderstage_p.h index 4dffeb6bc6..69a6ef2896 100644 --- a/src/opengl/gl2paintengineex/qglcustomshaderstage_p.h +++ b/src/opengl/gl2paintengineex/qglcustomshaderstage_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -86,7 +84,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h index 1c519231ef..eff33d6da0 100644 --- a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h +++ b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h @@ -228,8 +228,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -508,6 +506,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif //QGLENGINE_SHADER_MANAGER_H diff --git a/src/opengl/gl2paintengineex/qglengineshadersource_p.h b/src/opengl/gl2paintengineex/qglengineshadersource_p.h index 5e689804e4..65fbada48f 100644 --- a/src/opengl/gl2paintengineex/qglengineshadersource_p.h +++ b/src/opengl/gl2paintengineex/qglengineshadersource_p.h @@ -56,8 +56,6 @@ #include "qglengineshadermanager_p.h" -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -523,6 +521,4 @@ static const char* const qglslRgbMaskFragmentShaderPass2 = "\n\ QT_END_NAMESPACE -QT_END_HEADER - #endif // GLGC_SHADER_SOURCE_H diff --git a/src/opengl/gl2paintengineex/qglshadercache_meego_p.h b/src/opengl/gl2paintengineex/qglshadercache_meego_p.h index f104b9cc88..f3c345f9ac 100644 --- a/src/opengl/gl2paintengineex/qglshadercache_meego_p.h +++ b/src/opengl/gl2paintengineex/qglshadercache_meego_p.h @@ -68,8 +68,6 @@ # include #endif -QT_BEGIN_HEADER - /* This cache stores internal Qt shader programs in shared memory. @@ -450,7 +448,5 @@ QT_END_NAMESPACE #endif -QT_END_HEADER - #endif #endif diff --git a/src/opengl/gl2paintengineex/qglshadercache_p.h b/src/opengl/gl2paintengineex/qglshadercache_p.h index e05987c219..4fbddd4966 100644 --- a/src/opengl/gl2paintengineex/qglshadercache_p.h +++ b/src/opengl/gl2paintengineex/qglshadercache_p.h @@ -59,8 +59,6 @@ # include "qglshadercache_meego_p.h" #else -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -91,7 +89,5 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif #endif diff --git a/src/opengl/qgl.h b/src/opengl/qgl.h index b5924822ef..7624a13d97 100644 --- a/src/opengl/qgl.h +++ b/src/opengl/qgl.h @@ -52,8 +52,6 @@ #include -QT_BEGIN_HEADER - #if defined(Q_OS_WIN) # include #endif @@ -551,7 +549,5 @@ inline bool QGLFormat::sampleBuffers() const QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_OPENGL #endif // QGL_H diff --git a/src/opengl/qglbuffer.h b/src/opengl/qglbuffer.h index 0a60b01840..2c26c7a0b2 100644 --- a/src/opengl/qglbuffer.h +++ b/src/opengl/qglbuffer.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -126,6 +124,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/opengl/qglcolormap.h b/src/opengl/qglcolormap.h index aa29aead6e..ecca5aa6b7 100644 --- a/src/opengl/qglcolormap.h +++ b/src/opengl/qglcolormap.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -100,6 +98,4 @@ inline void QGLColormap::detach() QT_END_NAMESPACE -QT_END_HEADER - #endif // QGLCOLORMAP_H diff --git a/src/opengl/qglframebufferobject.h b/src/opengl/qglframebufferobject.h index e1ecc026fb..9312a23822 100644 --- a/src/opengl/qglframebufferobject.h +++ b/src/opengl/qglframebufferobject.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -156,5 +154,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER #endif // QGLFRAMEBUFFEROBJECT_H diff --git a/src/opengl/qglfunctions.h b/src/opengl/qglfunctions.h index 59ccc59f13..fd867d7a91 100644 --- a/src/opengl/qglfunctions.h +++ b/src/opengl/qglfunctions.h @@ -52,8 +52,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -2298,6 +2296,4 @@ inline void QGLFunctions::glVertexAttribPointer(GLuint indx, GLint size, GLenum QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/opengl/qglpixelbuffer.h b/src/opengl/qglpixelbuffer.h index 8f11a8effb..1a2297da95 100644 --- a/src/opengl/qglpixelbuffer.h +++ b/src/opengl/qglpixelbuffer.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -105,6 +103,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QGLPIXELBUFFER_H diff --git a/src/opengl/qglshaderprogram.h b/src/opengl/qglshaderprogram.h index 2aae95a5aa..93f11e1826 100644 --- a/src/opengl/qglshaderprogram.h +++ b/src/opengl/qglshaderprogram.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -304,6 +302,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/opengl/qgraphicsshadereffect_p.h b/src/opengl/qgraphicsshadereffect_p.h index e1e7c1f049..8a7c082afa 100644 --- a/src/opengl/qgraphicsshadereffect_p.h +++ b/src/opengl/qgraphicsshadereffect_p.h @@ -56,8 +56,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -89,6 +87,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QGRAPHICSSHADEREFFECT_P_H diff --git a/src/opengl/qtopenglglobal.h b/src/opengl/qtopenglglobal.h index 4657e195fd..bce329404f 100644 --- a/src/opengl/qtopenglglobal.h +++ b/src/opengl/qtopenglglobal.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #ifndef QT_STATIC @@ -60,6 +58,4 @@ QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER - #endif // QTOPENGLGLOBAL_H diff --git a/src/platformsupport/dnd/qshapedpixmapdndwindow_p.h b/src/platformsupport/dnd/qshapedpixmapdndwindow_p.h index ed0819cf29..20674b6b19 100644 --- a/src/platformsupport/dnd/qshapedpixmapdndwindow_p.h +++ b/src/platformsupport/dnd/qshapedpixmapdndwindow_p.h @@ -48,8 +48,6 @@ QT_BEGIN_NAMESPACE -QT_BEGIN_HEADER - class QShapedPixmapWindow : public QWindow { Q_OBJECT @@ -72,8 +70,6 @@ private: QPoint m_hotSpot; }; -QT_END_HEADER - QT_END_NAMESPACE #endif // QSHAPEDPIXMAPDNDWINDOW_H diff --git a/src/platformsupport/dnd/qsimpledrag_p.h b/src/platformsupport/dnd/qsimpledrag_p.h index 5cf3394919..bb9d215083 100644 --- a/src/platformsupport/dnd/qsimpledrag_p.h +++ b/src/platformsupport/dnd/qsimpledrag_p.h @@ -48,8 +48,6 @@ QT_BEGIN_NAMESPACE -QT_BEGIN_HEADER - #ifndef QT_NO_DRAGANDDROP class QMouseEvent; @@ -120,8 +118,6 @@ private: #endif // QT_NO_DRAGANDDROP -QT_END_HEADER - QT_END_NAMESPACE #endif diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h index d481a3a3e6..e7fec4be14 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h @@ -54,8 +54,6 @@ #if !defined(Q_WS_MAC) || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QRawFontPrivate; @@ -143,8 +141,6 @@ CGAffineTransform qt_transform_from_fontdef(const QFontDef &fontDef); QT_END_NAMESPACE -QT_END_HEADER - #endif// !defined(Q_WS_MAC) || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) #endif // QFONTENGINE_CORETEXT_P_H diff --git a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h index 3e5dcb2ac9..1065b05d51 100644 --- a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h +++ b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE namespace QEvdevKeyboardMap { @@ -198,6 +196,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QEVDEVKEYBOARDHANDLER_P_H diff --git a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardmanager_p.h b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardmanager_p.h index e750f72c3b..37c60c035c 100644 --- a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardmanager_p.h +++ b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardmanager_p.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QEvdevKeyboardManager : public QObject @@ -71,8 +69,6 @@ private: QDeviceDiscovery *m_deviceDiscovery; }; -QT_END_HEADER - QT_END_NAMESPACE #endif // QEVDEVKEYBOARDMANAGER_P_H diff --git a/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h b/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h index 6e078b2d70..d419a1913e 100644 --- a/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h +++ b/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QSocketNotifier; @@ -83,6 +81,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QEVDEVMOUSEHANDLER_P_H diff --git a/src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h b/src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h index a2c83c4a1c..6abe933371 100644 --- a/src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h +++ b/src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QEvdevMouseManager : public QObject @@ -79,8 +77,6 @@ private: int m_yoffset; }; -QT_END_HEADER - QT_END_NAMESPACE #endif // QEVDEVMOUSEMANAGER_P_H diff --git a/src/platformsupport/input/evdevtablet/qevdevtablet_p.h b/src/platformsupport/input/evdevtablet/qevdevtablet_p.h index ce49a01e7b..9222db9907 100644 --- a/src/platformsupport/input/evdevtablet/qevdevtablet_p.h +++ b/src/platformsupport/input/evdevtablet/qevdevtablet_p.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QEvdevTabletData; @@ -82,6 +80,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QEVDEVTABLET_P_H diff --git a/src/platformsupport/input/evdevtouch/qevdevtouch_p.h b/src/platformsupport/input/evdevtouch/qevdevtouch_p.h index b4de2ca088..ceb57bdf05 100644 --- a/src/platformsupport/input/evdevtouch/qevdevtouch_p.h +++ b/src/platformsupport/input/evdevtouch/qevdevtouch_p.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QSocketNotifier; @@ -93,6 +91,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QEVDEVTOUCH_P_H diff --git a/src/platformsupport/linuxaccessibility/application_p.h b/src/platformsupport/linuxaccessibility/application_p.h index 9b6763f111..5efd7089ea 100644 --- a/src/platformsupport/linuxaccessibility/application_p.h +++ b/src/platformsupport/linuxaccessibility/application_p.h @@ -46,7 +46,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE /* @@ -81,6 +80,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h index b7a29fdc15..1c79cc75c8 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h +++ b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h @@ -53,7 +53,6 @@ #include "dbusconnection_p.h" #include "struct_marshallers_p.h" -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QAccessibleInterface; @@ -216,6 +215,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif diff --git a/src/platformsupport/linuxaccessibility/bridge_p.h b/src/platformsupport/linuxaccessibility/bridge_p.h index aed437b1e2..8a02847d3d 100644 --- a/src/platformsupport/linuxaccessibility/bridge_p.h +++ b/src/platformsupport/linuxaccessibility/bridge_p.h @@ -48,7 +48,6 @@ class DeviceEventControllerAdaptor; -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class DBusConnection; @@ -81,6 +80,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif diff --git a/src/platformsupport/linuxaccessibility/cache_p.h b/src/platformsupport/linuxaccessibility/cache_p.h index 25680cd8e8..a8128d9320 100644 --- a/src/platformsupport/linuxaccessibility/cache_p.h +++ b/src/platformsupport/linuxaccessibility/cache_p.h @@ -46,7 +46,6 @@ #include #include "struct_marshallers_p.h" -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QSpiDBusCache : public QObject @@ -67,6 +66,5 @@ public Q_SLOTS: }; QT_END_NAMESPACE -QT_END_HEADER #endif /* Q_SPI_CACHE_H */ diff --git a/src/platformsupport/linuxaccessibility/constant_mappings_p.h b/src/platformsupport/linuxaccessibility/constant_mappings_p.h index 7410f5f94f..a0287a910b 100644 --- a/src/platformsupport/linuxaccessibility/constant_mappings_p.h +++ b/src/platformsupport/linuxaccessibility/constant_mappings_p.h @@ -95,7 +95,6 @@ #define QSPI_REGISTRY_NAME "org.a11y.atspi.Registry" -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE struct RoleNames { @@ -133,6 +132,5 @@ QSpiUIntList spiStateSetFromSpiStates(quint64 states); AtspiRelationType qAccessibleRelationToAtSpiRelation(QAccessible::Relation relation); QT_END_NAMESPACE -QT_END_HEADER #endif /* Q_SPI_CONSTANT_MAPPINGS_H */ diff --git a/src/platformsupport/linuxaccessibility/dbusconnection_p.h b/src/platformsupport/linuxaccessibility/dbusconnection_p.h index 2875dd89d8..2d55ccb547 100644 --- a/src/platformsupport/linuxaccessibility/dbusconnection_p.h +++ b/src/platformsupport/linuxaccessibility/dbusconnection_p.h @@ -47,7 +47,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QDBusServiceWatcher; @@ -83,6 +82,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif // DBUSCONNECTION_H diff --git a/src/platformsupport/linuxaccessibility/struct_marshallers_p.h b/src/platformsupport/linuxaccessibility/struct_marshallers_p.h index 60d06cebb4..0b775d5521 100644 --- a/src/platformsupport/linuxaccessibility/struct_marshallers_p.h +++ b/src/platformsupport/linuxaccessibility/struct_marshallers_p.h @@ -49,7 +49,6 @@ #include #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE typedef QList QSpiIntList; @@ -173,5 +172,4 @@ Q_DECLARE_METATYPE(QSpiAttributeSet) Q_DECLARE_METATYPE(QSpiAppUpdate) Q_DECLARE_METATYPE(QSpiDeviceEvent) -QT_END_HEADER #endif /* Q_SPI_STRUCT_MARSHALLERS_H */ diff --git a/src/platformsupport/services/genericunix/qgenericunixservices_p.h b/src/platformsupport/services/genericunix/qgenericunixservices_p.h index 13cf79de01..92166caf7b 100644 --- a/src/platformsupport/services/genericunix/qgenericunixservices_p.h +++ b/src/platformsupport/services/genericunix/qgenericunixservices_p.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QGenericUnixServices : public QPlatformServices @@ -66,6 +64,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QGENERICUNIXDESKTOPSERVICES_H diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes_p.h b/src/platformsupport/themes/genericunix/qgenericunixthemes_p.h index 370b703204..b0ac13efe4 100644 --- a/src/platformsupport/themes/genericunix/qgenericunixthemes_p.h +++ b/src/platformsupport/themes/genericunix/qgenericunixthemes_p.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class ResourceHelper @@ -132,6 +130,4 @@ QPlatformTheme *qt_createUnixTheme(); QT_END_NAMESPACE -QT_END_HEADER - #endif // QGENERICUNIXTHEMES_H diff --git a/src/plugins/generic/meego/qmeegointegration.h b/src/plugins/generic/meego/qmeegointegration.h index 88e2aae721..998bbbf8d3 100644 --- a/src/plugins/generic/meego/qmeegointegration.h +++ b/src/plugins/generic/meego/qmeegointegration.h @@ -47,8 +47,6 @@ #include "contextkitproperty.h" -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QMeeGoIntegration : public QObject @@ -67,6 +65,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QMEEGOINTEGRATION_H diff --git a/src/plugins/generic/tslib/qtslib.h b/src/plugins/generic/tslib/qtslib.h index 0c5c74f672..9342fdfea5 100644 --- a/src/plugins/generic/tslib/qtslib.h +++ b/src/plugins/generic/tslib/qtslib.h @@ -45,8 +45,6 @@ #include //#include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QSocketNotifier; @@ -72,6 +70,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTSLIB_H diff --git a/src/plugins/platforms/cocoa/qcocoamenu.h b/src/plugins/platforms/cocoa/qcocoamenu.h index fc014c26eb..9433e9f9c0 100644 --- a/src/plugins/platforms/cocoa/qcocoamenu.h +++ b/src/plugins/platforms/cocoa/qcocoamenu.h @@ -51,8 +51,6 @@ @class NSMenu; @class NSObject; -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QCocoaMenu : public QPlatformMenu @@ -106,6 +104,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.h b/src/plugins/platforms/cocoa/qcocoamenuitem.h index fe5193a50c..b28274bc05 100644 --- a/src/plugins/platforms/cocoa/qcocoamenuitem.h +++ b/src/plugins/platforms/cocoa/qcocoamenuitem.h @@ -51,8 +51,6 @@ @class NSMenuItem; @class NSMenu; -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QCocoaMenu; @@ -110,8 +108,6 @@ private: quintptr m_tag; }; -QT_END_HEADER - QT_END_NAMESPACE #endif diff --git a/src/plugins/platforms/cocoa/qmacdefines_mac.h b/src/plugins/platforms/cocoa/qmacdefines_mac.h index 18c1ac84de..c03b398836 100644 --- a/src/plugins/platforms/cocoa/qmacdefines_mac.h +++ b/src/plugins/platforms/cocoa/qmacdefines_mac.h @@ -79,15 +79,11 @@ */ /* This is just many defines. Therefore it doesn't need things like: -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER - Yes, it is an informative comment ;-) */ diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h index 2cf0dfc71c..9eae8d2703 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.h +++ b/src/plugins/platforms/eglfs/qeglfsintegration.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QEglFSIntegration : public QPlatformIntegration, public QPlatformNativeInterface @@ -85,6 +83,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif // QEGLFSINTEGRATION_H diff --git a/src/plugins/platforms/minimalegl/qminimaleglintegration.h b/src/plugins/platforms/minimalegl/qminimaleglintegration.h index fb86c967e1..dba7504033 100644 --- a/src/plugins/platforms/minimalegl/qminimaleglintegration.h +++ b/src/plugins/platforms/minimalegl/qminimaleglintegration.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QMinimalEglIntegration : public QPlatformIntegration @@ -75,6 +73,5 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif // QMINIMALEGLINTEGRATION_H diff --git a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.h b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.h index af0bd65c80..5a6dc0c2e5 100644 --- a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.h +++ b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.h @@ -48,7 +48,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QWindowsAccessibility : public QPlatformAccessibility @@ -69,6 +68,5 @@ public: }; QT_END_NAMESPACE -QT_END_HEADER #endif // QWINDOWSACCESSIBILITY_H diff --git a/src/plugins/printsupport/cups/qcupsprintersupport_p.h b/src/plugins/printsupport/cups/qcupsprintersupport_p.h index 43fe871021..d3f0ff5d90 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport_p.h +++ b/src/plugins/printsupport/cups/qcupsprintersupport_p.h @@ -52,7 +52,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE typedef int (*CupsGetDests)(cups_dest_t **dests); @@ -86,7 +85,6 @@ private: }; QT_END_NAMESPACE -QT_END_HEADER #endif // QT_NO_PRINTER #endif // QCUPSPRINTERSUPPORT_H diff --git a/src/plugins/printsupport/windows/qwindowsprintersupport.h b/src/plugins/printsupport/windows/qwindowsprintersupport.h index afa341a82f..3550c3f50c 100644 --- a/src/plugins/printsupport/windows/qwindowsprintersupport.h +++ b/src/plugins/printsupport/windows/qwindowsprintersupport.h @@ -44,7 +44,6 @@ #include -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QWin32PrintEngine; @@ -61,6 +60,5 @@ public: }; QT_END_NAMESPACE -QT_END_HEADER #endif // WINDOWSPRINTERSUPPORT_H diff --git a/src/printsupport/dialogs/qabstractprintdialog.h b/src/printsupport/dialogs/qabstractprintdialog.h index 3fdaa0f57d..87979310b5 100644 --- a/src/printsupport/dialogs/qabstractprintdialog.h +++ b/src/printsupport/dialogs/qabstractprintdialog.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -125,6 +123,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractPrintDialog::PrintDialogOptions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTPRINTDIALOG_H diff --git a/src/printsupport/dialogs/qpagesetupdialog.h b/src/printsupport/dialogs/qpagesetupdialog.h index aebc540e41..c316e42166 100644 --- a/src/printsupport/dialogs/qpagesetupdialog.h +++ b/src/printsupport/dialogs/qpagesetupdialog.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -88,6 +86,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPAGESETUPDIALOG_H diff --git a/src/printsupport/dialogs/qprintdialog.h b/src/printsupport/dialogs/qprintdialog.h index 124eb8746c..7d77c6af07 100644 --- a/src/printsupport/dialogs/qprintdialog.h +++ b/src/printsupport/dialogs/qprintdialog.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -121,6 +119,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPRINTDIALOG_H diff --git a/src/printsupport/dialogs/qprintpreviewdialog.h b/src/printsupport/dialogs/qprintpreviewdialog.h index 4101cc8c20..b9c8737746 100644 --- a/src/printsupport/dialogs/qprintpreviewdialog.h +++ b/src/printsupport/dialogs/qprintpreviewdialog.h @@ -47,8 +47,6 @@ #ifndef QT_NO_PRINTPREVIEWDIALOG -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -99,8 +97,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_PRINTPREVIEWDIALOG #endif // QPRINTPREVIEWDIALOG_H diff --git a/src/printsupport/kernel/qplatformprintersupport.h b/src/printsupport/kernel/qplatformprintersupport.h index 5d3c7d0aa6..5cb3b805fd 100644 --- a/src/printsupport/kernel/qplatformprintersupport.h +++ b/src/printsupport/kernel/qplatformprintersupport.h @@ -55,8 +55,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #ifndef QT_NO_PRINTER @@ -98,6 +96,4 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMPRINTERSUPPORT_H diff --git a/src/printsupport/kernel/qplatformprintplugin.h b/src/printsupport/kernel/qplatformprintplugin.h index 67af44cd68..4a5a94616a 100644 --- a/src/printsupport/kernel/qplatformprintplugin.h +++ b/src/printsupport/kernel/qplatformprintplugin.h @@ -55,8 +55,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -78,6 +76,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMPRINTPLUGIN_H diff --git a/src/printsupport/kernel/qprintengine.h b/src/printsupport/kernel/qprintengine.h index 2abf3dda74..dabd39c5c0 100644 --- a/src/printsupport/kernel/qprintengine.h +++ b/src/printsupport/kernel/qprintengine.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -106,6 +104,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPRINTENGINE_H diff --git a/src/printsupport/kernel/qprinter.h b/src/printsupport/kernel/qprinter.h index 23ccb0c2d0..017c2c61c0 100644 --- a/src/printsupport/kernel/qprinter.h +++ b/src/printsupport/kernel/qprinter.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -267,6 +265,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPRINTER_H diff --git a/src/printsupport/kernel/qprinterinfo.h b/src/printsupport/kernel/qprinterinfo.h index 528423a635..b831898632 100644 --- a/src/printsupport/kernel/qprinterinfo.h +++ b/src/printsupport/kernel/qprinterinfo.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -91,6 +89,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPRINTERINFO_H diff --git a/src/printsupport/kernel/qtprintsupportglobal.h b/src/printsupport/kernel/qtprintsupportglobal.h index 1927252433..0fdb306e8d 100644 --- a/src/printsupport/kernel/qtprintsupportglobal.h +++ b/src/printsupport/kernel/qtprintsupportglobal.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #ifndef QT_STATIC @@ -60,6 +58,4 @@ QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER - #endif // QTPRINTSUPPORTGLOBAL_H diff --git a/src/printsupport/widgets/qprintpreviewwidget.h b/src/printsupport/widgets/qprintpreviewwidget.h index b48af10ae0..85ff77d975 100644 --- a/src/printsupport/widgets/qprintpreviewwidget.h +++ b/src/printsupport/widgets/qprintpreviewwidget.h @@ -47,8 +47,6 @@ #ifndef QT_NO_PRINTPREVIEWWIDGET -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -116,7 +114,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_PRINTPREVIEWWIDGET #endif // QPRINTPREVIEWWIDGET_H diff --git a/src/sql/drivers/db2/qsql_db2.h b/src/sql/drivers/db2/qsql_db2.h index 4e25c317eb..5d31906096 100644 --- a/src/sql/drivers/db2/qsql_db2.h +++ b/src/sql/drivers/db2/qsql_db2.h @@ -51,8 +51,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 @@ -126,6 +124,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQL_DB2_H diff --git a/src/sql/drivers/ibase/qsql_ibase.h b/src/sql/drivers/ibase/qsql_ibase.h index 2ce20966c6..d47bd6d4b4 100644 --- a/src/sql/drivers/ibase/qsql_ibase.h +++ b/src/sql/drivers/ibase/qsql_ibase.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 @@ -132,5 +130,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER #endif // QSQL_IBASE_H diff --git a/src/sql/drivers/mysql/qsql_mysql.h b/src/sql/drivers/mysql/qsql_mysql.h index 37e18c8fb1..953216de9a 100644 --- a/src/sql/drivers/mysql/qsql_mysql.h +++ b/src/sql/drivers/mysql/qsql_mysql.h @@ -57,8 +57,6 @@ #define Q_EXPORT_SQLDRIVER_MYSQL Q_SQL_EXPORT #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 @@ -142,6 +140,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQL_MYSQL_H diff --git a/src/sql/drivers/oci/qsql_oci.h b/src/sql/drivers/oci/qsql_oci.h index 2488e696d2..797f967381 100644 --- a/src/sql/drivers/oci/qsql_oci.h +++ b/src/sql/drivers/oci/qsql_oci.h @@ -52,8 +52,6 @@ #define Q_EXPORT_SQLDRIVER_OCI Q_SQL_EXPORT #endif -QT_BEGIN_HEADER - typedef struct OCIEnv OCIEnv; typedef struct OCISvcCtx OCISvcCtx; @@ -131,6 +129,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQL_OCI_H diff --git a/src/sql/drivers/odbc/qsql_odbc.h b/src/sql/drivers/odbc/qsql_odbc.h index 4fba49b9c5..26f47e6c74 100644 --- a/src/sql/drivers/odbc/qsql_odbc.h +++ b/src/sql/drivers/odbc/qsql_odbc.h @@ -70,8 +70,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 @@ -158,6 +156,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQL_ODBC_H diff --git a/src/sql/drivers/psql/qsql_psql.h b/src/sql/drivers/psql/qsql_psql.h index 444ef1bccc..d5585a45fa 100644 --- a/src/sql/drivers/psql/qsql_psql.h +++ b/src/sql/drivers/psql/qsql_psql.h @@ -51,8 +51,6 @@ #define Q_EXPORT_SQLDRIVER_PSQL Q_SQL_EXPORT #endif -QT_BEGIN_HEADER - typedef struct pg_conn PGconn; typedef struct pg_result PGresult; @@ -158,6 +156,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQL_PSQL_H diff --git a/src/sql/drivers/sqlite/qsql_sqlite.h b/src/sql/drivers/sqlite/qsql_sqlite.h index 0fdcd4e240..d53e0275d6 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.h +++ b/src/sql/drivers/sqlite/qsql_sqlite.h @@ -54,8 +54,6 @@ struct sqlite3; #define Q_EXPORT_SQLDRIVER_SQLITE Q_SQL_EXPORT #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 @@ -125,6 +123,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQL_SQLITE_H diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.h b/src/sql/drivers/sqlite2/qsql_sqlite2.h index f141ad1cc2..a91a7c58f1 100644 --- a/src/sql/drivers/sqlite2/qsql_sqlite2.h +++ b/src/sql/drivers/sqlite2/qsql_sqlite2.h @@ -54,8 +54,6 @@ struct sqlite; -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 @@ -127,6 +125,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQL_SQLITE2_H diff --git a/src/sql/drivers/tds/qsql_tds.h b/src/sql/drivers/tds/qsql_tds.h index 38cb2dc42e..5a158cfdcc 100644 --- a/src/sql/drivers/tds/qsql_tds.h +++ b/src/sql/drivers/tds/qsql_tds.h @@ -67,8 +67,6 @@ #define Q_EXPORT_SQLDRIVER_TDS Q_SQL_EXPORT #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #if 0 @@ -137,6 +135,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQL_TDS_H diff --git a/src/sql/kernel/qsql.h b/src/sql/kernel/qsql.h index 54c5fc13b6..9b9381f797 100644 --- a/src/sql/kernel/qsql.h +++ b/src/sql/kernel/qsql.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #ifndef QT_STATIC @@ -97,6 +95,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QSql::ParamType) QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQL_H diff --git a/src/sql/kernel/qsqldatabase.h b/src/sql/kernel/qsqldatabase.h index f0e920ade1..7249e223a5 100644 --- a/src/sql/kernel/qsqldatabase.h +++ b/src/sql/kernel/qsqldatabase.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -146,6 +144,4 @@ Q_SQL_EXPORT QDebug operator<<(QDebug, const QSqlDatabase &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLDATABASE_H diff --git a/src/sql/kernel/qsqldriver.h b/src/sql/kernel/qsqldriver.h index aaa879e957..5e0950e57b 100644 --- a/src/sql/kernel/qsqldriver.h +++ b/src/sql/kernel/qsqldriver.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -139,6 +137,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLDRIVER_H diff --git a/src/sql/kernel/qsqldriverplugin.h b/src/sql/kernel/qsqldriverplugin.h index a111c1257a..ca2e0f2474 100644 --- a/src/sql/kernel/qsqldriverplugin.h +++ b/src/sql/kernel/qsqldriverplugin.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -68,6 +66,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLDRIVERPLUGIN_H diff --git a/src/sql/kernel/qsqlerror.h b/src/sql/kernel/qsqlerror.h index beab5f27ba..f4ad9eddff 100644 --- a/src/sql/kernel/qsqlerror.h +++ b/src/sql/kernel/qsqlerror.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -94,6 +92,4 @@ Q_SQL_EXPORT QDebug operator<<(QDebug, const QSqlError &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLERROR_H diff --git a/src/sql/kernel/qsqlfield.h b/src/sql/kernel/qsqlfield.h index 626cce16ca..a642721039 100644 --- a/src/sql/kernel/qsqlfield.h +++ b/src/sql/kernel/qsqlfield.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -110,6 +108,4 @@ Q_SQL_EXPORT QDebug operator<<(QDebug, const QSqlField &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLFIELD_H diff --git a/src/sql/kernel/qsqlindex.h b/src/sql/kernel/qsqlindex.h index 83e1f21e9d..96c2f614f1 100644 --- a/src/sql/kernel/qsqlindex.h +++ b/src/sql/kernel/qsqlindex.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -78,6 +76,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLINDEX_H diff --git a/src/sql/kernel/qsqlquery.h b/src/sql/kernel/qsqlquery.h index 5c14f3808b..3719643174 100644 --- a/src/sql/kernel/qsqlquery.h +++ b/src/sql/kernel/qsqlquery.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -122,6 +120,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLQUERY_H diff --git a/src/sql/kernel/qsqlrecord.h b/src/sql/kernel/qsqlrecord.h index 0d0fae1460..bc8c6a8a57 100644 --- a/src/sql/kernel/qsqlrecord.h +++ b/src/sql/kernel/qsqlrecord.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -109,6 +107,4 @@ Q_SQL_EXPORT QDebug operator<<(QDebug, const QSqlRecord &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLRECORD_H diff --git a/src/sql/kernel/qsqlresult.h b/src/sql/kernel/qsqlresult.h index 134b96e81d..649e3587ab 100644 --- a/src/sql/kernel/qsqlresult.h +++ b/src/sql/kernel/qsqlresult.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -143,6 +141,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLRESULT_H diff --git a/src/sql/models/qsqlquerymodel.h b/src/sql/models/qsqlquerymodel.h index 25e0a68f9d..c00d905ec0 100644 --- a/src/sql/models/qsqlquerymodel.h +++ b/src/sql/models/qsqlquerymodel.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -113,6 +111,4 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLQUERYMODEL_H diff --git a/src/sql/models/qsqlrelationaldelegate.h b/src/sql/models/qsqlrelationaldelegate.h index 8cecc02821..b878280bca 100644 --- a/src/sql/models/qsqlrelationaldelegate.h +++ b/src/sql/models/qsqlrelationaldelegate.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -110,8 +108,6 @@ void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_WIDGETS_LIB #endif // QSQLRELATIONALDELEGATE_H diff --git a/src/sql/models/qsqlrelationaltablemodel.h b/src/sql/models/qsqlrelationaltablemodel.h index 29acb88137..0ccfecd1c7 100644 --- a/src/sql/models/qsqlrelationaltablemodel.h +++ b/src/sql/models/qsqlrelationaltablemodel.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -112,6 +110,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLRELATIONALTABLEMODEL_H diff --git a/src/sql/models/qsqltablemodel.h b/src/sql/models/qsqltablemodel.h index efb9663a1c..7a9ffebe8f 100644 --- a/src/sql/models/qsqltablemodel.h +++ b/src/sql/models/qsqltablemodel.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -140,6 +138,4 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSQLTABLEMODEL_H diff --git a/src/testlib/qbenchmark.h b/src/testlib/qbenchmark.h index 942e8f69fd..f64cb1d2db 100644 --- a/src/testlib/qbenchmark.h +++ b/src/testlib/qbenchmark.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -94,6 +92,4 @@ namespace QTest QT_END_NAMESPACE -QT_END_HEADER - #endif // QBENCHMARK_H diff --git a/src/testlib/qbenchmarkmetric.h b/src/testlib/qbenchmarkmetric.h index 9a59156e66..3de73f6f87 100644 --- a/src/testlib/qbenchmarkmetric.h +++ b/src/testlib/qbenchmarkmetric.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -67,6 +65,4 @@ enum QBenchmarkMetric { QT_END_NAMESPACE -QT_END_HEADER - #endif // QBENCHMARK_H diff --git a/src/testlib/qbenchmarkmetric_p.h b/src/testlib/qbenchmarkmetric_p.h index ad819e8757..0af2ed2d1a 100644 --- a/src/testlib/qbenchmarkmetric_p.h +++ b/src/testlib/qbenchmarkmetric_p.h @@ -56,8 +56,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -68,6 +66,4 @@ namespace QTest { QT_END_NAMESPACE -QT_END_HEADER - #endif // QBENCHMARK_H diff --git a/src/testlib/qsignalspy.h b/src/testlib/qsignalspy.h index 9435e32c5c..72a5df1ed9 100644 --- a/src/testlib/qsignalspy.h +++ b/src/testlib/qsignalspy.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -185,6 +183,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtest.h b/src/testlib/qtest.h index ed78682b8e..82e961d61b 100644 --- a/src/testlib/qtest.h +++ b/src/testlib/qtest.h @@ -60,8 +60,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -301,6 +299,4 @@ int main(int argc, char *argv[]) \ return QTest::qExec(&tc, argc, argv); \ } -QT_END_HEADER - #endif diff --git a/src/testlib/qtest_global.h b/src/testlib/qtest_global.h index 9e59713663..ac5a0b23f5 100644 --- a/src/testlib/qtest_global.h +++ b/src/testlib/qtest_global.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -76,6 +74,4 @@ namespace QTest QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtest_gui.h b/src/testlib/qtest_gui.h index 1962344f12..a9ac7777c3 100644 --- a/src/testlib/qtest_gui.h +++ b/src/testlib/qtest_gui.h @@ -69,8 +69,6 @@ #pragma qt_no_master_include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -149,6 +147,4 @@ inline bool qCompare(QPixmap const &t1, QPixmap const &t2, const char *actual, c QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtest_widgets.h b/src/testlib/qtest_widgets.h index 265b3a4703..1161b84edc 100644 --- a/src/testlib/qtest_widgets.h +++ b/src/testlib/qtest_widgets.h @@ -57,11 +57,9 @@ #pragma qt_no_master_include #endif -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER #endif diff --git a/src/testlib/qtestaccessible.h b/src/testlib/qtestaccessible.h index d2f57a0ced..24fc1d7991 100644 --- a/src/testlib/qtestaccessible.h +++ b/src/testlib/qtestaccessible.h @@ -59,8 +59,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -266,7 +264,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_ACCESSIBILITY #endif // QTESTACCESSIBLE_H diff --git a/src/testlib/qtestassert.h b/src/testlib/qtestassert.h index 7e88fa9d4d..c6942534c5 100644 --- a/src/testlib/qtestassert.h +++ b/src/testlib/qtestassert.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -55,6 +53,4 @@ QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index a13bd49338..6b5e7a574b 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -51,8 +51,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -352,6 +350,4 @@ namespace QTest QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtestcoreelement_p.h b/src/testlib/qtestcoreelement_p.h index 22aa676263..023c50ab2c 100644 --- a/src/testlib/qtestcoreelement_p.h +++ b/src/testlib/qtestcoreelement_p.h @@ -56,8 +56,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -174,6 +172,4 @@ const QTestElementAttribute *QTestCoreElement::attribute(QTest::Att QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtestcorelist_p.h b/src/testlib/qtestcorelist_p.h index b5044df8ed..bd08ede949 100644 --- a/src/testlib/qtestcorelist_p.h +++ b/src/testlib/qtestcorelist_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -141,6 +139,4 @@ int QTestCoreList::count() QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtestdata.h b/src/testlib/qtestdata.h index 6c4ef15bdc..d1bc3e7b4e 100644 --- a/src/testlib/qtestdata.h +++ b/src/testlib/qtestdata.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -99,6 +97,4 @@ inline QTestData &operator<<(QTestData &data, const QStringBuilder &value) QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtestelement_p.h b/src/testlib/qtestelement_p.h index 77204c4ce5..71f05f94af 100644 --- a/src/testlib/qtestelement_p.h +++ b/src/testlib/qtestelement_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -80,6 +78,4 @@ class QTestElement: public QTestCoreElement QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtestelementattribute_p.h b/src/testlib/qtestelementattribute_p.h index 54afb7cd93..c84b6d07c8 100644 --- a/src/testlib/qtestelementattribute_p.h +++ b/src/testlib/qtestelementattribute_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -116,6 +114,4 @@ class QTestElementAttribute: public QTestCoreList QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtestevent.h b/src/testlib/qtestevent.h index 20f988b216..a96cfa7370 100644 --- a/src/testlib/qtestevent.h +++ b/src/testlib/qtestevent.h @@ -58,8 +58,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -227,6 +225,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QTestEventList) -QT_END_HEADER - #endif diff --git a/src/testlib/qtesteventloop.h b/src/testlib/qtesteventloop.h index 15356bc445..b70954cf66 100644 --- a/src/testlib/qtesteventloop.h +++ b/src/testlib/qtesteventloop.h @@ -49,8 +49,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -131,6 +129,4 @@ inline void QTestEventLoop::timerEvent(QTimerEvent *e) QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtestkeyboard.h b/src/testlib/qtestkeyboard.h index b1f135a722..878806737e 100644 --- a/src/testlib/qtestkeyboard.h +++ b/src/testlib/qtestkeyboard.h @@ -62,8 +62,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE Q_GUI_EXPORT void qt_handleKeyEvent(QWindow *w, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text = QString(), bool autorep = false, ushort count = 1); @@ -298,6 +296,4 @@ namespace QTest QT_END_NAMESPACE -QT_END_HEADER - #endif // QTESTKEYBOARD_H diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h index 6f51831626..ea57ac5b8c 100644 --- a/src/testlib/qtestmouse.h +++ b/src/testlib/qtestmouse.h @@ -61,8 +61,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE Q_GUI_EXPORT void qt_handleMouseEvent(QWindow *w, const QPointF & local, const QPointF & global, Qt::MouseButtons b, Qt::KeyboardModifiers mods = Qt::NoModifier); @@ -228,6 +226,4 @@ namespace QTest QT_END_NAMESPACE -QT_END_HEADER - #endif // QTESTMOUSE_H diff --git a/src/testlib/qtestspontaneevent.h b/src/testlib/qtestspontaneevent.h index ac8ea74cc2..45cc74e343 100644 --- a/src/testlib/qtestspontaneevent.h +++ b/src/testlib/qtestspontaneevent.h @@ -49,8 +49,6 @@ #pragma qt_no_master_include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -112,6 +110,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtestsystem.h b/src/testlib/qtestsystem.h index 5633b06e02..0625af0213 100644 --- a/src/testlib/qtestsystem.h +++ b/src/testlib/qtestsystem.h @@ -52,8 +52,6 @@ # include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE namespace QTest @@ -145,7 +143,5 @@ namespace QTest QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/testlib/qtesttouch.h b/src/testlib/qtesttouch.h index 97acef47b7..9a661b4ecd 100644 --- a/src/testlib/qtesttouch.h +++ b/src/testlib/qtesttouch.h @@ -58,8 +58,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE Q_GUI_EXPORT void qt_handleTouchEvent(QWindow *w, QTouchDevice *device, @@ -234,6 +232,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTESTTOUCH_H diff --git a/src/testlib/qtestxunitstreamer_p.h b/src/testlib/qtestxunitstreamer_p.h index e047f644d3..c3278b2b53 100644 --- a/src/testlib/qtestxunitstreamer_p.h +++ b/src/testlib/qtestxunitstreamer_p.h @@ -55,8 +55,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -90,6 +88,4 @@ class QTestXunitStreamer QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/accessible/qaccessiblewidget.h b/src/widgets/accessible/qaccessiblewidget.h index 5e43f201cb..9830ee32fe 100644 --- a/src/widgets/accessible/qaccessiblewidget.h +++ b/src/widgets/accessible/qaccessiblewidget.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -99,6 +97,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QACCESSIBLEWIDGET_H diff --git a/src/widgets/dialogs/qcolordialog.h b/src/widgets/dialogs/qcolordialog.h index 2149c9c6d2..5db42629d8 100644 --- a/src/widgets/dialogs/qcolordialog.h +++ b/src/widgets/dialogs/qcolordialog.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -133,6 +131,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QColorDialog::ColorDialogOptions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOLORDIALOG_H diff --git a/src/widgets/dialogs/qdialog.h b/src/widgets/dialogs/qdialog.h index eeb0ac56b5..a083a9f640 100644 --- a/src/widgets/dialogs/qdialog.h +++ b/src/widgets/dialogs/qdialog.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -125,6 +123,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QDIALOG_H diff --git a/src/widgets/dialogs/qerrormessage.h b/src/widgets/dialogs/qerrormessage.h index 4bba3131c9..b66cbca9e0 100644 --- a/src/widgets/dialogs/qerrormessage.h +++ b/src/widgets/dialogs/qerrormessage.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -79,6 +77,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QERRORMESSAGE_H diff --git a/src/widgets/dialogs/qfiledialog.h b/src/widgets/dialogs/qfiledialog.h index 84bb0fa98c..6ddbb7c0d0 100644 --- a/src/widgets/dialogs/qfiledialog.h +++ b/src/widgets/dialogs/qfiledialog.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -264,6 +262,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QFileDialog::Options) QT_END_NAMESPACE -QT_END_HEADER - #endif // QFILEDIALOG_H diff --git a/src/widgets/dialogs/qfilesystemmodel.h b/src/widgets/dialogs/qfilesystemmodel.h index 18df89d736..cf26a4545d 100644 --- a/src/widgets/dialogs/qfilesystemmodel.h +++ b/src/widgets/dialogs/qfilesystemmodel.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -173,7 +171,5 @@ inline QFileInfo QFileSystemModel::fileInfo(const QModelIndex &aindex) const QT_END_NAMESPACE -QT_END_HEADER - #endif // QFILESYSTEMMODEL_H diff --git a/src/widgets/dialogs/qfontdialog.h b/src/widgets/dialogs/qfontdialog.h index 51d68d1b88..ceec0b71fc 100644 --- a/src/widgets/dialogs/qfontdialog.h +++ b/src/widgets/dialogs/qfontdialog.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -126,6 +124,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QFontDialog::FontDialogOptions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QFONTDIALOG_H diff --git a/src/widgets/dialogs/qinputdialog.h b/src/widgets/dialogs/qinputdialog.h index 096a81d4bc..e55c2da1ff 100644 --- a/src/widgets/dialogs/qinputdialog.h +++ b/src/widgets/dialogs/qinputdialog.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -215,6 +213,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QInputDialog::InputDialogOptions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QINPUTDIALOG_H diff --git a/src/widgets/dialogs/qmessagebox.h b/src/widgets/dialogs/qmessagebox.h index 735f28538b..a170360fd5 100644 --- a/src/widgets/dialogs/qmessagebox.h +++ b/src/widgets/dialogs/qmessagebox.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -333,6 +331,4 @@ str)).arg(QString::fromLatin1(qVersion())); QMessageBox::critical(0, QApplicatio QT_END_NAMESPACE -QT_END_HEADER - #endif // QMESSAGEBOX_H diff --git a/src/widgets/dialogs/qprogressdialog.h b/src/widgets/dialogs/qprogressdialog.h index 1f17727900..4eb9feeb7d 100644 --- a/src/widgets/dialogs/qprogressdialog.h +++ b/src/widgets/dialogs/qprogressdialog.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -139,6 +137,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPROGRESSDIALOG_H diff --git a/src/widgets/dialogs/qwizard.h b/src/widgets/dialogs/qwizard.h index 7a95492f94..fe2e5f2d13 100644 --- a/src/widgets/dialogs/qwizard.h +++ b/src/widgets/dialogs/qwizard.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -261,8 +259,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_WIZARD #endif // QWIZARD_H diff --git a/src/widgets/effects/qgraphicseffect.h b/src/widgets/effects/qgraphicseffect.h index f08f937799..8ba3a9c6d7 100644 --- a/src/widgets/effects/qgraphicseffect.h +++ b/src/widgets/effects/qgraphicseffect.h @@ -49,8 +49,6 @@ #include #ifndef QT_NO_GRAPHICSEFFECT -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -281,7 +279,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER #endif //QT_NO_GRAPHICSEFFECT #endif // QGRAPHICSEFFECT_H diff --git a/src/widgets/effects/qpixmapfilter_p.h b/src/widgets/effects/qpixmapfilter_p.h index e93c1adc3c..6f08e87928 100644 --- a/src/widgets/effects/qpixmapfilter_p.h +++ b/src/widgets/effects/qpixmapfilter_p.h @@ -58,8 +58,6 @@ #include #ifndef QT_NO_GRAPHICSEFFECT -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -189,7 +187,5 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif //QT_NO_GRAPHICSEFFECT #endif // QPIXMAPFILTER_H diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout.h b/src/widgets/graphicsview/qgraphicsanchorlayout.h index b8aa221630..0adf18f9ba 100644 --- a/src/widgets/graphicsview/qgraphicsanchorlayout.h +++ b/src/widgets/graphicsview/qgraphicsanchorlayout.h @@ -46,8 +46,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -122,6 +120,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/graphicsview/qgraphicsgridlayout.h b/src/widgets/graphicsview/qgraphicsgridlayout.h index d833ea3b33..308be67531 100644 --- a/src/widgets/graphicsview/qgraphicsgridlayout.h +++ b/src/widgets/graphicsview/qgraphicsgridlayout.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -137,7 +135,5 @@ inline void QGraphicsGridLayout::addItem(QGraphicsLayoutItem *aitem, int arow, i QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/graphicsview/qgraphicsitem.h b/src/widgets/graphicsview/qgraphicsitem.h index 446aea4754..c6b1c2dd66 100644 --- a/src/widgets/graphicsview/qgraphicsitem.h +++ b/src/widgets/graphicsview/qgraphicsitem.h @@ -52,8 +52,6 @@ class tst_QGraphicsItem; -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -1059,6 +1057,4 @@ QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER - #endif // QGRAPHICSITEM_H diff --git a/src/widgets/graphicsview/qgraphicsitemanimation.h b/src/widgets/graphicsview/qgraphicsitemanimation.h index d87fc8a868..f0006e3c34 100644 --- a/src/widgets/graphicsview/qgraphicsitemanimation.h +++ b/src/widgets/graphicsview/qgraphicsitemanimation.h @@ -46,8 +46,6 @@ #if !defined(QT_NO_GRAPHICSVIEW) -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -113,7 +111,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_GRAPHICSVIEW #endif diff --git a/src/widgets/graphicsview/qgraphicslayout.h b/src/widgets/graphicsview/qgraphicslayout.h index 85668d8deb..e9574933a6 100644 --- a/src/widgets/graphicsview/qgraphicslayout.h +++ b/src/widgets/graphicsview/qgraphicslayout.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -93,7 +91,5 @@ Q_DECLARE_INTERFACE(QGraphicsLayout, "org.qt-project.Qt.QGraphicsLayout") QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/graphicsview/qgraphicslayoutitem.h b/src/widgets/graphicsview/qgraphicslayoutitem.h index b753790121..ffd82b0720 100644 --- a/src/widgets/graphicsview/qgraphicslayoutitem.h +++ b/src/widgets/graphicsview/qgraphicslayoutitem.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -148,6 +146,4 @@ inline qreal QGraphicsLayoutItem::maximumHeight() const QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/graphicsview/qgraphicslinearlayout.h b/src/widgets/graphicsview/qgraphicslinearlayout.h index 0aabc808a0..2ddbda02df 100644 --- a/src/widgets/graphicsview/qgraphicslinearlayout.h +++ b/src/widgets/graphicsview/qgraphicslinearlayout.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -112,7 +110,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.h b/src/widgets/graphicsview/qgraphicsproxywidget.h index a88899b900..641881ed71 100644 --- a/src/widgets/graphicsview/qgraphicsproxywidget.h +++ b/src/widgets/graphicsview/qgraphicsproxywidget.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -140,7 +138,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/graphicsview/qgraphicsscene.h b/src/widgets/graphicsview/qgraphicsscene.h index b7239a2784..1a575d987e 100644 --- a/src/widgets/graphicsview/qgraphicsscene.h +++ b/src/widgets/graphicsview/qgraphicsscene.h @@ -51,8 +51,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -325,6 +323,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsScene::SceneLayers) QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/graphicsview/qgraphicssceneevent.h b/src/widgets/graphicsview/qgraphicssceneevent.h index 81a5321e0c..616b0b1151 100644 --- a/src/widgets/graphicsview/qgraphicssceneevent.h +++ b/src/widgets/graphicsview/qgraphicssceneevent.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -320,6 +318,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/graphicsview/qgraphicssceneindex_p.h b/src/widgets/graphicsview/qgraphicssceneindex_p.h index c5500e3d6e..29b321fb1d 100644 --- a/src/widgets/graphicsview/qgraphicssceneindex_p.h +++ b/src/widgets/graphicsview/qgraphicssceneindex_p.h @@ -61,8 +61,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -176,6 +174,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QGRAPHICSSCENEINDEX_H diff --git a/src/widgets/graphicsview/qgraphicsscenelinearindex_p.h b/src/widgets/graphicsview/qgraphicsscenelinearindex_p.h index 607a15b949..7debcfb501 100644 --- a/src/widgets/graphicsview/qgraphicsscenelinearindex_p.h +++ b/src/widgets/graphicsview/qgraphicsscenelinearindex_p.h @@ -62,8 +62,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -103,6 +101,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QGRAPHICSSCENELINEARINDEX_H diff --git a/src/widgets/graphicsview/qgraphicstransform.h b/src/widgets/graphicsview/qgraphicstransform.h index 6c2c0d67f0..ebcfbb32f1 100644 --- a/src/widgets/graphicsview/qgraphicstransform.h +++ b/src/widgets/graphicsview/qgraphicstransform.h @@ -48,8 +48,6 @@ #include #ifndef QT_NO_GRAPHICSVIEW -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -152,7 +150,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER #endif //QT_NO_GRAPHICSVIEW #endif // QFXTRANSFORM_H diff --git a/src/widgets/graphicsview/qgraphicsview.h b/src/widgets/graphicsview/qgraphicsview.h index 488e12511c..565e89995f 100644 --- a/src/widgets/graphicsview/qgraphicsview.h +++ b/src/widgets/graphicsview/qgraphicsview.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -310,6 +308,4 @@ inline QPolygon QGraphicsView::mapFromScene(qreal ax, qreal ay, qreal w, qreal h QT_END_NAMESPACE -QT_END_HEADER - #endif // QGRAPHICSVIEW_H diff --git a/src/widgets/graphicsview/qgraphicswidget.h b/src/widgets/graphicsview/qgraphicswidget.h index 3f8720f6e9..66cce3d961 100644 --- a/src/widgets/graphicsview/qgraphicswidget.h +++ b/src/widgets/graphicsview/qgraphicswidget.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -245,7 +243,5 @@ inline void QGraphicsWidget::setGeometry(qreal ax, qreal ay, qreal aw, qreal ah) QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/itemviews/qabstractitemdelegate.h b/src/widgets/itemviews/qabstractitemdelegate.h index 28635b0595..f72076b515 100644 --- a/src/widgets/itemviews/qabstractitemdelegate.h +++ b/src/widgets/itemviews/qabstractitemdelegate.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -131,6 +129,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTITEMDELEGATE_H diff --git a/src/widgets/itemviews/qabstractitemview.h b/src/widgets/itemviews/qabstractitemview.h index ad5e1de562..b48047bdc3 100644 --- a/src/widgets/itemviews/qabstractitemview.h +++ b/src/widgets/itemviews/qabstractitemview.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -376,6 +374,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractItemView::EditTriggers) QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTITEMVIEW_H diff --git a/src/widgets/itemviews/qcolumnview.h b/src/widgets/itemviews/qcolumnview.h index a340be0823..660b5f387e 100644 --- a/src/widgets/itemviews/qcolumnview.h +++ b/src/widgets/itemviews/qcolumnview.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -116,7 +114,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOLUMNVIEW_H diff --git a/src/widgets/itemviews/qdatawidgetmapper.h b/src/widgets/itemviews/qdatawidgetmapper.h index d65d06a4ab..9fb9c2db05 100644 --- a/src/widgets/itemviews/qdatawidgetmapper.h +++ b/src/widgets/itemviews/qdatawidgetmapper.h @@ -46,8 +46,6 @@ #ifndef QT_NO_DATAWIDGETMAPPER -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -120,8 +118,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_DATAWIDGETMAPPER #endif diff --git a/src/widgets/itemviews/qdirmodel.h b/src/widgets/itemviews/qdirmodel.h index 6ecd9a3990..45bc3511d8 100644 --- a/src/widgets/itemviews/qdirmodel.h +++ b/src/widgets/itemviews/qdirmodel.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -154,6 +152,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QDIRMODEL_H diff --git a/src/widgets/itemviews/qfileiconprovider.h b/src/widgets/itemviews/qfileiconprovider.h index a7a7d508ce..3a8a42f07b 100644 --- a/src/widgets/itemviews/qfileiconprovider.h +++ b/src/widgets/itemviews/qfileiconprovider.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -75,7 +73,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QFILEICONPROVIDER_H diff --git a/src/widgets/itemviews/qheaderview.h b/src/widgets/itemviews/qheaderview.h index 4e2b7d24c6..1cbfc957a8 100644 --- a/src/widgets/itemviews/qheaderview.h +++ b/src/widgets/itemviews/qheaderview.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -263,6 +261,4 @@ inline void QHeaderView::showSection(int alogicalIndex) QT_END_NAMESPACE -QT_END_HEADER - #endif // QHEADERVIEW_H diff --git a/src/widgets/itemviews/qitemdelegate.h b/src/widgets/itemviews/qitemdelegate.h index 17b0e94625..884a09e8c6 100644 --- a/src/widgets/itemviews/qitemdelegate.h +++ b/src/widgets/itemviews/qitemdelegate.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -135,6 +133,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QITEMDELEGATE_H diff --git a/src/widgets/itemviews/qitemeditorfactory.h b/src/widgets/itemviews/qitemeditorfactory.h index f52f4c5b64..5aed89fb70 100644 --- a/src/widgets/itemviews/qitemeditorfactory.h +++ b/src/widgets/itemviews/qitemeditorfactory.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -118,6 +116,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QITEMEDITORFACTORY_H diff --git a/src/widgets/itemviews/qlistview.h b/src/widgets/itemviews/qlistview.h index a7164142dd..ff880a889c 100644 --- a/src/widgets/itemviews/qlistview.h +++ b/src/widgets/itemviews/qlistview.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -193,6 +191,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QLISTVIEW_H diff --git a/src/widgets/itemviews/qlistwidget.h b/src/widgets/itemviews/qlistwidget.h index 1a8c56c907..2cddd4eb6f 100644 --- a/src/widgets/itemviews/qlistwidget.h +++ b/src/widgets/itemviews/qlistwidget.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -329,6 +327,4 @@ inline bool QListWidgetItem::isHidden() const QT_END_NAMESPACE -QT_END_HEADER - #endif // QLISTWIDGET_H diff --git a/src/widgets/itemviews/qstyleditemdelegate.h b/src/widgets/itemviews/qstyleditemdelegate.h index 8aa056d769..d88da60c89 100644 --- a/src/widgets/itemviews/qstyleditemdelegate.h +++ b/src/widgets/itemviews/qstyleditemdelegate.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -110,6 +108,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTYLEDITEMDELEGATE_H diff --git a/src/widgets/itemviews/qtableview.h b/src/widgets/itemviews/qtableview.h index 8f4c73d9f1..4d1129c60b 100644 --- a/src/widgets/itemviews/qtableview.h +++ b/src/widgets/itemviews/qtableview.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -192,6 +190,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTABLEVIEW_H diff --git a/src/widgets/itemviews/qtablewidget.h b/src/widgets/itemviews/qtablewidget.h index 6d9da27fdf..a6c355c6a6 100644 --- a/src/widgets/itemviews/qtablewidget.h +++ b/src/widgets/itemviews/qtablewidget.h @@ -47,8 +47,6 @@ #include //#include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -371,6 +369,4 @@ inline bool QTableWidgetItem::isSelected() const QT_END_NAMESPACE -QT_END_HEADER - #endif // QTABLEWIDGET_H diff --git a/src/widgets/itemviews/qtreeview.h b/src/widgets/itemviews/qtreeview.h index 54e580985c..7127994969 100644 --- a/src/widgets/itemviews/qtreeview.h +++ b/src/widgets/itemviews/qtreeview.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -235,6 +233,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTREEVIEW_H diff --git a/src/widgets/itemviews/qtreewidget.h b/src/widgets/itemviews/qtreewidget.h index a16a1cd9c2..0796797273 100644 --- a/src/widgets/itemviews/qtreewidget.h +++ b/src/widgets/itemviews/qtreewidget.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -423,6 +421,4 @@ inline bool QTreeWidgetItem::isDisabled() const QT_END_NAMESPACE -QT_END_HEADER - #endif // QTREEWIDGET_H diff --git a/src/widgets/itemviews/qtreewidgetitemiterator.h b/src/widgets/itemviews/qtreewidgetitemiterator.h index ec604e8b1a..e124a72afd 100644 --- a/src/widgets/itemviews/qtreewidgetitemiterator.h +++ b/src/widgets/itemviews/qtreewidgetitemiterator.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -153,6 +151,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QTreeWidgetItemIterator::IteratorFlags) QT_END_NAMESPACE #endif // QT_NO_TREEWIDGET -QT_END_HEADER - #endif // QTREEWIDGETITEMITERATOR_H diff --git a/src/widgets/kernel/qaction.h b/src/widgets/kernel/qaction.h index 5fb4c655eb..975073201a 100644 --- a/src/widgets/kernel/qaction.h +++ b/src/widgets/kernel/qaction.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -221,6 +219,4 @@ QT_END_INCLUDE_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER - #endif // QACTION_H diff --git a/src/widgets/kernel/qactiongroup.h b/src/widgets/kernel/qactiongroup.h index 13c5ea8ef1..747cc83865 100644 --- a/src/widgets/kernel/qactiongroup.h +++ b/src/widgets/kernel/qactiongroup.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -99,6 +97,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QACTIONGROUP_H diff --git a/src/widgets/kernel/qapplication.h b/src/widgets/kernel/qapplication.h index 29f5ddf455..07ee638738 100644 --- a/src/widgets/kernel/qapplication.h +++ b/src/widgets/kernel/qapplication.h @@ -55,8 +55,6 @@ #endif #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -247,6 +245,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QAPPLICATION_H diff --git a/src/widgets/kernel/qboxlayout.h b/src/widgets/kernel/qboxlayout.h index 3ced397c1d..dabb96ccd8 100644 --- a/src/widgets/kernel/qboxlayout.h +++ b/src/widgets/kernel/qboxlayout.h @@ -49,8 +49,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -141,6 +139,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QBOXLAYOUT_H diff --git a/src/widgets/kernel/qdesktopwidget.h b/src/widgets/kernel/qdesktopwidget.h index c27e96a2d9..d823e3ce47 100644 --- a/src/widgets/kernel/qdesktopwidget.h +++ b/src/widgets/kernel/qdesktopwidget.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -104,6 +102,4 @@ inline int QDesktopWidget::screenCount() const QT_END_NAMESPACE -QT_END_HEADER - #endif // QDESKTOPWIDGET_H diff --git a/src/widgets/kernel/qformlayout.h b/src/widgets/kernel/qformlayout.h index a206e90009..29abc6b548 100644 --- a/src/widgets/kernel/qformlayout.h +++ b/src/widgets/kernel/qformlayout.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -157,6 +155,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/kernel/qgesture.h b/src/widgets/kernel/qgesture.h index 4384600f80..a9609ffad9 100644 --- a/src/widgets/kernel/qgesture.h +++ b/src/widgets/kernel/qgesture.h @@ -52,8 +52,6 @@ #ifndef QT_NO_GESTURES -QT_BEGIN_HEADER - Q_DECLARE_METATYPE(Qt::GestureState) Q_DECLARE_METATYPE(Qt::GestureType) @@ -328,8 +326,6 @@ private: QT_END_NAMESPACE Q_DECLARE_METATYPE(QGesture::GestureCancelPolicy) -QT_END_HEADER - #endif // QT_NO_GESTURES #endif // QGESTURE_H diff --git a/src/widgets/kernel/qgesturerecognizer.h b/src/widgets/kernel/qgesturerecognizer.h index b85aa54a6b..e313920f0a 100644 --- a/src/widgets/kernel/qgesturerecognizer.h +++ b/src/widgets/kernel/qgesturerecognizer.h @@ -47,8 +47,6 @@ #ifndef QT_NO_GESTURES -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -94,8 +92,6 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QGestureRecognizer::Result) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_GESTURES #endif // QGESTURERECOGNIZER_H diff --git a/src/widgets/kernel/qgridlayout.h b/src/widgets/kernel/qgridlayout.h index 9349c7807d..39c26619c3 100644 --- a/src/widgets/kernel/qgridlayout.h +++ b/src/widgets/kernel/qgridlayout.h @@ -49,8 +49,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -132,6 +130,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QGRIDLAYOUT_H diff --git a/src/widgets/kernel/qlayout.h b/src/widgets/kernel/qlayout.h index 09ddebeb2a..3f09419b05 100644 --- a/src/widgets/kernel/qlayout.h +++ b/src/widgets/kernel/qlayout.h @@ -50,8 +50,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -171,6 +169,4 @@ QT_END_NAMESPACE #include #include -QT_END_HEADER - #endif // QLAYOUT_H diff --git a/src/widgets/kernel/qlayoutitem.h b/src/widgets/kernel/qlayoutitem.h index b19a7c789f..3dfd5b0eb2 100644 --- a/src/widgets/kernel/qlayoutitem.h +++ b/src/widgets/kernel/qlayoutitem.h @@ -47,8 +47,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -180,6 +178,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QLAYOUTITEM_H diff --git a/src/widgets/kernel/qshortcut.h b/src/widgets/kernel/qshortcut.h index f5daa381f7..001c6814ee 100644 --- a/src/widgets/kernel/qshortcut.h +++ b/src/widgets/kernel/qshortcut.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -101,6 +99,4 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSHORTCUT_H diff --git a/src/widgets/kernel/qsizepolicy.h b/src/widgets/kernel/qsizepolicy.h index 0a878674cc..383c7d0512 100644 --- a/src/widgets/kernel/qsizepolicy.h +++ b/src/widgets/kernel/qsizepolicy.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -183,6 +181,4 @@ inline void QSizePolicy::transpose() { QT_END_NAMESPACE -QT_END_HEADER - #endif // QSIZEPOLICY_H diff --git a/src/widgets/kernel/qstackedlayout.h b/src/widgets/kernel/qstackedlayout.h index a8067b5bab..5067f4e457 100644 --- a/src/widgets/kernel/qstackedlayout.h +++ b/src/widgets/kernel/qstackedlayout.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -111,6 +109,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTACKEDLAYOUT_H diff --git a/src/widgets/kernel/qtooltip.h b/src/widgets/kernel/qtooltip.h index 3a09803598..c7fb9809dc 100644 --- a/src/widgets/kernel/qtooltip.h +++ b/src/widgets/kernel/qtooltip.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -72,6 +70,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTOOLTIP_H diff --git a/src/widgets/kernel/qwhatsthis.h b/src/widgets/kernel/qwhatsthis.h index 7e41e5ab58..80a8be5227 100644 --- a/src/widgets/kernel/qwhatsthis.h +++ b/src/widgets/kernel/qwhatsthis.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -74,6 +72,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWHATSTHIS_H diff --git a/src/widgets/kernel/qwidget.h b/src/widgets/kernel/qwidget.h index d24258e742..5965eb8601 100644 --- a/src/widgets/kernel/qwidget.h +++ b/src/widgets/kernel/qwidget.h @@ -60,8 +60,6 @@ #include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -857,6 +855,4 @@ inline bool QWidget::testAttribute(Qt::WidgetAttribute attribute) const QT_END_NAMESPACE -QT_END_HEADER - #endif // QWIDGET_H diff --git a/src/widgets/kernel/qwidgetaction.h b/src/widgets/kernel/qwidgetaction.h index 14f1bfaf7f..3956445bc8 100644 --- a/src/widgets/kernel/qwidgetaction.h +++ b/src/widgets/kernel/qwidgetaction.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -85,6 +83,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWIDGETACTION_H diff --git a/src/widgets/kernel/qwidgetsfunctions_wince.h b/src/widgets/kernel/qwidgetsfunctions_wince.h index 5d3640ae75..cc8c1e4a03 100644 --- a/src/widgets/kernel/qwidgetsfunctions_wince.h +++ b/src/widgets/kernel/qwidgetsfunctions_wince.h @@ -44,10 +44,8 @@ #include #ifdef QT_BUILD_GUI_LIB -QT_BEGIN_HEADER QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER #endif diff --git a/src/widgets/kernel/qwidgetwindow_qpa_p.h b/src/widgets/kernel/qwidgetwindow_qpa_p.h index 7e40ded8c8..84c1b90826 100644 --- a/src/widgets/kernel/qwidgetwindow_qpa_p.h +++ b/src/widgets/kernel/qwidgetwindow_qpa_p.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -111,6 +109,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWIDGETWINDOW_QPA_P_H diff --git a/src/widgets/kernel/qwindowcontainer_p.h b/src/widgets/kernel/qwindowcontainer_p.h index 3e2eddd83c..e8d089c9bd 100644 --- a/src/widgets/kernel/qwindowcontainer_p.h +++ b/src/widgets/kernel/qwindowcontainer_p.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QWindowContainerPrivate; @@ -68,6 +66,4 @@ private slots: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWINDOWCONTAINER_H diff --git a/src/widgets/statemachine/qkeyeventtransition.h b/src/widgets/statemachine/qkeyeventtransition.h index 9be5a67c0f..d2ea7cb93a 100644 --- a/src/widgets/statemachine/qkeyeventtransition.h +++ b/src/widgets/statemachine/qkeyeventtransition.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -82,6 +80,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/statemachine/qmouseeventtransition.h b/src/widgets/statemachine/qmouseeventtransition.h index b215df8bc1..b96f1ef542 100644 --- a/src/widgets/statemachine/qmouseeventtransition.h +++ b/src/widgets/statemachine/qmouseeventtransition.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -86,6 +84,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif diff --git a/src/widgets/styles/qcommonstyle.h b/src/widgets/styles/qcommonstyle.h index 1d203ded34..d11f57dac0 100644 --- a/src/widgets/styles/qcommonstyle.h +++ b/src/widgets/styles/qcommonstyle.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QCommonStylePrivate; @@ -105,6 +103,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOMMONSTYLE_H diff --git a/src/widgets/styles/qdrawutil.h b/src/widgets/styles/qdrawutil.h index f0cc98f54a..37e02bb1a9 100644 --- a/src/widgets/styles/qdrawutil.h +++ b/src/widgets/styles/qdrawutil.h @@ -46,8 +46,6 @@ #include // char*->QString conversion #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -169,6 +167,4 @@ inline void qDrawBorderPixmap(QPainter *painter, QT_END_NAMESPACE -QT_END_HEADER - #endif // QDRAWUTIL_H diff --git a/src/widgets/styles/qfusionstyle_p.h b/src/widgets/styles/qfusionstyle_p.h index e024677a9b..2fa7779b7b 100644 --- a/src/widgets/styles/qfusionstyle_p.h +++ b/src/widgets/styles/qfusionstyle_p.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -106,6 +104,4 @@ protected: QT_END_NAMESPACE -QT_END_HEADER - #endif //QFUSIONSTYLE_P_H diff --git a/src/widgets/styles/qgtkstyle_p.h b/src/widgets/styles/qgtkstyle_p.h index f2710af4c6..0713f30bb9 100644 --- a/src/widgets/styles/qgtkstyle_p.h +++ b/src/widgets/styles/qgtkstyle_p.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -119,6 +117,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif //QGTKSTYLE_P_H diff --git a/src/widgets/styles/qmacstyle_mac_p.h b/src/widgets/styles/qmacstyle_mac_p.h index d06a5a951f..aef04a93bc 100644 --- a/src/widgets/styles/qmacstyle_mac_p.h +++ b/src/widgets/styles/qmacstyle_mac_p.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -130,6 +128,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QMACSTYLE_MAC_P_H diff --git a/src/widgets/styles/qproxystyle.h b/src/widgets/styles/qproxystyle.h index 52b02c8e5b..62a263b520 100644 --- a/src/widgets/styles/qproxystyle.h +++ b/src/widgets/styles/qproxystyle.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -107,6 +105,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPROXYSTYLE_H diff --git a/src/widgets/styles/qstyle.h b/src/widgets/styles/qstyle.h index b69f5da6c5..a9ac1813c5 100644 --- a/src/widgets/styles/qstyle.h +++ b/src/widgets/styles/qstyle.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -831,6 +829,4 @@ Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, QStyle::State state); QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTYLE_H diff --git a/src/widgets/styles/qstylefactory.h b/src/widgets/styles/qstylefactory.h index 500e86a9d4..fb0f0c4851 100644 --- a/src/widgets/styles/qstylefactory.h +++ b/src/widgets/styles/qstylefactory.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -60,6 +58,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTYLEFACTORY_H diff --git a/src/widgets/styles/qstyleoption.h b/src/widgets/styles/qstyleoption.h index 4109c8e702..d2af5d14d8 100644 --- a/src/widgets/styles/qstyleoption.h +++ b/src/widgets/styles/qstyleoption.h @@ -56,8 +56,6 @@ # include #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -751,6 +749,4 @@ Q_WIDGETS_EXPORT QDebug operator<<(QDebug debug, const QStyleOption &option); QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTYLEOPTION_H diff --git a/src/widgets/styles/qstylepainter.h b/src/widgets/styles/qstylepainter.h index dee01c09a3..681997b0f2 100644 --- a/src/widgets/styles/qstylepainter.h +++ b/src/widgets/styles/qstylepainter.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -106,6 +104,4 @@ void QStylePainter::drawItemPixmap(const QRect &r, int flags, const QPixmap &pix QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTYLEPAINTER_H diff --git a/src/widgets/styles/qstyleplugin.h b/src/widgets/styles/qstyleplugin.h index d34f0c0a15..77c1f906fd 100644 --- a/src/widgets/styles/qstyleplugin.h +++ b/src/widgets/styles/qstyleplugin.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -66,6 +64,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTYLEPLUGIN_H diff --git a/src/widgets/styles/qwindowscestyle_p.h b/src/widgets/styles/qwindowscestyle_p.h index 5d38abe41b..cd23afb480 100644 --- a/src/widgets/styles/qwindowscestyle_p.h +++ b/src/widgets/styles/qwindowscestyle_p.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -98,6 +96,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWINDOWSCESTYLE_P_H diff --git a/src/widgets/styles/qwindowsmobilestyle_p.h b/src/widgets/styles/qwindowsmobilestyle_p.h index 21df982344..c0a6f779c9 100644 --- a/src/widgets/styles/qwindowsmobilestyle_p.h +++ b/src/widgets/styles/qwindowsmobilestyle_p.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -111,6 +109,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif //QWINDOWSMOBILESTYLE_P_H diff --git a/src/widgets/styles/qwindowsstyle_p.h b/src/widgets/styles/qwindowsstyle_p.h index 65573acf67..5a52dcd683 100644 --- a/src/widgets/styles/qwindowsstyle_p.h +++ b/src/widgets/styles/qwindowsstyle_p.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -103,6 +101,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWINDOWSSTYLE_P_H diff --git a/src/widgets/styles/qwindowsvistastyle_p.h b/src/widgets/styles/qwindowsvistastyle_p.h index 2a06c78806..7a559325bd 100644 --- a/src/widgets/styles/qwindowsvistastyle_p.h +++ b/src/widgets/styles/qwindowsvistastyle_p.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -99,6 +97,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWINDOWSVISTASTYLE_P_H diff --git a/src/widgets/styles/qwindowsxpstyle_p.h b/src/widgets/styles/qwindowsxpstyle_p.h index 626bcc4ad7..cf171b1436 100644 --- a/src/widgets/styles/qwindowsxpstyle_p.h +++ b/src/widgets/styles/qwindowsxpstyle_p.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -99,6 +97,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWINDOWSXPSTYLE_P_H diff --git a/src/widgets/util/qcolormap.h b/src/widgets/util/qcolormap.h index d3b9535923..a41b1e472b 100644 --- a/src/widgets/util/qcolormap.h +++ b/src/widgets/util/qcolormap.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -91,6 +89,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOLORMAP_H diff --git a/src/widgets/util/qcompleter.h b/src/widgets/util/qcompleter.h index ba43e4470a..57a1676d01 100644 --- a/src/widgets/util/qcompleter.h +++ b/src/widgets/util/qcompleter.h @@ -48,8 +48,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -165,6 +163,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOMPLETER_H diff --git a/src/widgets/util/qscroller.h b/src/widgets/util/qscroller.h index b0ff9dc5c5..fac9b519c7 100644 --- a/src/widgets/util/qscroller.h +++ b/src/widgets/util/qscroller.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -149,6 +147,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSCROLLER_H diff --git a/src/widgets/util/qscrollerproperties.h b/src/widgets/util/qscrollerproperties.h index 58bce74bca..27b71e4d27 100644 --- a/src/widgets/util/qscrollerproperties.h +++ b/src/widgets/util/qscrollerproperties.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -134,6 +132,4 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QScrollerProperties::OvershootPolicy) Q_DECLARE_METATYPE(QScrollerProperties::FrameRates) -QT_END_HEADER - #endif // QSCROLLERPROPERTIES_H diff --git a/src/widgets/util/qsystemtrayicon.h b/src/widgets/util/qsystemtrayicon.h index 201ea85253..6745319993 100644 --- a/src/widgets/util/qsystemtrayicon.h +++ b/src/widgets/util/qsystemtrayicon.h @@ -48,8 +48,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -126,7 +124,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_SYSTEMTRAYICON #endif // QSYSTEMTRAYICON_H diff --git a/src/widgets/util/qundogroup.h b/src/widgets/util/qundogroup.h index 8e888f993b..31e6aea1f1 100644 --- a/src/widgets/util/qundogroup.h +++ b/src/widgets/util/qundogroup.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QUndoGroupPrivate; @@ -104,6 +102,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QUNDOGROUP_H diff --git a/src/widgets/util/qundostack.h b/src/widgets/util/qundostack.h index 44b8337f57..c7071fe42a 100644 --- a/src/widgets/util/qundostack.h +++ b/src/widgets/util/qundostack.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -153,6 +151,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QUNDOSTACK_H diff --git a/src/widgets/util/qundoview.h b/src/widgets/util/qundoview.h index bc262799d9..a9c0ac4e95 100644 --- a/src/widgets/util/qundoview.h +++ b/src/widgets/util/qundoview.h @@ -47,8 +47,6 @@ #ifndef QT_NO_UNDOVIEW -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE class QUndoViewPrivate; @@ -95,7 +93,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_UNDOVIEW #endif // QUNDOVIEW_H diff --git a/src/widgets/widgets/qabstractbutton.h b/src/widgets/widgets/qabstractbutton.h index 9c27e3523f..793f984fa0 100644 --- a/src/widgets/widgets/qabstractbutton.h +++ b/src/widgets/widgets/qabstractbutton.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -155,6 +153,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTBUTTON_H diff --git a/src/widgets/widgets/qabstractscrollarea.h b/src/widgets/widgets/qabstractscrollarea.h index 79038e9fdd..5c3c5aaace 100644 --- a/src/widgets/widgets/qabstractscrollarea.h +++ b/src/widgets/widgets/qabstractscrollarea.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -140,6 +138,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTSCROLLAREA_H diff --git a/src/widgets/widgets/qabstractslider.h b/src/widgets/widgets/qabstractslider.h index a49970a2d5..e82adcf71d 100644 --- a/src/widgets/widgets/qabstractslider.h +++ b/src/widgets/widgets/qabstractslider.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -163,6 +161,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTSLIDER_H diff --git a/src/widgets/widgets/qabstractspinbox.h b/src/widgets/widgets/qabstractspinbox.h index 49cd8f38f1..e29f9de0d5 100644 --- a/src/widgets/widgets/qabstractspinbox.h +++ b/src/widgets/widgets/qabstractspinbox.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -175,6 +173,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractSpinBox::StepEnabled) QT_END_NAMESPACE -QT_END_HEADER - #endif // QABSTRACTSPINBOX_H diff --git a/src/widgets/widgets/qbuttongroup.h b/src/widgets/widgets/qbuttongroup.h index 76ce549d95..600df83d76 100644 --- a/src/widgets/widgets/qbuttongroup.h +++ b/src/widgets/widgets/qbuttongroup.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -100,6 +98,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QBUTTONGROUP_H diff --git a/src/widgets/widgets/qcalendarwidget.h b/src/widgets/widgets/qcalendarwidget.h index 5d4c1722b4..815fcc823a 100644 --- a/src/widgets/widgets/qcalendarwidget.h +++ b/src/widgets/widgets/qcalendarwidget.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -191,7 +189,5 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCALENDARWIDGET_H diff --git a/src/widgets/widgets/qcheckbox.h b/src/widgets/widgets/qcheckbox.h index 1bf1bf56a0..3a1e6fc020 100644 --- a/src/widgets/widgets/qcheckbox.h +++ b/src/widgets/widgets/qcheckbox.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -92,6 +90,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCHECKBOX_H diff --git a/src/widgets/widgets/qcombobox.h b/src/widgets/widgets/qcombobox.h index 0eb5881b93..26e9f0882c 100644 --- a/src/widgets/widgets/qcombobox.h +++ b/src/widgets/widgets/qcombobox.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #ifndef QT_NO_COMBOBOX @@ -280,6 +278,4 @@ inline void QComboBox::insertItem(int aindex, const QString &atext, QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOMBOBOX_H diff --git a/src/widgets/widgets/qcommandlinkbutton.h b/src/widgets/widgets/qcommandlinkbutton.h index a74d6a7b84..d8d2617587 100644 --- a/src/widgets/widgets/qcommandlinkbutton.h +++ b/src/widgets/widgets/qcommandlinkbutton.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -81,6 +79,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOMMANDLINKBUTTON diff --git a/src/widgets/widgets/qdatetimeedit.h b/src/widgets/widgets/qdatetimeedit.h index d3197632cf..30978113d0 100644 --- a/src/widgets/widgets/qdatetimeedit.h +++ b/src/widgets/widgets/qdatetimeedit.h @@ -46,8 +46,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -235,6 +233,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeEdit::Sections) QT_END_NAMESPACE -QT_END_HEADER - #endif // QDATETIMEEDIT_H diff --git a/src/widgets/widgets/qdial.h b/src/widgets/widgets/qdial.h index c7be201b96..ee53edc8dd 100644 --- a/src/widgets/widgets/qdial.h +++ b/src/widgets/widgets/qdial.h @@ -45,8 +45,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -105,6 +103,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QDIAL_H diff --git a/src/widgets/widgets/qdialogbuttonbox.h b/src/widgets/widgets/qdialogbuttonbox.h index 06776bbd93..d2969d2eda 100644 --- a/src/widgets/widgets/qdialogbuttonbox.h +++ b/src/widgets/widgets/qdialogbuttonbox.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -162,6 +160,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QDialogButtonBox::StandardButtons) QT_END_NAMESPACE -QT_END_HEADER - #endif // QDIALOGBUTTONBOX_H diff --git a/src/widgets/widgets/qdockwidget.h b/src/widgets/widgets/qdockwidget.h index 993ae6b914..a886aee1d0 100644 --- a/src/widgets/widgets/qdockwidget.h +++ b/src/widgets/widgets/qdockwidget.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -140,6 +138,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QDockWidget::DockWidgetFeatures) QT_END_NAMESPACE -QT_END_HEADER - #endif // QDYNAMICDOCKWIDGET_H diff --git a/src/widgets/widgets/qfocusframe.h b/src/widgets/widgets/qfocusframe.h index 2993ed5c7f..aab76c2569 100644 --- a/src/widgets/widgets/qfocusframe.h +++ b/src/widgets/widgets/qfocusframe.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -76,6 +74,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QFOCUSFRAME_H diff --git a/src/widgets/widgets/qfontcombobox.h b/src/widgets/widgets/qfontcombobox.h index e5e1580cdb..4101b37e2b 100644 --- a/src/widgets/widgets/qfontcombobox.h +++ b/src/widgets/widgets/qfontcombobox.h @@ -47,8 +47,6 @@ #ifndef QT_NO_FONTCOMBOBOX -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -105,7 +103,5 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QFontComboBox::FontFilters) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_FONTCOMBOBOX #endif diff --git a/src/widgets/widgets/qframe.h b/src/widgets/widgets/qframe.h index 021d7f5ab0..3539f9fae0 100644 --- a/src/widgets/widgets/qframe.h +++ b/src/widgets/widgets/qframe.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -125,6 +123,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QFRAME_H diff --git a/src/widgets/widgets/qgroupbox.h b/src/widgets/widgets/qgroupbox.h index d462a574fd..cfe32df3cc 100644 --- a/src/widgets/widgets/qgroupbox.h +++ b/src/widgets/widgets/qgroupbox.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -111,6 +109,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QGROUPBOX_H diff --git a/src/widgets/widgets/qlabel.h b/src/widgets/widgets/qlabel.h index 114d239918..311eab958f 100644 --- a/src/widgets/widgets/qlabel.h +++ b/src/widgets/widgets/qlabel.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -164,6 +162,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QLABEL_H diff --git a/src/widgets/widgets/qlcdnumber.h b/src/widgets/widgets/qlcdnumber.h index 4495f40f7f..e5c2b40cf8 100644 --- a/src/widgets/widgets/qlcdnumber.h +++ b/src/widgets/widgets/qlcdnumber.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -122,6 +120,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QLCDNUMBER_H diff --git a/src/widgets/widgets/qlineedit.h b/src/widgets/widgets/qlineedit.h index af50170d3d..56a18d4fab 100644 --- a/src/widgets/widgets/qlineedit.h +++ b/src/widgets/widgets/qlineedit.h @@ -47,8 +47,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -248,6 +246,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QLINEEDIT_H diff --git a/src/widgets/widgets/qmaccocoaviewcontainer_mac.h b/src/widgets/widgets/qmaccocoaviewcontainer_mac.h index 1bb631d296..d555d5cedd 100644 --- a/src/widgets/widgets/qmaccocoaviewcontainer_mac.h +++ b/src/widgets/widgets/qmaccocoaviewcontainer_mac.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -67,6 +65,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QCOCOAVIEWCONTAINER_H diff --git a/src/widgets/widgets/qmacnativewidget_mac.h b/src/widgets/widgets/qmacnativewidget_mac.h index 0a227f1756..47d7e17638 100644 --- a/src/widgets/widgets/qmacnativewidget_mac.h +++ b/src/widgets/widgets/qmacnativewidget_mac.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -68,6 +66,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QMACNATIVEWIDGET_H diff --git a/src/widgets/widgets/qmainwindow.h b/src/widgets/widgets/qmainwindow.h index d00e75d7ae..0527725976 100644 --- a/src/widgets/widgets/qmainwindow.h +++ b/src/widgets/widgets/qmainwindow.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -210,6 +208,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QMainWindow::DockOptions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QDYNAMICMAINWINDOW_H diff --git a/src/widgets/widgets/qmdiarea.h b/src/widgets/widgets/qmdiarea.h index 52278e35aa..9cb8cb01dc 100644 --- a/src/widgets/widgets/qmdiarea.h +++ b/src/widgets/widgets/qmdiarea.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -172,7 +170,5 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QMdiArea::AreaOptions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_MDIAREA #endif // QMDIAREA_H diff --git a/src/widgets/widgets/qmdisubwindow.h b/src/widgets/widgets/qmdisubwindow.h index 9dac7e1ee0..db5238f07f 100644 --- a/src/widgets/widgets/qmdisubwindow.h +++ b/src/widgets/widgets/qmdisubwindow.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -151,8 +149,6 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QMdiSubWindow::SubWindowOptions) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_MDIAREA #endif // QMDISUBWINDOW_H diff --git a/src/widgets/widgets/qmenu.h b/src/widgets/widgets/qmenu.h index e58e7a231f..3f6661951d 100644 --- a/src/widgets/widgets/qmenu.h +++ b/src/widgets/widgets/qmenu.h @@ -51,8 +51,6 @@ #include // for HMENU #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -201,6 +199,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QMENU_H diff --git a/src/widgets/widgets/qmenu_wince_resource_p.h b/src/widgets/widgets/qmenu_wince_resource_p.h index c3ec386780..783f3285af 100644 --- a/src/widgets/widgets/qmenu_wince_resource_p.h +++ b/src/widgets/widgets/qmenu_wince_resource_p.h @@ -50,7 +50,6 @@ // We mean it. // -QT_BEGIN_HEADER #define IDR_MAIN_MENU 102 #define IDR_MAIN_MENU2 103 @@ -90,5 +89,3 @@ QT_BEGIN_HEADER #define IDM_MENU7 40009 #define IDM_MENU8 40010 -QT_END_HEADER - diff --git a/src/widgets/widgets/qmenubar.h b/src/widgets/widgets/qmenubar.h index 4b850ca3fe..592c951815 100644 --- a/src/widgets/widgets/qmenubar.h +++ b/src/widgets/widgets/qmenubar.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -159,6 +157,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QMENUBAR_H diff --git a/src/widgets/widgets/qplaintextedit.h b/src/widgets/widgets/qplaintextedit.h index 1e9fc373bb..7e2e10d8e4 100644 --- a/src/widgets/widgets/qplaintextedit.h +++ b/src/widgets/widgets/qplaintextedit.h @@ -53,8 +53,6 @@ #ifndef QT_NO_TEXTEDIT -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -319,8 +317,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_TEXTEDIT diff --git a/src/widgets/widgets/qprogressbar.h b/src/widgets/widgets/qprogressbar.h index a1b0fcee1d..99fbe005ed 100644 --- a/src/widgets/widgets/qprogressbar.h +++ b/src/widgets/widgets/qprogressbar.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -125,6 +123,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPROGRESSBAR_H diff --git a/src/widgets/widgets/qpushbutton.h b/src/widgets/widgets/qpushbutton.h index 3aa3673478..1638123e0e 100644 --- a/src/widgets/widgets/qpushbutton.h +++ b/src/widgets/widgets/qpushbutton.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -112,6 +110,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPUSHBUTTON_H diff --git a/src/widgets/widgets/qradiobutton.h b/src/widgets/widgets/qradiobutton.h index 13a73ba3c9..ad73d0387c 100644 --- a/src/widgets/widgets/qradiobutton.h +++ b/src/widgets/widgets/qradiobutton.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -79,6 +77,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QRADIOBUTTON_H diff --git a/src/widgets/widgets/qrubberband.h b/src/widgets/widgets/qrubberband.h index 34962e52cc..3b74ec9f10 100644 --- a/src/widgets/widgets/qrubberband.h +++ b/src/widgets/widgets/qrubberband.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -98,6 +96,4 @@ inline void QRubberBand::move(int ax, int ay) QT_END_NAMESPACE -QT_END_HEADER - #endif // QRUBBERBAND_H diff --git a/src/widgets/widgets/qscrollarea.h b/src/widgets/widgets/qscrollarea.h index 18a9fac598..d506cd829c 100644 --- a/src/widgets/widgets/qscrollarea.h +++ b/src/widgets/widgets/qscrollarea.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -95,6 +93,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSCROLLAREA_H diff --git a/src/widgets/widgets/qscrollbar.h b/src/widgets/widgets/qscrollbar.h index e9514c59a9..b452c97c10 100644 --- a/src/widgets/widgets/qscrollbar.h +++ b/src/widgets/widgets/qscrollbar.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -94,6 +92,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSCROLLBAR_H diff --git a/src/widgets/widgets/qsizegrip.h b/src/widgets/widgets/qsizegrip.h index c79e4716da..61f71b788f 100644 --- a/src/widgets/widgets/qsizegrip.h +++ b/src/widgets/widgets/qsizegrip.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -83,6 +81,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSIZEGRIP_H diff --git a/src/widgets/widgets/qslider.h b/src/widgets/widgets/qslider.h index 460d52e57c..5c4aade02c 100644 --- a/src/widgets/widgets/qslider.h +++ b/src/widgets/widgets/qslider.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -106,6 +104,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSLIDER_H diff --git a/src/widgets/widgets/qspinbox.h b/src/widgets/widgets/qspinbox.h index 7be16f460b..501e6388ce 100644 --- a/src/widgets/widgets/qspinbox.h +++ b/src/widgets/widgets/qspinbox.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -172,6 +170,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSPINBOX_H diff --git a/src/widgets/widgets/qsplashscreen.h b/src/widgets/widgets/qsplashscreen.h index af97a38cf8..b356291adc 100644 --- a/src/widgets/widgets/qsplashscreen.h +++ b/src/widgets/widgets/qsplashscreen.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -88,6 +86,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSPLASHSCREEN_H diff --git a/src/widgets/widgets/qsplitter.h b/src/widgets/widgets/qsplitter.h index 79785b257e..511aadd2c9 100644 --- a/src/widgets/widgets/qsplitter.h +++ b/src/widgets/widgets/qsplitter.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -170,6 +168,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSPLITTER_H diff --git a/src/widgets/widgets/qstackedwidget.h b/src/widgets/widgets/qstackedwidget.h index 451de7fe40..59b340d03e 100644 --- a/src/widgets/widgets/qstackedwidget.h +++ b/src/widgets/widgets/qstackedwidget.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -94,6 +92,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTACKEDWIDGET_H diff --git a/src/widgets/widgets/qstatusbar.h b/src/widgets/widgets/qstatusbar.h index de3982cffd..989d3b9623 100644 --- a/src/widgets/widgets/qstatusbar.h +++ b/src/widgets/widgets/qstatusbar.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -101,6 +99,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QSTATUSBAR_H diff --git a/src/widgets/widgets/qtabbar.h b/src/widgets/widgets/qtabbar.h index 0bb10c2aa9..8d2bb6d11d 100644 --- a/src/widgets/widgets/qtabbar.h +++ b/src/widgets/widgets/qtabbar.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -212,6 +210,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTABBAR_H diff --git a/src/widgets/widgets/qtabwidget.h b/src/widgets/widgets/qtabwidget.h index 54bf1e638d..5bed379931 100644 --- a/src/widgets/widgets/qtabwidget.h +++ b/src/widgets/widgets/qtabwidget.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -181,6 +179,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTABWIDGET_H diff --git a/src/widgets/widgets/qtextbrowser.h b/src/widgets/widgets/qtextbrowser.h index 900dd27211..3f9488152a 100644 --- a/src/widgets/widgets/qtextbrowser.h +++ b/src/widgets/widgets/qtextbrowser.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -129,6 +127,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTEXTBROWSER_H diff --git a/src/widgets/widgets/qtextedit.h b/src/widgets/widgets/qtextedit.h index 7256e9b84e..e5a67ba855 100644 --- a/src/widgets/widgets/qtextedit.h +++ b/src/widgets/widgets/qtextedit.h @@ -51,8 +51,6 @@ #ifndef QT_NO_TEXTEDIT -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -314,8 +312,6 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QTextEdit::AutoFormatting) QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_TEXTEDIT #endif // QTEXTEDIT_H diff --git a/src/widgets/widgets/qtoolbar.h b/src/widgets/widgets/qtoolbar.h index a706ccf46e..99a8544153 100644 --- a/src/widgets/widgets/qtoolbar.h +++ b/src/widgets/widgets/qtoolbar.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -172,6 +170,4 @@ inline QAction *QToolBar::actionAt(int ax, int ay) const QT_END_NAMESPACE -QT_END_HEADER - #endif // QDYNAMICTOOLBAR_H diff --git a/src/widgets/widgets/qtoolbox.h b/src/widgets/widgets/qtoolbox.h index 6d7166f2ac..dc3dbad5b2 100644 --- a/src/widgets/widgets/qtoolbox.h +++ b/src/widgets/widgets/qtoolbox.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -126,6 +124,4 @@ inline int QToolBox::insertItem(int index, QWidget *item, const QString &text) QT_END_NAMESPACE -QT_END_HEADER - #endif // QTOOLBOX_H diff --git a/src/widgets/widgets/qtoolbutton.h b/src/widgets/widgets/qtoolbutton.h index 778f2d8f15..40ebfed9fb 100644 --- a/src/widgets/widgets/qtoolbutton.h +++ b/src/widgets/widgets/qtoolbutton.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -139,6 +137,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QTOOLBUTTON_H diff --git a/src/widgets/widgets/qwidgetlinecontrol_p.h b/src/widgets/widgets/qwidgetlinecontrol_p.h index f5fd900681..b114648c3c 100644 --- a/src/widgets/widgets/qwidgetlinecontrol_p.h +++ b/src/widgets/widgets/qwidgetlinecontrol_p.h @@ -69,8 +69,6 @@ #include "qplatformdefs.h" -QT_BEGIN_HEADER - #ifdef DrawText # undef DrawText #endif @@ -533,8 +531,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_LINEEDIT #endif // QWidgetLineControl_P_H diff --git a/src/widgets/widgets/qwidgettextcontrol_p.h b/src/widgets/widgets/qwidgettextcontrol_p.h index 070dc660c6..c805e38da7 100644 --- a/src/widgets/widgets/qwidgettextcontrol_p.h +++ b/src/widgets/widgets/qwidgettextcontrol_p.h @@ -65,8 +65,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -297,6 +295,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QWidgetTextControl_H diff --git a/src/xml/dom/qdom.h b/src/xml/dom/qdom.h index 36eee0caeb..f1c04a422d 100644 --- a/src/xml/dom/qdom.h +++ b/src/xml/dom/qdom.h @@ -45,8 +45,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -675,6 +673,4 @@ Q_XML_EXPORT QTextStream& operator<<(QTextStream&, const QDomNode&); QT_END_NAMESPACE -QT_END_HEADER - #endif // QDOM_H diff --git a/src/xml/qtxmlglobal.h b/src/xml/qtxmlglobal.h index fb86e57e9e..c7209ad054 100644 --- a/src/xml/qtxmlglobal.h +++ b/src/xml/qtxmlglobal.h @@ -44,8 +44,6 @@ #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE #ifndef QT_STATIC @@ -60,6 +58,4 @@ QT_BEGIN_NAMESPACE QT_END_NAMESPACE -QT_END_HEADER - #endif // QTXMLGLOBAL_H diff --git a/src/xml/sax/qxml.h b/src/xml/sax/qxml.h index 069e344ce4..4ce2c26b05 100644 --- a/src/xml/sax/qxml.h +++ b/src/xml/sax/qxml.h @@ -50,8 +50,6 @@ #include #include -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -417,6 +415,4 @@ inline int QXmlAttributes::count() const QT_END_NAMESPACE -QT_END_HEADER - #endif // QXML_H -- cgit v1.2.3 From d78bd439dcb290e4318734693d418937b0bf8129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 5 Dec 2012 14:27:41 +0100 Subject: Offscreen testing platform plugin Useful for running auto-tests without popping up a bunch of windows in the windowing system. Thus they can be run in the background and even in parallel without focus issues. Change-Id: I8b14c6de258b41225480a0af5a2a9553663bc2b7 Reviewed-by: Jason McDonald --- src/gui/kernel/qguiapplication.cpp | 2 + src/gui/kernel/qplatformwindow.cpp | 16 +- src/plugins/platforms/offscreen/main.cpp | 67 ++++++ src/plugins/platforms/offscreen/offscreen.json | 3 + src/plugins/platforms/offscreen/offscreen.pro | 25 ++ .../platforms/offscreen/qoffscreencommon.cpp | 229 +++++++++++++++++++ src/plugins/platforms/offscreen/qoffscreencommon.h | 109 +++++++++ .../platforms/offscreen/qoffscreenintegration.cpp | 162 +++++++++++++ .../platforms/offscreen/qoffscreenintegration.h | 80 +++++++ .../offscreen/qoffscreenintegration_dummy.cpp | 47 ++++ .../offscreen/qoffscreenintegration_x11.cpp | 252 +++++++++++++++++++++ .../offscreen/qoffscreenintegration_x11.h | 108 +++++++++ .../platforms/offscreen/qoffscreenwindow.cpp | 199 ++++++++++++++++ src/plugins/platforms/offscreen/qoffscreenwindow.h | 86 +++++++ src/plugins/platforms/platforms.pro | 2 +- 15 files changed, 1384 insertions(+), 3 deletions(-) create mode 100644 src/plugins/platforms/offscreen/main.cpp create mode 100644 src/plugins/platforms/offscreen/offscreen.json create mode 100644 src/plugins/platforms/offscreen/offscreen.pro create mode 100644 src/plugins/platforms/offscreen/qoffscreencommon.cpp create mode 100644 src/plugins/platforms/offscreen/qoffscreencommon.h create mode 100644 src/plugins/platforms/offscreen/qoffscreenintegration.cpp create mode 100644 src/plugins/platforms/offscreen/qoffscreenintegration.h create mode 100644 src/plugins/platforms/offscreen/qoffscreenintegration_dummy.cpp create mode 100644 src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp create mode 100644 src/plugins/platforms/offscreen/qoffscreenintegration_x11.h create mode 100644 src/plugins/platforms/offscreen/qoffscreenwindow.cpp create mode 100644 src/plugins/platforms/offscreen/qoffscreenwindow.h (limited to 'src') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 698c26763a..ebb42ea498 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1070,6 +1070,8 @@ QGuiApplicationPrivate::~QGuiApplicationPrivate() delete platform_integration; platform_integration = 0; delete m_gammaTables.load(); + + window_list.clear(); } #if 0 diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp index 01377d1aa0..88a82b12a3 100644 --- a/src/gui/kernel/qplatformwindow.cpp +++ b/src/gui/kernel/qplatformwindow.cpp @@ -196,7 +196,13 @@ bool QPlatformWindow::isEmbedded(const QPlatformWindow *parentWindow) const */ QPoint QPlatformWindow::mapToGlobal(const QPoint &pos) const { - return pos; + const QPlatformWindow *p = this; + QPoint result = pos; + while (p) { + result += p->geometry().topLeft(); + p = p->parent(); + } + return result; } /*! @@ -208,7 +214,13 @@ QPoint QPlatformWindow::mapToGlobal(const QPoint &pos) const */ QPoint QPlatformWindow::mapFromGlobal(const QPoint &pos) const { - return pos; + const QPlatformWindow *p = this; + QPoint result = pos; + while (p) { + result -= p->geometry().topLeft(); + p = p->parent(); + } + return result; } /*! diff --git a/src/plugins/platforms/offscreen/main.cpp b/src/plugins/platforms/offscreen/main.cpp new file mode 100644 index 0000000000..ca7dc1d18b --- /dev/null +++ b/src/plugins/platforms/offscreen/main.cpp @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include +#include "qoffscreenintegration.h" + +QT_BEGIN_NAMESPACE + +class QOffscreenIntegrationPlugin : public QPlatformIntegrationPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.1" FILE "offscreen.json") +public: + QPlatformIntegration *create(const QString&, const QStringList&); +}; + +QPlatformIntegration *QOffscreenIntegrationPlugin::create(const QString& system, const QStringList& paramList) +{ + Q_UNUSED(paramList); + if (system.toLower() == "offscreen") + return QOffscreenIntegration::createOffscreenIntegration(); + + return 0; +} + +QT_END_NAMESPACE + +#include "main.moc" diff --git a/src/plugins/platforms/offscreen/offscreen.json b/src/plugins/platforms/offscreen/offscreen.json new file mode 100644 index 0000000000..6e87744de0 --- /dev/null +++ b/src/plugins/platforms/offscreen/offscreen.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "offscreen" ] +} diff --git a/src/plugins/platforms/offscreen/offscreen.pro b/src/plugins/platforms/offscreen/offscreen.pro new file mode 100644 index 0000000000..270e3ce228 --- /dev/null +++ b/src/plugins/platforms/offscreen/offscreen.pro @@ -0,0 +1,25 @@ +TARGET = qoffscreen + +PLUGIN_TYPE = platforms +load(qt_plugin) + +QT += core-private gui-private platformsupport-private + +SOURCES = main.cpp \ + qoffscreenintegration.cpp \ + qoffscreenwindow.cpp \ + qoffscreencommon.cpp + +HEADERS = qoffscreenintegration.h \ + qoffscreenwindow.h \ + qoffscreencommon.h + +OTHER_FILES += offscreen.json + +contains(QT_CONFIG, xcb):contains(QT_CONFIG, opengl):!contains(QT_CONFIG, opengles2) { + SOURCES += qoffscreenintegration_x11.cpp + HEADERS += qoffscreenintegration_x11.h + system(echo "Using X11 offscreen integration with GLX") +} else { + SOURCES += qoffscreenintegration_dummy.cpp +} diff --git a/src/plugins/platforms/offscreen/qoffscreencommon.cpp b/src/plugins/platforms/offscreen/qoffscreencommon.cpp new file mode 100644 index 0000000000..069b20693d --- /dev/null +++ b/src/plugins/platforms/offscreen/qoffscreencommon.cpp @@ -0,0 +1,229 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qoffscreencommon.h" +#include "qoffscreenwindow.h" + +#include +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +QPlatformWindow *QOffscreenScreen::windowContainingCursor = 0; + +class QOffscreenCursor : public QPlatformCursor +{ +public: + QOffscreenCursor() : m_pos(10, 10) {} + + QPoint pos() const { return m_pos; } + void setPos(const QPoint &pos) + { + m_pos = pos; + QWindowList wl = QGuiApplication::topLevelWindows(); + QWindow *containing = 0; + foreach (QWindow *w, wl) { + if (w->type() != Qt::Desktop && w->isExposed() && w->geometry().contains(pos)) { + containing = w; + break; + } + } + + QPoint local = pos; + if (containing) + local -= containing->position(); + + QWindow *previous = QOffscreenScreen::windowContainingCursor ? QOffscreenScreen::windowContainingCursor->window() : 0; + + if (containing != previous) + QWindowSystemInterface::handleEnterLeaveEvent(containing, previous, local, pos); + + QWindowSystemInterface::handleMouseEvent(containing, local, pos, QGuiApplication::mouseButtons(), QGuiApplication::keyboardModifiers()); + + QOffscreenScreen::windowContainingCursor = containing ? containing->handle() : 0; + } + + void changeCursor(QCursor *windowCursor, QWindow *window) + { + Q_UNUSED(windowCursor); + Q_UNUSED(window); + } + +private: + QPoint m_pos; +}; + +QOffscreenScreen::QOffscreenScreen() + : m_geometry(0, 0, 800, 600) + , m_cursor(new QOffscreenCursor) +{ +} + +QPixmap QOffscreenScreen::grabWindow(WId id, int x, int y, int width, int height) const +{ + QRect rect(x, y, width, height); + + QOffscreenWindow *window = QOffscreenWindow::windowForWinId(id); + if (!window || window->window()->type() == Qt::Desktop) { + QWindowList wl = QGuiApplication::topLevelWindows(); + QWindow *containing = 0; + foreach (QWindow *w, wl) { + if (w->type() != Qt::Desktop && w->isExposed() && w->geometry().contains(rect)) { + containing = w; + break; + } + } + + if (!containing) + return QPixmap(); + + id = containing->winId(); + rect = rect.translated(-containing->geometry().topLeft()); + } + + QOffscreenBackingStore *store = QOffscreenBackingStore::backingStoreForWinId(id); + if (store) + return store->grabWindow(id, rect); + return QPixmap(); +} + +QOffscreenBackingStore::QOffscreenBackingStore(QWindow *window) + : QPlatformBackingStore(window) +{ +} + +QOffscreenBackingStore::~QOffscreenBackingStore() +{ + clearHash(); +} + +QPaintDevice *QOffscreenBackingStore::paintDevice() +{ + return &m_image; +} + +void QOffscreenBackingStore::flush(QWindow *window, const QRegion ®ion, const QPoint &offset) +{ + Q_UNUSED(region); + + if (m_image.size().isEmpty()) + return; + + QSize imageSize = m_image.size(); + + QRegion clipped = QRect(0, 0, window->width(), window->height()); + clipped &= QRect(0, 0, imageSize.width(), imageSize.height()).translated(-offset); + + QRect bounds = clipped.boundingRect().translated(offset); + + if (bounds.isNull()) + return; + + WId id = window->winId(); + + m_windowAreaHash[id] = bounds; + m_backingStoreForWinIdHash[id] = this; +} + +void QOffscreenBackingStore::resize(const QSize &size, const QRegion &) +{ + QImage::Format format = QGuiApplication::primaryScreen()->handle()->format(); + if (m_image.size() != size) + m_image = QImage(size, format); + clearHash(); +} + +extern void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset); + +bool QOffscreenBackingStore::scroll(const QRegion &area, int dx, int dy) +{ + if (m_image.isNull()) + return false; + + const QVector rects = area.rects(); + for (int i = 0; i < rects.size(); ++i) + qt_scrollRectInImage(m_image, rects.at(i), QPoint(dx, dy)); + + return true; +} + +QPixmap QOffscreenBackingStore::grabWindow(WId window, const QRect &rect) const +{ + QRect area = m_windowAreaHash.value(window, QRect()); + if (area.isNull()) + return QPixmap(); + + QRect adjusted = rect; + if (adjusted.width() <= 0) + adjusted.setWidth(area.width()); + if (adjusted.height() <= 0) + adjusted.setHeight(area.height()); + + adjusted = adjusted.translated(area.topLeft()) & area; + + if (adjusted.isEmpty()) + return QPixmap(); + + return QPixmap::fromImage(m_image.copy(adjusted)); +} + +QOffscreenBackingStore *QOffscreenBackingStore::backingStoreForWinId(WId id) +{ + return m_backingStoreForWinIdHash.value(id, 0); +} + +void QOffscreenBackingStore::clearHash() +{ + QList ids = m_windowAreaHash.keys(); + foreach (WId id, ids) { + QHash::iterator it = m_backingStoreForWinIdHash.find(id); + if (it.value() == this) + m_backingStoreForWinIdHash.remove(id); + } + m_windowAreaHash.clear(); +} + +QHash QOffscreenBackingStore::m_backingStoreForWinIdHash; + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/offscreen/qoffscreencommon.h b/src/plugins/platforms/offscreen/qoffscreencommon.h new file mode 100644 index 0000000000..a5df7d05d3 --- /dev/null +++ b/src/plugins/platforms/offscreen/qoffscreencommon.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOFFSCREENCOMMON_H +#define QOFFSCREENCOMMON_H + +#include +#include +#include +#include +#include + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QOffscreenScreen : public QPlatformScreen +{ +public: + QOffscreenScreen(); + + QRect geometry() const { return m_geometry; } + int depth() const { return 32; } + QImage::Format format() const { return QImage::Format_RGB32; } + QPlatformCursor *cursor() const { return m_cursor.data(); } + + QPixmap grabWindow(WId window, int x, int y, int width, int height) const; + + static QPlatformWindow *windowContainingCursor; + +public: + QRect m_geometry; + QScopedPointer m_cursor; +}; + +class QOffscreenDrag : public QPlatformDrag +{ +public: + QMimeData *platformDropData() { return 0; } + Qt::DropAction drag(QDrag *) { return Qt::IgnoreAction; } +}; + +class QOffscreenBackingStore : public QPlatformBackingStore +{ +public: + QOffscreenBackingStore(QWindow *window); + ~QOffscreenBackingStore(); + + QPaintDevice *paintDevice(); + void flush(QWindow *window, const QRegion ®ion, const QPoint &offset); + void resize(const QSize &size, const QRegion &staticContents); + bool scroll(const QRegion &area, int dx, int dy); + + QPixmap grabWindow(WId window, const QRect &rect) const; + + static QOffscreenBackingStore *backingStoreForWinId(WId id); + +private: + void clearHash(); + + QImage m_image; + QHash m_windowAreaHash; + + static QHash m_backingStoreForWinIdHash; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration.cpp b/src/plugins/platforms/offscreen/qoffscreenintegration.cpp new file mode 100644 index 0000000000..e3fcc7ebb0 --- /dev/null +++ b/src/plugins/platforms/offscreen/qoffscreenintegration.cpp @@ -0,0 +1,162 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qoffscreenintegration.h" +#include "qoffscreenwindow.h" +#include "qoffscreencommon.h" + +#if defined(Q_OS_UNIX) +#include +#if defined(Q_OS_MAC) +#include +#else +#include +#endif +#elif defined(Q_OS_WIN) +#include +#include +#endif + +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +template +class QOffscreenEventDispatcher : public BaseEventDispatcher +{ +public: + explicit QOffscreenEventDispatcher(QObject *parent = 0) + : BaseEventDispatcher(parent) + { + } + + bool processEvents(QEventLoop::ProcessEventsFlags flags) + { + bool didSendEvents = QWindowSystemInterface::sendWindowSystemEvents(flags); + + return BaseEventDispatcher::processEvents(flags) || didSendEvents; + } + + bool hasPendingEvents() + { + return BaseEventDispatcher::hasPendingEvents() + || QWindowSystemInterface::windowSystemEventsQueued(); + } + + void flush() + { + if (qApp) + qApp->sendPostedEvents(); + BaseEventDispatcher::flush(); + } +}; + +QOffscreenIntegration::QOffscreenIntegration() +{ +#if defined(Q_OS_UNIX) + m_eventDispatcher = createUnixEventDispatcher(); +#if defined(Q_OS_MAC) + m_fontDatabase.reset(new QPlatformFontDatabase()); +#else + m_fontDatabase.reset(new QGenericUnixFontDatabase()); +#endif +#elif defined(Q_OS_WIN) + m_eventDispatcher = new QOffscreenEventDispatcher(); + m_fontDatabase.reset(new QBasicFontDatabase()); +#endif + + m_drag.reset(new QOffscreenDrag); + m_services.reset(new QPlatformServices); + + QGuiApplicationPrivate::instance()->setEventDispatcher(m_eventDispatcher); + screenAdded(new QOffscreenScreen); +} + +QOffscreenIntegration::~QOffscreenIntegration() +{ +} + +bool QOffscreenIntegration::hasCapability(QPlatformIntegration::Capability cap) const +{ + switch (cap) { + case ThreadedPixmaps: return true; + case MultipleWindows: return true; + default: return QPlatformIntegration::hasCapability(cap); + } +} + +QPlatformWindow *QOffscreenIntegration::createPlatformWindow(QWindow *window) const +{ + Q_UNUSED(window); + QPlatformWindow *w = new QOffscreenWindow(window); + w->requestActivateWindow(); + return w; +} + +QPlatformBackingStore *QOffscreenIntegration::createPlatformBackingStore(QWindow *window) const +{ + return new QOffscreenBackingStore(window); +} + +QAbstractEventDispatcher *QOffscreenIntegration::guiThreadEventDispatcher() const +{ + return m_eventDispatcher; +} + +QPlatformFontDatabase *QOffscreenIntegration::fontDatabase() const +{ + return m_fontDatabase.data(); +} + +QPlatformDrag *QOffscreenIntegration::drag() const +{ + return m_drag.data(); +} + +QPlatformServices *QOffscreenIntegration::services() const +{ + return m_services.data(); +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration.h b/src/plugins/platforms/offscreen/qoffscreenintegration.h new file mode 100644 index 0000000000..eb03100ec9 --- /dev/null +++ b/src/plugins/platforms/offscreen/qoffscreenintegration.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOFFSCREENINTEGRATION_H +#define QOFFSCREENINTEGRATION_H + +#include + +#include + +QT_BEGIN_NAMESPACE + +class QOffscreenBackendData; + +class QOffscreenIntegration : public QPlatformIntegration +{ +public: + QOffscreenIntegration(); + ~QOffscreenIntegration(); + + bool hasCapability(QPlatformIntegration::Capability cap) const; + + QPlatformWindow *createPlatformWindow(QWindow *window) const; + QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; + QPlatformDrag *drag() const; + QPlatformServices *services() const; + + QPlatformFontDatabase *fontDatabase() const; + QAbstractEventDispatcher *guiThreadEventDispatcher() const; + + static QOffscreenIntegration *createOffscreenIntegration(); + +private: + QAbstractEventDispatcher *m_eventDispatcher; + QScopedPointer m_fontDatabase; + QScopedPointer m_drag; + QScopedPointer m_services; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration_dummy.cpp b/src/plugins/platforms/offscreen/qoffscreenintegration_dummy.cpp new file mode 100644 index 0000000000..8bc1b17a56 --- /dev/null +++ b/src/plugins/platforms/offscreen/qoffscreenintegration_dummy.cpp @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qoffscreenintegration.h" + +QOffscreenIntegration *QOffscreenIntegration::createOffscreenIntegration() +{ + return new QOffscreenIntegration; +} diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp b/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp new file mode 100644 index 0000000000..4b27afd80f --- /dev/null +++ b/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp @@ -0,0 +1,252 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qoffscreenintegration_x11.h" + +#include +#include + +#include +#include + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +QOffscreenIntegration *QOffscreenIntegration::createOffscreenIntegration() +{ + return new QOffscreenX11Integration; +} + +bool QOffscreenX11Integration::hasCapability(QPlatformIntegration::Capability cap) const +{ + switch (cap) { + case OpenGL: return true; + case ThreadedOpenGL: return true; + default: return QOffscreenIntegration::hasCapability(cap); + } +} + +QPlatformOpenGLContext *QOffscreenX11Integration::createPlatformOpenGLContext(QOpenGLContext *context) const +{ + if (!m_connection) + m_connection.reset(new QOffscreenX11Connection); + + return new QOffscreenX11GLXContext(m_connection->x11Info(), context); +} + +QOffscreenX11Connection::QOffscreenX11Connection() +{ + XInitThreads(); + + QByteArray displayName = qgetenv("DISPLAY"); + Display *display = XOpenDisplay(displayName.constData()); + m_display = display; + m_screenNumber = DefaultScreen(display); +} + +QOffscreenX11Connection::~QOffscreenX11Connection() +{ + XCloseDisplay((Display *)m_display); +} + +class QOffscreenX11Info +{ +public: + QOffscreenX11Info(QOffscreenX11Connection *connection) + : m_connection(connection) + { + } + + Display *display() const { + return (Display *)m_connection->display(); + } + + Window root() const { + return DefaultRootWindow(display()); + } + + int screenNumber() const { + return m_connection->screenNumber(); + } + +private: + QOffscreenX11Connection *m_connection; +}; + +QOffscreenX11Info *QOffscreenX11Connection::x11Info() +{ + if (!m_x11Info) + m_x11Info.reset(new QOffscreenX11Info(this)); + return m_x11Info.data(); +} + +class QOffscreenX11GLXContextData +{ +public: + QOffscreenX11Info *x11; + QSurfaceFormat format; + GLXContext context; + GLXContext shareContext; + Window window; +}; + +static Window createDummyWindow(QOffscreenX11Info *x11, XVisualInfo *visualInfo) +{ + Colormap cmap = XCreateColormap(x11->display(), x11->root(), visualInfo->visual, AllocNone); + XSetWindowAttributes a; + a.background_pixel = WhitePixel(x11->display(), x11->screenNumber()); + a.border_pixel = BlackPixel(x11->display(), x11->screenNumber()); + a.colormap = cmap; + + Window window = XCreateWindow(x11->display(), x11->root(), + 0, 0, 100, 100, + 0, visualInfo->depth, InputOutput, visualInfo->visual, + CWBackPixel|CWBorderPixel|CWColormap, &a); + XFreeColormap(x11->display(), cmap); + return window; +} + +static Window createDummyWindow(QOffscreenX11Info *x11, GLXFBConfig config) +{ + XVisualInfo *visualInfo = glXGetVisualFromFBConfig(x11->display(), config); + if (!visualInfo) + qFatal("Could not initialize GLX"); + Window window = createDummyWindow(x11, visualInfo); + XFree(visualInfo); + return window; +} + +QOffscreenX11GLXContext::QOffscreenX11GLXContext(QOffscreenX11Info *x11, QOpenGLContext *context) + : d(new QOffscreenX11GLXContextData) +{ + d->x11 = x11; + d->format = context->format(); + + d->shareContext = 0; + if (context->shareHandle()) + d->shareContext = static_cast(context->shareHandle())->d->context; + + GLXFBConfig config = qglx_findConfig(x11->display(), x11->screenNumber(), d->format); + if (config) { + d->context = glXCreateNewContext(x11->display(), config, GLX_RGBA_TYPE, d->shareContext, true); + if (!d->context && d->shareContext) { + d->shareContext = 0; + // re-try without a shared glx context + d->context = glXCreateNewContext(x11->display(), config, GLX_RGBA_TYPE, 0, true); + } + + // Get the basic surface format details + if (d->context) + d->format = qglx_surfaceFormatFromGLXFBConfig(x11->display(), config, d->context); + + // Create a temporary window so that we can make the new context current + d->window = createDummyWindow(x11, config); + } else { + XVisualInfo *visualInfo = qglx_findVisualInfo(x11->display(), 0, &d->format); + if (!visualInfo) + qFatal("Could not initialize GLX"); + d->context = glXCreateContext(x11->display(), visualInfo, d->shareContext, true); + if (!d->context && d->shareContext) { + // re-try without a shared glx context + d->shareContext = 0; + d->context = glXCreateContext(x11->display(), visualInfo, 0, true); + } + + d->window = createDummyWindow(x11, visualInfo); + XFree(visualInfo); + } +} + +QOffscreenX11GLXContext::~QOffscreenX11GLXContext() +{ + glXDestroyContext(d->x11->display(), d->context); + XDestroyWindow(d->x11->display(), d->window); +} + +bool QOffscreenX11GLXContext::makeCurrent(QPlatformSurface *surface) +{ + QSize size = surface->surface()->size(); + + XResizeWindow(d->x11->display(), d->window, size.width(), size.height()); + XSync(d->x11->display(), true); + + if (glXMakeCurrent(d->x11->display(), d->window, d->context)) { + glViewport(0, 0, size.width(), size.height()); + return true; + } + + return false; +} + +void QOffscreenX11GLXContext::doneCurrent() +{ + glXMakeCurrent(d->x11->display(), 0, 0); +} + +void QOffscreenX11GLXContext::swapBuffers(QPlatformSurface *) +{ +} + +void (*QOffscreenX11GLXContext::getProcAddress(const QByteArray &procName)) () +{ + return (void (*)())glXGetProcAddressARB(reinterpret_cast(procName.constData())); +} + +QSurfaceFormat QOffscreenX11GLXContext::format() const +{ + return d->format; +} + +bool QOffscreenX11GLXContext::isSharing() const +{ + return d->shareContext; +} + +bool QOffscreenX11GLXContext::isValid() const +{ + return d->context && d->window; +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration_x11.h b/src/plugins/platforms/offscreen/qoffscreenintegration_x11.h new file mode 100644 index 0000000000..9afa302b04 --- /dev/null +++ b/src/plugins/platforms/offscreen/qoffscreenintegration_x11.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOFFSCREENINTEGRATION_X11_H +#define QOFFSCREENINTEGRATION_X11_H + +#include "qoffscreenintegration.h" + +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +class QOffscreenX11Connection; +class QOffscreenX11Info; + +class QOffscreenX11Integration : public QOffscreenIntegration +{ +public: + bool hasCapability(QPlatformIntegration::Capability cap) const; + + QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const; + +private: + mutable QScopedPointer m_connection; +}; + +class QOffscreenX11Connection { +public: + QOffscreenX11Connection(); + ~QOffscreenX11Connection(); + + QOffscreenX11Info *x11Info(); + + void *display() const { return m_display; } + int screenNumber() const { return m_screenNumber; } + +private: + void *m_display; + int m_screenNumber; + + QScopedPointer m_x11Info; +}; + +class QOffscreenX11GLXContextData; + +class QOffscreenX11GLXContext : public QPlatformOpenGLContext +{ +public: + QOffscreenX11GLXContext(QOffscreenX11Info *x11, QOpenGLContext *context); + ~QOffscreenX11GLXContext(); + + bool makeCurrent(QPlatformSurface *surface); + void doneCurrent(); + void swapBuffers(QPlatformSurface *surface); + void (*getProcAddress(const QByteArray &procName)) (); + + QSurfaceFormat format() const; + bool isSharing() const; + bool isValid() const; + +private: + QScopedPointer d; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/platforms/offscreen/qoffscreenwindow.cpp b/src/plugins/platforms/offscreen/qoffscreenwindow.cpp new file mode 100644 index 0000000000..702ef2300c --- /dev/null +++ b/src/plugins/platforms/offscreen/qoffscreenwindow.cpp @@ -0,0 +1,199 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qoffscreenwindow.h" +#include "qoffscreencommon.h" + +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +QOffscreenWindow::QOffscreenWindow(QWindow *window) + : QPlatformWindow(window) + , m_positionIncludesFrame(false) + , m_visible(false) + , m_pendingGeometryChangeOnShow(true) +{ + if (window->windowState() == Qt::WindowNoState) + setGeometry(window->geometry()); + else + setWindowState(window->windowState()); + + QWindowSystemInterface::flushWindowSystemEvents(); + + static WId counter = 0; + m_winId = ++counter; + + m_windowForWinIdHash[m_winId] = this; +} + +QOffscreenWindow::~QOffscreenWindow() +{ + if (QOffscreenScreen::windowContainingCursor == this) + QOffscreenScreen::windowContainingCursor = 0; + m_windowForWinIdHash.remove(m_winId); +} + +void QOffscreenWindow::setGeometry(const QRect &rect) +{ + if (window()->windowState() != Qt::WindowNoState) + return; + + m_positionIncludesFrame = qt_window_private(window())->positionPolicy == QWindowPrivate::WindowFrameInclusive; + + setFrameMarginsEnabled(true); + setGeometryImpl(rect); + + m_normalGeometry = geometry(); +} + +void QOffscreenWindow::setGeometryImpl(const QRect &rect) +{ + QRect adjusted = rect; + if (adjusted.width() <= 0) + adjusted.setWidth(1); + if (adjusted.height() <= 0) + adjusted.setHeight(1); + + if (m_positionIncludesFrame) { + adjusted.translate(m_margins.left(), m_margins.top()); + } else { + // make sure we're not placed off-screen + if (adjusted.left() < m_margins.left()) + adjusted.translate(m_margins.left(), 0); + if (adjusted.top() < m_margins.top()) + adjusted.translate(0, m_margins.top()); + } + + QPlatformWindow::setGeometry(adjusted); + + if (m_visible) { + QWindowSystemInterface::handleGeometryChange(window(), adjusted); + QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(), adjusted.size())); + } else { + m_pendingGeometryChangeOnShow = true; + } +} + +void QOffscreenWindow::setVisible(bool visible) +{ + if (visible == m_visible) + return; + + if (visible) { + if (window()->type() != Qt::ToolTip) + QWindowSystemInterface::handleWindowActivated(window()); + + if (m_pendingGeometryChangeOnShow) { + m_pendingGeometryChangeOnShow = false; + QWindowSystemInterface::handleGeometryChange(window(), geometry()); + } + } + + if (visible) { + QRect rect(QPoint(), geometry().size()); + QWindowSystemInterface::handleExposeEvent(window(), rect); + } else { + QWindowSystemInterface::handleExposeEvent(window(), QRegion()); + } + + m_visible = visible; +} + +void QOffscreenWindow::requestActivateWindow() +{ + if (m_visible) + QWindowSystemInterface::handleWindowActivated(window()); +} + +WId QOffscreenWindow::winId() const +{ + return m_winId; +} + +QMargins QOffscreenWindow::frameMargins() const +{ + return m_margins; +} + +void QOffscreenWindow::setFrameMarginsEnabled(bool enabled) +{ + if (enabled && !(window()->flags() & Qt::FramelessWindowHint)) + m_margins = QMargins(2, 2, 2, 2); + else + m_margins = QMargins(0, 0, 0, 0); +} + +void QOffscreenWindow::setWindowState(Qt::WindowState state) +{ + setFrameMarginsEnabled(state != Qt::WindowFullScreen); + m_positionIncludesFrame = false; + + switch (state) { + case Qt::WindowFullScreen: + setGeometryImpl(screen()->geometry()); + break; + case Qt::WindowMaximized: + setGeometryImpl(screen()->availableGeometry().adjusted(m_margins.left(), m_margins.top(), -m_margins.right(), -m_margins.bottom())); + break; + case Qt::WindowMinimized: + break; + case Qt::WindowNoState: + setGeometryImpl(m_normalGeometry); + break; + default: + break; + } + + QWindowSystemInterface::handleWindowStateChanged(window(), state); +} + +QOffscreenWindow *QOffscreenWindow::windowForWinId(WId id) +{ + return m_windowForWinIdHash.value(id, 0); +} + +QHash QOffscreenWindow::m_windowForWinIdHash; + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/offscreen/qoffscreenwindow.h b/src/plugins/platforms/offscreen/qoffscreenwindow.h new file mode 100644 index 0000000000..cd1cf8e0aa --- /dev/null +++ b/src/plugins/platforms/offscreen/qoffscreenwindow.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOFFSCREENWINDOW_H +#define QOFFSCREENWINDOW_H + +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +class QOffscreenWindow : public QPlatformWindow +{ +public: + QOffscreenWindow(QWindow *window); + ~QOffscreenWindow(); + + void setGeometry(const QRect &rect); + void setWindowState(Qt::WindowState state); + + QMargins frameMargins() const; + + void setVisible(bool visible); + void requestActivateWindow(); + + WId winId() const; + + static QOffscreenWindow *windowForWinId(WId id); + +private: + void setFrameMarginsEnabled(bool enabled); + void setGeometryImpl(const QRect &rect); + + QRect m_normalGeometry; + QMargins m_margins; + bool m_positionIncludesFrame; + bool m_visible; + bool m_pendingGeometryChangeOnShow; + WId m_winId; + + static QHash m_windowForWinIdHash; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/platforms/platforms.pro b/src/plugins/platforms/platforms.pro index 828867c3a7..173757568f 100644 --- a/src/plugins/platforms/platforms.pro +++ b/src/plugins/platforms/platforms.pro @@ -1,6 +1,6 @@ TEMPLATE = subdirs -SUBDIRS += minimal +SUBDIRS += minimal offscreen contains(QT_CONFIG, xcb) { SUBDIRS += xcb -- cgit v1.2.3 From d315e012184a2b71b7b5e41869d166c05093d13d Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 23 Nov 2012 15:24:48 +0100 Subject: Add the Qt::ItemNeverHasChildren flag and use it in QTreeView. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It can be used to determine whether expand() should really expand. Change-Id: If79d8c295a4ca1356e60051682b227524a065126 Reviewed-by: David Faure (KDE) Reviewed-by: Olivier Goffart Reviewed-by: Thorbjørn Lund Martsum --- src/corelib/global/qnamespace.h | 3 ++- src/corelib/global/qnamespace.qdoc | 1 + src/corelib/itemmodels/qabstractitemmodel.cpp | 22 ++++++++++++++++++++++ src/corelib/itemmodels/qabstractitemmodel.h | 3 +++ src/widgets/dialogs/qfilesystemmodel.cpp | 2 ++ src/widgets/itemviews/qtreeview.cpp | 8 ++++++-- src/widgets/itemviews/qtreeview_p.h | 2 +- 7 files changed, 37 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index ebbfc9ca83..a60743d3df 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -1395,7 +1395,8 @@ public: ItemIsDropEnabled = 8, ItemIsUserCheckable = 16, ItemIsEnabled = 32, - ItemIsTristate = 64 + ItemIsTristate = 64, + ItemNeverHasChildren = 128 }; Q_DECLARE_FLAGS(ItemFlags, ItemFlag) diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index f157190591..b271620ee0 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -2441,6 +2441,7 @@ \value ItemIsUserCheckable It can be checked or unchecked by the user. \value ItemIsEnabled The user can interact with the item. \value ItemIsTristate The item is checkable with three separate states. + \value ItemNeverHasChildren The item never has child items. Note that checkable items need to be given both a suitable set of flags and an initial state, indicating whether the item is checked or not. diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp index ebe38a97cd..ad9be5419b 100644 --- a/src/corelib/itemmodels/qabstractitemmodel.cpp +++ b/src/corelib/itemmodels/qabstractitemmodel.cpp @@ -3271,6 +3271,17 @@ bool QAbstractTableModel::hasChildren(const QModelIndex &parent) const return false; } +/*! + \reimp + */ +Qt::ItemFlags QAbstractTableModel::flags(const QModelIndex &index) const +{ + Qt::ItemFlags f = QAbstractItemModel::flags(index); + if (index.isValid()) + f |= Qt::ItemNeverHasChildren; + return f; +} + /*! \class QAbstractListModel \inmodule QtCore @@ -3391,6 +3402,17 @@ QModelIndex QAbstractListModel::parent(const QModelIndex & /* index */) const return QModelIndex(); } +/*! + \reimp + */ +Qt::ItemFlags QAbstractListModel::flags(const QModelIndex &index) const +{ + Qt::ItemFlags f = QAbstractItemModel::flags(index); + if (index.isValid()) + f |= Qt::ItemNeverHasChildren; + return f; +} + /*! \internal diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h index f138f53487..8e4f12e9ea 100644 --- a/src/corelib/itemmodels/qabstractitemmodel.h +++ b/src/corelib/itemmodels/qabstractitemmodel.h @@ -419,6 +419,7 @@ public: bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; protected: QAbstractTableModel(QAbstractItemModelPrivate &dd, QObject *parent); @@ -439,6 +440,8 @@ public: QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const; bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); + + Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; protected: QAbstractListModel(QAbstractItemModelPrivate &dd, QObject *parent); diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp index 4d3c7a24ec..251af273b9 100644 --- a/src/widgets/dialogs/qfilesystemmodel.cpp +++ b/src/widgets/dialogs/qfilesystemmodel.cpp @@ -964,6 +964,8 @@ Qt::ItemFlags QFileSystemModel::flags(const QModelIndex &index) const flags |= Qt::ItemIsEditable; if (indexNode->isDir()) flags |= Qt::ItemIsDropEnabled; + else + flags |= Qt::ItemNeverHasChildren; } return flags; } diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index 1f922dd6e3..cee47faab4 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -749,6 +749,8 @@ void QTreeView::expand(const QModelIndex &index) Q_D(QTreeView); if (!d->isIndexValid(index)) return; + if (index.flags() & Qt::ItemNeverHasChildren) + return; if (d->delayedPendingLayout) { //A complete relayout is going to be performed, just store the expanded index, no need to layout. if (d->storeExpanded(index)) @@ -2887,6 +2889,9 @@ void QTreeViewPrivate::expand(int item, bool emitSignal) if (item == -1 || viewItems.at(item).expanded) return; + const QModelIndex index = viewItems.at(item).index; + if (index.flags() & Qt::ItemNeverHasChildren) + return; #ifndef QT_NO_ANIMATION if (emitSignal && animationsEnabled) @@ -2896,7 +2901,6 @@ void QTreeViewPrivate::expand(int item, bool emitSignal) if (state != QAbstractItemView::AnimatingState) stateBeforeAnimation = state; q->setState(QAbstractItemView::ExpandingState); - const QModelIndex index = viewItems.at(item).index; storeExpanded(index); viewItems[item].expanded = true; layout(item); @@ -3189,7 +3193,7 @@ void QTreeViewPrivate::layout(int i, bool recursiveExpanding, bool afterIsUninit item->expanded = false; item->total = 0; item->hasMoreSiblings = false; - if (recursiveExpanding || isIndexExpanded(current)) { + if ((recursiveExpanding && !(current.flags() & Qt::ItemNeverHasChildren)) || isIndexExpanded(current)) { if (recursiveExpanding) expandedIndexes.insert(current); item->expanded = true; diff --git a/src/widgets/itemviews/qtreeview_p.h b/src/widgets/itemviews/qtreeview_p.h index 5a0821c9cf..6778446ed3 100644 --- a/src/widgets/itemviews/qtreeview_p.h +++ b/src/widgets/itemviews/qtreeview_p.h @@ -203,7 +203,7 @@ public: inline bool isIndexExpanded(const QModelIndex &idx) const { //We first check if the idx is a QPersistentModelIndex, because creating QPersistentModelIndex is slow - return isPersistent(idx) && expandedIndexes.contains(idx); + return !(idx.flags() & Qt::ItemNeverHasChildren) && isPersistent(idx) && expandedIndexes.contains(idx); } // used when hiding and showing items -- cgit v1.2.3 From 7b8ab4204417844e72bb66696227a422f4ef3e2d Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 17 Jan 2013 12:38:09 +0100 Subject: Reduce invocations QString::left() in XCB key event processing. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6d422af4d7186356c196d6362a850f7e7b997bb4 Reviewed-by: Gatis Paeglis Reviewed-by: Samuel Rødal --- src/plugins/platforms/xcb/qxcbkeyboard.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.cpp b/src/plugins/platforms/xcb/qxcbkeyboard.cpp index bda54b4682..4ac60f6077 100644 --- a/src/plugins/platforms/xcb/qxcbkeyboard.cpp +++ b/src/plugins/platforms/xcb/qxcbkeyboard.cpp @@ -1081,6 +1081,7 @@ void QXcbKeyboard::handleKeyEvent(QWindow *window, QEvent::Type type, xcb_keycod int qtcode = 0; int count = chars.count(); QString string = translateKeySym(sym, state, qtcode, modifiers, chars, count); + string.truncate(count); bool isAutoRepeat = false; @@ -1102,7 +1103,7 @@ void QXcbKeyboard::handleKeyEvent(QWindow *window, QEvent::Type type, xcb_keycod bool filtered = false; if (inputContext) { - QKeyEvent event(type, qtcode, modifiers, code, sym, state, string.left(count), isAutoRepeat, count); + QKeyEvent event(type, qtcode, modifiers, code, sym, state, string, isAutoRepeat, count); event.setTimestamp(time); filtered = inputContext->filterEvent(&event); } @@ -1114,7 +1115,7 @@ void QXcbKeyboard::handleKeyEvent(QWindow *window, QEvent::Type type, xcb_keycod QWindowSystemInterface::handleContextMenuEvent(window, false, pos, globalPos, modifiers); } QWindowSystemInterface::handleExtendedKeyEvent(window, time, type, qtcode, modifiers, - code, sym, state, string.left(count), isAutoRepeat); + code, sym, state, string, isAutoRepeat); } if (isAutoRepeat && type == QEvent::KeyRelease) { @@ -1130,13 +1131,13 @@ void QXcbKeyboard::handleKeyEvent(QWindow *window, QEvent::Type type, xcb_keycod } if (!filtered && inputContext) { - QKeyEvent event(QEvent::KeyPress, qtcode, modifiers, code, sym, state, string.left(count), isAutoRepeat, count); + QKeyEvent event(QEvent::KeyPress, qtcode, modifiers, code, sym, state, string, isAutoRepeat, count); event.setTimestamp(time); filtered = inputContext->filterEvent(&event); } if (!filtered) QWindowSystemInterface::handleExtendedKeyEvent(window, time, QEvent::KeyPress, qtcode, modifiers, - code, sym, state, string.left(count), isAutoRepeat); + code, sym, state, string, isAutoRepeat); } } -- cgit v1.2.3 From 962edab745ff810290110d20c56b959075833dfe Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 24 Jan 2013 10:39:43 +0100 Subject: Drop the unused QGLContextPrivate::convertToGLFormat function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Iaa176fc6152162c91a3e3bd373a235883001975c Reviewed-by: Sean Harmer Reviewed-by: Samuel Rødal --- src/opengl/qgl.cpp | 12 ------------ src/opengl/qgl_p.h | 1 - 2 files changed, 13 deletions(-) (limited to 'src') diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 3cb738b9c8..173f570256 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -2139,18 +2139,6 @@ QGLExtensionFuncs& QGLContextPrivate::extensionFuncs(const QGLContext *) return qt_extensionFuncs; } -QImage QGLContextPrivate::convertToGLFormat(const QImage &image, bool force_premul, - GLenum texture_format) -{ - QImage::Format target_format = image.format(); - if (force_premul || image.format() != QImage::Format_ARGB32) - target_format = QImage::Format_ARGB32_Premultiplied; - - QImage result(image.width(), image.height(), target_format); - convertToGLFormatHelper(result, image.convertToFormat(target_format), texture_format); - return result; -} - /*! \internal */ QGLTexture *QGLContextPrivate::bindTexture(const QImage &image, GLenum target, GLint format, QGLContext::BindOptions options) diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index 5fd870beee..0791fe5110 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -265,7 +265,6 @@ public: QGLContext::BindOptions options); QGLTexture *textureCacheLookup(const qint64 key, GLenum target); void init(QPaintDevice *dev, const QGLFormat &format); - QImage convertToGLFormat(const QImage &image, bool force_premul, GLenum texture_format); int maxTextureSize(); void cleanup(); -- cgit v1.2.3 From 507382c778959e02de25edfe31ad04ecdd231c79 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 24 Jan 2013 10:47:42 +0100 Subject: Drop the unused qt_gl_convertToGLFormat function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ie621f562401b703077a2b304ad6d8445efc76642 Reviewed-by: Sean Harmer Reviewed-by: Samuel Rødal --- src/opengl/qgl.cpp | 5 ----- 1 file changed, 5 deletions(-) (limited to 'src') diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 173f570256..402fdfa33f 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -2041,11 +2041,6 @@ static inline QRgb qt_gl_convertToGLFormatHelper(QRgb src_pixel, GLenum texture_ } } -QRgb qt_gl_convertToGLFormat(QRgb src_pixel, GLenum texture_format) -{ - return qt_gl_convertToGLFormatHelper(src_pixel, texture_format); -} - static void convertToGLFormatHelper(QImage &dst, const QImage &img, GLenum texture_format) { Q_ASSERT(dst.depth() == 32); -- cgit v1.2.3 From 159e17bc5b83f46d3c0a78aacd6b91c2da12ab30 Mon Sep 17 00:00:00 2001 From: Keith Gardner Date: Sat, 19 Jan 2013 21:35:16 -0600 Subject: QStringRef: Added a trimmed() function. Change-Id: I67c5d10f29f420e0aea95cf32b5d3c17c141899c Reviewed-by: Oswald Buddenhagen Reviewed-by: Friedemann Kleint Reviewed-by: Olivier Goffart --- src/corelib/tools/qstring.cpp | 31 +++++++++++++++++++++++++++++++ src/corelib/tools/qstring.h | 2 ++ 2 files changed, 33 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 8583bcf70f..ed8cb734f5 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -9193,6 +9193,37 @@ QVector QStringRef::toUcs4() const return v; } +/*! + Returns a string that has whitespace removed from the start and + the end. + + Whitespace means any character for which QChar::isSpace() returns + true. This includes the ASCII characters '\\t', '\\n', '\\v', + '\\f', '\\r', and ' '. + + Unlike QString::simplified(), trimmed() leaves internal whitespace alone. + + \since 5.1 + + \sa QString::trimmed() +*/ +QStringRef QStringRef::trimmed() const +{ + if (m_size == 0 || m_string == 0) + return *this; + const QChar *s = m_string->constData() + m_position; + int start = 0; + int end = m_size - 1; + while (start <= end && s[start].isSpace()) // skip white space from start + start++; + if (start <= end) { // only white space + while (end && s[end].isSpace()) // skip white space from end + end--; + } + int l = end - start + 1; + Q_ASSERT(l >= 0); + return QStringRef(m_string, m_position + start, l); +} /*! \obsolete diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 35f8a3dc8e..1e45da060c 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -1273,6 +1273,8 @@ public: int localeAwareCompare(const QStringRef &s) const; static int localeAwareCompare(const QStringRef &s1, const QString &s2); static int localeAwareCompare(const QStringRef &s1, const QStringRef &s2); + + QStringRef trimmed() const Q_REQUIRED_RESULT; }; Q_DECLARE_TYPEINFO(QStringRef, Q_PRIMITIVE_TYPE); -- cgit v1.2.3 From b28d56588a93852a8c7034a3b8b3c9146d1d8b28 Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Sat, 26 Jan 2013 13:41:12 +0000 Subject: Generate forward header (QtMath) for the math operations with syncqt Change-Id: Ief5b5871a5d56bb606e09efcfd3a1422dcfbcd08 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qmath.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/corelib/kernel/qmath.h b/src/corelib/kernel/qmath.h index ce49a91e93..75ec55f845 100644 --- a/src/corelib/kernel/qmath.h +++ b/src/corelib/kernel/qmath.h @@ -42,6 +42,10 @@ #ifndef QMATH_H #define QMATH_H +#if 0 +#pragma qt_class(QtMath) +#endif + #include #include -- cgit v1.2.3 From 8eae3a923a540f3dbfe9445a1d58c59f20294684 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Mon, 28 Jan 2013 19:17:21 +0100 Subject: Provide the resetInternalData slot to cleanly reset data in proxy subclasses. This was part of Qt 4.8, but Qt 5.0 was branched before that, so the commit was lost. Change-Id: I2a2ab3c75a0943ac734d588ebd74bc158dd6aaaf Reviewed-by: Nils Jeisecke Reviewed-by: Lars Knoll --- .../code/src_corelib_kernel_qabstractitemmodel.cpp | 34 ++++++++++++++++++++++ src/corelib/itemmodels/qabstractitemmodel.cpp | 22 ++++++++++++++ src/corelib/itemmodels/qabstractitemmodel.h | 4 +++ 3 files changed, 60 insertions(+) (limited to 'src') diff --git a/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp b/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp index 2f81b15752..c448c75206 100644 --- a/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp @@ -97,3 +97,37 @@ beginResetModel(); myData.clear(); endResetModel(); //! [11] + +//! [12] +class CustomDataProxy : public QSortFilterProxyModel +{ + Q_OBJECT +public: + CustomDataProxy(QObject *parent) + : QSortFilterProxyModel(parent) + { + } + + ... + + QVariant data(const QModelIndex &index, int role) + { + if (role != Qt::BackgroundRole) + return QSortFilterProxyModel::data(index, role); + + if (m_customData.contains(index.row())) + return m_customData.value(index.row()); + return QSortFilterProxyModel::data(index, role); + } + +private slots: + void resetInternalData() + { + m_customData.clear(); + } + +private: + QHash m_customData; +}; +//! [12] + diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp index 2a2d376a26..90e9886c90 100644 --- a/src/corelib/itemmodels/qabstractitemmodel.cpp +++ b/src/corelib/itemmodels/qabstractitemmodel.cpp @@ -865,6 +865,27 @@ void QAbstractItemModelPrivate::columnsRemoved(const QModelIndex &parent, } } +/*! + \since 4.8 + + This slot is called just after the internal data of a model is cleared + while it is being reset. + + This slot is provided the convenience of subclasses of concrete proxy + models, such as subclasses of QSortFilterProxyModel which maintain extra + data. + + \snippet code/src_corelib_kernel_qabstractitemmodel.cpp 12 + + \note Due to a mistake, this slot is missing in Qt 5.0. + + \sa modelAboutToBeReset(), modelReset() +*/ +void QAbstractItemModel::resetInternalData() +{ + +} + /*! \class QModelIndex \inmodule QtCore @@ -3055,6 +3076,7 @@ void QAbstractItemModel::endResetModel() { Q_D(QAbstractItemModel); d->invalidatePersistentIndexes(); + QMetaObject::invokeMethod(this, "resetInternalData"); emit modelReset(QPrivateSignal()); } diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h index 8e4f12e9ea..6a57ccaca8 100644 --- a/src/corelib/itemmodels/qabstractitemmodel.h +++ b/src/corelib/itemmodels/qabstractitemmodel.h @@ -330,6 +330,10 @@ public Q_SLOTS: virtual bool submit(); virtual void revert(); +protected Q_SLOTS: + // Qt 6: Make virtual + void resetInternalData(); + protected: QAbstractItemModel(QAbstractItemModelPrivate &dd, QObject *parent = 0); -- cgit v1.2.3 From 6bd03762d457ed7bea3cd4e856f629430c475553 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Wed, 30 Jan 2013 09:01:05 +0100 Subject: Refactor QEglFSPandaHooks and add physicalScreenSize() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I5a198af5347cc1fdce97031e0a1be99b2120c3ac Reviewed-by: Samuel Rødal --- src/plugins/platforms/eglfs/qeglfshooks.h | 5 ++- src/plugins/platforms/eglfs/qeglfshooks_stub.cpp | 46 +++++++++++++++++++++--- src/plugins/platforms/eglfs/qeglfsscreen.cpp | 5 +++ src/plugins/platforms/eglfs/qeglfsscreen.h | 2 ++ 4 files changed, 53 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/eglfs/qeglfshooks.h b/src/plugins/platforms/eglfs/qeglfshooks.h index b8b699fea1..f3b6a28e70 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks.h +++ b/src/plugins/platforms/eglfs/qeglfshooks.h @@ -55,10 +55,11 @@ class QEglFSScreen; class QEglFSHooks { public: - virtual ~QEglFSHooks() {}; + virtual ~QEglFSHooks() {} virtual void platformInit(); virtual void platformDestroy(); virtual EGLNativeDisplayType platformDisplay() const; + virtual QSizeF physicalScreenSize() const; virtual QSize screenSize() const; virtual int screenDepth() const; virtual QImage::Format screenFormat() const; @@ -68,6 +69,8 @@ public: virtual bool hasCapability(QPlatformIntegration::Capability cap) const; virtual QEglFSCursor *createCursor(QEglFSScreen *screen) const; virtual bool filterConfig(EGLDisplay display, EGLConfig config) const; + + virtual const char *fbDeviceName() const; }; #ifdef EGLFS_PLATFORM_HOOKS diff --git a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp index 0fd22e1757..d09423ec72 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp +++ b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp @@ -48,6 +48,11 @@ QT_BEGIN_NAMESPACE +const char *QEglFSHooks::fbDeviceName() const +{ + return "/dev/fb0"; +} + void QEglFSHooks::platformInit() { Q_UNUSED(hooks); @@ -62,6 +67,39 @@ EGLNativeDisplayType QEglFSHooks::platformDisplay() const return EGL_DEFAULT_DISPLAY; } +QSizeF QEglFSHooks::physicalScreenSize() const +{ + static QSizeF size; + if (size.isEmpty()) { + + // Note: in millimeters + int width = qgetenv("QT_QPA_EGLFS_PHYSICAL_WIDTH").toInt(); + int height = qgetenv("QT_QPA_EGLFS_PHYSICAL_HEIGHT").toInt(); + + if (width && height) { + // no need to read fb0 + size.setWidth(width); + size.setHeight(height); + return size; + } + + struct fb_var_screeninfo vinfo; + int fd = open(fbDeviceName(), O_RDONLY); + + if (fd != -1) { + if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) + qWarning("Could not query variable screen info."); + else + size = QSizeF(vinfo.width, vinfo.height); + + close(fd); + } else { + qWarning("Failed to open %s to detect screen size.", fbDeviceName()); + } + } + return size; +} + QSize QEglFSHooks::screenSize() const { static QSize size; @@ -78,7 +116,7 @@ QSize QEglFSHooks::screenSize() const } struct fb_var_screeninfo vinfo; - int fd = open("/dev/fb0", O_RDONLY); + int fd = open(fbDeviceName(), O_RDONLY); if (fd != -1) { if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) @@ -88,7 +126,7 @@ QSize QEglFSHooks::screenSize() const close(fd); } else { - qWarning("Failed to open /dev/fb0 to detect screen resolution."); + qWarning("Failed to open %s to detect screen depth.", fbDeviceName()); } // override fb0 from environment var setting @@ -107,7 +145,7 @@ int QEglFSHooks::screenDepth() const if (depth == 0) { struct fb_var_screeninfo vinfo; - int fd = open("/dev/fb0", O_RDONLY); + int fd = open(fbDeviceName(), O_RDONLY); if (fd != -1) { if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) @@ -117,7 +155,7 @@ int QEglFSHooks::screenDepth() const close(fd); } else { - qWarning("Failed to open /dev/fb0 to detect screen depth."); + qWarning("Failed to open %s to detect screen depth.", fbDeviceName()); } } diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.cpp b/src/plugins/platforms/eglfs/qeglfsscreen.cpp index 1bc1e944de..43d7cb3b1f 100644 --- a/src/plugins/platforms/eglfs/qeglfsscreen.cpp +++ b/src/plugins/platforms/eglfs/qeglfsscreen.cpp @@ -83,6 +83,11 @@ QImage::Format QEglFSScreen::format() const return hooks->screenFormat(); } +QSizeF QEglFSScreen::physicalSize() const +{ + return hooks->physicalScreenSize(); +} + QPlatformCursor *QEglFSScreen::cursor() const { return m_cursor; diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.h b/src/plugins/platforms/eglfs/qeglfsscreen.h index 309791d6c2..8d3c5dbaec 100644 --- a/src/plugins/platforms/eglfs/qeglfsscreen.h +++ b/src/plugins/platforms/eglfs/qeglfsscreen.h @@ -63,6 +63,8 @@ public: int depth() const; QImage::Format format() const; + QSizeF physicalSize() const; + QPlatformCursor *cursor() const; EGLDisplay display() const { return m_dpy; } -- cgit v1.2.3 From 36f64ec6ac07b3d02838b75f80efc445fd923891 Mon Sep 17 00:00:00 2001 From: Fabian Bumberger Date: Tue, 29 Jan 2013 15:01:45 +0100 Subject: Work around posix violation in qnx (missing pselect()) Change-Id: I7c1ae85ee7e92da3f394b488643613894977556e Reviewed-by: Peter Hartmann Reviewed-by: Rafael Roquetto Reviewed-by: Bernd Weimer Reviewed-by: Thiago Macieira --- src/corelib/kernel/qcore_unix.cpp | 7 +++++++ src/corelib/kernel/qeventdispatcher_blackberry.cpp | 18 +++++++++--------- src/corelib/kernel/qeventdispatcher_blackberry_p.h | 2 +- 3 files changed, 17 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qcore_unix.cpp b/src/corelib/kernel/qcore_unix.cpp index 5ab1d510ef..241658acb1 100644 --- a/src/corelib/kernel/qcore_unix.cpp +++ b/src/corelib/kernel/qcore_unix.cpp @@ -90,7 +90,14 @@ int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept, // loop and recalculate the timeout as needed int ret; forever { +#ifndef Q_OS_QNX ret = ::pselect(nfds, fdread, fdwrite, fdexcept, &timeout, 0); +#else + timeval timeoutVal; + timeoutVal.tv_sec = timeout.tv_sec; + timeoutVal.tv_usec = timeout.tv_nsec / 1000; + ret = ::select(nfds, fdread, fdwrite, fdexcept, &timeoutVal); +#endif if (ret != -1 || errno != EINTR) return ret; diff --git a/src/corelib/kernel/qeventdispatcher_blackberry.cpp b/src/corelib/kernel/qeventdispatcher_blackberry.cpp index 3e958ee277..5206334c09 100644 --- a/src/corelib/kernel/qeventdispatcher_blackberry.cpp +++ b/src/corelib/kernel/qeventdispatcher_blackberry.cpp @@ -271,13 +271,13 @@ void QEventDispatcherBlackberry::unregisterSocketNotifier(QSocketNotifier *notif } } -static inline int timevalToMillisecs(const timeval &tv) +static inline int timespecToMillisecs(const timespec &tv) { - return (tv.tv_sec * 1000) + (tv.tv_usec / 1000); + return (tv.tv_sec * 1000) + (tv.tv_nsec / 1000000); } int QEventDispatcherBlackberry::select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - timeval *timeout) + timespec *timeout) { Q_UNUSED(nfds); Q_D(QEventDispatcherBlackberry); @@ -306,9 +306,9 @@ int QEventDispatcherBlackberry::select(int nfds, fd_set *readfds, fd_set *writef // Convert timeout to milliseconds int timeoutTotal = -1; if (timeout) - timeoutTotal = timevalToMillisecs(*timeout); + timeoutTotal = timespecToMillisecs(*timeout); int timeoutLeft = timeoutTotal; - timeval startTime = qt_gettime(); + timespec startTime = qt_gettime(); // This loop exists such that we can drain the bps event queue of all native events // more efficiently than if we were to return control to Qt after each event. This @@ -332,16 +332,16 @@ int QEventDispatcherBlackberry::select(int nfds, fd_set *readfds, fd_set *writef // Update the timeout // Clock source is monotonic, so we can recalculate how much timeout is left if (timeoutTotal != -1) { - timeval t2 = qt_gettime(); + timespec t2 = qt_gettime(); timeoutLeft = timeoutTotal - - (timevalToMillisecs(t2) - timevalToMillisecs(startTime)); + - (timespecToMillisecs(t2) - timespecToMillisecs(startTime)); if (timeoutLeft < 0) timeoutLeft = 0; } - timeval tnext; + timespec tnext; if (d->timerList.timerWait(tnext)) { - int timeoutNext = timevalToMillisecs(tnext); + int timeoutNext = timespecToMillisecs(tnext); if (timeoutNext < timeoutLeft || timeoutTotal == -1) { timeoutTotal = timeoutLeft = timeoutNext; startTime = qt_gettime(); diff --git a/src/corelib/kernel/qeventdispatcher_blackberry_p.h b/src/corelib/kernel/qeventdispatcher_blackberry_p.h index 79ed21dbf2..5a4c3a9dcd 100644 --- a/src/corelib/kernel/qeventdispatcher_blackberry_p.h +++ b/src/corelib/kernel/qeventdispatcher_blackberry_p.h @@ -77,7 +77,7 @@ protected: QEventDispatcherBlackberry(QEventDispatcherBlackberryPrivate &dd, QObject *parent = 0); int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - timeval *timeout); + timespec *timeout); int ioEvents(int fd); }; -- cgit v1.2.3 From ffea8e98f712a8e2158a2bb843a649e96eea991e Mon Sep 17 00:00:00 2001 From: Nils Jeisecke Date: Mon, 7 Jan 2013 16:54:33 +0100 Subject: Update roleNames in QAbstractProxyModel if sourceModel resets. If a sourceModel resets, it's roleNames might have changed. This is most likely the case if sourceModel itself is also a proxy model of which the sourceModel was changed. Task-number: QTBUG-28982 Change-Id: I102788f2c9bf97b4002b350673f9219e32e7a052 Reviewed-by: Nils Jeisecke Reviewed-by: Stephen Kelly --- src/corelib/itemmodels/qabstractproxymodel.cpp | 9 +++++++++ src/corelib/itemmodels/qabstractproxymodel.h | 3 +++ 2 files changed, 12 insertions(+) (limited to 'src') diff --git a/src/corelib/itemmodels/qabstractproxymodel.cpp b/src/corelib/itemmodels/qabstractproxymodel.cpp index ed5d0e9a85..d5887a52d5 100644 --- a/src/corelib/itemmodels/qabstractproxymodel.cpp +++ b/src/corelib/itemmodels/qabstractproxymodel.cpp @@ -147,6 +147,15 @@ void QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel) } } +/*! + Clears the roleNames of this proxy model. +*/ +void QAbstractProxyModel::resetInternalData() +{ + Q_D(QAbstractProxyModel); + d->roleNames = d->model->roleNames(); +} + /*! Returns the model that contains the data that is available through the proxy model. */ diff --git a/src/corelib/itemmodels/qabstractproxymodel.h b/src/corelib/itemmodels/qabstractproxymodel.h index a7c2b3383d..9b26d6cead 100644 --- a/src/corelib/itemmodels/qabstractproxymodel.h +++ b/src/corelib/itemmodels/qabstractproxymodel.h @@ -101,6 +101,9 @@ Q_SIGNALS: #endif ); +protected Q_SLOTS: + void resetInternalData(); + protected: QAbstractProxyModel(QAbstractProxyModelPrivate &, QObject *parent); -- cgit v1.2.3 From 2f854e50908c342fddb17d6e72b7fb186f9c46de Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Wed, 30 Jan 2013 10:28:27 +0100 Subject: Fix QColorDialog::DontUseNativeDialog usage Task-number: QTBUG-29387 Change-Id: I97b3267981a0dcfdc95469cd0725b52ac4845346 Reviewed-by: Friedemann Kleint --- src/widgets/dialogs/qcolordialog.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src') diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp index 5adb4ba6da..7ba8f60f71 100644 --- a/src/widgets/dialogs/qcolordialog.cpp +++ b/src/widgets/dialogs/qcolordialog.cpp @@ -1856,15 +1856,12 @@ void QColorDialog::setVisible(bool visible) } #else - if (!(options() & DontUseNativeDialog)) + if (!(options() & DontUseNativeDialog) && d->nativeDialogInUse) { d->setNativeDialogVisible(visible); - - if (d->nativeDialogInUse) { // Set WA_DontShowOnScreen so that QDialog::setVisible(visible) below // updates the state correctly, but skips showing the non-native version: setAttribute(Qt::WA_DontShowOnScreen); } else { - d->nativeDialogInUse = false; setAttribute(Qt::WA_DontShowOnScreen, false); } #endif -- cgit v1.2.3 From 90361fd36c803c4c5c28d67f05ed66f619e0d39c Mon Sep 17 00:00:00 2001 From: Florian Behrens Date: Wed, 30 Jan 2013 09:20:09 +0100 Subject: Added support for multicore CPUs for INTEGRITY (V10+) target. QThread::idealThreadCount returns now the number of cores. Change-Id: Idc23fc3c257165f6a63c6a7686a57a4fe76f6413 Reviewed-by: Thiago Macieira --- src/corelib/thread/qthread_unix.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp index 253f3c79e7..f7397dd8d4 100644 --- a/src/corelib/thread/qthread_unix.cpp +++ b/src/corelib/thread/qthread_unix.cpp @@ -415,6 +415,13 @@ int QThread::idealThreadCount() Q_DECL_NOTHROW // IRIX cores = (int)sysconf(_SC_NPROC_ONLN); #elif defined(Q_OS_INTEGRITY) +#if (__INTEGRITY_MAJOR_VERSION >= 10) + // Integrity V10+ does support multicore CPUs + Value processorCount; + if (GetProcessorCount(CurrentTask(), &processorCount) == 0) + cores = processorCount; + else +#endif // as of aug 2008 Integrity only supports one single core CPU cores = 1; #elif defined(Q_OS_VXWORKS) -- cgit v1.2.3 From ec51ad81ff885d8d07187c17231a59818acc46f6 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 25 Jan 2013 16:58:23 +0100 Subject: QMacStyle: enable transient scrollbars for the desktop components Change-Id: I4f57a2c4eade779c594abaacaa872540b3b23cb1 Reviewed-by: Gabriel de Dietrich --- src/widgets/styles/qmacstyle_mac.mm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index bb2423adae..dddeb97f32 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -2707,15 +2707,14 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w ret = false; break; case SH_ScrollBar_Transient: - if (!qobject_cast(w)) { - ret = false; - break; - } - ret = QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7; + if (qobject_cast(w) || + (opt && QStyleHelper::hasAncestor(opt->styleObject, QAccessible::ScrollBar))) { + ret = QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7; #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) - ret &= [NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay; + if (ret) + ret = [NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay; #endif + } break; default: ret = QCommonStyle::styleHint(sh, opt, w, hret); @@ -4920,7 +4919,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex } #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - if (cc == CC_ScrollBar && proxy()->styleHint(SH_ScrollBar_Transient, 0, widget)) { + if (cc == CC_ScrollBar && proxy()->styleHint(SH_ScrollBar_Transient, opt, widget)) { bool wasActive = false; CGFloat opacity = 1.0; CGFloat expandScale = 1.0; -- cgit v1.2.3 From 508bbe9507a21bdb1ef1216b75e9e75fceb3b179 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 30 Jan 2013 14:41:31 +0100 Subject: XCB: Free cursors. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Id09046a3264724025e8a383cf40a959dafb9e0db Reviewed-by: Samuel Rødal --- src/plugins/platforms/xcb/qxcbcursor.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp index 929a6129b4..1b11ef7f95 100644 --- a/src/plugins/platforms/xcb/qxcbcursor.cpp +++ b/src/plugins/platforms/xcb/qxcbcursor.cpp @@ -287,8 +287,14 @@ QXcbCursor::QXcbCursor(QXcbConnection *conn, QXcbScreen *screen) QXcbCursor::~QXcbCursor() { + xcb_connection_t *conn = xcb_connection(); if (!--cursorCount) - xcb_close_font(xcb_connection(), cursorFont); + xcb_close_font(conn, cursorFont); + + foreach (xcb_cursor_t cursor, m_bitmapCursorMap) + xcb_free_cursor(conn, cursor); + foreach (xcb_cursor_t cursor, m_shapeCursorMap) + xcb_free_cursor(conn, cursor); } #ifndef QT_NO_CURSOR -- cgit v1.2.3 From 80fa4b6c8ef4d4b51c6a8c114aed2f7b1bc4db45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Tue, 6 Nov 2012 21:08:10 +0100 Subject: QTreeView - emit expanded on expandAll When we call QTreeView::expand expanded is emitted. For the same reason we should emit expanded on expandAll() This partly solves: Task-number: QTBUG-8176 Change-Id: Ie85e724eec50980c68f626ec47dec5c1e08cc085 Reviewed-by: Stephen Kelly Reviewed-by: Olivier Goffart --- src/widgets/itemviews/qtreeview.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index cee47faab4..b21fd0abcf 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -3194,8 +3194,8 @@ void QTreeViewPrivate::layout(int i, bool recursiveExpanding, bool afterIsUninit item->total = 0; item->hasMoreSiblings = false; if ((recursiveExpanding && !(current.flags() & Qt::ItemNeverHasChildren)) || isIndexExpanded(current)) { - if (recursiveExpanding) - expandedIndexes.insert(current); + if (recursiveExpanding && storeExpanded(current)) + emit q->expanded(current); item->expanded = true; layout(last, recursiveExpanding, afterIsUninitialized); item = &viewItems[last]; -- cgit v1.2.3 From 3260aec38ebfdd9f5bc0ce8e5b8e239f30a59c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Wed, 7 Nov 2012 08:08:44 +0100 Subject: QTreeView - emit collapsed in collapseAll() When we call call collapase we emit collapsed. Therefore it should also be emitted on collapseAll() This partly solves: Task-number: QTBUG-8176 Change-Id: I20c1388fcbbb60d12debb4a0b3b0d9fed41e2563 Reviewed-by: Stephen Kelly --- src/widgets/itemviews/qtreeview.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index b21fd0abcf..df6ba708a9 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -2646,7 +2646,15 @@ void QTreeView::expandAll() void QTreeView::collapseAll() { Q_D(QTreeView); + QSet old_expandedIndexes; + old_expandedIndexes = d->expandedIndexes; d->expandedIndexes.clear(); + QSet::const_iterator i = old_expandedIndexes.constBegin(); + for (; i != old_expandedIndexes.constEnd(); ++i) { + const QPersistentModelIndex &mi = (*i); + if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) + emit collapsed(mi); + } doItemsLayout(); } -- cgit v1.2.3 From 1e33f30f75dea6481c85b5f636f1136eb1a3da15 Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Wed, 30 Jan 2013 20:06:45 +0100 Subject: Remove left-overs of QT_{BEGIN,END}_HEADERS This macro is useless from Qt 5.1 on, so: - Remove comment about using QT_BEGIN_NAMESPACE after QT_BEGIN_HEADER - There is no need to blacklist these in qt-cpp-ignore.qdocconf Change-Id: I2c3ceb3d77d294a606b87f7486071a2350b3d42f Reviewed-by: Laszlo Papp Reviewed-by: hjk Reviewed-by: Lars Knoll Reviewed-by: Jerome Pasion --- src/corelib/global/qglobal.cpp | 3 +-- src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 454e5d828d..8bbc44978d 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -2792,8 +2792,7 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters) As a rule of thumb, \c QT_BEGIN_NAMESPACE should appear in all Qt header and Qt source files after the last \c{#include} line and before the first - declaration. In Qt headers using \c QT_BEGIN_HEADER, \c QT_BEGIN_NAMESPACE - follows \c QT_BEGIN_HEADER immediately. + declaration. If that rule can't be followed because, e.g., \c{#include} lines and declarations are wildly mixed, place \c QT_BEGIN_NAMESPACE before diff --git a/src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf b/src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf index 21efcf9940..38a421f829 100644 --- a/src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf +++ b/src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf @@ -19,9 +19,7 @@ Cpp.ignoretokens = QAXFACTORY_EXPORT \ QM_EXPORT_XML \ QT_ASCII_CAST_WARN \ QT_ASCII_CAST_WARN_CONSTRUCTOR \ - QT_BEGIN_HEADER \ QT_DESIGNER_STATIC \ - QT_END_HEADER \ QT_FASTCALL \ QT_WIDGET_PLUGIN_EXPORT \ Q_COMPAT_EXPORT \ -- cgit v1.2.3 From 1580f558472e2c37936fe817fc546a79a8b0a9a5 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 30 Jan 2013 10:36:50 +0100 Subject: Remove dependency of DB driver headers on qsqlcachedresult_p.h. Move the QXXResult classes inheriting the private class QSqlCachedResult from header into the source files for SQLite, SQLite2, Interbase/Firebird and TDS/Sybase and Oracle. Task-number: QTBUG-28088 Change-Id: Ia16d30e442e313c8165282b8a3f012fd95d96759 Reviewed-by: Andy Shaw Reviewed-by: Mark Brand --- src/sql/drivers/ibase/qsql_ibase.cpp | 49 ++++++++++++++++++++++++++++++++ src/sql/drivers/ibase/qsql_ibase.h | 25 ---------------- src/sql/drivers/oci/qsql_oci.cpp | 28 ++++++++++++++++++ src/sql/drivers/oci/qsql_oci.h | 28 ------------------ src/sql/drivers/sqlite/qsql_sqlite.cpp | 28 ++++++++++++++++++ src/sql/drivers/sqlite/qsql_sqlite.h | 27 ------------------ src/sql/drivers/sqlite2/qsql_sqlite2.cpp | 25 ++++++++++++++++ src/sql/drivers/sqlite2/qsql_sqlite2.h | 24 ---------------- src/sql/drivers/tds/qsql_tds.cpp | 22 ++++++++++++++ src/sql/drivers/tds/qsql_tds.h | 21 -------------- 10 files changed, 152 insertions(+), 125 deletions(-) (limited to 'src') diff --git a/src/sql/drivers/ibase/qsql_ibase.cpp b/src/sql/drivers/ibase/qsql_ibase.cpp index 5fd07318ec..22b4b81953 100644 --- a/src/sql/drivers/ibase/qsql_ibase.cpp +++ b/src/sql/drivers/ibase/qsql_ibase.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -346,6 +347,54 @@ static void qFreeEventBuffer(QIBaseEventBuffer* eBuffer) delete eBuffer; } +class QIBaseResult : public QSqlCachedResult +{ + friend class QIBaseResultPrivate; + +public: + explicit QIBaseResult(const QIBaseDriver* db); + virtual ~QIBaseResult(); + + bool prepare(const QString& query); + bool exec(); + QVariant handle() const; + +protected: + bool gotoNext(QSqlCachedResult::ValueCache& row, int rowIdx); + bool reset (const QString& query); + int size(); + int numRowsAffected(); + QSqlRecord record() const; + +private: + QIBaseResultPrivate* d; +}; + +class QIBaseResultPrivate; + +class QIBaseResult : public QSqlCachedResult +{ + friend class QIBaseResultPrivate; + +public: + explicit QIBaseResult(const QIBaseDriver* db); + virtual ~QIBaseResult(); + + bool prepare(const QString& query); + bool exec(); + QVariant handle() const; + +protected: + bool gotoNext(QSqlCachedResult::ValueCache& row, int rowIdx); + bool reset (const QString& query); + int size(); + int numRowsAffected(); + QSqlRecord record() const; + +private: + QIBaseResultPrivate* d; +}; + class QIBaseResultPrivate { public: diff --git a/src/sql/drivers/ibase/qsql_ibase.h b/src/sql/drivers/ibase/qsql_ibase.h index d47bd6d4b4..781448b98a 100644 --- a/src/sql/drivers/ibase/qsql_ibase.h +++ b/src/sql/drivers/ibase/qsql_ibase.h @@ -44,7 +44,6 @@ #include #include -#include #include QT_BEGIN_NAMESPACE @@ -55,32 +54,8 @@ QT_BEGIN_NAMESPACE #endif class QIBaseDriverPrivate; -class QIBaseResultPrivate; class QIBaseDriver; -class QIBaseResult : public QSqlCachedResult -{ - friend class QIBaseResultPrivate; - -public: - explicit QIBaseResult(const QIBaseDriver* db); - virtual ~QIBaseResult(); - - bool prepare(const QString& query); - bool exec(); - QVariant handle() const; - -protected: - bool gotoNext(QSqlCachedResult::ValueCache& row, int rowIdx); - bool reset (const QString& query); - int size(); - int numRowsAffected(); - QSqlRecord record() const; - -private: - QIBaseResultPrivate* d; -}; - class QIBaseDriver : public QSqlDriver { Q_OBJECT diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp index e2bb9a4eaf..db73f8f6ea 100644 --- a/src/sql/drivers/oci/qsql_oci.cpp +++ b/src/sql/drivers/oci/qsql_oci.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -162,6 +163,33 @@ Q_DECLARE_METATYPE(QOCIRowIdPointer) QT_END_INCLUDE_NAMESPACE class QOCICols; +struct QOCIResultPrivate; + +class Q_EXPORT_SQLDRIVER_OCI QOCIResult : public QSqlCachedResult +{ + friend class QOCIDriver; + friend struct QOCIResultPrivate; + friend class QOCICols; +public: + QOCIResult(const QOCIDriver * db, const QOCIDriverPrivate* p); + ~QOCIResult(); + bool prepare(const QString& query); + bool exec(); + QVariant handle() const; + +protected: + bool gotoNext(ValueCache &values, int index); + bool reset (const QString& query); + int size(); + int numRowsAffected(); + QSqlRecord record() const; + QVariant lastInsertId() const; + bool execBatch(bool arrayBind = false); + void virtual_hook(int id, void *data); + +private: + QOCIResultPrivate *d; +}; struct QOCIResultPrivate { diff --git a/src/sql/drivers/oci/qsql_oci.h b/src/sql/drivers/oci/qsql_oci.h index 797f967381..403de623ce 100644 --- a/src/sql/drivers/oci/qsql_oci.h +++ b/src/sql/drivers/oci/qsql_oci.h @@ -44,7 +44,6 @@ #include #include -#include #ifdef QT_PLUGIN #define Q_EXPORT_SQLDRIVER_OCI @@ -65,33 +64,6 @@ QT_BEGIN_NAMESPACE class QOCIDriver; class QOCICols; struct QOCIDriverPrivate; -struct QOCIResultPrivate; - -class Q_EXPORT_SQLDRIVER_OCI QOCIResult : public QSqlCachedResult -{ - friend class QOCIDriver; - friend struct QOCIResultPrivate; - friend class QOCICols; -public: - QOCIResult(const QOCIDriver * db, const QOCIDriverPrivate* p); - ~QOCIResult(); - bool prepare(const QString& query); - bool exec(); - QVariant handle() const; - -protected: - bool gotoNext(ValueCache &values, int index); - bool reset (const QString& query); - int size(); - int numRowsAffected(); - QSqlRecord record() const; - QVariant lastInsertId() const; - bool execBatch(bool arrayBind = false); - void virtual_hook(int id, void *data); - -private: - QOCIResultPrivate *d; -}; class Q_EXPORT_SQLDRIVER_OCI QOCIDriver : public QSqlDriver { diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp index f11279f262..d884bb7b11 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.cpp +++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -106,6 +107,33 @@ static QSqlError qMakeError(sqlite3 *access, const QString &descr, QSqlError::Er type, errorCode); } +class QSQLiteResultPrivate; + +class QSQLiteResult : public QSqlCachedResult +{ + friend class QSQLiteDriver; + friend class QSQLiteResultPrivate; +public: + explicit QSQLiteResult(const QSQLiteDriver* db); + ~QSQLiteResult(); + QVariant handle() const; + +protected: + bool gotoNext(QSqlCachedResult::ValueCache& row, int idx); + bool reset(const QString &query); + bool prepare(const QString &query); + bool exec(); + int size(); + int numRowsAffected(); + QVariant lastInsertId() const; + QSqlRecord record() const; + void detachFromResultSet(); + void virtual_hook(int id, void *data); + +private: + QSQLiteResultPrivate* d; +}; + class QSQLiteDriverPrivate { public: diff --git a/src/sql/drivers/sqlite/qsql_sqlite.h b/src/sql/drivers/sqlite/qsql_sqlite.h index d53e0275d6..bd034b4d6b 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.h +++ b/src/sql/drivers/sqlite/qsql_sqlite.h @@ -44,7 +44,6 @@ #include #include -#include struct sqlite3; @@ -62,34 +61,8 @@ QT_BEGIN_NAMESPACE #endif class QSQLiteDriverPrivate; -class QSQLiteResultPrivate; class QSQLiteDriver; -class QSQLiteResult : public QSqlCachedResult -{ - friend class QSQLiteDriver; - friend class QSQLiteResultPrivate; -public: - explicit QSQLiteResult(const QSQLiteDriver* db); - ~QSQLiteResult(); - QVariant handle() const; - -protected: - bool gotoNext(QSqlCachedResult::ValueCache& row, int idx); - bool reset(const QString &query); - bool prepare(const QString &query); - bool exec(); - int size(); - int numRowsAffected(); - QVariant lastInsertId() const; - QSqlRecord record() const; - void detachFromResultSet(); - void virtual_hook(int id, void *data); - -private: - QSQLiteResultPrivate* d; -}; - class Q_EXPORT_SQLDRIVER_SQLITE QSQLiteDriver : public QSqlDriver { Q_OBJECT diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp index 02e4004901..2666cefb72 100644 --- a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp +++ b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #include #include @@ -94,6 +95,30 @@ QSQLite2DriverPrivate::QSQLite2DriverPrivate() : access(0) utf8 = (qstrcmp(sqlite_encoding, "UTF-8") == 0); } +class QSQLite2ResultPrivate; + +class QSQLite2Result : public QSqlCachedResult +{ + friend class QSQLite2Driver; + friend class QSQLite2ResultPrivate; +public: + explicit QSQLite2Result(const QSQLite2Driver* db); + ~QSQLite2Result(); + QVariant handle() const; + +protected: + bool gotoNext(QSqlCachedResult::ValueCache& row, int idx); + bool reset (const QString& query); + int size(); + int numRowsAffected(); + QSqlRecord record() const; + void detachFromResultSet(); + void virtual_hook(int id, void *data); + +private: + QSQLite2ResultPrivate* d; +}; + class QSQLite2ResultPrivate { public: diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.h b/src/sql/drivers/sqlite2/qsql_sqlite2.h index a91a7c58f1..c6a8c4cf4f 100644 --- a/src/sql/drivers/sqlite2/qsql_sqlite2.h +++ b/src/sql/drivers/sqlite2/qsql_sqlite2.h @@ -46,7 +46,6 @@ #include #include #include -#include #if defined (Q_OS_WIN32) # include @@ -62,31 +61,8 @@ QT_BEGIN_NAMESPACE #endif class QSQLite2DriverPrivate; -class QSQLite2ResultPrivate; class QSQLite2Driver; -class QSQLite2Result : public QSqlCachedResult -{ - friend class QSQLite2Driver; - friend class QSQLite2ResultPrivate; -public: - explicit QSQLite2Result(const QSQLite2Driver* db); - ~QSQLite2Result(); - QVariant handle() const; - -protected: - bool gotoNext(QSqlCachedResult::ValueCache& row, int idx); - bool reset (const QString& query); - int size(); - int numRowsAffected(); - QSqlRecord record() const; - void detachFromResultSet(); - void virtual_hook(int id, void *data); - -private: - QSQLite2ResultPrivate* d; -}; - class QSQLite2Driver : public QSqlDriver { Q_OBJECT diff --git a/src/sql/drivers/tds/qsql_tds.cpp b/src/sql/drivers/tds/qsql_tds.cpp index b35fc682c8..22773b8eff 100644 --- a/src/sql/drivers/tds/qsql_tds.cpp +++ b/src/sql/drivers/tds/qsql_tds.cpp @@ -58,6 +58,7 @@ #include #include #include +#include #include #include @@ -152,6 +153,27 @@ struct QTDSColumnData }; Q_DECLARE_TYPEINFO(QTDSColumnData, Q_MOVABLE_TYPE); +class QTDSResultPrivate; + +class QTDSResult : public QSqlCachedResult +{ +public: + explicit QTDSResult(const QTDSDriver* db); + ~QTDSResult(); + QVariant handle() const; + +protected: + void cleanup(); + bool reset (const QString& query); + int size(); + int numRowsAffected(); + bool gotoNext(QSqlCachedResult::ValueCache &values, int index); + QSqlRecord record() const; + +private: + QTDSResultPrivate* d; +}; + class QTDSResultPrivate { public: diff --git a/src/sql/drivers/tds/qsql_tds.h b/src/sql/drivers/tds/qsql_tds.h index 5a158cfdcc..2bbdd0e49c 100644 --- a/src/sql/drivers/tds/qsql_tds.h +++ b/src/sql/drivers/tds/qsql_tds.h @@ -44,7 +44,6 @@ #include #include -#include #ifdef Q_OS_WIN32 #define WIN32_LEAN_AND_MEAN @@ -75,28 +74,8 @@ QT_BEGIN_NAMESPACE #endif class QTDSDriverPrivate; -class QTDSResultPrivate; class QTDSDriver; -class QTDSResult : public QSqlCachedResult -{ -public: - explicit QTDSResult(const QTDSDriver* db); - ~QTDSResult(); - QVariant handle() const; - -protected: - void cleanup(); - bool reset (const QString& query); - int size(); - int numRowsAffected(); - bool gotoNext(QSqlCachedResult::ValueCache &values, int index); - QSqlRecord record() const; - -private: - QTDSResultPrivate* d; -}; - class Q_EXPORT_SQLDRIVER_TDS QTDSDriver : public QSqlDriver { Q_OBJECT -- cgit v1.2.3 From eeb31ad10a1c1b26233f383de6d1b2b217cde08f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20G=C3=A2teau?= Date: Mon, 21 Jan 2013 11:01:12 +0100 Subject: Keep QLineEdit placeholder text visible when focused This is useful when the widget is focused by default, and also gives another opportunity to the user to read the message before typing, removing the need for workarounds like clicking in another text entry to bring back the placeholder message. Change-Id: I4a2981a6656a87934b5c8ed4a8a2dc13b748c94d Reviewed-by: Gabriel de Dietrich Reviewed-by: Olivier Goffart Reviewed-by: Jens Bache-Wiig --- src/widgets/widgets/qlineedit.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 65969a7ebb..869570b0e3 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -1801,7 +1801,7 @@ void QLineEdit::paintEvent(QPaintEvent *) int minRB = qMax(0, -fm.minRightBearing()); if (d->control->text().isEmpty()) { - if (!hasFocus() && !d->placeholderText.isEmpty()) { + if (!d->placeholderText.isEmpty()) { QColor col = pal.text().color(); col.setAlpha(128); QPen oldpen = p.pen(); @@ -1810,7 +1810,6 @@ void QLineEdit::paintEvent(QPaintEvent *) QString elidedText = fm.elidedText(d->placeholderText, Qt::ElideRight, lineRect.width()); p.drawText(lineRect, va, elidedText); p.setPen(oldpen); - return; } } -- cgit v1.2.3 From 8779d73d8c525443a5add158cf1e9b1d8bf16caf Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Jan 2013 20:16:05 -0800 Subject: Put #ifdef around Windows-only function Only on Windows do we use wchar_t messages. Change-Id: I9672371aa001effc755b32f9d7c83ada8464394f Reviewed-by: Olivier Goffart Reviewed-by: Kai Koehne --- src/corelib/global/qlogging.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index 20e649bab5..c3ce405156 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -115,6 +115,7 @@ static bool isFatal(QtMsgType msgType) extern bool usingWinMain; #endif +#ifdef Q_OS_WIN static inline void convert_to_wchar_t_elided(wchar_t *d, size_t space, const char *s) Q_DECL_NOEXCEPT { size_t len = qstrlen(s); @@ -128,6 +129,7 @@ static inline void convert_to_wchar_t_elided(wchar_t *d, size_t space, const cha *d++ = *s++; *d++ = 0; } +#endif #if !defined(QT_NO_EXCEPTIONS) /*! -- cgit v1.2.3 From ebca7d2ea71440b0a5e465774e3abd98ff6298a8 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 29 Jan 2013 17:02:54 +0100 Subject: Introduce a native color dialog for GTK+ 2.x Change-Id: I389e6995b09df85cd6c464779e8d894b7cd33205 Reviewed-by: Friedemann Kleint Reviewed-by: Jens Bache-Wiig --- .../themes/genericunix/qgenericunixthemes.cpp | 3 + src/plugins/platformthemes/gtk2/gtk2.json | 3 + src/plugins/platformthemes/gtk2/gtk2.pro | 19 ++ src/plugins/platformthemes/gtk2/main.cpp | 67 ++++++ .../platformthemes/gtk2/qgtk2dialoghelpers.cpp | 238 +++++++++++++++++++++ .../platformthemes/gtk2/qgtk2dialoghelpers.h | 79 +++++++ src/plugins/platformthemes/gtk2/qgtk2theme.cpp | 72 +++++++ src/plugins/platformthemes/gtk2/qgtk2theme.h | 62 ++++++ src/plugins/platformthemes/platformthemes.pro | 3 + src/plugins/plugins.pro | 2 +- 10 files changed, 547 insertions(+), 1 deletion(-) create mode 100644 src/plugins/platformthemes/gtk2/gtk2.json create mode 100644 src/plugins/platformthemes/gtk2/gtk2.pro create mode 100644 src/plugins/platformthemes/gtk2/main.cpp create mode 100644 src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp create mode 100644 src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h create mode 100644 src/plugins/platformthemes/gtk2/qgtk2theme.cpp create mode 100644 src/plugins/platformthemes/gtk2/qgtk2theme.h create mode 100644 src/plugins/platformthemes/platformthemes.pro (limited to 'src') diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp index f2babe41a4..0d90e5d693 100644 --- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp +++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp @@ -426,6 +426,9 @@ QStringList QGenericUnixTheme::themeNames() result.push_back(QLatin1String(QKdeTheme::name)); #endif } else { // Gnome, Unity, other Gtk-based desktops like XFCE. + // prefer the GTK2 theme implementation with native dialogs etc. + result.push_back(QStringLiteral("gtk2")); + // fallback to the generic Gnome theme if loading the GTK2 theme fails result.push_back(QLatin1String(QGnomeTheme::name)); } const QString session = QString::fromLocal8Bit(qgetenv("DESKTOP_SESSION")); diff --git a/src/plugins/platformthemes/gtk2/gtk2.json b/src/plugins/platformthemes/gtk2/gtk2.json new file mode 100644 index 0000000000..86dd8e58fa --- /dev/null +++ b/src/plugins/platformthemes/gtk2/gtk2.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "gtk2" ] +} diff --git a/src/plugins/platformthemes/gtk2/gtk2.pro b/src/plugins/platformthemes/gtk2/gtk2.pro new file mode 100644 index 0000000000..f22753e96f --- /dev/null +++ b/src/plugins/platformthemes/gtk2/gtk2.pro @@ -0,0 +1,19 @@ +TARGET = qgtk2 + +PLUGIN_TYPE = platformthemes +PLUGIN_CLASS_NAME = QGtk2ThemePlugin +load(qt_plugin) + +QT += core-private gui-private platformsupport-private + +QMAKE_CXXFLAGS += $$QT_CFLAGS_QGTK2 +LIBS += $$QT_LIBS_QGTK2 + +HEADERS += \ + qgtk2dialoghelpers.h \ + qgtk2theme.h + +SOURCES += \ + main.cpp \ + qgtk2dialoghelpers.cpp \ + qgtk2theme.cpp \ diff --git a/src/plugins/platformthemes/gtk2/main.cpp b/src/plugins/platformthemes/gtk2/main.cpp new file mode 100644 index 0000000000..0c3fe46e29 --- /dev/null +++ b/src/plugins/platformthemes/gtk2/main.cpp @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include "qgtk2theme.h" + +QT_BEGIN_NAMESPACE + +class QGtk2ThemePlugin : public QPlatformThemePlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1" FILE "gtk2.json") + +public: + QPlatformTheme *create(const QString &key, const QStringList ¶ms); +}; + +QPlatformTheme *QGtk2ThemePlugin::create(const QString &key, const QStringList ¶ms) +{ + Q_UNUSED(params); + if (!key.compare(QStringLiteral("gtk2"), Qt::CaseInsensitive)) + return new QGtk2Theme; + + return 0; +} + +QT_END_NAMESPACE + +#include "main.moc" diff --git a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp new file mode 100644 index 0000000000..19d4e9e469 --- /dev/null +++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp @@ -0,0 +1,238 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qgtk2dialoghelpers.h" + +#include +#include +#include +#include + +#include + +#undef signals +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QGtk2Dialog : public QWindow +{ + Q_OBJECT + +public: + QGtk2Dialog(GtkWidget *gtkWidget); + ~QGtk2Dialog(); + + GtkDialog* gtkDialog() const; + + void exec(); + bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); + void hide(); + +Q_SIGNALS: + void accept(); + void reject(); + +protected: + static void onResponse(QGtk2Dialog *dialog, int response); + +private: + GtkWidget *gtkWidget; +}; + +QGtk2Dialog::QGtk2Dialog(GtkWidget *gtkWidget) : gtkWidget(gtkWidget) +{ + g_signal_connect_swapped(G_OBJECT(gtkWidget), "response", G_CALLBACK(onResponse), this); + g_signal_connect(G_OBJECT(gtkWidget), "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), NULL); +} + +QGtk2Dialog::~QGtk2Dialog() +{ + gtk_widget_destroy(gtkWidget); +} + +GtkDialog* QGtk2Dialog::gtkDialog() const +{ + return GTK_DIALOG(gtkWidget); +} + +void QGtk2Dialog::exec() +{ + if (modality() == Qt::ApplicationModal) { + // block input to the whole app, including other GTK dialogs + gtk_dialog_run(gtkDialog()); + } else { + // block input to the window, allow input to other GTK dialogs + QEventLoop loop; + connect(this, SIGNAL(accept()), &loop, SLOT(quit())); + connect(this, SIGNAL(reject()), &loop, SLOT(quit())); + loop.exec(); + } +} + +bool QGtk2Dialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) +{ + setParent(parent); + setFlags(flags); + setModality(modality); + + gtk_widget_realize(gtkWidget); // creates X window + + if (parent) { + XSetTransientForHint(gdk_x11_drawable_get_xdisplay(gtkWidget->window), + gdk_x11_drawable_get_xid(gtkWidget->window), + parent->winId()); + } + + if (modality != Qt::NonModal) { + gdk_window_set_modal_hint(gtkWidget->window, true); + QGuiApplicationPrivate::showModalWindow(this); + } + + gtk_widget_show(gtkWidget); + return true; +} + +void QGtk2Dialog::hide() +{ + QGuiApplicationPrivate::hideModalWindow(this); + gtk_widget_hide(gtkWidget); +} + +void QGtk2Dialog::onResponse(QGtk2Dialog *dialog, int response) +{ + if (response == GTK_RESPONSE_OK) + emit dialog->accept(); + else + emit dialog->reject(); +} + +QGtk2ColorDialogHelper::QGtk2ColorDialogHelper() +{ + d.reset(new QGtk2Dialog(gtk_color_selection_dialog_new(""))); + connect(d.data(), SIGNAL(accept()), this, SLOT(onAccepted())); + connect(d.data(), SIGNAL(reject()), this, SIGNAL(reject())); + + GtkWidget *gtkColorSelection = gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(d->gtkDialog())); + g_signal_connect_swapped(gtkColorSelection, "color-changed", G_CALLBACK(onColorChanged), this); +} + +QGtk2ColorDialogHelper::~QGtk2ColorDialogHelper() +{ +} + +bool QGtk2ColorDialogHelper::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) +{ + applyOptions(); + return d->show(flags, modality, parent); +} + +void QGtk2ColorDialogHelper::exec() +{ + d->exec(); +} + +void QGtk2ColorDialogHelper::hide() +{ + d->hide(); +} + +void QGtk2ColorDialogHelper::setCurrentColor(const QColor &color) +{ + GtkDialog *gtkDialog = d->gtkDialog(); + GtkWidget *gtkColorSelection = gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(gtkDialog)); + GdkColor gdkColor; + gdkColor.red = color.red() << 8; + gdkColor.green = color.green() << 8; + gdkColor.blue = color.blue() << 8; + gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(gtkColorSelection), &gdkColor); + if (color.alpha() < 255) { + gtk_color_selection_set_has_opacity_control(GTK_COLOR_SELECTION(gtkColorSelection), true); + gtk_color_selection_set_current_alpha(GTK_COLOR_SELECTION(gtkColorSelection), color.alpha() << 8); + } +} + +QColor QGtk2ColorDialogHelper::currentColor() const +{ + GtkDialog *gtkDialog = d->gtkDialog(); + GtkWidget *gtkColorSelection = gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(gtkDialog)); + GdkColor gdkColor; + gtk_color_selection_get_current_color(GTK_COLOR_SELECTION(gtkColorSelection), &gdkColor); + guint16 alpha = gtk_color_selection_get_current_alpha(GTK_COLOR_SELECTION(gtkColorSelection)); + return QColor(gdkColor.red >> 8, gdkColor.green >> 8, gdkColor.blue >> 8, alpha >> 8); +} + +void QGtk2ColorDialogHelper::onAccepted() +{ + emit accept(); + emit colorSelected(currentColor()); +} + +void QGtk2ColorDialogHelper::onColorChanged(QGtk2ColorDialogHelper *dialog) +{ + emit dialog->currentColorChanged(dialog->currentColor()); +} + +void QGtk2ColorDialogHelper::applyOptions() +{ + GtkDialog* gtkDialog = d->gtkDialog(); + gtk_window_set_title(GTK_WINDOW(gtkDialog), options()->windowTitle().toUtf8()); + + GtkWidget *gtkColorSelection = gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(gtkDialog)); + gtk_color_selection_set_has_opacity_control(GTK_COLOR_SELECTION(gtkColorSelection), options()->testOption(QColorDialogOptions::ShowAlphaChannel)); + + GtkWidget *okButton = 0; + GtkWidget *cancelButton = 0; + GtkWidget *helpButton = 0; + g_object_get(G_OBJECT(gtkDialog), "ok-button", &okButton, "cancel-button", &cancelButton, "help-button", &helpButton, NULL); + if (okButton) + g_object_set(G_OBJECT(okButton), "visible", !options()->testOption(QColorDialogOptions::NoButtons), NULL); + if (cancelButton) + g_object_set(G_OBJECT(cancelButton), "visible", !options()->testOption(QColorDialogOptions::NoButtons), NULL); + if (helpButton) + gtk_widget_hide(helpButton); +} + +QT_END_NAMESPACE + +#include "qgtk2dialoghelpers.moc" diff --git a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h new file mode 100644 index 0000000000..9dc6991601 --- /dev/null +++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGTK2DIALOGHELPERS_P_H +#define QGTK2DIALOGHELPERS_P_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QGtk2Dialog; + +class QGtk2ColorDialogHelper : public QPlatformColorDialogHelper +{ + Q_OBJECT + +public: + QGtk2ColorDialogHelper(); + ~QGtk2ColorDialogHelper(); + + virtual bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); + virtual void exec(); + virtual void hide(); + + virtual void setCurrentColor(const QColor &color); + virtual QColor currentColor() const; + +private Q_SLOTS: + void onAccepted(); + +private: + static void onColorChanged(QGtk2ColorDialogHelper *helper); + void applyOptions(); + + mutable QScopedPointer d; +}; + +QT_END_NAMESPACE + +#endif // QGTK2DIALOGHELPERS_P_H diff --git a/src/plugins/platformthemes/gtk2/qgtk2theme.cpp b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp new file mode 100644 index 0000000000..c7e612d1d6 --- /dev/null +++ b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qgtk2theme.h" +#include "qgtk2dialoghelpers.h" + +#undef signals +#include + +QT_BEGIN_NAMESPACE + +const char *QGtk2Theme::name = "gtk2"; + +QGtk2Theme::QGtk2Theme() +{ + gtk_init(0, 0); +} + +bool QGtk2Theme::usePlatformNativeDialog(DialogType type) const +{ + return type == ColorDialog; +} + +QPlatformDialogHelper *QGtk2Theme::createPlatformDialogHelper(DialogType type) const +{ + switch (type) { + case ColorDialog: + return new QGtk2ColorDialogHelper; + default: + return 0; + } +} + +QT_END_NAMESPACE diff --git a/src/plugins/platformthemes/gtk2/qgtk2theme.h b/src/plugins/platformthemes/gtk2/qgtk2theme.h new file mode 100644 index 0000000000..6d8768dd8e --- /dev/null +++ b/src/plugins/platformthemes/gtk2/qgtk2theme.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGTK2THEME_H +#define QGTK2THEME_H + +#include + +QT_BEGIN_NAMESPACE + +class QGtk2Theme : public QGnomeTheme +{ +public: + QGtk2Theme(); + + virtual bool usePlatformNativeDialog(DialogType type) const; + virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const; + + static const char *name; +}; + +QT_END_NAMESPACE + +#endif // QGTK2THEME_H diff --git a/src/plugins/platformthemes/platformthemes.pro b/src/plugins/platformthemes/platformthemes.pro new file mode 100644 index 0000000000..23dcda2c82 --- /dev/null +++ b/src/plugins/platformthemes/platformthemes.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs + +contains(QT_CONFIG, gtk2): SUBDIRS += gtk2 diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index 3b0ff3f6c8..0dba5d14d0 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -1,7 +1,7 @@ TEMPLATE = subdirs SUBDIRS *= sqldrivers bearer -qtHaveModule(gui): SUBDIRS *= imageformats platforms platforminputcontexts generic +qtHaveModule(gui): SUBDIRS *= imageformats platforms platforminputcontexts platformthemes generic qtHaveModule(widgets): SUBDIRS += accessible !wince*:qtHaveModule(widgets): SUBDIRS += printsupport -- cgit v1.2.3 From 08a632ac1ac48eebdb60d9b87b221e7dbd3c22c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Wed, 7 Nov 2012 15:04:31 +0100 Subject: QTreeView::expandToDepth - add missing emit of expanded and collapsed Just like other functions this function should emit expanded and collapsed. A part of fixing Task-number: QTBUG-8176 Change-Id: I6d801f61e6f0cb8836634cc52f0be2b610f6c728 Reviewed-by: Stephen Kelly --- src/widgets/itemviews/qtreeview.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src') diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index df6ba708a9..fb26343af2 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -2668,6 +2668,8 @@ void QTreeView::expandToDepth(int depth) { Q_D(QTreeView); d->viewItems.clear(); + QSet old_expandedIndexes; + old_expandedIndexes = d->expandedIndexes; d->expandedIndexes.clear(); d->interruptDelayedItemsLayout(); d->layout(-1); @@ -2678,6 +2680,24 @@ void QTreeView::expandToDepth(int depth) d->storeExpanded(d->viewItems.at(i).index); } } + + // emit signals + QSet collapsedIndexes = old_expandedIndexes - d->expandedIndexes; + QSet::const_iterator i = collapsedIndexes.constBegin(); + for (; i != collapsedIndexes.constEnd(); ++i) { + const QPersistentModelIndex &mi = (*i); + if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) + emit collapsed(mi); + } + + QSet expandedIndexs = d->expandedIndexes - old_expandedIndexes; + i = expandedIndexs.constBegin(); + for (; i != expandedIndexs.constEnd(); ++i) { + const QPersistentModelIndex &mi = (*i); + if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) + emit expanded(mi); + } + updateGeometries(); d->viewport->update(); } -- cgit v1.2.3 From 6a5c6b3ce60f8714824f3ce0224885cb694c1aa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Wed, 7 Nov 2012 15:55:08 +0100 Subject: QTreeView - optimize. Do not do signals-work if signals are blocked There is no need to do any kind of work with emitting signals if signals are blocked. Change-Id: Ic352ba157fd89bbd36c650edd809a2ea91bcdd5f Reviewed-by: Stephen Kelly --- src/widgets/itemviews/qtreeview.cpp | 48 +++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index fb26343af2..2e9148e590 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -55,6 +55,7 @@ #ifndef QT_NO_ACCESSIBILITY #include #include +#include #endif #include @@ -2649,11 +2650,13 @@ void QTreeView::collapseAll() QSet old_expandedIndexes; old_expandedIndexes = d->expandedIndexes; d->expandedIndexes.clear(); - QSet::const_iterator i = old_expandedIndexes.constBegin(); - for (; i != old_expandedIndexes.constEnd(); ++i) { - const QPersistentModelIndex &mi = (*i); - if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) - emit collapsed(mi); + if (!signalsBlocked() && isSignalConnected(QMetaMethod::fromSignal(&QTreeView::collapsed))) { + QSet::const_iterator i = old_expandedIndexes.constBegin(); + for (; i != old_expandedIndexes.constEnd(); ++i) { + const QPersistentModelIndex &mi = (*i); + if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) + emit collapsed(mi); + } } doItemsLayout(); } @@ -2681,21 +2684,26 @@ void QTreeView::expandToDepth(int depth) } } - // emit signals - QSet collapsedIndexes = old_expandedIndexes - d->expandedIndexes; - QSet::const_iterator i = collapsedIndexes.constBegin(); - for (; i != collapsedIndexes.constEnd(); ++i) { - const QPersistentModelIndex &mi = (*i); - if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) - emit collapsed(mi); - } + bool someSignalEnabled = isSignalConnected(QMetaMethod::fromSignal(&QTreeView::collapsed)); + someSignalEnabled |= isSignalConnected(QMetaMethod::fromSignal(&QTreeView::expanded)); - QSet expandedIndexs = d->expandedIndexes - old_expandedIndexes; - i = expandedIndexs.constBegin(); - for (; i != expandedIndexs.constEnd(); ++i) { - const QPersistentModelIndex &mi = (*i); - if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) - emit expanded(mi); + if (!signalsBlocked() && someSignalEnabled) { + // emit signals + QSet collapsedIndexes = old_expandedIndexes - d->expandedIndexes; + QSet::const_iterator i = collapsedIndexes.constBegin(); + for (; i != collapsedIndexes.constEnd(); ++i) { + const QPersistentModelIndex &mi = (*i); + if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) + emit collapsed(mi); + } + + QSet expandedIndexs = d->expandedIndexes - old_expandedIndexes; + i = expandedIndexs.constBegin(); + for (; i != expandedIndexs.constEnd(); ++i) { + const QPersistentModelIndex &mi = (*i); + if (mi.isValid() && !(mi.flags() & Qt::ItemNeverHasChildren)) + emit expanded(mi); + } } updateGeometries(); @@ -3222,7 +3230,7 @@ void QTreeViewPrivate::layout(int i, bool recursiveExpanding, bool afterIsUninit item->total = 0; item->hasMoreSiblings = false; if ((recursiveExpanding && !(current.flags() & Qt::ItemNeverHasChildren)) || isIndexExpanded(current)) { - if (recursiveExpanding && storeExpanded(current)) + if (recursiveExpanding && storeExpanded(current) && !q->signalsBlocked()) emit q->expanded(current); item->expanded = true; layout(last, recursiveExpanding, afterIsUninitialized); -- cgit v1.2.3 From 288d3aceee83192bb84d73c60268a18722488adf Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 17 Aug 2012 18:10:23 +0200 Subject: Improve QLibrary global destruction The previous solution was a global static, which got deleted at the end of the execution of the application or at QtCore unload, whichever came first. Unfortunately, the end of the execution often came first, which is inconvenient: it means the global was deleted before all atexit functions were run, including some QLibrary destructors. Consequently, some QLibrary destructors did not reach the global data and were thus unable to unload their libraries or delete their data properly. The previous solution leaked. This solution instead uses a Q_DESTRUCTOR_FUNCTION, which makes a requirement to destroy only at QtCore unload time. Thus, we're sure that all references have been dropped. Additionally, during the cleanup, do try to unload the libraries that have a single reference count left. That means either a QLibrary that was destroyed without unload(), or a use of the static QLibrary::resolve functions. Change-Id: I12e0943b0c6edc27390c103b368d1b04bfe7e302 Reviewed-by: Lars Knoll --- src/corelib/plugin/qlibrary.cpp | 147 +++++++++++++++++++++++++++++----------- src/corelib/plugin/qlibrary_p.h | 3 +- 2 files changed, 111 insertions(+), 39 deletions(-) (limited to 'src') diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp index d17067684a..7d6c3c3063 100644 --- a/src/corelib/plugin/qlibrary.cpp +++ b/src/corelib/plugin/qlibrary.cpp @@ -79,8 +79,6 @@ QT_BEGIN_NAMESPACE # define QT_NO_DEBUG_PLUGIN_CHECK #endif -static QBasicMutex qt_library_mutex; - /*! \class QLibrary \inmodule QtCore @@ -339,46 +337,126 @@ static void installCoverageTool(QLibraryPrivate *libPrivate) #endif } -typedef QMap LibraryMap; +class QLibraryStore +{ +public: + inline ~QLibraryStore(); + static inline QLibraryPrivate *findOrCreate(const QString &fileName, const QString &version); + static inline void releaseLibrary(QLibraryPrivate *lib); + + static inline void cleanup(); -struct LibraryData { +private: + static inline QLibraryStore *instance(); + + // all members and instance() are protected by qt_library_mutex + typedef QMap LibraryMap; LibraryMap libraryMap; - QSet loadedLibs; }; -Q_GLOBAL_STATIC(LibraryData, libraryData) +static QBasicMutex qt_library_mutex; +static QLibraryStore *qt_library_data = 0; + +QLibraryStore::~QLibraryStore() +{ + qt_library_data = 0; +} + +inline void QLibraryStore::cleanup() +{ + QLibraryStore *data = qt_library_data; + if (!data) + return; + + // find any libraries that are still loaded but have a no one attached to them + LibraryMap::Iterator it = data->libraryMap.begin(); + for (; it != data->libraryMap.end(); ++it) { + QLibraryPrivate *lib = it.value(); + if (lib->libraryRefCount.load() == 1) { + Q_ASSERT(lib->pHnd); + Q_ASSERT(lib->libraryUnloadCount.load() > 0); + lib->libraryUnloadCount.store(1); + lib->unload(); + delete lib; + it.value() = 0; + } + } -static LibraryMap *libraryMap() + if (qt_debug_component()) { + // dump all objects that remain + foreach (QLibraryPrivate *lib, data->libraryMap) { + if (lib) + qDebug() << "On QtCore unload," << lib->fileName << "was leaked, with" + << lib->libraryRefCount.load() << "users"; + } + } + + delete data; +} + +static void qlibraryCleanup() +{ + QLibraryStore::cleanup(); +} +Q_DESTRUCTOR_FUNCTION(qlibraryCleanup) + +// must be called with a locked mutex +QLibraryStore *QLibraryStore::instance() { - LibraryData *data = libraryData(); - return data ? &data->libraryMap : 0; + if (Q_UNLIKELY(!qt_library_data)) + qt_library_data = new QLibraryStore; + return qt_library_data; +} + +inline QLibraryPrivate *QLibraryStore::findOrCreate(const QString &fileName, const QString &version) +{ + QMutexLocker locker(&qt_library_mutex); + QLibraryStore *data = instance(); + + // check if this library is already loaded + QLibraryPrivate *lib = data->libraryMap.value(fileName); + if (!lib) + lib = new QLibraryPrivate(fileName, version); + + // track this library + data->libraryMap.insert(fileName, lib); + + lib->libraryRefCount.ref(); + return lib; +} + +inline void QLibraryStore::releaseLibrary(QLibraryPrivate *lib) +{ + QMutexLocker locker(&qt_library_mutex); + QLibraryStore *data = instance(); + + if (lib->libraryRefCount.deref()) { + // still in use + return; + } + + // no one else is using + Q_ASSERT(lib->libraryUnloadCount.load() == 0); + + QLibraryPrivate *that = data->libraryMap.take(lib->fileName); + Q_ASSERT(lib == that); + Q_UNUSED(that); + delete lib; } QLibraryPrivate::QLibraryPrivate(const QString &canonicalFileName, const QString &version) : pHnd(0), fileName(canonicalFileName), fullVersion(version), instance(0), loadHints(0), - libraryRefCount(1), libraryUnloadCount(0), pluginState(MightBeAPlugin) -{ libraryMap()->insert(canonicalFileName, this); } + libraryRefCount(0), libraryUnloadCount(0), pluginState(MightBeAPlugin) +{ } QLibraryPrivate *QLibraryPrivate::findOrCreate(const QString &fileName, const QString &version) { - QMutexLocker locker(&qt_library_mutex); - if (QLibraryPrivate *lib = libraryMap()->value(fileName)) { - lib->libraryRefCount.ref(); - return lib; - } - - return new QLibraryPrivate(fileName, version); + return QLibraryStore::findOrCreate(fileName, version); } QLibraryPrivate::~QLibraryPrivate() { - LibraryMap * const map = libraryMap(); - if (map) { - QLibraryPrivate *that = map->take(fileName); - Q_ASSERT(this == that); - Q_UNUSED(that); - } } QFunctionPointer QLibraryPrivate::resolve(const char *symbol) @@ -391,9 +469,10 @@ QFunctionPointer QLibraryPrivate::resolve(const char *symbol) bool QLibraryPrivate::load() { - libraryUnloadCount.ref(); - if (pHnd) + if (pHnd) { + libraryUnloadCount.ref(); return true; + } if (fileName.isEmpty()) return false; @@ -403,11 +482,8 @@ bool QLibraryPrivate::load() if (ret) { //when loading a library we add a reference to it so that the QLibraryPrivate won't get deleted //this allows to unload the library at a later time - if (LibraryData *lib = libraryData()) { - lib->loadedLibs += this; - libraryRefCount.ref(); - } - + libraryUnloadCount.ref(); + libraryRefCount.ref(); installCoverageTool(this); } @@ -425,10 +501,7 @@ bool QLibraryPrivate::unload() qWarning() << "QLibraryPrivate::unload succeeded on" << fileName; //when the library is unloaded, we release the reference on it so that 'this' //can get deleted - if (LibraryData *lib = libraryData()) { - if (lib->loadedLibs.remove(this)) - libraryRefCount.deref(); - } + libraryRefCount.deref(); pHnd = 0; instance = 0; } @@ -439,9 +512,7 @@ bool QLibraryPrivate::unload() void QLibraryPrivate::release() { - QMutexLocker locker(&qt_library_mutex); - if (!libraryRefCount.deref()) - delete this; + QLibraryStore::releaseLibrary(this); } bool QLibraryPrivate::loadPlugin() diff --git a/src/corelib/plugin/qlibrary_p.h b/src/corelib/plugin/qlibrary_p.h index 28bec300eb..42172167b7 100644 --- a/src/corelib/plugin/qlibrary_p.h +++ b/src/corelib/plugin/qlibrary_p.h @@ -71,6 +71,7 @@ QT_BEGIN_NAMESPACE bool qt_debug_component(); +class QLibraryStore; class QLibraryPrivate { public: @@ -128,7 +129,7 @@ private: QAtomicInt libraryUnloadCount; enum { IsAPlugin, IsNotAPlugin, MightBeAPlugin } pluginState; - friend class QLibraryPrivateHasFriends; + friend class QLibraryStore; }; QT_END_NAMESPACE -- cgit v1.2.3 From 0da54716647780df0e1b54b03c3e8e007b78bb8a Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sun, 27 Jan 2013 22:38:32 -0800 Subject: Work around an unfixed glibc bug in dlclose(3) on exit During exit, libraries are unloaded and global destructors are run. If we call dlclose(3) from inside the global destructors, we might be telling libdl to unload a module it has already unloaded. I cannot reproduce the issue on my Fedora 17 machine with glibc 2.15, but it could be reliably be reproduced on an Ubuntu 11.10. The assertion is identical to the one reported upstream at http://sourceware.org/bugzilla/show_bug.cgi?id=11941 (see better explanation at https://bugzilla.novell.com/show_bug.cgi?id=622977). I cannot find any evidence in glibc's source code that the bug has been fixed. Change-Id: I97745f89e8c5481196e645dada8762d607a9fb2c Reviewed-by: Lars Knoll --- src/corelib/plugin/qlibrary.cpp | 14 +++++++++++--- src/corelib/plugin/qlibrary_p.h | 4 +++- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp index 7d6c3c3063..40b6b0d150 100644 --- a/src/corelib/plugin/qlibrary.cpp +++ b/src/corelib/plugin/qlibrary.cpp @@ -376,7 +376,14 @@ inline void QLibraryStore::cleanup() Q_ASSERT(lib->pHnd); Q_ASSERT(lib->libraryUnloadCount.load() > 0); lib->libraryUnloadCount.store(1); +#ifdef __GLIBC__ + // glibc has a bug in unloading from global destructors + // see https://bugzilla.novell.com/show_bug.cgi?id=622977 + // and http://sourceware.org/bugzilla/show_bug.cgi?id=11941 + lib->unload(QLibraryPrivate::NoUnloadSys); +#else lib->unload(); +#endif delete lib; it.value() = 0; } @@ -490,15 +497,16 @@ bool QLibraryPrivate::load() return ret; } -bool QLibraryPrivate::unload() +bool QLibraryPrivate::unload(UnloadFlag flag) { if (!pHnd) return false; if (!libraryUnloadCount.deref()) { // only unload if ALL QLibrary instance wanted to delete inst.data(); - if (unload_sys()) { + if (flag == NoUnloadSys || unload_sys()) { if (qt_debug_component()) - qWarning() << "QLibraryPrivate::unload succeeded on" << fileName; + qWarning() << "QLibraryPrivate::unload succeeded on" << fileName + << (flag == NoUnloadSys ? "(faked)" : ""); //when the library is unloaded, we release the reference on it so that 'this' //can get deleted libraryRefCount.deref(); diff --git a/src/corelib/plugin/qlibrary_p.h b/src/corelib/plugin/qlibrary_p.h index 42172167b7..b425e0d590 100644 --- a/src/corelib/plugin/qlibrary_p.h +++ b/src/corelib/plugin/qlibrary_p.h @@ -83,12 +83,14 @@ public: #endif pHnd; + enum UnloadFlag { UnloadSys, NoUnloadSys }; + QString fileName, qualifiedFileName; QString fullVersion; bool load(); bool loadPlugin(); // loads and resolves instance - bool unload(); + bool unload(UnloadFlag flag = UnloadSys); void release(); QFunctionPointer resolve(const char *); -- cgit v1.2.3 From 83e074c31a400a49f73fe3f541e2eeee05650a43 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Jan 2013 19:33:59 -0800 Subject: Comment out an unused global variable. The variable is present only for completeness in qurl.cpp. Change-Id: I68d7ca4cd52c14fbf8154e510737f7428d8e9679 Reviewed-by: David Faure (KDE) --- src/corelib/io/qurl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 4882e3575f..d30ccb6496 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -660,7 +660,7 @@ static const ushort encodedFragmentActions[] = { encode(']'), // 6 0 }; -static const ushort * const decodedFragmentInUrlActions = 0; +//static const ushort * const decodedFragmentInUrlActions = 0; static const ushort * const decodedFragmentInIsolationActions = 0; // the query is handled specially: the decodedQueryXXX tables are run with -- cgit v1.2.3 From 4c5b503f335706916a88b44e86c40de34006d887 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Jan 2013 20:15:00 -0800 Subject: Remove unused variables and functions from the source code Change-Id: I5f37414ee4846b4fe774361f49367bc0d5874039 Reviewed-by: Frederik Gladhorn Reviewed-by: Olivier Goffart --- src/corelib/io/qurl.cpp | 5 - src/corelib/tools/qdatetime.cpp | 5 - src/gui/kernel/qguiapplication.cpp | 105 --------------------- src/gui/painting/qoutlinemapper.cpp | 2 - src/network/kernel/qauthenticator.cpp | 1 - .../ibus/qibusplatforminputcontext.cpp | 20 ---- src/widgets/widgets/qmdisubwindow.cpp | 8 -- 7 files changed, 146 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index d30ccb6496..ed0ff8d2e2 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -333,11 +333,6 @@ static inline QString ftpScheme() return QStringLiteral("ftp"); } -static inline QString httpScheme() -{ - return QStringLiteral("http"); -} - static inline QString fileScheme() { return QStringLiteral("file"); diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 72e1819e90..5d1f8e7855 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -93,11 +93,6 @@ static inline QDate fixedDate(int y, int m, int d) return result; } -static inline qint64 floordiv(qint64 a, qint64 b) -{ - return (a - (a < 0 ? b-1 : 0)) / b; -} - static inline qint64 floordiv(qint64 a, int b) { return (a - (a < 0 ? b-1 : 0)) / b; diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index aa5597c99d..0de4ba7f4a 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -2789,111 +2789,6 @@ QInputMethod *QGuiApplication::inputMethod() QFontDatabase::removeApplicationFont() */ -// These pixmaps approximate the images in the Windows User Interface Guidelines. - -// XPM - -static const char * const move_xpm[] = { -"11 20 3 1", -". c None", -"a c #FFFFFF", -"X c #000000", // X11 cursor is traditionally black -"aa.........", -"aXa........", -"aXXa.......", -"aXXXa......", -"aXXXXa.....", -"aXXXXXa....", -"aXXXXXXa...", -"aXXXXXXXa..", -"aXXXXXXXXa.", -"aXXXXXXXXXa", -"aXXXXXXaaaa", -"aXXXaXXa...", -"aXXaaXXa...", -"aXa..aXXa..", -"aa...aXXa..", -"a.....aXXa.", -"......aXXa.", -".......aXXa", -".......aXXa", -"........aa."}; - - -/* XPM */ -static const char * const copy_xpm[] = { -"24 30 3 1", -". c None", -"a c #000000", -"X c #FFFFFF", -"XX......................", -"XaX.....................", -"XaaX....................", -"XaaaX...................", -"XaaaaX..................", -"XaaaaaX.................", -"XaaaaaaX................", -"XaaaaaaaX...............", -"XaaaaaaaaX..............", -"XaaaaaaaaaX.............", -"XaaaaaaXXXX.............", -"XaaaXaaX................", -"XaaXXaaX................", -"XaX..XaaX...............", -"XX...XaaX...............", -"X.....XaaX..............", -"......XaaX..............", -".......XaaX.............", -".......XaaX.............", -"........XX...aaaaaaaaaaa", -".............aXXXXXXXXXa", -".............aXXXXXXXXXa", -".............aXXXXaXXXXa", -".............aXXXXaXXXXa", -".............aXXaaaaaXXa", -".............aXXXXaXXXXa", -".............aXXXXaXXXXa", -".............aXXXXXXXXXa", -".............aXXXXXXXXXa", -".............aaaaaaaaaaa"}; - -/* XPM */ -static const char * const link_xpm[] = { -"24 30 3 1", -". c None", -"a c #000000", -"X c #FFFFFF", -"XX......................", -"XaX.....................", -"XaaX....................", -"XaaaX...................", -"XaaaaX..................", -"XaaaaaX.................", -"XaaaaaaX................", -"XaaaaaaaX...............", -"XaaaaaaaaX..............", -"XaaaaaaaaaX.............", -"XaaaaaaXXXX.............", -"XaaaXaaX................", -"XaaXXaaX................", -"XaX..XaaX...............", -"XX...XaaX...............", -"X.....XaaX..............", -"......XaaX..............", -".......XaaX.............", -".......XaaX.............", -"........XX...aaaaaaaaaaa", -".............aXXXXXXXXXa", -".............aXXXaaaaXXa", -".............aXXXXaaaXXa", -".............aXXXaaaaXXa", -".............aXXaaaXaXXa", -".............aXXaaXXXXXa", -".............aXXaXXXXXXa", -".............aXXXaXXXXXa", -".............aXXXXXXXXXa", -".............aaaaaaaaaaa"}; - QPixmap QGuiApplicationPrivate::getPixmapCursor(Qt::CursorShape cshape) { Q_UNUSED(cshape); diff --git a/src/gui/painting/qoutlinemapper.cpp b/src/gui/painting/qoutlinemapper.cpp index 2f2fe44209..8b47dae5ff 100644 --- a/src/gui/painting/qoutlinemapper.cpp +++ b/src/gui/painting/qoutlinemapper.cpp @@ -48,8 +48,6 @@ QT_BEGIN_NAMESPACE -static const qreal aliasedCoordinateDelta = 0.5 - 0.015625; - #define qreal_to_fixed_26_6(f) (int(f * 64)) diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp index e337a39415..73991aba96 100644 --- a/src/network/kernel/qauthenticator.cpp +++ b/src/network/kernel/qauthenticator.cpp @@ -852,7 +852,6 @@ QByteArray QAuthenticatorPrivate::digestMd5Response(const QByteArray &challenge, //************************Global variables*************************** const int blockSize = 64; //As per RFC2104 Block-size is 512 bits -const int nDigestLen = 16; //Trunctaion Length of the Hmac-Md5 digest const quint8 respversion = 1; const quint8 hirespversion = 1; diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp index f4e7666a85..53e9b171d5 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp +++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp @@ -226,26 +226,6 @@ void QIBusPlatformInputContext::updatePreeditText(const QDBusVariant &text, uint } -/* Kernel keycode -> X keycode table */ -static const unsigned int keycode_table[256] = { - 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 111, 221, 94, 95, 96, 211, 128, 127, 129, 208, 131, 126, - 108, 109, 112, 111, 113, 181, 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, - 239, 160, 174, 176, 222, 157, 123, 110, 139, 134, 209, 210, 133, 115, 116, 117, - 232, 133, 134, 135, 140, 248, 191, 192, 122, 188, 245, 158, 161, 193, 223, 227, - 198, 199, 200, 147, 159, 151, 178, 201, 146, 203, 166, 236, 230, 235, 234, 233, - 163, 204, 253, 153, 162, 144, 164, 177, 152, 190, 208, 129, 130, 231, 209, 210, - 136, 220, 143, 246, 251, 137, 138, 182, 183, 184, 93, 184, 247, 132, 170, 219, - 249, 205, 207, 149, 150, 154, 155, 167, 168, 169, 171, 172, 173, 165, 175, 179, - 180, 0, 185, 186, 187, 118, 119, 120, 121, 229, 194, 195, 196, 197, 148, 202, - 101, 212, 237, 214, 215, 216, 217, 218, 228, 142, 213, 240, 241, 242, 243, 244, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - bool QIBusPlatformInputContext::x11FilterEvent(uint keyval, uint keycode, uint state, bool press) { diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp index 13d0b180cc..a3219e69d7 100644 --- a/src/widgets/widgets/qmdisubwindow.cpp +++ b/src/widgets/widgets/qmdisubwindow.cpp @@ -183,14 +183,6 @@ static const QStyle::SubControl SubControls[] = }; static const int NumSubControls = sizeof(SubControls) / sizeof(SubControls[0]); -static const QStyle::StandardPixmap ButtonPixmaps[] = -{ - QStyle::SP_TitleBarMinButton, - QStyle::SP_TitleBarNormalButton, - QStyle::SP_TitleBarCloseButton -}; -static const int NumButtonPixmaps = sizeof(ButtonPixmaps) / sizeof(ButtonPixmaps[0]); - static const Qt::WindowFlags CustomizeWindowFlags = Qt::FramelessWindowHint | Qt::CustomizeWindowHint -- cgit v1.2.3 From 02c3e955e375c803c524495b25e5054eebf18509 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Jan 2013 20:20:01 -0800 Subject: Fix change-of-sign warning found by ICC qdbusintegrator_p.h(119): error #68: integer conversion resulted in a change of sign : QMetaCallEvent(0, -1, 0, sender, -1, 0, 0, 0, s), connection(c), node(n), ^ qpaintengineex_opengl2_p.h(193): error #68: integer conversion resulted in a change of sign void updateTextureFilter(GLenum target, GLenum wrapMode, bool smoothPixmapTransform, GLuint id = -1); ^ Change-Id: I7de381ea9ff348878ee99e5a18525352a779b31e Reviewed-by: Olivier Goffart --- src/dbus/qdbusintegrator_p.h | 2 +- src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/dbus/qdbusintegrator_p.h b/src/dbus/qdbusintegrator_p.h index fbaf04fff3..b44db0098f 100644 --- a/src/dbus/qdbusintegrator_p.h +++ b/src/dbus/qdbusintegrator_p.h @@ -116,7 +116,7 @@ public: QDBusActivateObjectEvent(const QDBusConnection &c, QObject *sender, const QDBusConnectionPrivate::ObjectTreeNode &n, int p, const QDBusMessage &m, QSemaphore *s = 0) - : QMetaCallEvent(0, -1, 0, sender, -1, 0, 0, 0, s), connection(c), node(n), + : QMetaCallEvent(0, ushort(-1), 0, sender, -1, 0, 0, 0, s), connection(c), node(n), pathStartPos(p), message(m), handled(false) { } ~QDBusActivateObjectEvent(); diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h index 3605b300cc..401a3824c5 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h @@ -191,7 +191,7 @@ public: void updateBrushUniforms(); void updateMatrix(); void updateCompositionMode(); - void updateTextureFilter(GLenum target, GLenum wrapMode, bool smoothPixmapTransform, GLuint id = -1); + void updateTextureFilter(GLenum target, GLenum wrapMode, bool smoothPixmapTransform, GLuint id = GLuint(-1)); void resetGLState(); -- cgit v1.2.3 From 29c80d0232b50a54f88e327db7c86492d659de65 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Jan 2013 21:14:20 -0800 Subject: Make sure we don't have an operator void(), ICC doesn't like it. ICC is right: this function will never be called. But we didn't want it called anyway. Just make it be something non-void. qdbuspendingreply.h(185): error #597: "QDBusPendingReply::operator void() const [with T1=void, T2=void, T3=void, T4=void, T5=void, T6=void, T7=void, T8=void]" will not be called for implicit or explicit conversions Change-Id: I5e067bd03aafc6d6772cc1e0f8f8ae8bfa1712d7 Reviewed-by: Olivier Goffart --- src/dbus/qdbuspendingreply.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/dbus/qdbuspendingreply.h b/src/dbus/qdbuspendingreply.h index d92c817a0a..b7e459f7a7 100644 --- a/src/dbus/qdbuspendingreply.h +++ b/src/dbus/qdbuspendingreply.h @@ -105,6 +105,10 @@ namespace QDBusPendingReplyTypes { static inline void fillMetaTypes(int *) { } }; + + struct TypeIsVoid {}; + template struct NotVoid { typedef T Type; }; + template <> struct NotVoid { typedef TypeIsVoid Type; }; } // namespace QDBusPendingReplyTypes template(); } - inline operator typename Select<0>::Type() const + inline operator typename QDBusPendingReplyTypes::NotVoid::Type() const { return argumentAt<0>(); } -- cgit v1.2.3 From d0804ff2dd3d289a0f0c58aa30c4334e66ea9be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Tue, 29 Jan 2013 16:22:01 +0100 Subject: Provide better error if min (or max) is defined in QDateTime This is better than getting a regular compiler error without knowing where min was previously defined. Change-Id: I5a86599cdf76a9a8d87a51e119543206d9f835c1 Reviewed-by: Mitch Curtis Reviewed-by: Thiago Macieira --- src/corelib/tools/qdatetime.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qdatetime.h b/src/corelib/tools/qdatetime.h index d1cc10c877..d1d7f5792e 100644 --- a/src/corelib/tools/qdatetime.h +++ b/src/corelib/tools/qdatetime.h @@ -118,6 +118,9 @@ QT_DEPRECATED inline bool setYMD(int y, int m, int d) inline qint64 toJulianDay() const { return jd; } private: +#if defined(min) || defined(max) +#error min or max defined, cannot continue. If this is caused by an #include of windows.h, NOMINMAX can be defined. +#endif static inline qint64 nullJd() { return std::numeric_limits::min(); } static inline qint64 minJd() { return Q_INT64_C(-784350574879); } static inline qint64 maxJd() { return Q_INT64_C( 784354017364); } -- cgit v1.2.3 From 53f9e77140a07eb8f36eeea460f13a54dad7330e Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sat, 19 Jan 2013 00:35:21 +0000 Subject: QRegularExpression: add method for extracting the capturing group names It may be useful to know which named capturing groups are defined in an regular expression, and for each of them, what's the corresponding index. This commit adds the needed method to QRegularExpression. Note that extracting the information doesn't happen while holding the mutex in the private -- pcre_fullinfo just reads information from the compiled pattern, so that's thread-safe. Task-number: QTBUG-29079 Change-Id: I50c00ee860f06427c2e6ea10417d5c0733cc8303 Reviewed-by: Lars Knoll Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 48 ++++++++++++++++++++++++++++++++ src/corelib/tools/qregularexpression.h | 2 ++ 2 files changed, 50 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 503185dab5..510b7112af 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1496,6 +1496,54 @@ int QRegularExpression::captureCount() const return d->capturingCount; } +/*! + \since 5.1 + + Returns a list of captureCount() elements, containing the names of the named + capturing groups in the pattern string. The list is sorted such that the + i-th element of the list is the name of the i-th capturing group, if it has + a name, or an empty string if the capturing group is unnamed. + + If the regular expression is not valid, returns an empty list. + + \sa isValid(), QRegularExpressionMatch::captured(), QString::isEmpty() +*/ +QStringList QRegularExpression::namedCaptureGroups() const +{ + if (!isValid()) // isValid() will compile the pattern + return QStringList(); + + // namedCapturingTable will point to a table of + // namedCapturingTableEntryCount entries, each one of which + // contains one ushort followed by the name, NUL terminated. + // The ushort is the numerical index of the name in the pattern. + // The length of each entry is namedCapturingTableEntrySize. + ushort *namedCapturingTable; + int namedCapturingTableEntryCount; + int namedCapturingTableEntrySize; + + pcre16_fullinfo(d->compiledPattern, 0, PCRE_INFO_NAMETABLE, &namedCapturingTable); + pcre16_fullinfo(d->compiledPattern, 0, PCRE_INFO_NAMECOUNT, &namedCapturingTableEntryCount); + pcre16_fullinfo(d->compiledPattern, 0, PCRE_INFO_NAMEENTRYSIZE, &namedCapturingTableEntrySize); + + QStringList result; + + // no QList::resize nor fill is available. The +1 is for the implicit group #0 + result.reserve(d->capturingCount + 1); + for (int i = 0; i < d->capturingCount + 1; ++i) + result.append(QString()); + + for (int i = 0; i < namedCapturingTableEntryCount; ++i) { + const ushort * const currentNamedCapturingTableRow = namedCapturingTable + + namedCapturingTableEntrySize * i; + + const int index = *currentNamedCapturingTableRow; + result[index] = QString::fromUtf16(currentNamedCapturingTableRow + 1); + } + + return result; +} + /*! Returns true if the regular expression is a valid regular expression (that is, it contains no syntax errors, etc.), or false otherwise. Use diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index a056b4f01b..97dbee9256 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -46,6 +46,7 @@ #ifndef QT_NO_REGULAREXPRESSION #include +#include #include #include @@ -94,6 +95,7 @@ public: QString errorString() const; int captureCount() const; + QStringList namedCaptureGroups() const; enum MatchType { NormalMatch = 0, -- cgit v1.2.3 From 6c6960015ef32f3e58c9a1a14fe61413cbb19ce8 Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Sat, 26 Jan 2013 13:25:45 +0000 Subject: Add qDegreesToRadians and qRadiansToDegrees math functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6e9fd76f2d2860f46531a72349b46193b8eeaaa7 Reviewed-by: Samuel Rødal --- .../doc/snippets/code/src_corelib_kernel_qmath.cpp | 63 ++++++++++++++++ src/corelib/kernel/qmath.cpp | 87 ++++++++++++++++++++++ src/corelib/kernel/qmath.h | 20 +++++ 3 files changed, 170 insertions(+) create mode 100644 src/corelib/doc/snippets/code/src_corelib_kernel_qmath.cpp (limited to 'src') diff --git a/src/corelib/doc/snippets/code/src_corelib_kernel_qmath.cpp b/src/corelib/doc/snippets/code/src_corelib_kernel_qmath.cpp new file mode 100644 index 0000000000..71a2a09a7d --- /dev/null +++ b/src/corelib/doc/snippets/code/src_corelib_kernel_qmath.cpp @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Laszlo Papp +** Contact: http://www.qt-project.org/legal +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//! [0] +float degrees = 180.0f +float radians = qDegreesToRadians(degrees) +//! [0] + + +//! [1] +double degrees = 180.0 +double radians = qDegreesToRadians(degrees) +//! [1] + + +//! [2] +float radians = float(M_PI) +float degrees = qRadiansToDegrees(radians) +//! [2] + + +//! [3] +double radians = M_PI +double degrees = qRadiansToDegrees(radians) +//! [3] + diff --git a/src/corelib/kernel/qmath.cpp b/src/corelib/kernel/qmath.cpp index 1d6fcc2cd6..8f900e2101 100644 --- a/src/corelib/kernel/qmath.cpp +++ b/src/corelib/kernel/qmath.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Laszlo Papp ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -302,4 +303,90 @@ const qreal qt_sine_table[QT_SINE_TABLE_SIZE] = { qreal(-0.024541228522912448) }; +/*! + \headerfile + \title Generic Math Declarations + \ingroup funclists + + \brief The header file includes generic math declarations. + + The global declarations include \l{functions}. + + These functions are partly convenience definitions for basic + operations, for instance not available in the Standard Template Library et + al. +*/ + +/*! + \fn float qDegreesToRadians(float degrees) + \relates + \since 5.1 + + \brief The function converts the \a degrees in float to radians. + + The purpose of the function is to aid the conversion as such a convenient + function is not part of the Standard Template Library, i.e. in or + elsewhere. + + Example: + + \snippet code/src_corelib_kernel_qmath.cpp 0 + + \sa qRadiansToDegrees() +*/ + +/*! + \fn double qDegreesToRadians(double degrees) + \relates + \since 5.1 + + \brief The function converts the \a degrees in double to radians. + + The purpose of the function is to aid the conversion as such a convenient + function is not part of the Standard Template Library, i.e. in or + elsewhere. + + Example: + + \snippet code/src_corelib_kernel_qmath.cpp 1 + + \sa qRadiansToDegrees() +*/ + +/*! + \fn float qRadiansToDegrees(float radians) + \relates + \since 5.1 + + \brief The function converts the \a radians in float to degrees. + + The purpose of the function is to aid the conversion as such a convenient + function is not part of the Standard Template Library, i.e. in or + elsewhere. + + Example: + + \snippet code/src_corelib_kernel_qmath.cpp 2 + + \sa qDegreesToRadians() +*/ + +/*! + \fn double qRadiansToDegrees(double radians) + \relates + \since 5.1 + + \brief The function converts the \a radians in double to degrees. + + The purpose of the function is to aid the conversion as such a convenient + function is not part of the Standard Template Library, i.e. in or + elsewhere. + + Example: + + \snippet code/src_corelib_kernel_qmath.cpp 3 + + \sa qDegreesToRadians() +*/ + QT_END_NAMESPACE diff --git a/src/corelib/kernel/qmath.h b/src/corelib/kernel/qmath.h index 75ec55f845..21e23b9eb0 100644 --- a/src/corelib/kernel/qmath.h +++ b/src/corelib/kernel/qmath.h @@ -266,6 +266,26 @@ inline qreal qFastCos(qreal x) return qt_sine_table[si] - (qt_sine_table[ci] + 0.5 * qt_sine_table[si] * d) * d; } +Q_DECL_CONSTEXPR inline float qDegreesToRadians(float degrees) +{ + return degrees * float(M_PI/180); +} + +Q_DECL_CONSTEXPR inline double qDegreesToRadians(double degrees) +{ + return degrees * (M_PI / 180); +} + +Q_DECL_CONSTEXPR inline float qRadiansToDegrees(float radians) +{ + return radians * float(180/M_PI); +} + +Q_DECL_CONSTEXPR inline double qRadiansToDegrees(double radians) +{ + return radians * (180 / M_PI); +} + QT_END_NAMESPACE #endif // QMATH_H -- cgit v1.2.3 From 2f2107c1ba8134026e4aa98d5c7c072c9ce81c19 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Mon, 4 Feb 2013 16:51:29 +0100 Subject: Add enablers for Android port in QPlatformMenu We need a couple of functions here for the Android support. Change-Id: I50e27277d7e838e277d616dbd3af9be817fb7197 Reviewed-by: Gabriel de Dietrich --- src/gui/kernel/qplatformmenu.h | 2 ++ src/plugins/platforms/cocoa/qcocoamenu.h | 2 ++ src/plugins/platforms/cocoa/qcocoamenuitem.h | 1 + 3 files changed, 5 insertions(+) (limited to 'src') diff --git a/src/gui/kernel/qplatformmenu.h b/src/gui/kernel/qplatformmenu.h index e291bfb2ac..3485cc58dd 100644 --- a/src/gui/kernel/qplatformmenu.h +++ b/src/gui/kernel/qplatformmenu.h @@ -78,6 +78,7 @@ public: virtual void setIsSeparator(bool isSeparator) = 0; virtual void setFont(const QFont &font) = 0; virtual void setRole(MenuRole role) = 0; + virtual void setCheckable(bool checkable) = 0; virtual void setChecked(bool isChecked) = 0; virtual void setShortcut(const QKeySequence& shortcut) = 0; virtual void setEnabled(bool enabled) = 0; @@ -99,6 +100,7 @@ public: virtual quintptr tag()const = 0; virtual void setText(const QString &text) = 0; + virtual void setIcon(const QIcon &icon) = 0; virtual void setEnabled(bool enabled) = 0; virtual void setVisible(bool visible) = 0; virtual void setMinimumWidth(int width) { Q_UNUSED(width); } diff --git a/src/plugins/platforms/cocoa/qcocoamenu.h b/src/plugins/platforms/cocoa/qcocoamenu.h index 9433e9f9c0..439b7f1a75 100644 --- a/src/plugins/platforms/cocoa/qcocoamenu.h +++ b/src/plugins/platforms/cocoa/qcocoamenu.h @@ -75,6 +75,8 @@ public: void syncModalState(bool modal); + virtual void setIcon(const QIcon &icon) { Q_UNUSED(icon) } + void setText(const QString &text); void setMinimumWidth(int width); void setFont(const QFont &font); diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.h b/src/plugins/platforms/cocoa/qcocoamenuitem.h index b28274bc05..0e6d17343d 100644 --- a/src/plugins/platforms/cocoa/qcocoamenuitem.h +++ b/src/plugins/platforms/cocoa/qcocoamenuitem.h @@ -74,6 +74,7 @@ public: void setFont(const QFont &font); void setRole(MenuRole role); void setShortcut(const QKeySequence& shortcut); + void setCheckable(bool checkable) { Q_UNUSED(checkable) } void setChecked(bool isChecked); void setEnabled(bool isEnabled); -- cgit v1.2.3 From f9bd36deac79e2950b3ac14d08284e7dfc53aaac Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Sat, 2 Feb 2013 11:13:43 +0100 Subject: qsql ibase: remove duplicate class definition Follow-up to 1580f558472e2c37936fe817fc546a79a8b0a9a5 Task-number: QTBUG-29455 Change-Id: Id254a166ac901fb0cc0ba81db4bf1051a2acb53f Reviewed-by: Friedemann Kleint --- src/sql/drivers/ibase/qsql_ibase.cpp | 23 ----------------------- 1 file changed, 23 deletions(-) (limited to 'src') diff --git a/src/sql/drivers/ibase/qsql_ibase.cpp b/src/sql/drivers/ibase/qsql_ibase.cpp index 22b4b81953..7aff6f62fc 100644 --- a/src/sql/drivers/ibase/qsql_ibase.cpp +++ b/src/sql/drivers/ibase/qsql_ibase.cpp @@ -347,29 +347,6 @@ static void qFreeEventBuffer(QIBaseEventBuffer* eBuffer) delete eBuffer; } -class QIBaseResult : public QSqlCachedResult -{ - friend class QIBaseResultPrivate; - -public: - explicit QIBaseResult(const QIBaseDriver* db); - virtual ~QIBaseResult(); - - bool prepare(const QString& query); - bool exec(); - QVariant handle() const; - -protected: - bool gotoNext(QSqlCachedResult::ValueCache& row, int rowIdx); - bool reset (const QString& query); - int size(); - int numRowsAffected(); - QSqlRecord record() const; - -private: - QIBaseResultPrivate* d; -}; - class QIBaseResultPrivate; class QIBaseResult : public QSqlCachedResult -- cgit v1.2.3 From f316502d58c947863f5caf17c64dc68d865162a4 Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Sun, 3 Feb 2013 13:08:26 +0100 Subject: Add QT_{BEGIN,END}_HEADER definition back This commit partially reverts 07e3bcdc106ac42703ae0fb88b6cac2d2bfdd072 The empty macro defition was not supposed to be removed yet. Change-Id: Ie83b2adbe2328b83c70a70274a401e1e6c74498f Reviewed-by: David Faure (KDE) --- src/corelib/global/qglobal.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 48df55e86e..1c76c54ad6 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -151,6 +151,9 @@ namespace QT_NAMESPACE {} #endif /* __cplusplus */ +#define QT_BEGIN_HEADER +#define QT_END_HEADER + #if defined(Q_OS_DARWIN) && !defined(QT_LARGEFILE_SUPPORT) # define QT_LARGEFILE_SUPPORT 64 #endif -- cgit v1.2.3 From 1b7c70ca5d0622784f2f794e96c44873ee287c82 Mon Sep 17 00:00:00 2001 From: Jerzy Kozera Date: Sat, 2 Feb 2013 15:50:47 +0000 Subject: Allow overriding subElementRect in QProxyStyle for ItemViewItem proxy() should be used instead of direct calls to QCommonStyle methods to allow overriding behavior in QProxyStyle, while keeping fallback to default behavior. Change-Id: I338e6b65f4c0ee77c55f03c412f59877fad42b79 Reviewed-by: Jens Bache-Wiig --- src/widgets/styles/qcommonstyle.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index d1d80f5af0..969e31d881 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -2138,9 +2138,9 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, p->save(); p->setClipRect(opt->rect); - QRect checkRect = subElementRect(SE_ItemViewItemCheckIndicator, vopt, widget); - QRect iconRect = subElementRect(SE_ItemViewItemDecoration, vopt, widget); - QRect textRect = subElementRect(SE_ItemViewItemText, vopt, widget); + QRect checkRect = proxy()->subElementRect(SE_ItemViewItemCheckIndicator, vopt, widget); + QRect iconRect = proxy()->subElementRect(SE_ItemViewItemDecoration, vopt, widget); + QRect textRect = proxy()->subElementRect(SE_ItemViewItemText, vopt, widget); // draw the background proxy()->drawPrimitive(PE_PanelItemViewItem, opt, p, widget); -- cgit v1.2.3 From c6ac59cc91e6a5efb59857c28317329175658a0f Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Wed, 6 Feb 2013 00:12:27 +0100 Subject: Add note about QT_{BEGIN,END}_HEADER removal for Qt 6 This macro usage has been removed from most of the Qt 5 code, so adding a note to be completely removed in Qt 6. Change-Id: I19a90db78745f3cacbcbf206e8642c7d7c36e04a Reviewed-by: Thiago Macieira --- src/corelib/global/qglobal.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 1c76c54ad6..4ee91d821c 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -151,6 +151,7 @@ namespace QT_NAMESPACE {} #endif /* __cplusplus */ +// ### Qt6: remove me. #define QT_BEGIN_HEADER #define QT_END_HEADER -- cgit v1.2.3 From fd9013658bab096839154ae6e68adfd1a4e10189 Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Sun, 3 Feb 2013 16:12:15 +0000 Subject: Increase the size of the QHostInfo cache. This change increases the size of the DNS cache in QHostInfo from 64 entries to 128. Given the figures in the google chrome performance paper http://www.igvita.com/posa/high-performance-networking-in-google-chrome/ this should mean we can cache enough entries to handle 4 tabs at once. Change-Id: I34e32e9e0966473591c59ca5f222623a354650d2 Reviewed-by: Peter Hartmann --- src/network/kernel/qhostinfo.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index 6de83c3754..d9d8396011 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -699,8 +699,8 @@ void Q_AUTOTEST_EXPORT qt_qhostinfo_enable_cache(bool e) } // cache for 60 seconds -// cache 64 items -QHostInfoCache::QHostInfoCache() : max_age(60), enabled(true), cache(64) +// cache 128 items +QHostInfoCache::QHostInfoCache() : max_age(60), enabled(true), cache(128) { #ifdef QT_QHOSTINFO_CACHE_DISABLED_BY_DEFAULT enabled = false; -- cgit v1.2.3 From 7765dff1bb8104ea145d55d32da194acb2de03ce Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Sat, 26 Jan 2013 12:52:44 +0000 Subject: Add the pristine SHA3 reference sources. Add the SHA3 reference implementation (public domain) which will be used in a later commit to add support for SHA3 to QCryptographicHash. Change-Id: Id0e9d47d628cc94f1d3d2a7696836bc43f6ddf61 Reviewed-by: Lars Knoll --- src/3rdparty/sha3/KeccakF-1600-32-rvk.macros | 555 ++++++++++++++++++ src/3rdparty/sha3/KeccakF-1600-32.macros | 26 + src/3rdparty/sha3/KeccakF-1600-64.macros | 728 ++++++++++++++++++++++++ src/3rdparty/sha3/KeccakF-1600-int-set.h | 6 + src/3rdparty/sha3/KeccakF-1600-interface.h | 46 ++ src/3rdparty/sha3/KeccakF-1600-opt32-settings.h | 4 + src/3rdparty/sha3/KeccakF-1600-opt32.c | 524 +++++++++++++++++ src/3rdparty/sha3/KeccakF-1600-opt64-settings.h | 7 + src/3rdparty/sha3/KeccakF-1600-opt64.c | 504 ++++++++++++++++ src/3rdparty/sha3/KeccakF-1600-unrolling.macros | 124 ++++ src/3rdparty/sha3/KeccakNISTInterface.c | 81 +++ src/3rdparty/sha3/KeccakNISTInterface.h | 70 +++ src/3rdparty/sha3/KeccakSponge.c | 266 +++++++++ src/3rdparty/sha3/KeccakSponge.h | 76 +++ src/3rdparty/sha3/brg_endian.h | 142 +++++ 15 files changed, 3159 insertions(+) create mode 100755 src/3rdparty/sha3/KeccakF-1600-32-rvk.macros create mode 100755 src/3rdparty/sha3/KeccakF-1600-32.macros create mode 100755 src/3rdparty/sha3/KeccakF-1600-64.macros create mode 100755 src/3rdparty/sha3/KeccakF-1600-int-set.h create mode 100755 src/3rdparty/sha3/KeccakF-1600-interface.h create mode 100755 src/3rdparty/sha3/KeccakF-1600-opt32-settings.h create mode 100755 src/3rdparty/sha3/KeccakF-1600-opt32.c create mode 100755 src/3rdparty/sha3/KeccakF-1600-opt64-settings.h create mode 100755 src/3rdparty/sha3/KeccakF-1600-opt64.c create mode 100755 src/3rdparty/sha3/KeccakF-1600-unrolling.macros create mode 100755 src/3rdparty/sha3/KeccakNISTInterface.c create mode 100755 src/3rdparty/sha3/KeccakNISTInterface.h create mode 100755 src/3rdparty/sha3/KeccakSponge.c create mode 100755 src/3rdparty/sha3/KeccakSponge.h create mode 100755 src/3rdparty/sha3/brg_endian.h (limited to 'src') diff --git a/src/3rdparty/sha3/KeccakF-1600-32-rvk.macros b/src/3rdparty/sha3/KeccakF-1600-32-rvk.macros new file mode 100755 index 0000000000..c0c9029873 --- /dev/null +++ b/src/3rdparty/sha3/KeccakF-1600-32-rvk.macros @@ -0,0 +1,555 @@ +/* +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by Ronny Van Keer, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +static const UINT32 KeccakF1600RoundConstants_int2[2*24] = +{ + 0x00000001UL, 0x00000000UL, + 0x00000000UL, 0x00000089UL, + 0x00000000UL, 0x8000008bUL, + 0x00000000UL, 0x80008080UL, + 0x00000001UL, 0x0000008bUL, + 0x00000001UL, 0x00008000UL, + 0x00000001UL, 0x80008088UL, + 0x00000001UL, 0x80000082UL, + 0x00000000UL, 0x0000000bUL, + 0x00000000UL, 0x0000000aUL, + 0x00000001UL, 0x00008082UL, + 0x00000000UL, 0x00008003UL, + 0x00000001UL, 0x0000808bUL, + 0x00000001UL, 0x8000000bUL, + 0x00000001UL, 0x8000008aUL, + 0x00000001UL, 0x80000081UL, + 0x00000000UL, 0x80000081UL, + 0x00000000UL, 0x80000008UL, + 0x00000000UL, 0x00000083UL, + 0x00000000UL, 0x80008003UL, + 0x00000001UL, 0x80008088UL, + 0x00000000UL, 0x80000088UL, + 0x00000001UL, 0x00008000UL, + 0x00000000UL, 0x80008082UL +}; + +#undef rounds + +#define rounds \ +{ \ + UINT32 Da0, De0, Di0, Do0, Du0; \ + UINT32 Da1, De1, Di1, Do1, Du1; \ + UINT32 Ba, Be, Bi, Bo, Bu; \ + UINT32 Aba0, Abe0, Abi0, Abo0, Abu0; \ + UINT32 Aba1, Abe1, Abi1, Abo1, Abu1; \ + UINT32 Aga0, Age0, Agi0, Ago0, Agu0; \ + UINT32 Aga1, Age1, Agi1, Ago1, Agu1; \ + UINT32 Aka0, Ake0, Aki0, Ako0, Aku0; \ + UINT32 Aka1, Ake1, Aki1, Ako1, Aku1; \ + UINT32 Ama0, Ame0, Ami0, Amo0, Amu0; \ + UINT32 Ama1, Ame1, Ami1, Amo1, Amu1; \ + UINT32 Asa0, Ase0, Asi0, Aso0, Asu0; \ + UINT32 Asa1, Ase1, Asi1, Aso1, Asu1; \ + UINT32 Cw, Cx, Cy, Cz; \ + UINT32 Eba0, Ebe0, Ebi0, Ebo0, Ebu0; \ + UINT32 Eba1, Ebe1, Ebi1, Ebo1, Ebu1; \ + UINT32 Ega0, Ege0, Egi0, Ego0, Egu0; \ + UINT32 Ega1, Ege1, Egi1, Ego1, Egu1; \ + UINT32 Eka0, Eke0, Eki0, Eko0, Eku0; \ + UINT32 Eka1, Eke1, Eki1, Eko1, Eku1; \ + UINT32 Ema0, Eme0, Emi0, Emo0, Emu0; \ + UINT32 Ema1, Eme1, Emi1, Emo1, Emu1; \ + UINT32 Esa0, Ese0, Esi0, Eso0, Esu0; \ + UINT32 Esa1, Ese1, Esi1, Eso1, Esu1; \ + const UINT32 * pRoundConstants = KeccakF1600RoundConstants_int2; \ + UINT32 i; \ +\ + copyFromState(A, state) \ +\ + for( i = 12; i != 0; --i ) { \ + Cx = Abu0^Agu0^Aku0^Amu0^Asu0; \ + Du1 = Abe1^Age1^Ake1^Ame1^Ase1; \ + Da0 = Cx^ROL32(Du1, 1); \ + Cz = Abu1^Agu1^Aku1^Amu1^Asu1; \ + Du0 = Abe0^Age0^Ake0^Ame0^Ase0; \ + Da1 = Cz^Du0; \ +\ + Cw = Abi0^Agi0^Aki0^Ami0^Asi0; \ + Do0 = Cw^ROL32(Cz, 1); \ + Cy = Abi1^Agi1^Aki1^Ami1^Asi1; \ + Do1 = Cy^Cx; \ +\ + Cx = Aba0^Aga0^Aka0^Ama0^Asa0; \ + De0 = Cx^ROL32(Cy, 1); \ + Cz = Aba1^Aga1^Aka1^Ama1^Asa1; \ + De1 = Cz^Cw; \ +\ + Cy = Abo1^Ago1^Ako1^Amo1^Aso1; \ + Di0 = Du0^ROL32(Cy, 1); \ + Cw = Abo0^Ago0^Ako0^Amo0^Aso0; \ + Di1 = Du1^Cw; \ +\ + Du0 = Cw^ROL32(Cz, 1); \ + Du1 = Cy^Cx; \ +\ + Aba0 ^= Da0; \ + Ba = Aba0; \ + Age0 ^= De0; \ + Be = ROL32(Age0, 22); \ + Aki1 ^= Di1; \ + Bi = ROL32(Aki1, 22); \ + Amo1 ^= Do1; \ + Bo = ROL32(Amo1, 11); \ + Asu0 ^= Du0; \ + Bu = ROL32(Asu0, 7); \ + Eba0 = Ba ^((~Be)& Bi ) ^ *(pRoundConstants++); \ + Ebe0 = Be ^((~Bi)& Bo ); \ + Ebi0 = Bi ^((~Bo)& Bu ); \ + Ebo0 = Bo ^((~Bu)& Ba ); \ + Ebu0 = Bu ^((~Ba)& Be ); \ +\ + Abo0 ^= Do0; \ + Ba = ROL32(Abo0, 14); \ + Agu0 ^= Du0; \ + Be = ROL32(Agu0, 10); \ + Aka1 ^= Da1; \ + Bi = ROL32(Aka1, 2); \ + Ame1 ^= De1; \ + Bo = ROL32(Ame1, 23); \ + Asi1 ^= Di1; \ + Bu = ROL32(Asi1, 31); \ + Ega0 = Ba ^((~Be)& Bi ); \ + Ege0 = Be ^((~Bi)& Bo ); \ + Egi0 = Bi ^((~Bo)& Bu ); \ + Ego0 = Bo ^((~Bu)& Ba ); \ + Egu0 = Bu ^((~Ba)& Be ); \ +\ + Abe1 ^= De1; \ + Ba = ROL32(Abe1, 1); \ + Agi0 ^= Di0; \ + Be = ROL32(Agi0, 3); \ + Ako1 ^= Do1; \ + Bi = ROL32(Ako1, 13); \ + Amu0 ^= Du0; \ + Bo = ROL32(Amu0, 4); \ + Asa0 ^= Da0; \ + Bu = ROL32(Asa0, 9); \ + Eka0 = Ba ^((~Be)& Bi ); \ + Eke0 = Be ^((~Bi)& Bo ); \ + Eki0 = Bi ^((~Bo)& Bu ); \ + Eko0 = Bo ^((~Bu)& Ba ); \ + Eku0 = Bu ^((~Ba)& Be ); \ +\ + Abu1 ^= Du1; \ + Ba = ROL32(Abu1, 14); \ + Aga0 ^= Da0; \ + Be = ROL32(Aga0, 18); \ + Ake0 ^= De0; \ + Bi = ROL32(Ake0, 5); \ + Ami1 ^= Di1; \ + Bo = ROL32(Ami1, 8); \ + Aso0 ^= Do0; \ + Bu = ROL32(Aso0, 28); \ + Ema0 = Ba ^((~Be)& Bi ); \ + Eme0 = Be ^((~Bi)& Bo ); \ + Emi0 = Bi ^((~Bo)& Bu ); \ + Emo0 = Bo ^((~Bu)& Ba ); \ + Emu0 = Bu ^((~Ba)& Be ); \ +\ + Abi0 ^= Di0; \ + Ba = ROL32(Abi0, 31); \ + Ago1 ^= Do1; \ + Be = ROL32(Ago1, 28); \ + Aku1 ^= Du1; \ + Bi = ROL32(Aku1, 20); \ + Ama1 ^= Da1; \ + Bo = ROL32(Ama1, 21); \ + Ase0 ^= De0; \ + Bu = ROL32(Ase0, 1); \ + Esa0 = Ba ^((~Be)& Bi ); \ + Ese0 = Be ^((~Bi)& Bo ); \ + Esi0 = Bi ^((~Bo)& Bu ); \ + Eso0 = Bo ^((~Bu)& Ba ); \ + Esu0 = Bu ^((~Ba)& Be ); \ +\ + Aba1 ^= Da1; \ + Ba = Aba1; \ + Age1 ^= De1; \ + Be = ROL32(Age1, 22); \ + Aki0 ^= Di0; \ + Bi = ROL32(Aki0, 21); \ + Amo0 ^= Do0; \ + Bo = ROL32(Amo0, 10); \ + Asu1 ^= Du1; \ + Bu = ROL32(Asu1, 7); \ + Eba1 = Ba ^((~Be)& Bi ); \ + Eba1 ^= *(pRoundConstants++); \ + Ebe1 = Be ^((~Bi)& Bo ); \ + Ebi1 = Bi ^((~Bo)& Bu ); \ + Ebo1 = Bo ^((~Bu)& Ba ); \ + Ebu1 = Bu ^((~Ba)& Be ); \ +\ + Abo1 ^= Do1; \ + Ba = ROL32(Abo1, 14); \ + Agu1 ^= Du1; \ + Be = ROL32(Agu1, 10); \ + Aka0 ^= Da0; \ + Bi = ROL32(Aka0, 1); \ + Ame0 ^= De0; \ + Bo = ROL32(Ame0, 22); \ + Asi0 ^= Di0; \ + Bu = ROL32(Asi0, 30); \ + Ega1 = Ba ^((~Be)& Bi ); \ + Ege1 = Be ^((~Bi)& Bo ); \ + Egi1 = Bi ^((~Bo)& Bu ); \ + Ego1 = Bo ^((~Bu)& Ba ); \ + Egu1 = Bu ^((~Ba)& Be ); \ +\ + Abe0 ^= De0; \ + Ba = Abe0; \ + Agi1 ^= Di1; \ + Be = ROL32(Agi1, 3); \ + Ako0 ^= Do0; \ + Bi = ROL32(Ako0, 12); \ + Amu1 ^= Du1; \ + Bo = ROL32(Amu1, 4); \ + Asa1 ^= Da1; \ + Bu = ROL32(Asa1, 9); \ + Eka1 = Ba ^((~Be)& Bi ); \ + Eke1 = Be ^((~Bi)& Bo ); \ + Eki1 = Bi ^((~Bo)& Bu ); \ + Eko1 = Bo ^((~Bu)& Ba ); \ + Eku1 = Bu ^((~Ba)& Be ); \ +\ + Abu0 ^= Du0; \ + Ba = ROL32(Abu0, 13); \ + Aga1 ^= Da1; \ + Be = ROL32(Aga1, 18); \ + Ake1 ^= De1; \ + Bi = ROL32(Ake1, 5); \ + Ami0 ^= Di0; \ + Bo = ROL32(Ami0, 7); \ + Aso1 ^= Do1; \ + Bu = ROL32(Aso1, 28); \ + Ema1 = Ba ^((~Be)& Bi ); \ + Eme1 = Be ^((~Bi)& Bo ); \ + Emi1 = Bi ^((~Bo)& Bu ); \ + Emo1 = Bo ^((~Bu)& Ba ); \ + Emu1 = Bu ^((~Ba)& Be ); \ +\ + Abi1 ^= Di1; \ + Ba = ROL32(Abi1, 31); \ + Ago0 ^= Do0; \ + Be = ROL32(Ago0, 27); \ + Aku0 ^= Du0; \ + Bi = ROL32(Aku0, 19); \ + Ama0 ^= Da0; \ + Bo = ROL32(Ama0, 20); \ + Ase1 ^= De1; \ + Bu = ROL32(Ase1, 1); \ + Esa1 = Ba ^((~Be)& Bi ); \ + Ese1 = Be ^((~Bi)& Bo ); \ + Esi1 = Bi ^((~Bo)& Bu ); \ + Eso1 = Bo ^((~Bu)& Ba ); \ + Esu1 = Bu ^((~Ba)& Be ); \ +\ + Cx = Ebu0^Egu0^Eku0^Emu0^Esu0; \ + Du1 = Ebe1^Ege1^Eke1^Eme1^Ese1; \ + Da0 = Cx^ROL32(Du1, 1); \ + Cz = Ebu1^Egu1^Eku1^Emu1^Esu1; \ + Du0 = Ebe0^Ege0^Eke0^Eme0^Ese0; \ + Da1 = Cz^Du0; \ +\ + Cw = Ebi0^Egi0^Eki0^Emi0^Esi0; \ + Do0 = Cw^ROL32(Cz, 1); \ + Cy = Ebi1^Egi1^Eki1^Emi1^Esi1; \ + Do1 = Cy^Cx; \ +\ + Cx = Eba0^Ega0^Eka0^Ema0^Esa0; \ + De0 = Cx^ROL32(Cy, 1); \ + Cz = Eba1^Ega1^Eka1^Ema1^Esa1; \ + De1 = Cz^Cw; \ +\ + Cy = Ebo1^Ego1^Eko1^Emo1^Eso1; \ + Di0 = Du0^ROL32(Cy, 1); \ + Cw = Ebo0^Ego0^Eko0^Emo0^Eso0; \ + Di1 = Du1^Cw; \ +\ + Du0 = Cw^ROL32(Cz, 1); \ + Du1 = Cy^Cx; \ +\ + Eba0 ^= Da0; \ + Ba = Eba0; \ + Ege0 ^= De0; \ + Be = ROL32(Ege0, 22); \ + Eki1 ^= Di1; \ + Bi = ROL32(Eki1, 22); \ + Emo1 ^= Do1; \ + Bo = ROL32(Emo1, 11); \ + Esu0 ^= Du0; \ + Bu = ROL32(Esu0, 7); \ + Aba0 = Ba ^((~Be)& Bi ); \ + Aba0 ^= *(pRoundConstants++); \ + Abe0 = Be ^((~Bi)& Bo ); \ + Abi0 = Bi ^((~Bo)& Bu ); \ + Abo0 = Bo ^((~Bu)& Ba ); \ + Abu0 = Bu ^((~Ba)& Be ); \ +\ + Ebo0 ^= Do0; \ + Ba = ROL32(Ebo0, 14); \ + Egu0 ^= Du0; \ + Be = ROL32(Egu0, 10); \ + Eka1 ^= Da1; \ + Bi = ROL32(Eka1, 2); \ + Eme1 ^= De1; \ + Bo = ROL32(Eme1, 23); \ + Esi1 ^= Di1; \ + Bu = ROL32(Esi1, 31); \ + Aga0 = Ba ^((~Be)& Bi ); \ + Age0 = Be ^((~Bi)& Bo ); \ + Agi0 = Bi ^((~Bo)& Bu ); \ + Ago0 = Bo ^((~Bu)& Ba ); \ + Agu0 = Bu ^((~Ba)& Be ); \ +\ + Ebe1 ^= De1; \ + Ba = ROL32(Ebe1, 1); \ + Egi0 ^= Di0; \ + Be = ROL32(Egi0, 3); \ + Eko1 ^= Do1; \ + Bi = ROL32(Eko1, 13); \ + Emu0 ^= Du0; \ + Bo = ROL32(Emu0, 4); \ + Esa0 ^= Da0; \ + Bu = ROL32(Esa0, 9); \ + Aka0 = Ba ^((~Be)& Bi ); \ + Ake0 = Be ^((~Bi)& Bo ); \ + Aki0 = Bi ^((~Bo)& Bu ); \ + Ako0 = Bo ^((~Bu)& Ba ); \ + Aku0 = Bu ^((~Ba)& Be ); \ +\ + Ebu1 ^= Du1; \ + Ba = ROL32(Ebu1, 14); \ + Ega0 ^= Da0; \ + Be = ROL32(Ega0, 18); \ + Eke0 ^= De0; \ + Bi = ROL32(Eke0, 5); \ + Emi1 ^= Di1; \ + Bo = ROL32(Emi1, 8); \ + Eso0 ^= Do0; \ + Bu = ROL32(Eso0, 28); \ + Ama0 = Ba ^((~Be)& Bi ); \ + Ame0 = Be ^((~Bi)& Bo ); \ + Ami0 = Bi ^((~Bo)& Bu ); \ + Amo0 = Bo ^((~Bu)& Ba ); \ + Amu0 = Bu ^((~Ba)& Be ); \ +\ + Ebi0 ^= Di0; \ + Ba = ROL32(Ebi0, 31); \ + Ego1 ^= Do1; \ + Be = ROL32(Ego1, 28); \ + Eku1 ^= Du1; \ + Bi = ROL32(Eku1, 20); \ + Ema1 ^= Da1; \ + Bo = ROL32(Ema1, 21); \ + Ese0 ^= De0; \ + Bu = ROL32(Ese0, 1); \ + Asa0 = Ba ^((~Be)& Bi ); \ + Ase0 = Be ^((~Bi)& Bo ); \ + Asi0 = Bi ^((~Bo)& Bu ); \ + Aso0 = Bo ^((~Bu)& Ba ); \ + Asu0 = Bu ^((~Ba)& Be ); \ +\ + Eba1 ^= Da1; \ + Ba = Eba1; \ + Ege1 ^= De1; \ + Be = ROL32(Ege1, 22); \ + Eki0 ^= Di0; \ + Bi = ROL32(Eki0, 21); \ + Emo0 ^= Do0; \ + Bo = ROL32(Emo0, 10); \ + Esu1 ^= Du1; \ + Bu = ROL32(Esu1, 7); \ + Aba1 = Ba ^((~Be)& Bi ); \ + Aba1 ^= *(pRoundConstants++); \ + Abe1 = Be ^((~Bi)& Bo ); \ + Abi1 = Bi ^((~Bo)& Bu ); \ + Abo1 = Bo ^((~Bu)& Ba ); \ + Abu1 = Bu ^((~Ba)& Be ); \ +\ + Ebo1 ^= Do1; \ + Ba = ROL32(Ebo1, 14); \ + Egu1 ^= Du1; \ + Be = ROL32(Egu1, 10); \ + Eka0 ^= Da0; \ + Bi = ROL32(Eka0, 1); \ + Eme0 ^= De0; \ + Bo = ROL32(Eme0, 22); \ + Esi0 ^= Di0; \ + Bu = ROL32(Esi0, 30); \ + Aga1 = Ba ^((~Be)& Bi ); \ + Age1 = Be ^((~Bi)& Bo ); \ + Agi1 = Bi ^((~Bo)& Bu ); \ + Ago1 = Bo ^((~Bu)& Ba ); \ + Agu1 = Bu ^((~Ba)& Be ); \ +\ + Ebe0 ^= De0; \ + Ba = Ebe0; \ + Egi1 ^= Di1; \ + Be = ROL32(Egi1, 3); \ + Eko0 ^= Do0; \ + Bi = ROL32(Eko0, 12); \ + Emu1 ^= Du1; \ + Bo = ROL32(Emu1, 4); \ + Esa1 ^= Da1; \ + Bu = ROL32(Esa1, 9); \ + Aka1 = Ba ^((~Be)& Bi ); \ + Ake1 = Be ^((~Bi)& Bo ); \ + Aki1 = Bi ^((~Bo)& Bu ); \ + Ako1 = Bo ^((~Bu)& Ba ); \ + Aku1 = Bu ^((~Ba)& Be ); \ +\ + Ebu0 ^= Du0; \ + Ba = ROL32(Ebu0, 13); \ + Ega1 ^= Da1; \ + Be = ROL32(Ega1, 18); \ + Eke1 ^= De1; \ + Bi = ROL32(Eke1, 5); \ + Emi0 ^= Di0; \ + Bo = ROL32(Emi0, 7); \ + Eso1 ^= Do1; \ + Bu = ROL32(Eso1, 28); \ + Ama1 = Ba ^((~Be)& Bi ); \ + Ame1 = Be ^((~Bi)& Bo ); \ + Ami1 = Bi ^((~Bo)& Bu ); \ + Amo1 = Bo ^((~Bu)& Ba ); \ + Amu1 = Bu ^((~Ba)& Be ); \ +\ + Ebi1 ^= Di1; \ + Ba = ROL32(Ebi1, 31); \ + Ego0 ^= Do0; \ + Be = ROL32(Ego0, 27); \ + Eku0 ^= Du0; \ + Bi = ROL32(Eku0, 19); \ + Ema0 ^= Da0; \ + Bo = ROL32(Ema0, 20); \ + Ese1 ^= De1; \ + Bu = ROL32(Ese1, 1); \ + Asa1 = Ba ^((~Be)& Bi ); \ + Ase1 = Be ^((~Bi)& Bo ); \ + Asi1 = Bi ^((~Bo)& Bu ); \ + Aso1 = Bo ^((~Bu)& Ba ); \ + Asu1 = Bu ^((~Ba)& Be ); \ + } \ + copyToState(state, A) \ +} + +#define copyFromState(X, state) \ + X##ba0 = state[ 0]; \ + X##ba1 = state[ 1]; \ + X##be0 = state[ 2]; \ + X##be1 = state[ 3]; \ + X##bi0 = state[ 4]; \ + X##bi1 = state[ 5]; \ + X##bo0 = state[ 6]; \ + X##bo1 = state[ 7]; \ + X##bu0 = state[ 8]; \ + X##bu1 = state[ 9]; \ + X##ga0 = state[10]; \ + X##ga1 = state[11]; \ + X##ge0 = state[12]; \ + X##ge1 = state[13]; \ + X##gi0 = state[14]; \ + X##gi1 = state[15]; \ + X##go0 = state[16]; \ + X##go1 = state[17]; \ + X##gu0 = state[18]; \ + X##gu1 = state[19]; \ + X##ka0 = state[20]; \ + X##ka1 = state[21]; \ + X##ke0 = state[22]; \ + X##ke1 = state[23]; \ + X##ki0 = state[24]; \ + X##ki1 = state[25]; \ + X##ko0 = state[26]; \ + X##ko1 = state[27]; \ + X##ku0 = state[28]; \ + X##ku1 = state[29]; \ + X##ma0 = state[30]; \ + X##ma1 = state[31]; \ + X##me0 = state[32]; \ + X##me1 = state[33]; \ + X##mi0 = state[34]; \ + X##mi1 = state[35]; \ + X##mo0 = state[36]; \ + X##mo1 = state[37]; \ + X##mu0 = state[38]; \ + X##mu1 = state[39]; \ + X##sa0 = state[40]; \ + X##sa1 = state[41]; \ + X##se0 = state[42]; \ + X##se1 = state[43]; \ + X##si0 = state[44]; \ + X##si1 = state[45]; \ + X##so0 = state[46]; \ + X##so1 = state[47]; \ + X##su0 = state[48]; \ + X##su1 = state[49]; \ + +#define copyToState(state, X) \ + state[ 0] = X##ba0; \ + state[ 1] = X##ba1; \ + state[ 2] = X##be0; \ + state[ 3] = X##be1; \ + state[ 4] = X##bi0; \ + state[ 5] = X##bi1; \ + state[ 6] = X##bo0; \ + state[ 7] = X##bo1; \ + state[ 8] = X##bu0; \ + state[ 9] = X##bu1; \ + state[10] = X##ga0; \ + state[11] = X##ga1; \ + state[12] = X##ge0; \ + state[13] = X##ge1; \ + state[14] = X##gi0; \ + state[15] = X##gi1; \ + state[16] = X##go0; \ + state[17] = X##go1; \ + state[18] = X##gu0; \ + state[19] = X##gu1; \ + state[20] = X##ka0; \ + state[21] = X##ka1; \ + state[22] = X##ke0; \ + state[23] = X##ke1; \ + state[24] = X##ki0; \ + state[25] = X##ki1; \ + state[26] = X##ko0; \ + state[27] = X##ko1; \ + state[28] = X##ku0; \ + state[29] = X##ku1; \ + state[30] = X##ma0; \ + state[31] = X##ma1; \ + state[32] = X##me0; \ + state[33] = X##me1; \ + state[34] = X##mi0; \ + state[35] = X##mi1; \ + state[36] = X##mo0; \ + state[37] = X##mo1; \ + state[38] = X##mu0; \ + state[39] = X##mu1; \ + state[40] = X##sa0; \ + state[41] = X##sa1; \ + state[42] = X##se0; \ + state[43] = X##se1; \ + state[44] = X##si0; \ + state[45] = X##si1; \ + state[46] = X##so0; \ + state[47] = X##so1; \ + state[48] = X##su0; \ + state[49] = X##su1; \ + diff --git a/src/3rdparty/sha3/KeccakF-1600-32.macros b/src/3rdparty/sha3/KeccakF-1600-32.macros new file mode 100755 index 0000000000..9ade600067 --- /dev/null +++ b/src/3rdparty/sha3/KeccakF-1600-32.macros @@ -0,0 +1,26 @@ +/* +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by the designers, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#ifdef UseSchedule + #if (UseSchedule == 1) + #include "KeccakF-1600-32-s1.macros" + #elif (UseSchedule == 2) + #include "KeccakF-1600-32-s2.macros" + #elif (UseSchedule == 3) + #include "KeccakF-1600-32-rvk.macros" + #else + #error "This schedule is not supported." + #endif +#else + #include "KeccakF-1600-32-s1.macros" +#endif diff --git a/src/3rdparty/sha3/KeccakF-1600-64.macros b/src/3rdparty/sha3/KeccakF-1600-64.macros new file mode 100755 index 0000000000..0c20bca40f --- /dev/null +++ b/src/3rdparty/sha3/KeccakF-1600-64.macros @@ -0,0 +1,728 @@ +/* +Code automatically generated by KeccakTools! + +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by the designers, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#define declareABCDE \ + UINT64 Aba, Abe, Abi, Abo, Abu; \ + UINT64 Aga, Age, Agi, Ago, Agu; \ + UINT64 Aka, Ake, Aki, Ako, Aku; \ + UINT64 Ama, Ame, Ami, Amo, Amu; \ + UINT64 Asa, Ase, Asi, Aso, Asu; \ + UINT64 Bba, Bbe, Bbi, Bbo, Bbu; \ + UINT64 Bga, Bge, Bgi, Bgo, Bgu; \ + UINT64 Bka, Bke, Bki, Bko, Bku; \ + UINT64 Bma, Bme, Bmi, Bmo, Bmu; \ + UINT64 Bsa, Bse, Bsi, Bso, Bsu; \ + UINT64 Ca, Ce, Ci, Co, Cu; \ + UINT64 Da, De, Di, Do, Du; \ + UINT64 Eba, Ebe, Ebi, Ebo, Ebu; \ + UINT64 Ega, Ege, Egi, Ego, Egu; \ + UINT64 Eka, Eke, Eki, Eko, Eku; \ + UINT64 Ema, Eme, Emi, Emo, Emu; \ + UINT64 Esa, Ese, Esi, Eso, Esu; \ + +#define prepareTheta \ + Ca = Aba^Aga^Aka^Ama^Asa; \ + Ce = Abe^Age^Ake^Ame^Ase; \ + Ci = Abi^Agi^Aki^Ami^Asi; \ + Co = Abo^Ago^Ako^Amo^Aso; \ + Cu = Abu^Agu^Aku^Amu^Asu; \ + +#ifdef UseBebigokimisa +// --- Code for round, with prepare-theta (lane complementing pattern 'bebigokimisa') +// --- 64-bit lanes mapped to 64-bit words +#define thetaRhoPiChiIotaPrepareTheta(i, A, E) \ + Da = Cu^ROL64(Ce, 1); \ + De = Ca^ROL64(Ci, 1); \ + Di = Ce^ROL64(Co, 1); \ + Do = Ci^ROL64(Cu, 1); \ + Du = Co^ROL64(Ca, 1); \ +\ + A##ba ^= Da; \ + Bba = A##ba; \ + A##ge ^= De; \ + Bbe = ROL64(A##ge, 44); \ + A##ki ^= Di; \ + Bbi = ROL64(A##ki, 43); \ + A##mo ^= Do; \ + Bbo = ROL64(A##mo, 21); \ + A##su ^= Du; \ + Bbu = ROL64(A##su, 14); \ + E##ba = Bba ^( Bbe | Bbi ); \ + E##ba ^= KeccakF1600RoundConstants[i]; \ + Ca = E##ba; \ + E##be = Bbe ^((~Bbi)| Bbo ); \ + Ce = E##be; \ + E##bi = Bbi ^( Bbo & Bbu ); \ + Ci = E##bi; \ + E##bo = Bbo ^( Bbu | Bba ); \ + Co = E##bo; \ + E##bu = Bbu ^( Bba & Bbe ); \ + Cu = E##bu; \ +\ + A##bo ^= Do; \ + Bga = ROL64(A##bo, 28); \ + A##gu ^= Du; \ + Bge = ROL64(A##gu, 20); \ + A##ka ^= Da; \ + Bgi = ROL64(A##ka, 3); \ + A##me ^= De; \ + Bgo = ROL64(A##me, 45); \ + A##si ^= Di; \ + Bgu = ROL64(A##si, 61); \ + E##ga = Bga ^( Bge | Bgi ); \ + Ca ^= E##ga; \ + E##ge = Bge ^( Bgi & Bgo ); \ + Ce ^= E##ge; \ + E##gi = Bgi ^( Bgo |(~Bgu)); \ + Ci ^= E##gi; \ + E##go = Bgo ^( Bgu | Bga ); \ + Co ^= E##go; \ + E##gu = Bgu ^( Bga & Bge ); \ + Cu ^= E##gu; \ +\ + A##be ^= De; \ + Bka = ROL64(A##be, 1); \ + A##gi ^= Di; \ + Bke = ROL64(A##gi, 6); \ + A##ko ^= Do; \ + Bki = ROL64(A##ko, 25); \ + A##mu ^= Du; \ + Bko = ROL64(A##mu, 8); \ + A##sa ^= Da; \ + Bku = ROL64(A##sa, 18); \ + E##ka = Bka ^( Bke | Bki ); \ + Ca ^= E##ka; \ + E##ke = Bke ^( Bki & Bko ); \ + Ce ^= E##ke; \ + E##ki = Bki ^((~Bko)& Bku ); \ + Ci ^= E##ki; \ + E##ko = (~Bko)^( Bku | Bka ); \ + Co ^= E##ko; \ + E##ku = Bku ^( Bka & Bke ); \ + Cu ^= E##ku; \ +\ + A##bu ^= Du; \ + Bma = ROL64(A##bu, 27); \ + A##ga ^= Da; \ + Bme = ROL64(A##ga, 36); \ + A##ke ^= De; \ + Bmi = ROL64(A##ke, 10); \ + A##mi ^= Di; \ + Bmo = ROL64(A##mi, 15); \ + A##so ^= Do; \ + Bmu = ROL64(A##so, 56); \ + E##ma = Bma ^( Bme & Bmi ); \ + Ca ^= E##ma; \ + E##me = Bme ^( Bmi | Bmo ); \ + Ce ^= E##me; \ + E##mi = Bmi ^((~Bmo)| Bmu ); \ + Ci ^= E##mi; \ + E##mo = (~Bmo)^( Bmu & Bma ); \ + Co ^= E##mo; \ + E##mu = Bmu ^( Bma | Bme ); \ + Cu ^= E##mu; \ +\ + A##bi ^= Di; \ + Bsa = ROL64(A##bi, 62); \ + A##go ^= Do; \ + Bse = ROL64(A##go, 55); \ + A##ku ^= Du; \ + Bsi = ROL64(A##ku, 39); \ + A##ma ^= Da; \ + Bso = ROL64(A##ma, 41); \ + A##se ^= De; \ + Bsu = ROL64(A##se, 2); \ + E##sa = Bsa ^((~Bse)& Bsi ); \ + Ca ^= E##sa; \ + E##se = (~Bse)^( Bsi | Bso ); \ + Ce ^= E##se; \ + E##si = Bsi ^( Bso & Bsu ); \ + Ci ^= E##si; \ + E##so = Bso ^( Bsu | Bsa ); \ + Co ^= E##so; \ + E##su = Bsu ^( Bsa & Bse ); \ + Cu ^= E##su; \ +\ + +// --- Code for round (lane complementing pattern 'bebigokimisa') +// --- 64-bit lanes mapped to 64-bit words +#define thetaRhoPiChiIota(i, A, E) \ + Da = Cu^ROL64(Ce, 1); \ + De = Ca^ROL64(Ci, 1); \ + Di = Ce^ROL64(Co, 1); \ + Do = Ci^ROL64(Cu, 1); \ + Du = Co^ROL64(Ca, 1); \ +\ + A##ba ^= Da; \ + Bba = A##ba; \ + A##ge ^= De; \ + Bbe = ROL64(A##ge, 44); \ + A##ki ^= Di; \ + Bbi = ROL64(A##ki, 43); \ + A##mo ^= Do; \ + Bbo = ROL64(A##mo, 21); \ + A##su ^= Du; \ + Bbu = ROL64(A##su, 14); \ + E##ba = Bba ^( Bbe | Bbi ); \ + E##ba ^= KeccakF1600RoundConstants[i]; \ + E##be = Bbe ^((~Bbi)| Bbo ); \ + E##bi = Bbi ^( Bbo & Bbu ); \ + E##bo = Bbo ^( Bbu | Bba ); \ + E##bu = Bbu ^( Bba & Bbe ); \ +\ + A##bo ^= Do; \ + Bga = ROL64(A##bo, 28); \ + A##gu ^= Du; \ + Bge = ROL64(A##gu, 20); \ + A##ka ^= Da; \ + Bgi = ROL64(A##ka, 3); \ + A##me ^= De; \ + Bgo = ROL64(A##me, 45); \ + A##si ^= Di; \ + Bgu = ROL64(A##si, 61); \ + E##ga = Bga ^( Bge | Bgi ); \ + E##ge = Bge ^( Bgi & Bgo ); \ + E##gi = Bgi ^( Bgo |(~Bgu)); \ + E##go = Bgo ^( Bgu | Bga ); \ + E##gu = Bgu ^( Bga & Bge ); \ +\ + A##be ^= De; \ + Bka = ROL64(A##be, 1); \ + A##gi ^= Di; \ + Bke = ROL64(A##gi, 6); \ + A##ko ^= Do; \ + Bki = ROL64(A##ko, 25); \ + A##mu ^= Du; \ + Bko = ROL64(A##mu, 8); \ + A##sa ^= Da; \ + Bku = ROL64(A##sa, 18); \ + E##ka = Bka ^( Bke | Bki ); \ + E##ke = Bke ^( Bki & Bko ); \ + E##ki = Bki ^((~Bko)& Bku ); \ + E##ko = (~Bko)^( Bku | Bka ); \ + E##ku = Bku ^( Bka & Bke ); \ +\ + A##bu ^= Du; \ + Bma = ROL64(A##bu, 27); \ + A##ga ^= Da; \ + Bme = ROL64(A##ga, 36); \ + A##ke ^= De; \ + Bmi = ROL64(A##ke, 10); \ + A##mi ^= Di; \ + Bmo = ROL64(A##mi, 15); \ + A##so ^= Do; \ + Bmu = ROL64(A##so, 56); \ + E##ma = Bma ^( Bme & Bmi ); \ + E##me = Bme ^( Bmi | Bmo ); \ + E##mi = Bmi ^((~Bmo)| Bmu ); \ + E##mo = (~Bmo)^( Bmu & Bma ); \ + E##mu = Bmu ^( Bma | Bme ); \ +\ + A##bi ^= Di; \ + Bsa = ROL64(A##bi, 62); \ + A##go ^= Do; \ + Bse = ROL64(A##go, 55); \ + A##ku ^= Du; \ + Bsi = ROL64(A##ku, 39); \ + A##ma ^= Da; \ + Bso = ROL64(A##ma, 41); \ + A##se ^= De; \ + Bsu = ROL64(A##se, 2); \ + E##sa = Bsa ^((~Bse)& Bsi ); \ + E##se = (~Bse)^( Bsi | Bso ); \ + E##si = Bsi ^( Bso & Bsu ); \ + E##so = Bso ^( Bsu | Bsa ); \ + E##su = Bsu ^( Bsa & Bse ); \ +\ + +#else // UseBebigokimisa +// --- Code for round, with prepare-theta +// --- 64-bit lanes mapped to 64-bit words +#define thetaRhoPiChiIotaPrepareTheta(i, A, E) \ + Da = Cu^ROL64(Ce, 1); \ + De = Ca^ROL64(Ci, 1); \ + Di = Ce^ROL64(Co, 1); \ + Do = Ci^ROL64(Cu, 1); \ + Du = Co^ROL64(Ca, 1); \ +\ + A##ba ^= Da; \ + Bba = A##ba; \ + A##ge ^= De; \ + Bbe = ROL64(A##ge, 44); \ + A##ki ^= Di; \ + Bbi = ROL64(A##ki, 43); \ + A##mo ^= Do; \ + Bbo = ROL64(A##mo, 21); \ + A##su ^= Du; \ + Bbu = ROL64(A##su, 14); \ + E##ba = Bba ^((~Bbe)& Bbi ); \ + E##ba ^= KeccakF1600RoundConstants[i]; \ + Ca = E##ba; \ + E##be = Bbe ^((~Bbi)& Bbo ); \ + Ce = E##be; \ + E##bi = Bbi ^((~Bbo)& Bbu ); \ + Ci = E##bi; \ + E##bo = Bbo ^((~Bbu)& Bba ); \ + Co = E##bo; \ + E##bu = Bbu ^((~Bba)& Bbe ); \ + Cu = E##bu; \ +\ + A##bo ^= Do; \ + Bga = ROL64(A##bo, 28); \ + A##gu ^= Du; \ + Bge = ROL64(A##gu, 20); \ + A##ka ^= Da; \ + Bgi = ROL64(A##ka, 3); \ + A##me ^= De; \ + Bgo = ROL64(A##me, 45); \ + A##si ^= Di; \ + Bgu = ROL64(A##si, 61); \ + E##ga = Bga ^((~Bge)& Bgi ); \ + Ca ^= E##ga; \ + E##ge = Bge ^((~Bgi)& Bgo ); \ + Ce ^= E##ge; \ + E##gi = Bgi ^((~Bgo)& Bgu ); \ + Ci ^= E##gi; \ + E##go = Bgo ^((~Bgu)& Bga ); \ + Co ^= E##go; \ + E##gu = Bgu ^((~Bga)& Bge ); \ + Cu ^= E##gu; \ +\ + A##be ^= De; \ + Bka = ROL64(A##be, 1); \ + A##gi ^= Di; \ + Bke = ROL64(A##gi, 6); \ + A##ko ^= Do; \ + Bki = ROL64(A##ko, 25); \ + A##mu ^= Du; \ + Bko = ROL64(A##mu, 8); \ + A##sa ^= Da; \ + Bku = ROL64(A##sa, 18); \ + E##ka = Bka ^((~Bke)& Bki ); \ + Ca ^= E##ka; \ + E##ke = Bke ^((~Bki)& Bko ); \ + Ce ^= E##ke; \ + E##ki = Bki ^((~Bko)& Bku ); \ + Ci ^= E##ki; \ + E##ko = Bko ^((~Bku)& Bka ); \ + Co ^= E##ko; \ + E##ku = Bku ^((~Bka)& Bke ); \ + Cu ^= E##ku; \ +\ + A##bu ^= Du; \ + Bma = ROL64(A##bu, 27); \ + A##ga ^= Da; \ + Bme = ROL64(A##ga, 36); \ + A##ke ^= De; \ + Bmi = ROL64(A##ke, 10); \ + A##mi ^= Di; \ + Bmo = ROL64(A##mi, 15); \ + A##so ^= Do; \ + Bmu = ROL64(A##so, 56); \ + E##ma = Bma ^((~Bme)& Bmi ); \ + Ca ^= E##ma; \ + E##me = Bme ^((~Bmi)& Bmo ); \ + Ce ^= E##me; \ + E##mi = Bmi ^((~Bmo)& Bmu ); \ + Ci ^= E##mi; \ + E##mo = Bmo ^((~Bmu)& Bma ); \ + Co ^= E##mo; \ + E##mu = Bmu ^((~Bma)& Bme ); \ + Cu ^= E##mu; \ +\ + A##bi ^= Di; \ + Bsa = ROL64(A##bi, 62); \ + A##go ^= Do; \ + Bse = ROL64(A##go, 55); \ + A##ku ^= Du; \ + Bsi = ROL64(A##ku, 39); \ + A##ma ^= Da; \ + Bso = ROL64(A##ma, 41); \ + A##se ^= De; \ + Bsu = ROL64(A##se, 2); \ + E##sa = Bsa ^((~Bse)& Bsi ); \ + Ca ^= E##sa; \ + E##se = Bse ^((~Bsi)& Bso ); \ + Ce ^= E##se; \ + E##si = Bsi ^((~Bso)& Bsu ); \ + Ci ^= E##si; \ + E##so = Bso ^((~Bsu)& Bsa ); \ + Co ^= E##so; \ + E##su = Bsu ^((~Bsa)& Bse ); \ + Cu ^= E##su; \ +\ + +// --- Code for round +// --- 64-bit lanes mapped to 64-bit words +#define thetaRhoPiChiIota(i, A, E) \ + Da = Cu^ROL64(Ce, 1); \ + De = Ca^ROL64(Ci, 1); \ + Di = Ce^ROL64(Co, 1); \ + Do = Ci^ROL64(Cu, 1); \ + Du = Co^ROL64(Ca, 1); \ +\ + A##ba ^= Da; \ + Bba = A##ba; \ + A##ge ^= De; \ + Bbe = ROL64(A##ge, 44); \ + A##ki ^= Di; \ + Bbi = ROL64(A##ki, 43); \ + A##mo ^= Do; \ + Bbo = ROL64(A##mo, 21); \ + A##su ^= Du; \ + Bbu = ROL64(A##su, 14); \ + E##ba = Bba ^((~Bbe)& Bbi ); \ + E##ba ^= KeccakF1600RoundConstants[i]; \ + E##be = Bbe ^((~Bbi)& Bbo ); \ + E##bi = Bbi ^((~Bbo)& Bbu ); \ + E##bo = Bbo ^((~Bbu)& Bba ); \ + E##bu = Bbu ^((~Bba)& Bbe ); \ +\ + A##bo ^= Do; \ + Bga = ROL64(A##bo, 28); \ + A##gu ^= Du; \ + Bge = ROL64(A##gu, 20); \ + A##ka ^= Da; \ + Bgi = ROL64(A##ka, 3); \ + A##me ^= De; \ + Bgo = ROL64(A##me, 45); \ + A##si ^= Di; \ + Bgu = ROL64(A##si, 61); \ + E##ga = Bga ^((~Bge)& Bgi ); \ + E##ge = Bge ^((~Bgi)& Bgo ); \ + E##gi = Bgi ^((~Bgo)& Bgu ); \ + E##go = Bgo ^((~Bgu)& Bga ); \ + E##gu = Bgu ^((~Bga)& Bge ); \ +\ + A##be ^= De; \ + Bka = ROL64(A##be, 1); \ + A##gi ^= Di; \ + Bke = ROL64(A##gi, 6); \ + A##ko ^= Do; \ + Bki = ROL64(A##ko, 25); \ + A##mu ^= Du; \ + Bko = ROL64(A##mu, 8); \ + A##sa ^= Da; \ + Bku = ROL64(A##sa, 18); \ + E##ka = Bka ^((~Bke)& Bki ); \ + E##ke = Bke ^((~Bki)& Bko ); \ + E##ki = Bki ^((~Bko)& Bku ); \ + E##ko = Bko ^((~Bku)& Bka ); \ + E##ku = Bku ^((~Bka)& Bke ); \ +\ + A##bu ^= Du; \ + Bma = ROL64(A##bu, 27); \ + A##ga ^= Da; \ + Bme = ROL64(A##ga, 36); \ + A##ke ^= De; \ + Bmi = ROL64(A##ke, 10); \ + A##mi ^= Di; \ + Bmo = ROL64(A##mi, 15); \ + A##so ^= Do; \ + Bmu = ROL64(A##so, 56); \ + E##ma = Bma ^((~Bme)& Bmi ); \ + E##me = Bme ^((~Bmi)& Bmo ); \ + E##mi = Bmi ^((~Bmo)& Bmu ); \ + E##mo = Bmo ^((~Bmu)& Bma ); \ + E##mu = Bmu ^((~Bma)& Bme ); \ +\ + A##bi ^= Di; \ + Bsa = ROL64(A##bi, 62); \ + A##go ^= Do; \ + Bse = ROL64(A##go, 55); \ + A##ku ^= Du; \ + Bsi = ROL64(A##ku, 39); \ + A##ma ^= Da; \ + Bso = ROL64(A##ma, 41); \ + A##se ^= De; \ + Bsu = ROL64(A##se, 2); \ + E##sa = Bsa ^((~Bse)& Bsi ); \ + E##se = Bse ^((~Bsi)& Bso ); \ + E##si = Bsi ^((~Bso)& Bsu ); \ + E##so = Bso ^((~Bsu)& Bsa ); \ + E##su = Bsu ^((~Bsa)& Bse ); \ +\ + +#endif // UseBebigokimisa + +const UINT64 KeccakF1600RoundConstants[24] = { + 0x0000000000000001ULL, + 0x0000000000008082ULL, + 0x800000000000808aULL, + 0x8000000080008000ULL, + 0x000000000000808bULL, + 0x0000000080000001ULL, + 0x8000000080008081ULL, + 0x8000000000008009ULL, + 0x000000000000008aULL, + 0x0000000000000088ULL, + 0x0000000080008009ULL, + 0x000000008000000aULL, + 0x000000008000808bULL, + 0x800000000000008bULL, + 0x8000000000008089ULL, + 0x8000000000008003ULL, + 0x8000000000008002ULL, + 0x8000000000000080ULL, + 0x000000000000800aULL, + 0x800000008000000aULL, + 0x8000000080008081ULL, + 0x8000000000008080ULL, + 0x0000000080000001ULL, + 0x8000000080008008ULL }; + +#define copyFromStateAndXor576bits(X, state, input) \ + X##ba = state[ 0]^input[ 0]; \ + X##be = state[ 1]^input[ 1]; \ + X##bi = state[ 2]^input[ 2]; \ + X##bo = state[ 3]^input[ 3]; \ + X##bu = state[ 4]^input[ 4]; \ + X##ga = state[ 5]^input[ 5]; \ + X##ge = state[ 6]^input[ 6]; \ + X##gi = state[ 7]^input[ 7]; \ + X##go = state[ 8]^input[ 8]; \ + X##gu = state[ 9]; \ + X##ka = state[10]; \ + X##ke = state[11]; \ + X##ki = state[12]; \ + X##ko = state[13]; \ + X##ku = state[14]; \ + X##ma = state[15]; \ + X##me = state[16]; \ + X##mi = state[17]; \ + X##mo = state[18]; \ + X##mu = state[19]; \ + X##sa = state[20]; \ + X##se = state[21]; \ + X##si = state[22]; \ + X##so = state[23]; \ + X##su = state[24]; \ + +#define copyFromStateAndXor832bits(X, state, input) \ + X##ba = state[ 0]^input[ 0]; \ + X##be = state[ 1]^input[ 1]; \ + X##bi = state[ 2]^input[ 2]; \ + X##bo = state[ 3]^input[ 3]; \ + X##bu = state[ 4]^input[ 4]; \ + X##ga = state[ 5]^input[ 5]; \ + X##ge = state[ 6]^input[ 6]; \ + X##gi = state[ 7]^input[ 7]; \ + X##go = state[ 8]^input[ 8]; \ + X##gu = state[ 9]^input[ 9]; \ + X##ka = state[10]^input[10]; \ + X##ke = state[11]^input[11]; \ + X##ki = state[12]^input[12]; \ + X##ko = state[13]; \ + X##ku = state[14]; \ + X##ma = state[15]; \ + X##me = state[16]; \ + X##mi = state[17]; \ + X##mo = state[18]; \ + X##mu = state[19]; \ + X##sa = state[20]; \ + X##se = state[21]; \ + X##si = state[22]; \ + X##so = state[23]; \ + X##su = state[24]; \ + +#define copyFromStateAndXor1024bits(X, state, input) \ + X##ba = state[ 0]^input[ 0]; \ + X##be = state[ 1]^input[ 1]; \ + X##bi = state[ 2]^input[ 2]; \ + X##bo = state[ 3]^input[ 3]; \ + X##bu = state[ 4]^input[ 4]; \ + X##ga = state[ 5]^input[ 5]; \ + X##ge = state[ 6]^input[ 6]; \ + X##gi = state[ 7]^input[ 7]; \ + X##go = state[ 8]^input[ 8]; \ + X##gu = state[ 9]^input[ 9]; \ + X##ka = state[10]^input[10]; \ + X##ke = state[11]^input[11]; \ + X##ki = state[12]^input[12]; \ + X##ko = state[13]^input[13]; \ + X##ku = state[14]^input[14]; \ + X##ma = state[15]^input[15]; \ + X##me = state[16]; \ + X##mi = state[17]; \ + X##mo = state[18]; \ + X##mu = state[19]; \ + X##sa = state[20]; \ + X##se = state[21]; \ + X##si = state[22]; \ + X##so = state[23]; \ + X##su = state[24]; \ + +#define copyFromStateAndXor1088bits(X, state, input) \ + X##ba = state[ 0]^input[ 0]; \ + X##be = state[ 1]^input[ 1]; \ + X##bi = state[ 2]^input[ 2]; \ + X##bo = state[ 3]^input[ 3]; \ + X##bu = state[ 4]^input[ 4]; \ + X##ga = state[ 5]^input[ 5]; \ + X##ge = state[ 6]^input[ 6]; \ + X##gi = state[ 7]^input[ 7]; \ + X##go = state[ 8]^input[ 8]; \ + X##gu = state[ 9]^input[ 9]; \ + X##ka = state[10]^input[10]; \ + X##ke = state[11]^input[11]; \ + X##ki = state[12]^input[12]; \ + X##ko = state[13]^input[13]; \ + X##ku = state[14]^input[14]; \ + X##ma = state[15]^input[15]; \ + X##me = state[16]^input[16]; \ + X##mi = state[17]; \ + X##mo = state[18]; \ + X##mu = state[19]; \ + X##sa = state[20]; \ + X##se = state[21]; \ + X##si = state[22]; \ + X##so = state[23]; \ + X##su = state[24]; \ + +#define copyFromStateAndXor1152bits(X, state, input) \ + X##ba = state[ 0]^input[ 0]; \ + X##be = state[ 1]^input[ 1]; \ + X##bi = state[ 2]^input[ 2]; \ + X##bo = state[ 3]^input[ 3]; \ + X##bu = state[ 4]^input[ 4]; \ + X##ga = state[ 5]^input[ 5]; \ + X##ge = state[ 6]^input[ 6]; \ + X##gi = state[ 7]^input[ 7]; \ + X##go = state[ 8]^input[ 8]; \ + X##gu = state[ 9]^input[ 9]; \ + X##ka = state[10]^input[10]; \ + X##ke = state[11]^input[11]; \ + X##ki = state[12]^input[12]; \ + X##ko = state[13]^input[13]; \ + X##ku = state[14]^input[14]; \ + X##ma = state[15]^input[15]; \ + X##me = state[16]^input[16]; \ + X##mi = state[17]^input[17]; \ + X##mo = state[18]; \ + X##mu = state[19]; \ + X##sa = state[20]; \ + X##se = state[21]; \ + X##si = state[22]; \ + X##so = state[23]; \ + X##su = state[24]; \ + +#define copyFromStateAndXor1344bits(X, state, input) \ + X##ba = state[ 0]^input[ 0]; \ + X##be = state[ 1]^input[ 1]; \ + X##bi = state[ 2]^input[ 2]; \ + X##bo = state[ 3]^input[ 3]; \ + X##bu = state[ 4]^input[ 4]; \ + X##ga = state[ 5]^input[ 5]; \ + X##ge = state[ 6]^input[ 6]; \ + X##gi = state[ 7]^input[ 7]; \ + X##go = state[ 8]^input[ 8]; \ + X##gu = state[ 9]^input[ 9]; \ + X##ka = state[10]^input[10]; \ + X##ke = state[11]^input[11]; \ + X##ki = state[12]^input[12]; \ + X##ko = state[13]^input[13]; \ + X##ku = state[14]^input[14]; \ + X##ma = state[15]^input[15]; \ + X##me = state[16]^input[16]; \ + X##mi = state[17]^input[17]; \ + X##mo = state[18]^input[18]; \ + X##mu = state[19]^input[19]; \ + X##sa = state[20]^input[20]; \ + X##se = state[21]; \ + X##si = state[22]; \ + X##so = state[23]; \ + X##su = state[24]; \ + +#define copyFromState(X, state) \ + X##ba = state[ 0]; \ + X##be = state[ 1]; \ + X##bi = state[ 2]; \ + X##bo = state[ 3]; \ + X##bu = state[ 4]; \ + X##ga = state[ 5]; \ + X##ge = state[ 6]; \ + X##gi = state[ 7]; \ + X##go = state[ 8]; \ + X##gu = state[ 9]; \ + X##ka = state[10]; \ + X##ke = state[11]; \ + X##ki = state[12]; \ + X##ko = state[13]; \ + X##ku = state[14]; \ + X##ma = state[15]; \ + X##me = state[16]; \ + X##mi = state[17]; \ + X##mo = state[18]; \ + X##mu = state[19]; \ + X##sa = state[20]; \ + X##se = state[21]; \ + X##si = state[22]; \ + X##so = state[23]; \ + X##su = state[24]; \ + +#define copyToState(state, X) \ + state[ 0] = X##ba; \ + state[ 1] = X##be; \ + state[ 2] = X##bi; \ + state[ 3] = X##bo; \ + state[ 4] = X##bu; \ + state[ 5] = X##ga; \ + state[ 6] = X##ge; \ + state[ 7] = X##gi; \ + state[ 8] = X##go; \ + state[ 9] = X##gu; \ + state[10] = X##ka; \ + state[11] = X##ke; \ + state[12] = X##ki; \ + state[13] = X##ko; \ + state[14] = X##ku; \ + state[15] = X##ma; \ + state[16] = X##me; \ + state[17] = X##mi; \ + state[18] = X##mo; \ + state[19] = X##mu; \ + state[20] = X##sa; \ + state[21] = X##se; \ + state[22] = X##si; \ + state[23] = X##so; \ + state[24] = X##su; \ + +#define copyStateVariables(X, Y) \ + X##ba = Y##ba; \ + X##be = Y##be; \ + X##bi = Y##bi; \ + X##bo = Y##bo; \ + X##bu = Y##bu; \ + X##ga = Y##ga; \ + X##ge = Y##ge; \ + X##gi = Y##gi; \ + X##go = Y##go; \ + X##gu = Y##gu; \ + X##ka = Y##ka; \ + X##ke = Y##ke; \ + X##ki = Y##ki; \ + X##ko = Y##ko; \ + X##ku = Y##ku; \ + X##ma = Y##ma; \ + X##me = Y##me; \ + X##mi = Y##mi; \ + X##mo = Y##mo; \ + X##mu = Y##mu; \ + X##sa = Y##sa; \ + X##se = Y##se; \ + X##si = Y##si; \ + X##so = Y##so; \ + X##su = Y##su; \ + diff --git a/src/3rdparty/sha3/KeccakF-1600-int-set.h b/src/3rdparty/sha3/KeccakF-1600-int-set.h new file mode 100755 index 0000000000..0ed1d802e3 --- /dev/null +++ b/src/3rdparty/sha3/KeccakF-1600-int-set.h @@ -0,0 +1,6 @@ +#define ProvideFast576 +#define ProvideFast832 +#define ProvideFast1024 +#define ProvideFast1088 +#define ProvideFast1152 +#define ProvideFast1344 diff --git a/src/3rdparty/sha3/KeccakF-1600-interface.h b/src/3rdparty/sha3/KeccakF-1600-interface.h new file mode 100755 index 0000000000..22185a4ac3 --- /dev/null +++ b/src/3rdparty/sha3/KeccakF-1600-interface.h @@ -0,0 +1,46 @@ +/* +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by the designers, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#ifndef _KeccakPermutationInterface_h_ +#define _KeccakPermutationInterface_h_ + +#include "KeccakF-1600-int-set.h" + +void KeccakInitialize( void ); +void KeccakInitializeState(unsigned char *state); +void KeccakPermutation(unsigned char *state); +#ifdef ProvideFast576 +void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data); +#endif +#ifdef ProvideFast832 +void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data); +#endif +#ifdef ProvideFast1024 +void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data); +#endif +#ifdef ProvideFast1088 +void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data); +#endif +#ifdef ProvideFast1152 +void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data); +#endif +#ifdef ProvideFast1344 +void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data); +#endif +void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int laneCount); +#ifdef ProvideFast1024 +void KeccakExtract1024bits(const unsigned char *state, unsigned char *data); +#endif +void KeccakExtract(const unsigned char *state, unsigned char *data, unsigned int laneCount); + +#endif diff --git a/src/3rdparty/sha3/KeccakF-1600-opt32-settings.h b/src/3rdparty/sha3/KeccakF-1600-opt32-settings.h new file mode 100755 index 0000000000..b135918ca9 --- /dev/null +++ b/src/3rdparty/sha3/KeccakF-1600-opt32-settings.h @@ -0,0 +1,4 @@ +#define Unrolling 2 +//#define UseBebigokimisa +//#define UseInterleaveTables +#define UseSchedule 3 diff --git a/src/3rdparty/sha3/KeccakF-1600-opt32.c b/src/3rdparty/sha3/KeccakF-1600-opt32.c new file mode 100755 index 0000000000..aded3a951b --- /dev/null +++ b/src/3rdparty/sha3/KeccakF-1600-opt32.c @@ -0,0 +1,524 @@ +/* +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by the designers, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#include +#include "brg_endian.h" +#include "KeccakF-1600-opt32-settings.h" +#include "KeccakF-1600-interface.h" + +typedef unsigned char UINT8; +typedef unsigned short UINT16; +typedef unsigned int UINT32; +typedef unsigned long long int UINT64; + +#ifdef UseInterleaveTables +int interleaveTablesBuilt = 0; +UINT16 interleaveTable[65536]; +UINT16 deinterleaveTable[65536]; + +void buildInterleaveTables() +{ + UINT32 i, j; + UINT16 x; + + if (!interleaveTablesBuilt) { + for(i=0; i<65536; i++) { + x = 0; + for(j=0; j<16; j++) { + if (i & (1 << j)) + x |= (1 << (j/2 + 8*(j%2))); + } + interleaveTable[i] = x; + deinterleaveTable[x] = (UINT16)i; + } + interleaveTablesBuilt = 1; + } +} + +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + +#define xor2bytesIntoInterleavedWords(even, odd, source, j) \ + i##j = interleaveTable[((const UINT16*)source)[j]]; \ + ((UINT8*)even)[j] ^= i##j & 0xFF; \ + ((UINT8*)odd)[j] ^= i##j >> 8; + +#define setInterleavedWordsInto2bytes(dest, even, odd, j) \ + d##j = deinterleaveTable[((even >> (j*8)) & 0xFF) ^ (((odd >> (j*8)) & 0xFF) << 8)]; \ + ((UINT16*)dest)[j] = d##j; + +#else // (PLATFORM_BYTE_ORDER == IS_BIG_ENDIAN) + +#define xor2bytesIntoInterleavedWords(even, odd, source, j) \ + i##j = interleaveTable[source[2*j] ^ ((UINT16)source[2*j+1] << 8)]; \ + *even ^= (i##j & 0xFF) << (j*8); \ + *odd ^= ((i##j >> 8) & 0xFF) << (j*8); + +#define setInterleavedWordsInto2bytes(dest, even, odd, j) \ + d##j = deinterleaveTable[((even >> (j*8)) & 0xFF) ^ (((odd >> (j*8)) & 0xFF) << 8)]; \ + dest[2*j] = d##j & 0xFF; \ + dest[2*j+1] = d##j >> 8; + +#endif // Endianness + +void xor8bytesIntoInterleavedWords(UINT32 *even, UINT32 *odd, const UINT8* source) +{ + UINT16 i0, i1, i2, i3; + + xor2bytesIntoInterleavedWords(even, odd, source, 0) + xor2bytesIntoInterleavedWords(even, odd, source, 1) + xor2bytesIntoInterleavedWords(even, odd, source, 2) + xor2bytesIntoInterleavedWords(even, odd, source, 3) +} + +#define xorLanesIntoState(laneCount, state, input) \ + { \ + int i; \ + for(i=0; i<(laneCount); i++) \ + xor8bytesIntoInterleavedWords(state+i*2, state+i*2+1, input+i*8); \ + } + +void setInterleavedWordsInto8bytes(UINT8* dest, UINT32 even, UINT32 odd) +{ + UINT16 d0, d1, d2, d3; + + setInterleavedWordsInto2bytes(dest, even, odd, 0) + setInterleavedWordsInto2bytes(dest, even, odd, 1) + setInterleavedWordsInto2bytes(dest, even, odd, 2) + setInterleavedWordsInto2bytes(dest, even, odd, 3) +} + +#define extractLanes(laneCount, state, data) \ + { \ + int i; \ + for(i=0; i<(laneCount); i++) \ + setInterleavedWordsInto8bytes(data+i*8, ((UINT32*)state)[i*2], ((UINT32*)state)[i*2+1]); \ + } + +#else // No interleaving tables + +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + +// Credit: Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 +#define xorInterleavedLE(rateInLanes, state, input) \ + { \ + const UINT32 * pI = (const UINT32 *)input; \ + UINT32 * pS = state; \ + UINT32 t, x0, x1; \ + int i; \ + for (i = (rateInLanes)-1; i >= 0; --i) \ + { \ + x0 = *(pI++); \ + t = (x0 ^ (x0 >> 1)) & 0x22222222UL; x0 = x0 ^ t ^ (t << 1); \ + t = (x0 ^ (x0 >> 2)) & 0x0C0C0C0CUL; x0 = x0 ^ t ^ (t << 2); \ + t = (x0 ^ (x0 >> 4)) & 0x00F000F0UL; x0 = x0 ^ t ^ (t << 4); \ + t = (x0 ^ (x0 >> 8)) & 0x0000FF00UL; x0 = x0 ^ t ^ (t << 8); \ + x1 = *(pI++); \ + t = (x1 ^ (x1 >> 1)) & 0x22222222UL; x1 = x1 ^ t ^ (t << 1); \ + t = (x1 ^ (x1 >> 2)) & 0x0C0C0C0CUL; x1 = x1 ^ t ^ (t << 2); \ + t = (x1 ^ (x1 >> 4)) & 0x00F000F0UL; x1 = x1 ^ t ^ (t << 4); \ + t = (x1 ^ (x1 >> 8)) & 0x0000FF00UL; x1 = x1 ^ t ^ (t << 8); \ + *(pS++) ^= (UINT16)x0 | (x1 << 16); \ + *(pS++) ^= (x0 >> 16) | (x1 & 0xFFFF0000); \ + } \ + } + +#define xorLanesIntoState(laneCount, state, input) \ + xorInterleavedLE(laneCount, state, input) + +#else // (PLATFORM_BYTE_ORDER == IS_BIG_ENDIAN) + +// Credit: Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 +UINT64 toInterleaving(UINT64 x) +{ + UINT64 t; + + t = (x ^ (x >> 1)) & 0x2222222222222222ULL; x = x ^ t ^ (t << 1); + t = (x ^ (x >> 2)) & 0x0C0C0C0C0C0C0C0CULL; x = x ^ t ^ (t << 2); + t = (x ^ (x >> 4)) & 0x00F000F000F000F0ULL; x = x ^ t ^ (t << 4); + t = (x ^ (x >> 8)) & 0x0000FF000000FF00ULL; x = x ^ t ^ (t << 8); + t = (x ^ (x >> 16)) & 0x00000000FFFF0000ULL; x = x ^ t ^ (t << 16); + + return x; +} + +void xor8bytesIntoInterleavedWords(UINT32* evenAndOdd, const UINT8* source) +{ + // This can be optimized + UINT64 sourceWord = + (UINT64)source[0] + ^ (((UINT64)source[1]) << 8) + ^ (((UINT64)source[2]) << 16) + ^ (((UINT64)source[3]) << 24) + ^ (((UINT64)source[4]) << 32) + ^ (((UINT64)source[5]) << 40) + ^ (((UINT64)source[6]) << 48) + ^ (((UINT64)source[7]) << 56); + UINT64 evenAndOddWord = toInterleaving(sourceWord); + evenAndOdd[0] ^= (UINT32)evenAndOddWord; + evenAndOdd[1] ^= (UINT32)(evenAndOddWord >> 32); +} + +#define xorLanesIntoState(laneCount, state, input) \ + { \ + int i; \ + for(i=0; i<(laneCount); i++) \ + xor8bytesIntoInterleavedWords(state+i*2, input+i*8); \ + } + +#endif // Endianness + +// Credit: Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 +UINT64 fromInterleaving(UINT64 x) +{ + UINT64 t; + + t = (x ^ (x >> 16)) & 0x00000000FFFF0000ULL; x = x ^ t ^ (t << 16); + t = (x ^ (x >> 8)) & 0x0000FF000000FF00ULL; x = x ^ t ^ (t << 8); + t = (x ^ (x >> 4)) & 0x00F000F000F000F0ULL; x = x ^ t ^ (t << 4); + t = (x ^ (x >> 2)) & 0x0C0C0C0C0C0C0C0CULL; x = x ^ t ^ (t << 2); + t = (x ^ (x >> 1)) & 0x2222222222222222ULL; x = x ^ t ^ (t << 1); + + return x; +} + +void setInterleavedWordsInto8bytes(UINT8* dest, UINT32* evenAndOdd) +{ +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + ((UINT64*)dest)[0] = fromInterleaving(*(UINT64*)evenAndOdd); +#else // (PLATFORM_BYTE_ORDER == IS_BIG_ENDIAN) + // This can be optimized + UINT64 evenAndOddWord = (UINT64)evenAndOdd[0] ^ ((UINT64)evenAndOdd[1] << 32); + UINT64 destWord = fromInterleaving(evenAndOddWord); + dest[0] = destWord & 0xFF; + dest[1] = (destWord >> 8) & 0xFF; + dest[2] = (destWord >> 16) & 0xFF; + dest[3] = (destWord >> 24) & 0xFF; + dest[4] = (destWord >> 32) & 0xFF; + dest[5] = (destWord >> 40) & 0xFF; + dest[6] = (destWord >> 48) & 0xFF; + dest[7] = (destWord >> 56) & 0xFF; +#endif // Endianness +} + +#define extractLanes(laneCount, state, data) \ + { \ + int i; \ + for(i=0; i<(laneCount); i++) \ + setInterleavedWordsInto8bytes(data+i*8, (UINT32*)state+i*2); \ + } + +#endif // With or without interleaving tables + +#if defined(_MSC_VER) +#define ROL32(a, offset) _rotl(a, offset) +#elif (defined (__arm__) && defined(__ARMCC_VERSION)) +#define ROL32(a, offset) __ror(a, 32-(offset)) +#else +#define ROL32(a, offset) ((((UINT32)a) << (offset)) ^ (((UINT32)a) >> (32-(offset)))) +#endif + +#include "KeccakF-1600-unrolling.macros" +#include "KeccakF-1600-32.macros" + +#if (UseSchedule == 3) + +#ifdef UseBebigokimisa +#error "No lane complementing with schedule 3." +#endif + +#if (Unrolling != 2) +#error "Only unrolling 2 is supported by schedule 3." +#endif + +void KeccakPermutationOnWords(UINT32 *state) +{ + rounds +} + +void KeccakPermutationOnWordsAfterXoring(UINT32 *state, const UINT8 *input, unsigned int laneCount) +{ + xorLanesIntoState(laneCount, state, input) + rounds +} + +#ifdef ProvideFast576 +void KeccakPermutationOnWordsAfterXoring576bits(UINT32 *state, const UINT8 *input) +{ + xorLanesIntoState(9, state, input) + rounds +} +#endif + +#ifdef ProvideFast832 +void KeccakPermutationOnWordsAfterXoring832bits(UINT32 *state, const UINT8 *input) +{ + xorLanesIntoState(13, state, input) + rounds +} +#endif + +#ifdef ProvideFast1024 +void KeccakPermutationOnWordsAfterXoring1024bits(UINT32 *state, const UINT8 *input) +{ + xorLanesIntoState(16, state, input) + rounds +} +#endif + +#ifdef ProvideFast1088 +void KeccakPermutationOnWordsAfterXoring1088bits(UINT32 *state, const UINT8 *input) +{ + xorLanesIntoState(17, state, input) + rounds +} +#endif + +#ifdef ProvideFast1152 +void KeccakPermutationOnWordsAfterXoring1152bits(UINT32 *state, const UINT8 *input) +{ + xorLanesIntoState(18, state, input) + rounds +} +#endif + +#ifdef ProvideFast1344 +void KeccakPermutationOnWordsAfterXoring1344bits(UINT32 *state, const UINT8 *input) +{ + xorLanesIntoState(21, state, input) + rounds +} +#endif + +#else // (Schedule != 3) + +void KeccakPermutationOnWords(UINT32 *state) +{ + declareABCDE +#if (Unrolling != 24) + unsigned int i; +#endif + + copyFromState(A, state) + rounds +} + +void KeccakPermutationOnWordsAfterXoring(UINT32 *state, const UINT8 *input, unsigned int laneCount) +{ + declareABCDE + unsigned int i; + + xorLanesIntoState(laneCount, state, input) + copyFromState(A, state) + rounds +} + +#ifdef ProvideFast576 +void KeccakPermutationOnWordsAfterXoring576bits(UINT32 *state, const UINT8 *input) +{ + declareABCDE + unsigned int i; + + xorLanesIntoState(9, state, input) + copyFromState(A, state) + rounds +} +#endif + +#ifdef ProvideFast832 +void KeccakPermutationOnWordsAfterXoring832bits(UINT32 *state, const UINT8 *input) +{ + declareABCDE + unsigned int i; + + xorLanesIntoState(13, state, input) + copyFromState(A, state) + rounds +} +#endif + +#ifdef ProvideFast1024 +void KeccakPermutationOnWordsAfterXoring1024bits(UINT32 *state, const UINT8 *input) +{ + declareABCDE + unsigned int i; + + xorLanesIntoState(16, state, input) + copyFromState(A, state) + rounds +} +#endif + +#ifdef ProvideFast1088 +void KeccakPermutationOnWordsAfterXoring1088bits(UINT32 *state, const UINT8 *input) +{ + declareABCDE + unsigned int i; + + xorLanesIntoState(17, state, input) + copyFromState(A, state) + rounds +} +#endif + +#ifdef ProvideFast1152 +void KeccakPermutationOnWordsAfterXoring1152bits(UINT32 *state, const UINT8 *input) +{ + declareABCDE + unsigned int i; + + xorLanesIntoState(18, state, input) + copyFromState(A, state) + rounds +} +#endif + +#ifdef ProvideFast1344 +void KeccakPermutationOnWordsAfterXoring1344bits(UINT32 *state, const UINT8 *input) +{ + declareABCDE + unsigned int i; + + xorLanesIntoState(21, state, input) + copyFromState(A, state) + rounds +} +#endif + +#endif + +void KeccakInitialize() +{ +#ifdef UseInterleaveTables + buildInterleaveTables(); +#endif +} + +void KeccakInitializeState(unsigned char *state) +{ + memset(state, 0, 200); +#ifdef UseBebigokimisa + ((UINT32*)state)[ 2] = ~(UINT32)0; + ((UINT32*)state)[ 3] = ~(UINT32)0; + ((UINT32*)state)[ 4] = ~(UINT32)0; + ((UINT32*)state)[ 5] = ~(UINT32)0; + ((UINT32*)state)[16] = ~(UINT32)0; + ((UINT32*)state)[17] = ~(UINT32)0; + ((UINT32*)state)[24] = ~(UINT32)0; + ((UINT32*)state)[25] = ~(UINT32)0; + ((UINT32*)state)[34] = ~(UINT32)0; + ((UINT32*)state)[35] = ~(UINT32)0; + ((UINT32*)state)[40] = ~(UINT32)0; + ((UINT32*)state)[41] = ~(UINT32)0; +#endif +} + +void KeccakPermutation(unsigned char *state) +{ + // We assume the state is always stored as interleaved 32-bit words + KeccakPermutationOnWords((UINT32*)state); +} + +#ifdef ProvideFast576 +void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data) +{ + KeccakPermutationOnWordsAfterXoring576bits((UINT32*)state, data); +} +#endif + +#ifdef ProvideFast832 +void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data) +{ + KeccakPermutationOnWordsAfterXoring832bits((UINT32*)state, data); +} +#endif + +#ifdef ProvideFast1024 +void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data) +{ + KeccakPermutationOnWordsAfterXoring1024bits((UINT32*)state, data); +} +#endif + +#ifdef ProvideFast1088 +void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data) +{ + KeccakPermutationOnWordsAfterXoring1088bits((UINT32*)state, data); +} +#endif + +#ifdef ProvideFast1152 +void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data) +{ + KeccakPermutationOnWordsAfterXoring1152bits((UINT32*)state, data); +} +#endif + +#ifdef ProvideFast1344 +void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data) +{ + KeccakPermutationOnWordsAfterXoring1344bits((UINT32*)state, data); +} +#endif + +void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int laneCount) +{ + KeccakPermutationOnWordsAfterXoring((UINT32*)state, data, laneCount); +} + +#ifdef ProvideFast1024 +void KeccakExtract1024bits(const unsigned char *state, unsigned char *data) +{ + extractLanes(16, state, data) +#ifdef UseBebigokimisa + ((UINT32*)data)[ 2] = ~((UINT32*)data)[ 2]; + ((UINT32*)data)[ 3] = ~((UINT32*)data)[ 3]; + ((UINT32*)data)[ 4] = ~((UINT32*)data)[ 4]; + ((UINT32*)data)[ 5] = ~((UINT32*)data)[ 5]; + ((UINT32*)data)[16] = ~((UINT32*)data)[16]; + ((UINT32*)data)[17] = ~((UINT32*)data)[17]; + ((UINT32*)data)[24] = ~((UINT32*)data)[24]; + ((UINT32*)data)[25] = ~((UINT32*)data)[25]; +#endif +} +#endif + +void KeccakExtract(const unsigned char *state, unsigned char *data, unsigned int laneCount) +{ + extractLanes(laneCount, state, data) +#ifdef UseBebigokimisa + if (laneCount > 1) { + ((UINT32*)data)[ 2] = ~((UINT32*)data)[ 2]; + ((UINT32*)data)[ 3] = ~((UINT32*)data)[ 3]; + if (laneCount > 2) { + ((UINT32*)data)[ 4] = ~((UINT32*)data)[ 4]; + ((UINT32*)data)[ 5] = ~((UINT32*)data)[ 5]; + if (laneCount > 8) { + ((UINT32*)data)[16] = ~((UINT32*)data)[16]; + ((UINT32*)data)[17] = ~((UINT32*)data)[17]; + if (laneCount > 12) { + ((UINT32*)data)[24] = ~((UINT32*)data)[24]; + ((UINT32*)data)[25] = ~((UINT32*)data)[25]; + if (laneCount > 17) { + ((UINT32*)data)[34] = ~((UINT32*)data)[34]; + ((UINT32*)data)[35] = ~((UINT32*)data)[35]; + if (laneCount > 20) { + ((UINT32*)data)[40] = ~((UINT32*)data)[40]; + ((UINT32*)data)[41] = ~((UINT32*)data)[41]; + } + } + } + } + } + } +#endif +} diff --git a/src/3rdparty/sha3/KeccakF-1600-opt64-settings.h b/src/3rdparty/sha3/KeccakF-1600-opt64-settings.h new file mode 100755 index 0000000000..8f16ada636 --- /dev/null +++ b/src/3rdparty/sha3/KeccakF-1600-opt64-settings.h @@ -0,0 +1,7 @@ +#define Unrolling 24 +#define UseBebigokimisa +//#define UseSSE +//#define UseOnlySIMD64 +//#define UseMMX +//#define UseSHLD +//#define UseXOP diff --git a/src/3rdparty/sha3/KeccakF-1600-opt64.c b/src/3rdparty/sha3/KeccakF-1600-opt64.c new file mode 100755 index 0000000000..9349f0366a --- /dev/null +++ b/src/3rdparty/sha3/KeccakF-1600-opt64.c @@ -0,0 +1,504 @@ +/* +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by the designers, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#include +#include "brg_endian.h" +#include "KeccakF-1600-opt64-settings.h" +#include "KeccakF-1600-interface.h" + +typedef unsigned char UINT8; +typedef unsigned long long int UINT64; + +#if defined(__GNUC__) +#define ALIGN __attribute__ ((aligned(32))) +#elif defined(_MSC_VER) +#define ALIGN __declspec(align(32)) +#else +#define ALIGN +#endif + +#if defined(UseSSE) + #include + typedef __m128i V64; + typedef __m128i V128; + typedef union { + V128 v128; + UINT64 v64[2]; + } V6464; + + #define ANDnu64(a, b) _mm_andnot_si128(a, b) + #define LOAD64(a) _mm_loadl_epi64((const V64 *)&(a)) + #define CONST64(a) _mm_loadl_epi64((const V64 *)&(a)) + #define ROL64(a, o) _mm_or_si128(_mm_slli_epi64(a, o), _mm_srli_epi64(a, 64-(o))) + #define STORE64(a, b) _mm_storel_epi64((V64 *)&(a), b) + #define XOR64(a, b) _mm_xor_si128(a, b) + #define XOReq64(a, b) a = _mm_xor_si128(a, b) + #define SHUFFLEBYTES128(a, b) _mm_shuffle_epi8(a, b) + + #define ANDnu128(a, b) _mm_andnot_si128(a, b) + #define LOAD6464(a, b) _mm_set_epi64((__m64)(a), (__m64)(b)) + #define CONST128(a) _mm_load_si128((const V128 *)&(a)) + #define LOAD128(a) _mm_load_si128((const V128 *)&(a)) + #define LOAD128u(a) _mm_loadu_si128((const V128 *)&(a)) + #define ROL64in128(a, o) _mm_or_si128(_mm_slli_epi64(a, o), _mm_srli_epi64(a, 64-(o))) + #define STORE128(a, b) _mm_store_si128((V128 *)&(a), b) + #define XOR128(a, b) _mm_xor_si128(a, b) + #define XOReq128(a, b) a = _mm_xor_si128(a, b) + #define GET64LOLO(a, b) _mm_unpacklo_epi64(a, b) + #define GET64HIHI(a, b) _mm_unpackhi_epi64(a, b) + #define COPY64HI2LO(a) _mm_shuffle_epi32(a, 0xEE) + #define COPY64LO2HI(a) _mm_shuffle_epi32(a, 0x44) + #define ZERO128() _mm_setzero_si128() + + #ifdef UseOnlySIMD64 + #include "KeccakF-1600-simd64.macros" + #else +ALIGN const UINT64 rho8_56[2] = {0x0605040302010007, 0x080F0E0D0C0B0A09}; + #include "KeccakF-1600-simd128.macros" + #endif + + #ifdef UseBebigokimisa + #error "UseBebigokimisa cannot be used in combination with UseSSE" + #endif +#elif defined(UseXOP) + #include + typedef __m128i V64; + typedef __m128i V128; + + #define LOAD64(a) _mm_loadl_epi64((const V64 *)&(a)) + #define CONST64(a) _mm_loadl_epi64((const V64 *)&(a)) + #define STORE64(a, b) _mm_storel_epi64((V64 *)&(a), b) + #define XOR64(a, b) _mm_xor_si128(a, b) + #define XOReq64(a, b) a = _mm_xor_si128(a, b) + + #define ANDnu128(a, b) _mm_andnot_si128(a, b) + #define LOAD6464(a, b) _mm_set_epi64((__m64)(a), (__m64)(b)) + #define CONST128(a) _mm_load_si128((const V128 *)&(a)) + #define LOAD128(a) _mm_load_si128((const V128 *)&(a)) + #define LOAD128u(a) _mm_loadu_si128((const V128 *)&(a)) + #define STORE128(a, b) _mm_store_si128((V128 *)&(a), b) + #define XOR128(a, b) _mm_xor_si128(a, b) + #define XOReq128(a, b) a = _mm_xor_si128(a, b) + #define ZERO128() _mm_setzero_si128() + + #define SWAP64(a) _mm_shuffle_epi32(a, 0x4E) + #define GET64LOLO(a, b) _mm_unpacklo_epi64(a, b) + #define GET64HIHI(a, b) _mm_unpackhi_epi64(a, b) + #define GET64LOHI(a, b) ((__m128i)_mm_blend_pd((__m128d)a, (__m128d)b, 2)) + #define GET64HILO(a, b) SWAP64(GET64LOHI(b, a)) + #define COPY64HI2LO(a) _mm_shuffle_epi32(a, 0xEE) + #define COPY64LO2HI(a) _mm_shuffle_epi32(a, 0x44) + + #define ROL6464same(a, o) _mm_roti_epi64(a, o) + #define ROL6464(a, r1, r2) _mm_rot_epi64(a, CONST128( rot_##r1##_##r2 )) +ALIGN const UINT64 rot_0_20[2] = { 0, 20}; +ALIGN const UINT64 rot_44_3[2] = {44, 3}; +ALIGN const UINT64 rot_43_45[2] = {43, 45}; +ALIGN const UINT64 rot_21_61[2] = {21, 61}; +ALIGN const UINT64 rot_14_28[2] = {14, 28}; +ALIGN const UINT64 rot_1_36[2] = { 1, 36}; +ALIGN const UINT64 rot_6_10[2] = { 6, 10}; +ALIGN const UINT64 rot_25_15[2] = {25, 15}; +ALIGN const UINT64 rot_8_56[2] = { 8, 56}; +ALIGN const UINT64 rot_18_27[2] = {18, 27}; +ALIGN const UINT64 rot_62_55[2] = {62, 55}; +ALIGN const UINT64 rot_39_41[2] = {39, 41}; + +#if defined(UseSimulatedXOP) + // For debugging purposes, when XOP is not available + #undef ROL6464 + #undef ROL6464same + #define ROL6464same(a, o) _mm_or_si128(_mm_slli_epi64(a, o), _mm_srli_epi64(a, 64-(o))) + V128 ROL6464(V128 a, int r0, int r1) + { + V128 a0 = ROL64(a, r0); + V128 a1 = COPY64HI2LO(ROL64(a, r1)); + return GET64LOLO(a0, a1); + } +#endif + + #include "KeccakF-1600-xop.macros" + + #ifdef UseBebigokimisa + #error "UseBebigokimisa cannot be used in combination with UseXOP" + #endif +#elif defined(UseMMX) + #include + typedef __m64 V64; + #define ANDnu64(a, b) _mm_andnot_si64(a, b) + + #if (defined(_MSC_VER) || defined (__INTEL_COMPILER)) + #define LOAD64(a) *(V64*)&(a) + #define CONST64(a) *(V64*)&(a) + #define STORE64(a, b) *(V64*)&(a) = b + #else + #define LOAD64(a) (V64)a + #define CONST64(a) (V64)a + #define STORE64(a, b) a = (UINT64)b + #endif + #define ROL64(a, o) _mm_or_si64(_mm_slli_si64(a, o), _mm_srli_si64(a, 64-(o))) + #define XOR64(a, b) _mm_xor_si64(a, b) + #define XOReq64(a, b) a = _mm_xor_si64(a, b) + + #include "KeccakF-1600-simd64.macros" + + #ifdef UseBebigokimisa + #error "UseBebigokimisa cannot be used in combination with UseMMX" + #endif +#else + #if defined(_MSC_VER) + #define ROL64(a, offset) _rotl64(a, offset) + #elif defined(UseSHLD) + #define ROL64(x,N) ({ \ + register UINT64 __out; \ + register UINT64 __in = x; \ + __asm__ ("shld %2,%0,%0" : "=r"(__out) : "0"(__in), "i"(N)); \ + __out; \ + }) + #else + #define ROL64(a, offset) ((((UINT64)a) << offset) ^ (((UINT64)a) >> (64-offset))) + #endif + + #include "KeccakF-1600-64.macros" +#endif + +#include "KeccakF-1600-unrolling.macros" + +void KeccakPermutationOnWords(UINT64 *state) +{ + declareABCDE +#if (Unrolling != 24) + unsigned int i; +#endif + + copyFromState(A, state) + rounds +#if defined(UseMMX) + _mm_empty(); +#endif +} + +void KeccakPermutationOnWordsAfterXoring(UINT64 *state, const UINT64 *input, unsigned int laneCount) +{ + declareABCDE +#if (Unrolling != 24) + unsigned int i; +#endif + unsigned int j; + + for(j=0; j> (8*i)) & 0xFF; +} + +#ifdef ProvideFast1024 +void KeccakExtract1024bits(const unsigned char *state, unsigned char *data) +{ +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + memcpy(data, state, 128); +#else + unsigned int i; + + for(i=0; i<16; i++) + fromWordToBytes(data+(i*8), ((const UINT64*)state)[i]); +#endif +#ifdef UseBebigokimisa + ((UINT64*)data)[ 1] = ~((UINT64*)data)[ 1]; + ((UINT64*)data)[ 2] = ~((UINT64*)data)[ 2]; + ((UINT64*)data)[ 8] = ~((UINT64*)data)[ 8]; + ((UINT64*)data)[12] = ~((UINT64*)data)[12]; +#endif +} +#endif + +void KeccakExtract(const unsigned char *state, unsigned char *data, unsigned int laneCount) +{ +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + memcpy(data, state, laneCount*8); +#else + unsigned int i; + + for(i=0; i 1) { + ((UINT64*)data)[ 1] = ~((UINT64*)data)[ 1]; + if (laneCount > 2) { + ((UINT64*)data)[ 2] = ~((UINT64*)data)[ 2]; + if (laneCount > 8) { + ((UINT64*)data)[ 8] = ~((UINT64*)data)[ 8]; + if (laneCount > 12) { + ((UINT64*)data)[12] = ~((UINT64*)data)[12]; + if (laneCount > 17) { + ((UINT64*)data)[17] = ~((UINT64*)data)[17]; + if (laneCount > 20) { + ((UINT64*)data)[20] = ~((UINT64*)data)[20]; + } + } + } + } + } + } +#endif +} diff --git a/src/3rdparty/sha3/KeccakF-1600-unrolling.macros b/src/3rdparty/sha3/KeccakF-1600-unrolling.macros new file mode 100755 index 0000000000..83c694ca48 --- /dev/null +++ b/src/3rdparty/sha3/KeccakF-1600-unrolling.macros @@ -0,0 +1,124 @@ +/* +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by the designers, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#if (Unrolling == 24) +#define rounds \ + prepareTheta \ + thetaRhoPiChiIotaPrepareTheta( 0, A, E) \ + thetaRhoPiChiIotaPrepareTheta( 1, E, A) \ + thetaRhoPiChiIotaPrepareTheta( 2, A, E) \ + thetaRhoPiChiIotaPrepareTheta( 3, E, A) \ + thetaRhoPiChiIotaPrepareTheta( 4, A, E) \ + thetaRhoPiChiIotaPrepareTheta( 5, E, A) \ + thetaRhoPiChiIotaPrepareTheta( 6, A, E) \ + thetaRhoPiChiIotaPrepareTheta( 7, E, A) \ + thetaRhoPiChiIotaPrepareTheta( 8, A, E) \ + thetaRhoPiChiIotaPrepareTheta( 9, E, A) \ + thetaRhoPiChiIotaPrepareTheta(10, A, E) \ + thetaRhoPiChiIotaPrepareTheta(11, E, A) \ + thetaRhoPiChiIotaPrepareTheta(12, A, E) \ + thetaRhoPiChiIotaPrepareTheta(13, E, A) \ + thetaRhoPiChiIotaPrepareTheta(14, A, E) \ + thetaRhoPiChiIotaPrepareTheta(15, E, A) \ + thetaRhoPiChiIotaPrepareTheta(16, A, E) \ + thetaRhoPiChiIotaPrepareTheta(17, E, A) \ + thetaRhoPiChiIotaPrepareTheta(18, A, E) \ + thetaRhoPiChiIotaPrepareTheta(19, E, A) \ + thetaRhoPiChiIotaPrepareTheta(20, A, E) \ + thetaRhoPiChiIotaPrepareTheta(21, E, A) \ + thetaRhoPiChiIotaPrepareTheta(22, A, E) \ + thetaRhoPiChiIota(23, E, A) \ + copyToState(state, A) +#elif (Unrolling == 12) +#define rounds \ + prepareTheta \ + for(i=0; i<24; i+=12) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+ 1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+ 2, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+ 3, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+ 4, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+ 5, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+ 6, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+ 7, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+ 8, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+ 9, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+10, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+11, E, A) \ + } \ + copyToState(state, A) +#elif (Unrolling == 8) +#define rounds \ + prepareTheta \ + for(i=0; i<24; i+=8) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+4, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+5, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+6, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+7, E, A) \ + } \ + copyToState(state, A) +#elif (Unrolling == 6) +#define rounds \ + prepareTheta \ + for(i=0; i<24; i+=6) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+4, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+5, E, A) \ + } \ + copyToState(state, A) +#elif (Unrolling == 4) +#define rounds \ + prepareTheta \ + for(i=0; i<24; i+=4) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ + } \ + copyToState(state, A) +#elif (Unrolling == 3) +#define rounds \ + prepareTheta \ + for(i=0; i<24; i+=3) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ + copyStateVariables(A, E) \ + } \ + copyToState(state, A) +#elif (Unrolling == 2) +#define rounds \ + prepareTheta \ + for(i=0; i<24; i+=2) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + } \ + copyToState(state, A) +#elif (Unrolling == 1) +#define rounds \ + prepareTheta \ + for(i=0; i<24; i++) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + copyStateVariables(A, E) \ + } \ + copyToState(state, A) +#else +#error "Unrolling is not correctly specified!" +#endif diff --git a/src/3rdparty/sha3/KeccakNISTInterface.c b/src/3rdparty/sha3/KeccakNISTInterface.c new file mode 100755 index 0000000000..5d92c74239 --- /dev/null +++ b/src/3rdparty/sha3/KeccakNISTInterface.c @@ -0,0 +1,81 @@ +/* +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by the designers, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#include +#include "KeccakNISTInterface.h" +#include "KeccakF-1600-interface.h" + +HashReturn Init(hashState *state, int hashbitlen) +{ + switch(hashbitlen) { + case 0: // Default parameters, arbitrary length output + InitSponge((spongeState*)state, 1024, 576); + break; + case 224: + InitSponge((spongeState*)state, 1152, 448); + break; + case 256: + InitSponge((spongeState*)state, 1088, 512); + break; + case 384: + InitSponge((spongeState*)state, 832, 768); + break; + case 512: + InitSponge((spongeState*)state, 576, 1024); + break; + default: + return BAD_HASHLEN; + } + state->fixedOutputLength = hashbitlen; + return SUCCESS; +} + +HashReturn Update(hashState *state, const BitSequence *data, DataLength databitlen) +{ + if ((databitlen % 8) == 0) + return Absorb((spongeState*)state, data, databitlen); + else { + HashReturn ret = Absorb((spongeState*)state, data, databitlen - (databitlen % 8)); + if (ret == SUCCESS) { + unsigned char lastByte; + // Align the last partial byte to the least significant bits + lastByte = data[databitlen/8] >> (8 - (databitlen % 8)); + return Absorb((spongeState*)state, &lastByte, databitlen % 8); + } + else + return ret; + } +} + +HashReturn Final(hashState *state, BitSequence *hashval) +{ + return Squeeze(state, hashval, state->fixedOutputLength); +} + +HashReturn Hash(int hashbitlen, const BitSequence *data, DataLength databitlen, BitSequence *hashval) +{ + hashState state; + HashReturn result; + + if ((hashbitlen != 224) && (hashbitlen != 256) && (hashbitlen != 384) && (hashbitlen != 512)) + return BAD_HASHLEN; // Only the four fixed output lengths available through this API + result = Init(&state, hashbitlen); + if (result != SUCCESS) + return result; + result = Update(&state, data, databitlen); + if (result != SUCCESS) + return result; + result = Final(&state, hashval); + return result; +} + diff --git a/src/3rdparty/sha3/KeccakNISTInterface.h b/src/3rdparty/sha3/KeccakNISTInterface.h new file mode 100755 index 0000000000..c6987d420b --- /dev/null +++ b/src/3rdparty/sha3/KeccakNISTInterface.h @@ -0,0 +1,70 @@ +/* +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by the designers, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#ifndef _KeccakNISTInterface_h_ +#define _KeccakNISTInterface_h_ + +#include "KeccakSponge.h" + +typedef unsigned char BitSequence; +typedef unsigned long long DataLength; +typedef enum { SUCCESS = 0, FAIL = 1, BAD_HASHLEN = 2 } HashReturn; + +typedef spongeState hashState; + +/** + * Function to initialize the state of the Keccak[r, c] sponge function. + * The rate r and capacity c values are determined from @a hashbitlen. + * @param state Pointer to the state of the sponge function to be initialized. + * @param hashbitlen The desired number of output bits, + * or 0 for Keccak[] with default parameters + * and arbitrarily-long output. + * @pre The value of hashbitlen must be one of 0, 224, 256, 384 and 512. + * @return SUCCESS if successful, BAD_HASHLEN if the value of hashbitlen is incorrect. + */ +HashReturn Init(hashState *state, int hashbitlen); +/** + * Function to give input data for the sponge function to absorb. + * @param state Pointer to the state of the sponge function initialized by Init(). + * @param data Pointer to the input data. + * When @a databitLen is not a multiple of 8, the last bits of data must be + * in the most significant bits of the last byte. + * @param databitLen The number of input bits provided in the input data. + * @pre In the previous call to Absorb(), databitLen was a multiple of 8. + * @return SUCCESS if successful, FAIL otherwise. + */ +HashReturn Update(hashState *state, const BitSequence *data, DataLength databitlen); +/** + * Function to squeeze output data from the sponge function. + * If @a hashbitlen was not 0 in the call to Init(), the number of output bits is equal to @a hashbitlen. + * If @a hashbitlen was 0 in the call to Init(), the output bits must be extracted using the Squeeze() function. + * @param state Pointer to the state of the sponge function initialized by Init(). + * @param hashval Pointer to the buffer where to store the output data. + * @return SUCCESS if successful, FAIL otherwise. + */ +HashReturn Final(hashState *state, BitSequence *hashval); +/** + * Function to compute a hash using the Keccak[r, c] sponge function. + * The rate r and capacity c values are determined from @a hashbitlen. + * @param hashbitlen The desired number of output bits. + * @param data Pointer to the input data. + * When @a databitLen is not a multiple of 8, the last bits of data must be + * in the most significant bits of the last byte. + * @param databitLen The number of input bits provided in the input data. + * @param hashval Pointer to the buffer where to store the output data. + * @pre The value of hashbitlen must be one of 224, 256, 384 and 512. + * @return SUCCESS if successful, BAD_HASHLEN if the value of hashbitlen is incorrect. + */ +HashReturn Hash(int hashbitlen, const BitSequence *data, DataLength databitlen, BitSequence *hashval); + +#endif diff --git a/src/3rdparty/sha3/KeccakSponge.c b/src/3rdparty/sha3/KeccakSponge.c new file mode 100755 index 0000000000..5939ba4177 --- /dev/null +++ b/src/3rdparty/sha3/KeccakSponge.c @@ -0,0 +1,266 @@ +/* +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by the designers, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#include +#include "KeccakSponge.h" +#include "KeccakF-1600-interface.h" +#ifdef KeccakReference +#include "displayIntermediateValues.h" +#endif + +int InitSponge(spongeState *state, unsigned int rate, unsigned int capacity) +{ + if (rate+capacity != 1600) + return 1; + if ((rate <= 0) || (rate >= 1600) || ((rate % 64) != 0)) + return 1; + KeccakInitialize(); + state->rate = rate; + state->capacity = capacity; + state->fixedOutputLength = 0; + KeccakInitializeState(state->state); + memset(state->dataQueue, 0, KeccakMaximumRateInBytes); + state->bitsInQueue = 0; + state->squeezing = 0; + state->bitsAvailableForSqueezing = 0; + + return 0; +} + +void AbsorbQueue(spongeState *state) +{ + // state->bitsInQueue is assumed to be equal to state->rate + #ifdef KeccakReference + displayBytes(1, "Block to be absorbed", state->dataQueue, state->rate/8); + #endif +#ifdef ProvideFast576 + if (state->rate == 576) + KeccakAbsorb576bits(state->state, state->dataQueue); + else +#endif +#ifdef ProvideFast832 + if (state->rate == 832) + KeccakAbsorb832bits(state->state, state->dataQueue); + else +#endif +#ifdef ProvideFast1024 + if (state->rate == 1024) + KeccakAbsorb1024bits(state->state, state->dataQueue); + else +#endif +#ifdef ProvideFast1088 + if (state->rate == 1088) + KeccakAbsorb1088bits(state->state, state->dataQueue); + else +#endif +#ifdef ProvideFast1152 + if (state->rate == 1152) + KeccakAbsorb1152bits(state->state, state->dataQueue); + else +#endif +#ifdef ProvideFast1344 + if (state->rate == 1344) + KeccakAbsorb1344bits(state->state, state->dataQueue); + else +#endif + KeccakAbsorb(state->state, state->dataQueue, state->rate/64); + state->bitsInQueue = 0; +} + +int Absorb(spongeState *state, const unsigned char *data, unsigned long long databitlen) +{ + unsigned long long i, j, wholeBlocks; + unsigned int partialBlock, partialByte; + const unsigned char *curData; + + if ((state->bitsInQueue % 8) != 0) + return 1; // Only the last call may contain a partial byte + if (state->squeezing) + return 1; // Too late for additional input + + i = 0; + while(i < databitlen) { + if ((state->bitsInQueue == 0) && (databitlen >= state->rate) && (i <= (databitlen-state->rate))) { + wholeBlocks = (databitlen-i)/state->rate; + curData = data+i/8; +#ifdef ProvideFast576 + if (state->rate == 576) { + for(j=0; jrate/8); + #endif + KeccakAbsorb576bits(state->state, curData); + } + } + else +#endif +#ifdef ProvideFast832 + if (state->rate == 832) { + for(j=0; jrate/8); + #endif + KeccakAbsorb832bits(state->state, curData); + } + } + else +#endif +#ifdef ProvideFast1024 + if (state->rate == 1024) { + for(j=0; jrate/8); + #endif + KeccakAbsorb1024bits(state->state, curData); + } + } + else +#endif +#ifdef ProvideFast1088 + if (state->rate == 1088) { + for(j=0; jrate/8); + #endif + KeccakAbsorb1088bits(state->state, curData); + } + } + else +#endif +#ifdef ProvideFast1152 + if (state->rate == 1152) { + for(j=0; jrate/8); + #endif + KeccakAbsorb1152bits(state->state, curData); + } + } + else +#endif +#ifdef ProvideFast1344 + if (state->rate == 1344) { + for(j=0; jrate/8); + #endif + KeccakAbsorb1344bits(state->state, curData); + } + } + else +#endif + { + for(j=0; jrate/8) { + #ifdef KeccakReference + displayBytes(1, "Block to be absorbed", curData, state->rate/8); + #endif + KeccakAbsorb(state->state, curData, state->rate/64); + } + } + i += wholeBlocks*state->rate; + } + else { + partialBlock = (unsigned int)(databitlen - i); + if (partialBlock+state->bitsInQueue > state->rate) + partialBlock = state->rate-state->bitsInQueue; + partialByte = partialBlock % 8; + partialBlock -= partialByte; + memcpy(state->dataQueue+state->bitsInQueue/8, data+i/8, partialBlock/8); + state->bitsInQueue += partialBlock; + i += partialBlock; + if (state->bitsInQueue == state->rate) + AbsorbQueue(state); + if (partialByte > 0) { + unsigned char mask = (1 << partialByte)-1; + state->dataQueue[state->bitsInQueue/8] = data[i/8] & mask; + state->bitsInQueue += partialByte; + i += partialByte; + } + } + } + return 0; +} + +void PadAndSwitchToSqueezingPhase(spongeState *state) +{ + // Note: the bits are numbered from 0=LSB to 7=MSB + if (state->bitsInQueue + 1 == state->rate) { + state->dataQueue[state->bitsInQueue/8 ] |= 1 << (state->bitsInQueue % 8); + AbsorbQueue(state); + memset(state->dataQueue, 0, state->rate/8); + } + else { + memset(state->dataQueue + (state->bitsInQueue+7)/8, 0, state->rate/8 - (state->bitsInQueue+7)/8); + state->dataQueue[state->bitsInQueue/8 ] |= 1 << (state->bitsInQueue % 8); + } + state->dataQueue[(state->rate-1)/8] |= 1 << ((state->rate-1) % 8); + AbsorbQueue(state); + + #ifdef KeccakReference + displayText(1, "--- Switching to squeezing phase ---"); + #endif +#ifdef ProvideFast1024 + if (state->rate == 1024) { + KeccakExtract1024bits(state->state, state->dataQueue); + state->bitsAvailableForSqueezing = 1024; + } + else +#endif + { + KeccakExtract(state->state, state->dataQueue, state->rate/64); + state->bitsAvailableForSqueezing = state->rate; + } + #ifdef KeccakReference + displayBytes(1, "Block available for squeezing", state->dataQueue, state->bitsAvailableForSqueezing/8); + #endif + state->squeezing = 1; +} + +int Squeeze(spongeState *state, unsigned char *output, unsigned long long outputLength) +{ + unsigned long long i; + unsigned int partialBlock; + + if (!state->squeezing) + PadAndSwitchToSqueezingPhase(state); + if ((outputLength % 8) != 0) + return 1; // Only multiple of 8 bits are allowed, truncation can be done at user level + + i = 0; + while(i < outputLength) { + if (state->bitsAvailableForSqueezing == 0) { + KeccakPermutation(state->state); +#ifdef ProvideFast1024 + if (state->rate == 1024) { + KeccakExtract1024bits(state->state, state->dataQueue); + state->bitsAvailableForSqueezing = 1024; + } + else +#endif + { + KeccakExtract(state->state, state->dataQueue, state->rate/64); + state->bitsAvailableForSqueezing = state->rate; + } + #ifdef KeccakReference + displayBytes(1, "Block available for squeezing", state->dataQueue, state->bitsAvailableForSqueezing/8); + #endif + } + partialBlock = state->bitsAvailableForSqueezing; + if ((unsigned long long)partialBlock > outputLength - i) + partialBlock = (unsigned int)(outputLength - i); + memcpy(output+i/8, state->dataQueue+(state->rate-state->bitsAvailableForSqueezing)/8, partialBlock/8); + state->bitsAvailableForSqueezing -= partialBlock; + i += partialBlock; + } + return 0; +} diff --git a/src/3rdparty/sha3/KeccakSponge.h b/src/3rdparty/sha3/KeccakSponge.h new file mode 100755 index 0000000000..df3d7971f8 --- /dev/null +++ b/src/3rdparty/sha3/KeccakSponge.h @@ -0,0 +1,76 @@ +/* +The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, +Michaël Peeters and Gilles Van Assche. For more information, feedback or +questions, please refer to our website: http://keccak.noekeon.org/ + +Implementation by the designers, +hereby denoted as "the implementer". + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#ifndef _KeccakSponge_h_ +#define _KeccakSponge_h_ + +#define KeccakPermutationSize 1600 +#define KeccakPermutationSizeInBytes (KeccakPermutationSize/8) +#define KeccakMaximumRate 1536 +#define KeccakMaximumRateInBytes (KeccakMaximumRate/8) + +#if defined(__GNUC__) +#define ALIGN __attribute__ ((aligned(32))) +#elif defined(_MSC_VER) +#define ALIGN __declspec(align(32)) +#else +#define ALIGN +#endif + +ALIGN typedef struct spongeStateStruct { + ALIGN unsigned char state[KeccakPermutationSizeInBytes]; + ALIGN unsigned char dataQueue[KeccakMaximumRateInBytes]; + unsigned int rate; + unsigned int capacity; + unsigned int bitsInQueue; + unsigned int fixedOutputLength; + int squeezing; + unsigned int bitsAvailableForSqueezing; +} spongeState; + +/** + * Function to initialize the state of the Keccak[r, c] sponge function. + * The sponge function is set to the absorbing phase. + * @param state Pointer to the state of the sponge function to be initialized. + * @param rate The value of the rate r. + * @param capacity The value of the capacity c. + * @pre One must have r+c=1600 and the rate a multiple of 64 bits in this implementation. + * @return Zero if successful, 1 otherwise. + */ +int InitSponge(spongeState *state, unsigned int rate, unsigned int capacity); +/** + * Function to give input data for the sponge function to absorb. + * @param state Pointer to the state of the sponge function initialized by InitSponge(). + * @param data Pointer to the input data. + * When @a databitLen is not a multiple of 8, the last bits of data must be + * in the least significant bits of the last byte. + * @param databitLen The number of input bits provided in the input data. + * @pre In the previous call to Absorb(), databitLen was a multiple of 8. + * @pre The sponge function must be in the absorbing phase, + * i.e., Squeeze() must not have been called before. + * @return Zero if successful, 1 otherwise. + */ +int Absorb(spongeState *state, const unsigned char *data, unsigned long long databitlen); +/** + * Function to squeeze output data from the sponge function. + * If the sponge function was in the absorbing phase, this function + * switches it to the squeezing phase. + * @param state Pointer to the state of the sponge function initialized by InitSponge(). + * @param output Pointer to the buffer where to store the output data. + * @param outputLength The number of output bits desired. + * It must be a multiple of 8. + * @return Zero if successful, 1 otherwise. + */ +int Squeeze(spongeState *state, unsigned char *output, unsigned long long outputLength); + +#endif diff --git a/src/3rdparty/sha3/brg_endian.h b/src/3rdparty/sha3/brg_endian.h new file mode 100755 index 0000000000..7226eb3bec --- /dev/null +++ b/src/3rdparty/sha3/brg_endian.h @@ -0,0 +1,142 @@ +/* + --------------------------------------------------------------------------- + Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved. + + LICENSE TERMS + + The redistribution and use of this software (with or without changes) + is allowed without the payment of fees or royalties provided that: + + 1. source code distributions include the above copyright notice, this + list of conditions and the following disclaimer; + + 2. binary distributions include the above copyright notice, this list + of conditions and the following disclaimer in their documentation; + + 3. the name of the copyright holder is not used to endorse products + built using this software without specific written permission. + + DISCLAIMER + + This software is provided 'as is' with no explicit or implied warranties + in respect of its properties, including, but not limited to, correctness + and/or fitness for purpose. + --------------------------------------------------------------------------- + Issue Date: 20/12/2007 + Changes for ARM 9/9/2010 +*/ + +#ifndef _BRG_ENDIAN_H +#define _BRG_ENDIAN_H + +#define IS_BIG_ENDIAN 4321 /* byte 0 is most significant (mc68k) */ +#define IS_LITTLE_ENDIAN 1234 /* byte 0 is least significant (i386) */ + +#if 0 +/* Include files where endian defines and byteswap functions may reside */ +#if defined( __sun ) +# include +#elif defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __NetBSD__ ) +# include +#elif defined( BSD ) && ( BSD >= 199103 ) || defined( __APPLE__ ) || \ + defined( __CYGWIN32__ ) || defined( __DJGPP__ ) || defined( __osf__ ) +# include +#elif defined( __linux__ ) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) +# if !defined( __MINGW32__ ) && !defined( _AIX ) +# include +# if !defined( __BEOS__ ) +# include +# endif +# endif +#endif +#endif + +/* Now attempt to set the define for platform byte order using any */ +/* of the four forms SYMBOL, _SYMBOL, __SYMBOL & __SYMBOL__, which */ +/* seem to encompass most endian symbol definitions */ + +#if defined( BIG_ENDIAN ) && defined( LITTLE_ENDIAN ) +# if defined( BYTE_ORDER ) && BYTE_ORDER == BIG_ENDIAN +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +# elif defined( BYTE_ORDER ) && BYTE_ORDER == LITTLE_ENDIAN +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +# endif +#elif defined( BIG_ENDIAN ) +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +#elif defined( LITTLE_ENDIAN ) +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +#endif + +#if defined( _BIG_ENDIAN ) && defined( _LITTLE_ENDIAN ) +# if defined( _BYTE_ORDER ) && _BYTE_ORDER == _BIG_ENDIAN +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +# elif defined( _BYTE_ORDER ) && _BYTE_ORDER == _LITTLE_ENDIAN +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +# endif +#elif defined( _BIG_ENDIAN ) +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +#elif defined( _LITTLE_ENDIAN ) +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +#endif + +#if defined( __BIG_ENDIAN ) && defined( __LITTLE_ENDIAN ) +# if defined( __BYTE_ORDER ) && __BYTE_ORDER == __BIG_ENDIAN +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +# elif defined( __BYTE_ORDER ) && __BYTE_ORDER == __LITTLE_ENDIAN +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +# endif +#elif defined( __BIG_ENDIAN ) +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +#elif defined( __LITTLE_ENDIAN ) +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +#endif + +#if defined( __BIG_ENDIAN__ ) && defined( __LITTLE_ENDIAN__ ) +# if defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __BIG_ENDIAN__ +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +# elif defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __LITTLE_ENDIAN__ +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +# endif +#elif defined( __BIG_ENDIAN__ ) +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +#elif defined( __LITTLE_ENDIAN__ ) +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +#endif + +/* if the platform byte order could not be determined, then try to */ +/* set this define using common machine defines */ +#if !defined(PLATFORM_BYTE_ORDER) + +#if defined( __alpha__ ) || defined( __alpha ) || defined( i386 ) || \ + defined( __i386__ ) || defined( _M_I86 ) || defined( _M_IX86 ) || \ + defined( __OS2__ ) || defined( sun386 ) || defined( __TURBOC__ ) || \ + defined( vax ) || defined( vms ) || defined( VMS ) || \ + defined( __VMS ) || defined( _M_X64 ) +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN + +#elif defined( AMIGA ) || defined( applec ) || defined( __AS400__ ) || \ + defined( _CRAY ) || defined( __hppa ) || defined( __hp9000 ) || \ + defined( ibm370 ) || defined( mc68000 ) || defined( m68k ) || \ + defined( __MRC__ ) || defined( __MVS__ ) || defined( __MWERKS__ ) || \ + defined( sparc ) || defined( __sparc) || defined( SYMANTEC_C ) || \ + defined( __VOS__ ) || defined( __TIGCC__ ) || defined( __TANDEM ) || \ + defined( THINK_C ) || defined( __VMCMS__ ) || defined( _AIX ) +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN + +#elif defined(__arm__) +# ifdef __BIG_ENDIAN +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +# else +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +# endif +#elif 1 /* **** EDIT HERE IF NECESSARY **** */ +# define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +#elif 0 /* **** EDIT HERE IF NECESSARY **** */ +# define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +#else +# error Please edit lines 132 or 134 in brg_endian.h to set the platform byte order +#endif + +#endif + +#endif -- cgit v1.2.3 From b5652df775efbd1c52eecee5f08e40e600e5d70b Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Fri, 21 Dec 2012 14:02:38 +0100 Subject: SSL: Implement session sharing and use it from QNetworkAccessManager This improves performance since a network round trip can be avoided. Change-Id: I1aaff7e48ef9638cb137de0f43942c3a4dd2884a Initial-patch-by: Markus Goetz Reviewed-by: Richard J. Moore --- src/network/access/qhttpnetworkconnection.cpp | 12 + src/network/access/qhttpnetworkconnection_p.h | 9 + .../access/qhttpnetworkconnectionchannel.cpp | 19 +- src/network/ssl/qsslconfiguration.cpp | 6 + src/network/ssl/qsslconfiguration.h | 2 + src/network/ssl/qsslconfiguration_p.h | 5 + src/network/ssl/qsslcontext.cpp | 306 +++++++++++++++++++++ src/network/ssl/qsslcontext_p.h | 88 ++++++ src/network/ssl/qsslsocket.cpp | 17 ++ src/network/ssl/qsslsocket_openssl.cpp | 243 +++------------- src/network/ssl/qsslsocket_openssl_p.h | 5 +- src/network/ssl/qsslsocket_openssl_symbols.cpp | 8 + src/network/ssl/qsslsocket_openssl_symbols_p.h | 4 + src/network/ssl/qsslsocket_p.h | 11 +- src/network/ssl/ssl.pri | 6 +- 15 files changed, 527 insertions(+), 214 deletions(-) create mode 100644 src/network/ssl/qsslcontext.cpp create mode 100644 src/network/ssl/qsslcontext_p.h (limited to 'src') diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index eec5cfa96d..509f8b3251 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -1224,6 +1224,18 @@ void QHttpNetworkConnection::setSslConfiguration(const QSslConfiguration &config d->channels[i].setSslConfiguration(config); } +QSharedPointer QHttpNetworkConnection::sslContext() +{ + Q_D(QHttpNetworkConnection); + return d->sslContext; +} + +void QHttpNetworkConnection::setSslContext(QSharedPointer context) +{ + Q_D(QHttpNetworkConnection); + d->sslContext = context; +} + void QHttpNetworkConnection::ignoreSslErrors(int channel) { Q_D(QHttpNetworkConnection); diff --git a/src/network/access/qhttpnetworkconnection_p.h b/src/network/access/qhttpnetworkconnection_p.h index 57d40bfcf2..956499ddab 100644 --- a/src/network/access/qhttpnetworkconnection_p.h +++ b/src/network/access/qhttpnetworkconnection_p.h @@ -62,6 +62,7 @@ #include #include #include +#include #include #include @@ -72,6 +73,8 @@ #ifndef QT_NO_HTTP #ifndef QT_NO_SSL +# include +# include # include # include #else @@ -124,6 +127,8 @@ public: void setSslConfiguration(const QSslConfiguration &config); void ignoreSslErrors(int channel = -1); void ignoreSslErrors(const QList &errors, int channel = -1); + QSharedPointer sslContext(); + void setSslContext(QSharedPointer context); #endif private: @@ -234,6 +239,10 @@ public: QList highPriorityQueue; QList lowPriorityQueue; +#ifndef QT_NO_SSL + QSharedPointer sslContext; +#endif + #ifndef QT_NO_BEARERMANAGEMENT QSharedPointer networkSession; #endif diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 38723a7032..4dfed762f5 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -622,6 +622,13 @@ bool QHttpNetworkConnectionChannel::ensureConnection() if (ssl) { #ifndef QT_NO_SSL QSslSocket *sslSocket = qobject_cast(socket); + + // check whether we can re-use an existing SSL session + // (meaning another socket in this connection has already + // performed a full handshake) + if (!connection->sslContext().isNull()) + QSslSocketPrivate::checkSettingSslContext(sslSocket, connection->sslContext()); + sslSocket->connectToHostEncrypted(connectHost, connectPort, QIODevice::ReadWrite, networkLayerPreference); if (ignoreAllSslErrors) sslSocket->ignoreSslErrors(); @@ -1065,7 +1072,17 @@ void QHttpNetworkConnectionChannel::_q_connected() // ### FIXME: if the server closes the connection unexpectedly, we shouldn't send the same broken request again! //channels[i].reconnectAttempts = 2; - if (!pendingEncrypt) { + if (pendingEncrypt) { +#ifndef QT_NO_SSL + if (connection->sslContext().isNull()) { + // this socket is making the 1st handshake for this connection, + // we need to set the SSL context so new sockets can reuse it + QSharedPointer socketSslContext = QSslSocketPrivate::sslContext(static_cast(socket)); + if (!socketSslContext.isNull()) + connection->setSslContext(socketSslContext); + } +#endif + } else { state = QHttpNetworkConnectionChannel::IdleState; if (!reply) connection->d_func()->dequeueRequest(socket); diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp index 0ae67b3c1f..145cd7be5d 100644 --- a/src/network/ssl/qsslconfiguration.cpp +++ b/src/network/ssl/qsslconfiguration.cpp @@ -584,4 +584,10 @@ void QSslConfiguration::setDefaultConfiguration(const QSslConfiguration &configu QSslConfigurationPrivate::setDefaultConfiguration(configuration); } +/*! \internal +*/ +bool QSslConfigurationPrivate::peerSessionWasShared(const QSslConfiguration &configuration) { + return configuration.d->peerSessionShared; + } + QT_END_NAMESPACE diff --git a/src/network/ssl/qsslconfiguration.h b/src/network/ssl/qsslconfiguration.h index 5bde5cb446..b1d24514f5 100644 --- a/src/network/ssl/qsslconfiguration.h +++ b/src/network/ssl/qsslconfiguration.h @@ -127,6 +127,8 @@ public: private: friend class QSslSocket; friend class QSslConfigurationPrivate; + friend class QSslSocketBackendPrivate; + friend class QSslContext; QSslConfiguration(QSslConfigurationPrivate *dd); QSharedDataPointer d; }; diff --git a/src/network/ssl/qsslconfiguration_p.h b/src/network/ssl/qsslconfiguration_p.h index 3e6e43361d..3acbdd5bef 100644 --- a/src/network/ssl/qsslconfiguration_p.h +++ b/src/network/ssl/qsslconfiguration_p.h @@ -84,11 +84,13 @@ public: peerVerifyMode(QSslSocket::AutoVerifyPeer), peerVerifyDepth(0), allowRootCertOnDemandLoading(true), + peerSessionShared(false), sslOptions(QSslConfigurationPrivate::defaultSslOptions) { } QSslCertificate peerCertificate; QList peerCertificateChain; + QSslCertificate localCertificate; QSslKey privateKey; @@ -100,6 +102,9 @@ public: QSslSocket::PeerVerifyMode peerVerifyMode; int peerVerifyDepth; bool allowRootCertOnDemandLoading; + bool peerSessionShared; + + Q_AUTOTEST_EXPORT static bool peerSessionWasShared(const QSslConfiguration &configuration); QSsl::SslOptions sslOptions; diff --git a/src/network/ssl/qsslcontext.cpp b/src/network/ssl/qsslcontext.cpp new file mode 100644 index 0000000000..4e0143253d --- /dev/null +++ b/src/network/ssl/qsslcontext.cpp @@ -0,0 +1,306 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtNetwork module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include +#include + +#include "private/qsslcontext_p.h" +#include "private/qsslsocket_p.h" +#include "private/qsslsocket_openssl_p.h" +#include "private/qsslsocket_openssl_symbols_p.h" + +QT_BEGIN_NAMESPACE + +// defined in qsslsocket_openssl.cpp: +extern int q_X509Callback(int ok, X509_STORE_CTX *ctx); +extern QString getErrorsFromOpenSsl(); + +QSslContext::QSslContext() + : ctx(0), + pkey(0), + session(0) +{ +} + +QSslContext::~QSslContext() +{ + if (ctx) + // This will decrement the reference count by 1 and free the context eventually when possible + q_SSL_CTX_free(ctx); + + if (pkey) + q_EVP_PKEY_free(pkey); + + if (session) + q_SSL_SESSION_free(session); +} + +QSslContext* QSslContext::fromConfiguration(QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading) +{ + QSslContext *sslContext = new QSslContext(); + sslContext->sslConfiguration = configuration; + sslContext->errorCode = QSslError::NoError; + + bool client = (mode == QSslSocket::SslClientMode); + + bool reinitialized = false; +init_context: + switch (sslContext->sslConfiguration.protocol()) { + case QSsl::SslV2: +#ifndef OPENSSL_NO_SSL2 + sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv2_client_method() : q_SSLv2_server_method()); +#else + sslContext->ctx = 0; // SSL 2 not supported by the system, but chosen deliberately -> error +#endif + break; + case QSsl::SslV3: + sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv3_client_method() : q_SSLv3_server_method()); + break; + case QSsl::SecureProtocols: // SslV2 will be disabled below + case QSsl::TlsV1SslV3: // SslV2 will be disabled below + case QSsl::AnyProtocol: + default: + sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method()); + break; + case QSsl::TlsV1_0: + sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_client_method() : q_TLSv1_server_method()); + break; + case QSsl::TlsV1_1: +#if OPENSSL_VERSION_NUMBER >= 0x10001000L + sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_1_client_method() : q_TLSv1_1_server_method()); +#else + sslContext->ctx = 0; // TLS 1.1 not supported by the system, but chosen deliberately -> error +#endif + break; + case QSsl::TlsV1_2: +#if OPENSSL_VERSION_NUMBER >= 0x10001000L + sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_2_client_method() : q_TLSv1_2_server_method()); +#else + sslContext->ctx = 0; // TLS 1.2 not supported by the system, but chosen deliberately -> error +#endif + break; + } + if (!sslContext->ctx) { + // After stopping Flash 10 the SSL library looses its ciphers. Try re-adding them + // by re-initializing the library. + if (!reinitialized) { + reinitialized = true; + if (q_SSL_library_init() == 1) + goto init_context; + } + + sslContext->errorStr = QSslSocket::tr("Error creating SSL context (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); + sslContext->errorCode = QSslError::UnspecifiedError; + return sslContext; + } + + // Enable bug workarounds. + long options = QSslSocketBackendPrivate::setupOpenSslOptions(configuration.protocol(), configuration.d->sslOptions); + q_SSL_CTX_set_options(sslContext->ctx, options); + +#if OPENSSL_VERSION_NUMBER >= 0x10000000L + // Tell OpenSSL to release memory early + // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html + if (q_SSLeay() >= 0x10000000L) + q_SSL_CTX_set_mode(sslContext->ctx, SSL_MODE_RELEASE_BUFFERS); +#endif + + // Initialize ciphers + QByteArray cipherString; + int first = true; + QList ciphers = sslContext->sslConfiguration.ciphers(); + if (ciphers.isEmpty()) + ciphers = QSslSocketPrivate::defaultCiphers(); + foreach (const QSslCipher &cipher, ciphers) { + if (first) + first = false; + else + cipherString.append(':'); + cipherString.append(cipher.name().toLatin1()); + } + + if (!q_SSL_CTX_set_cipher_list(sslContext->ctx, cipherString.data())) { + sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); + sslContext->errorCode = QSslError::UnspecifiedError; + return sslContext; + } + + // Add all our CAs to this store. + QList expiredCerts; + foreach (const QSslCertificate &caCertificate, sslContext->sslConfiguration.caCertificates()) { + // add expired certs later, so that the + // valid ones are used before the expired ones + if (caCertificate.expiryDate() < QDateTime::currentDateTime()) { + expiredCerts.append(caCertificate); + } else { + q_X509_STORE_add_cert(sslContext->ctx->cert_store, (X509 *)caCertificate.handle()); + } + } + + bool addExpiredCerts = true; +#if defined(Q_OS_MAC) && (MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_5) + //On Leopard SSL does not work if we add the expired certificates. + if (QSysInfo::MacintoshVersion == QSysInfo::MV_10_5) + addExpiredCerts = false; +#endif + // now add the expired certs + if (addExpiredCerts) { + foreach (const QSslCertificate &caCertificate, expiredCerts) { + q_X509_STORE_add_cert(sslContext->ctx->cert_store, reinterpret_cast(caCertificate.handle())); + } + } + + if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) { + // tell OpenSSL the directories where to look up the root certs on demand + QList unixDirs = QSslSocketPrivate::unixRootCertDirectories(); + for (int a = 0; a < unixDirs.count(); ++a) + q_SSL_CTX_load_verify_locations(sslContext->ctx, 0, unixDirs.at(a).constData()); + } + + // Register a custom callback to get all verification errors. + X509_STORE_set_verify_cb_func(sslContext->ctx->cert_store, q_X509Callback); + + if (!sslContext->sslConfiguration.localCertificate().isNull()) { + // Require a private key as well. + if (sslContext->sslConfiguration.privateKey().isNull()) { + sslContext->errorStr = QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); + sslContext->errorCode = QSslError::UnspecifiedError; + return sslContext; + } + + // Load certificate + if (!q_SSL_CTX_use_certificate(sslContext->ctx, (X509 *)sslContext->sslConfiguration.localCertificate().handle())) { + sslContext->errorStr = QSslSocket::tr("Error loading local certificate, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); + sslContext->errorCode = QSslError::UnspecifiedError; + return sslContext; + } + + if (configuration.d->privateKey.algorithm() == QSsl::Opaque) { + sslContext->pkey = reinterpret_cast(configuration.d->privateKey.handle()); + } else { + // Load private key + sslContext->pkey = q_EVP_PKEY_new(); + // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free. + // this lead to a memory leak. Now we use the *_set1_* functions which do not + // take ownership of the RSA/DSA key instance because the QSslKey already has ownership. + if (configuration.d->privateKey.algorithm() == QSsl::Rsa) + q_EVP_PKEY_set1_RSA(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); + else + q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); + } + + if (!q_SSL_CTX_use_PrivateKey(sslContext->ctx, sslContext->pkey)) { + sslContext->errorStr = QSslSocket::tr("Error loading private key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); + sslContext->errorCode = QSslError::UnspecifiedError; + return sslContext; + } + if (configuration.d->privateKey.algorithm() == QSsl::Opaque) + sslContext->pkey = 0; // Don't free the private key, it belongs to QSslKey + + // Check if the certificate matches the private key. + if (!q_SSL_CTX_check_private_key(sslContext->ctx)) { + sslContext->errorStr = QSslSocket::tr("Private key does not certify public key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); + sslContext->errorCode = QSslError::UnspecifiedError; + return sslContext; + } + } + + // Initialize peer verification. + if (sslContext->sslConfiguration.peerVerifyMode() == QSslSocket::VerifyNone) { + q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_NONE, 0); + } else { + q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_PEER, q_X509Callback); + } + + // Set verification depth. + if (sslContext->sslConfiguration.peerVerifyDepth() != 0) + q_SSL_CTX_set_verify_depth(sslContext->ctx, sslContext->sslConfiguration.peerVerifyDepth()); + + return sslContext; +} + +// Needs to be deleted by caller +SSL* QSslContext::createSsl() +{ + SSL* ssl = q_SSL_new(ctx); + q_SSL_clear(ssl); + + if (session) { + // Try to resume the last session we cached + if (!q_SSL_set_session(ssl, session)) { + qWarning("could not set SSL session"); + q_SSL_SESSION_free(session); + session = 0; + } + } + return ssl; +} + +// We cache exactly one session here +bool QSslContext::cacheSession(SSL* ssl) +{ + // dont cache the same session again + if (session && session == q_SSL_get_session(ssl)) + return true; + + // decrease refcount of currently stored session + // (this might happen if there are several concurrent handshakes in flight) + if (session) + q_SSL_SESSION_free(session); + + // cache the session the caller gave us and increase reference count + session = q_SSL_get1_session(ssl); + return (session != NULL); + +} + +QSslError::SslError QSslContext::error() const +{ + return errorCode; +} + +QString QSslContext::errorString() const +{ + return errorStr; +} + +QT_END_NAMESPACE diff --git a/src/network/ssl/qsslcontext_p.h b/src/network/ssl/qsslcontext_p.h new file mode 100644 index 0000000000..c8578d349e --- /dev/null +++ b/src/network/ssl/qsslcontext_p.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtNetwork module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QSSLCONTEXT_H +#define QSSLCONTEXT_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SSL + +class QSslContextPrivate; + +class QSslContext +{ +public: + + ~QSslContext(); + + static QSslContext* fromConfiguration(QSslSocket::SslMode mode, const QSslConfiguration &configuration, + bool allowRootCertOnDemandLoading); + + QSslError::SslError error() const; + QString errorString() const; + + SSL* createSsl(); + bool cacheSession(SSL*); // should be called when handshake completed + +protected: + QSslContext(); + +private: + SSL_CTX* ctx; + EVP_PKEY *pkey; + SSL_SESSION *session; + QSslError::SslError errorCode; + QString errorStr; + QSslConfiguration sslConfiguration; +}; + +#endif // QT_NO_SSL + +QT_END_NAMESPACE + +#endif // QSSLCONTEXT_H diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index cfc3c19bba..712ba7aa79 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -2406,6 +2406,23 @@ QList QSslSocketPrivate::unixRootCertDirectories() << "/opt/openssl/certs/"; // HP-UX } +/*! + \internal +*/ +void QSslSocketPrivate::checkSettingSslContext(QSslSocket* socket, QSharedPointer sslContext) +{ + if (socket->d_func()->sslContextPointer.isNull()) + socket->d_func()->sslContextPointer = sslContext; +} + +/*! + \internal +*/ +QSharedPointer QSslSocketPrivate::sslContext(QSslSocket *socket) +{ + return (socket) ? socket->d_func()->sslContextPointer : QSharedPointer(); +} + QT_END_NAMESPACE #include "moc_qsslsocket.cpp" diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index fd5e12fec3..894703acb7 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -141,6 +141,19 @@ private: }; Q_GLOBAL_STATIC(QOpenSslLocks, openssl_locks) +QString QSslSocketBackendPrivate::getErrorsFromOpenSsl() +{ + QString errorString; + unsigned long errNum; + while ((errNum = q_ERR_get_error())) { + if (! errorString.isEmpty()) + errorString.append(QLatin1String(", ")); + const char *error = q_ERR_error_string(errNum, NULL); + errorString.append(QString::fromLatin1(error)); // error is ascii according to man ERR_error_string + } + return errorString; +} + extern "C" { static void locking_function(int mode, int lockNumber, const char *, int) { @@ -160,8 +173,6 @@ static unsigned long id_function() QSslSocketBackendPrivate::QSslSocketBackendPrivate() : ssl(0), - ctx(0), - pkey(0), readBio(0), writeBio(0), session(0) @@ -225,7 +236,8 @@ struct QSslErrorList QList > errors; }; Q_GLOBAL_STATIC(QSslErrorList, _q_sslErrorList) -static int q_X509Callback(int ok, X509_STORE_CTX *ctx) + +int q_X509Callback(int ok, X509_STORE_CTX *ctx) { if (!ok) { // Store the error and at which depth the error was detected. @@ -296,191 +308,21 @@ bool QSslSocketBackendPrivate::initSslContext() { Q_Q(QSslSocket); - // Create and initialize SSL context. Accept SSLv2, SSLv3 and TLSv1_0. - bool client = (mode == QSslSocket::SslClientMode); - - bool reinitialized = false; - -init_context: - switch (configuration.protocol) { - case QSsl::SslV2: -#ifndef OPENSSL_NO_SSL2 - ctx = q_SSL_CTX_new(client ? q_SSLv2_client_method() : q_SSLv2_server_method()); -#else - ctx = 0; // SSL 2 not supported by the system, but chosen deliberately -> error -#endif - break; - case QSsl::SslV3: - ctx = q_SSL_CTX_new(client ? q_SSLv3_client_method() : q_SSLv3_server_method()); - break; - case QSsl::SecureProtocols: // SslV2 will be disabled below - case QSsl::TlsV1SslV3: // SslV2 will be disabled below - case QSsl::AnyProtocol: - default: - ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method()); - break; - case QSsl::TlsV1_0: - ctx = q_SSL_CTX_new(client ? q_TLSv1_client_method() : q_TLSv1_server_method()); - break; - case QSsl::TlsV1_1: -#if OPENSSL_VERSION_NUMBER >= 0x10001000L - ctx = q_SSL_CTX_new(client ? q_TLSv1_1_client_method() : q_TLSv1_1_server_method()); -#else - ctx = 0; // TLS 1.1 not supported by the system, but chosen deliberately -> error -#endif - break; - case QSsl::TlsV1_2: -#if OPENSSL_VERSION_NUMBER >= 0x10001000L - ctx = q_SSL_CTX_new(client ? q_TLSv1_2_client_method() : q_TLSv1_2_server_method()); -#else - ctx = 0; // TLS 1.2 not supported by the system, but chosen deliberately -> error -#endif - break; - } - if (!ctx) { - // After stopping Flash 10 the SSL library looses its ciphers. Try re-adding them - // by re-initializing the library. - if (!reinitialized) { - reinitialized = true; - if (q_SSL_library_init() == 1) - goto init_context; - } - - q->setErrorString(QSslSocket::tr("Error creating SSL context (%1)").arg(getErrorsFromOpenSsl())); - q->setSocketError(QAbstractSocket::SslInternalError); - emit q->error(QAbstractSocket::SslInternalError); - return false; - } - - // Enable bug workarounds. - long options = setupOpenSslOptions(configuration.protocol, configuration.sslOptions); - q_SSL_CTX_set_options(ctx, options); - -#if OPENSSL_VERSION_NUMBER >= 0x10000000L - // Tell OpenSSL to release memory early - // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html - if (q_SSLeay() >= 0x10000000L) - q_SSL_CTX_set_mode(ctx, SSL_MODE_RELEASE_BUFFERS); -#endif - - // Initialize ciphers - QByteArray cipherString; - int first = true; - QList ciphers = configuration.ciphers; - if (ciphers.isEmpty()) - ciphers = defaultCiphers(); - foreach (const QSslCipher &cipher, ciphers) { - if (first) - first = false; - else - cipherString.append(':'); - cipherString.append(cipher.name().toLatin1()); - } + // If no external context was set (e.g. bei QHttpNetworkConnection) we will create a default context + if (!sslContextPointer) + sslContextPointer = QSharedPointer( + QSslContext::fromConfiguration(mode, QSslConfiguration(&configuration), allowRootCertOnDemandLoading)); - if (!q_SSL_CTX_set_cipher_list(ctx, cipherString.data())) { - q->setErrorString(QSslSocket::tr("Invalid or empty cipher list (%1)").arg(getErrorsFromOpenSsl())); + if (sslContextPointer->error() != QSslError::NoError) { + q->setErrorString(sslContextPointer->errorString()); q->setSocketError(QAbstractSocket::SslInvalidUserDataError); emit q->error(QAbstractSocket::SslInvalidUserDataError); + sslContextPointer.clear(); // deletes the QSslContext return false; } - // Add all our CAs to this store. - QList expiredCerts; - foreach (const QSslCertificate &caCertificate, q->caCertificates()) { - // add expired certs later, so that the - // valid ones are used before the expired ones - if (caCertificate.expiryDate() < QDateTime::currentDateTime()) { - expiredCerts.append(caCertificate); - } else { - q_X509_STORE_add_cert(ctx->cert_store, reinterpret_cast(caCertificate.handle())); - } - } - - bool addExpiredCerts = true; -#if defined(Q_OS_MAC) && (MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_5) - //On Leopard SSL does not work if we add the expired certificates. - if (QSysInfo::MacintoshVersion == QSysInfo::MV_10_5) - addExpiredCerts = false; -#endif - // now add the expired certs - if (addExpiredCerts) { - foreach (const QSslCertificate &caCertificate, expiredCerts) { - q_X509_STORE_add_cert(ctx->cert_store, reinterpret_cast(caCertificate.handle())); - } - } - - if (s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) { - // tell OpenSSL the directories where to look up the root certs on demand - QList unixDirs = unixRootCertDirectories(); - for (int a = 0; a < unixDirs.count(); ++a) - q_SSL_CTX_load_verify_locations(ctx, 0, unixDirs.at(a).constData()); - } - - // Register a custom callback to get all verification errors. - X509_STORE_set_verify_cb_func(ctx->cert_store, q_X509Callback); - - if (!configuration.localCertificate.isNull()) { - // Require a private key as well. - if (configuration.privateKey.isNull()) { - q->setErrorString(QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(getErrorsFromOpenSsl())); - q->setSocketError(QAbstractSocket::SslInvalidUserDataError); - emit q->error(QAbstractSocket::SslInvalidUserDataError); - return false; - } - - // Load certificate - if (!q_SSL_CTX_use_certificate(ctx, reinterpret_cast(configuration.localCertificate.handle()))) { - q->setErrorString(QSslSocket::tr("Error loading local certificate, %1").arg(getErrorsFromOpenSsl())); - q->setSocketError(QAbstractSocket::SslInternalError); - emit q->error(QAbstractSocket::SslInternalError); - return false; - } - - if (configuration.privateKey.algorithm() == QSsl::Opaque) { - pkey = reinterpret_cast(configuration.privateKey.handle()); - } else { - // Load private key - pkey = q_EVP_PKEY_new(); - // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free. - // this lead to a memory leak. Now we use the *_set1_* functions which do not - // take ownership of the RSA/DSA key instance because the QSslKey already has ownership. - if (configuration.privateKey.algorithm() == QSsl::Rsa) - q_EVP_PKEY_set1_RSA(pkey, reinterpret_cast(configuration.privateKey.handle())); - else - q_EVP_PKEY_set1_DSA(pkey, reinterpret_cast(configuration.privateKey.handle())); - } - - if (!q_SSL_CTX_use_PrivateKey(ctx, pkey)) { - q->setErrorString(QSslSocket::tr("Error loading private key, %1").arg(getErrorsFromOpenSsl())); - q->setSocketError(QAbstractSocket::SslInternalError); - emit q->error(QAbstractSocket::SslInternalError); - return false; - } - if (configuration.privateKey.algorithm() == QSsl::Opaque) - pkey = 0; // Don't free the private key, it belongs to QSslKey - - // Check if the certificate matches the private key. - if (!q_SSL_CTX_check_private_key(ctx)) { - q->setErrorString(QSslSocket::tr("Private key does not certify public key, %1").arg(getErrorsFromOpenSsl())); - q->setSocketError(QAbstractSocket::SslInvalidUserDataError); - emit q->error(QAbstractSocket::SslInvalidUserDataError); - return false; - } - } - - // Initialize peer verification. - if (configuration.peerVerifyMode == QSslSocket::VerifyNone) { - q_SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); - } else { - q_SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, q_X509Callback); - } - - // Set verification depth. - if (configuration.peerVerifyDepth != 0) - q_SSL_CTX_set_verify_depth(ctx, configuration.peerVerifyDepth); - // Create and initialize SSL session - if (!(ssl = q_SSL_new(ctx))) { + if (!(ssl = sslContextPointer->createSsl())) { // ### Bad error code q->setErrorString(QSslSocket::tr("Error creating SSL session, %1").arg(getErrorsFromOpenSsl())); q->setSocketError(QAbstractSocket::SslInternalError); @@ -495,7 +337,7 @@ init_context: configuration.protocol == QSsl::TlsV1_2 || configuration.protocol == QSsl::SecureProtocols || configuration.protocol == QSsl::AnyProtocol) && - client && q_SSLeay() >= 0x00090806fL) { + mode == QSslSocket::SslClientMode && q_SSLeay() >= 0x00090806fL) { // Set server hostname on TLS extension. RFC4366 section 3.1 requires it in ACE format. QString tlsHostName = verificationPeerName.isEmpty() ? q->peerName() : verificationPeerName; if (tlsHostName.isEmpty()) @@ -512,7 +354,6 @@ init_context: #endif // Clear the session. - q_SSL_clear(ssl); errorList.clear(); // Initialize memory BIOs for encryption and decryption. @@ -542,14 +383,7 @@ void QSslSocketBackendPrivate::destroySslContext() q_SSL_free(ssl); ssl = 0; } - if (ctx) { - q_SSL_CTX_free(ctx); - ctx = 0; - } - if (pkey) { - q_EVP_PKEY_free(pkey); - pkey = 0; - } + sslContextPointer.clear(); } /*! @@ -1087,7 +921,7 @@ void QSslSocketBackendPrivate::transmit() break; } } while (ssl && readBytes > 0); - } while (ssl && ctx && transmitting); + } while (ssl && transmitting); } static QSslError _q_OpenSSL_to_QSslError(int errorCode, const QSslCertificate &cert) @@ -1293,7 +1127,6 @@ bool QSslSocketBackendPrivate::startHandshake() } } #endif - if (!checkSslErrors()) return false; } else { @@ -1517,7 +1350,7 @@ void QSslSocketBackendPrivate::disconnected() QSslCipher QSslSocketBackendPrivate::sessionCipher() const { - if (!ssl || !ctx) + if (!ssl) return QSslCipher(); #if OPENSSL_VERSION_NUMBER >= 0x10000000L // FIXME This is fairly evil, but needed to keep source level compatibility @@ -1537,6 +1370,15 @@ void QSslSocketBackendPrivate::continueHandshake() if (readBufferMaxSize) plainSocket->setReadBufferSize(readBufferMaxSize); + if (q_SSL_ctrl((ssl), SSL_CTRL_GET_SESSION_REUSED, 0, NULL)) + configuration.peerSessionShared = true; + + // Cache this SSL session inside the QSslContext + if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionTickets)) { + if (!sslContextPointer->cacheSession(ssl)) + sslContextPointer.clear(); // we could not cache the session + } + connectionEncrypted = true; emit q->encrypted(); if (autoStartHandshake && pendingClose) { @@ -1556,19 +1398,6 @@ QList QSslSocketBackendPrivate::STACKOFX509_to_QSslCertificates return certificates; } -QString QSslSocketBackendPrivate::getErrorsFromOpenSsl() -{ - QString errorString; - unsigned long errNum; - while((errNum = q_ERR_get_error())) { - if (! errorString.isEmpty()) - errorString.append(QLatin1String(", ")); - const char *error = q_ERR_error_string(errNum, NULL); - errorString.append(QString::fromLatin1(error)); // error is ascii according to man ERR_error_string - } - return errorString; -} - bool QSslSocketBackendPrivate::isMatchingHostname(const QSslCertificate &cert, const QString &peerName) { QStringList commonNameList = cert.subjectInfo(QSslCertificate::CommonName); diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h index 9acdcbd1c5..7d5fa0bd6d 100644 --- a/src/network/ssl/qsslsocket_openssl_p.h +++ b/src/network/ssl/qsslsocket_openssl_p.h @@ -61,7 +61,10 @@ #if defined(OCSP_RESPONSE) #undef OCSP_RESPONSE #endif +#if defined(X509_NAME) +#undef X509_NAME #endif +#endif // Q_OS_WIN #include #include @@ -101,8 +104,6 @@ public: bool initSslContext(); void destroySslContext(); SSL *ssl; - SSL_CTX *ctx; - EVP_PKEY *pkey; BIO *readBio; BIO *writeBio; SSL_SESSION *session; diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp index 5829170320..82f475078c 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols.cpp +++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp @@ -231,6 +231,10 @@ DEFINEFUNC3(void, SSL_set_bio, SSL *a, a, BIO *b, b, BIO *c, c, return, DUMMYARG DEFINEFUNC(void, SSL_set_accept_state, SSL *a, a, return, DUMMYARG) DEFINEFUNC(void, SSL_set_connect_state, SSL *a, a, return, DUMMYARG) DEFINEFUNC(int, SSL_shutdown, SSL *a, a, return -1, return) +DEFINEFUNC2(int, SSL_set_session, SSL* to, to, SSL_SESSION *session, session, return -1, return) +DEFINEFUNC(void, SSL_SESSION_free, SSL_SESSION *ses, ses, return, DUMMYARG) +DEFINEFUNC(SSL_SESSION*, SSL_get1_session, const SSL *ssl, ssl, return 0, return) +DEFINEFUNC(SSL_SESSION*, SSL_get_session, const SSL *ssl, ssl, return 0, return) #if OPENSSL_VERSION_NUMBER >= 0x10000000L #ifndef OPENSSL_NO_SSL2 DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) @@ -685,6 +689,10 @@ bool q_resolveOpenSslSymbols() RESOLVEFUNC(SSL_set_bio) RESOLVEFUNC(SSL_set_connect_state) RESOLVEFUNC(SSL_shutdown) + RESOLVEFUNC(SSL_set_session) + RESOLVEFUNC(SSL_SESSION_free) + RESOLVEFUNC(SSL_get1_session) + RESOLVEFUNC(SSL_get_session) RESOLVEFUNC(SSL_write) #ifndef OPENSSL_NO_SSL2 RESOLVEFUNC(SSLv2_client_method) diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h index 782725407e..b7daedcbb6 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols_p.h +++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h @@ -333,6 +333,10 @@ void q_SSL_set_bio(SSL *a, BIO *b, BIO *c); void q_SSL_set_accept_state(SSL *a); void q_SSL_set_connect_state(SSL *a); int q_SSL_shutdown(SSL *a); +int q_SSL_set_session(SSL *to, SSL_SESSION *session); +void q_SSL_SESSION_free(SSL_SESSION *ses); +SSL_SESSION *q_SSL_get1_session(const SSL *ssl); +SSL_SESSION *q_SSL_get_session(const SSL *ssl); #if OPENSSL_VERSION_NUMBER >= 0x10000000L const SSL_METHOD *q_SSLv2_client_method(); const SSL_METHOD *q_SSLv3_client_method(); diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h index 851dec5840..72117353ac 100644 --- a/src/network/ssl/qsslsocket_p.h +++ b/src/network/ssl/qsslsocket_p.h @@ -59,6 +59,7 @@ #include #include "qsslkey.h" #include "qsslconfiguration_p.h" +#include #include @@ -114,6 +115,7 @@ public: QSslConfigurationPrivate configuration; QList sslErrors; + QSharedPointer sslContextPointer; // if set, this hostname is used for certificate validation instead of the hostname // that was used for connecting to. @@ -121,6 +123,8 @@ public: bool allowRootCertOnDemandLoading; + static bool s_loadRootCertsOnDemand; + static bool supportsSsl(); static long sslLibraryVersionNumber(); static QString sslLibraryVersionString(); @@ -155,6 +159,9 @@ public: void createPlainSocket(QIODevice::OpenMode openMode); static void pauseSocketNotifiers(QSslSocket*); static void resumeSocketNotifiers(QSslSocket*); + // ### The 2 methods below should be made member methods once the QSslContext class is made public + static void checkSettingSslContext(QSslSocket*, QSharedPointer); + static QSharedPointer sslContext(QSslSocket *socket); bool isPaused() const; void _q_connectedSlot(); void _q_hostFoundSlot(); @@ -170,6 +177,8 @@ public: virtual void _q_caRootLoaded(QSslCertificate,QSslCertificate) = 0; #endif + static QList unixRootCertDirectories(); // used also by QSslContext + virtual qint64 peek(char *data, qint64 maxSize); virtual QByteArray peek(qint64 maxSize); @@ -192,8 +201,6 @@ private: static bool s_loadedCiphersAndCerts; protected: bool verifyErrorsHaveBeenIgnored(); - static bool s_loadRootCertsOnDemand; - static QList unixRootCertDirectories(); bool paused; }; diff --git a/src/network/ssl/ssl.pri b/src/network/ssl/ssl.pri index 8ebb4b29af..f5afb43759 100644 --- a/src/network/ssl/ssl.pri +++ b/src/network/ssl/ssl.pri @@ -14,7 +14,8 @@ contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) { ssl/qsslsocket_openssl_symbols_p.h \ ssl/qsslsocket_p.h \ ssl/qsslcertificateextension.h \ - ssl/qsslcertificateextension_p.h + ssl/qsslcertificateextension_p.h \ + ssl/qsslcontext_p.h SOURCES += ssl/qssl.cpp \ ssl/qsslcertificate.cpp \ ssl/qsslconfiguration.cpp \ @@ -24,7 +25,8 @@ contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) { ssl/qsslsocket.cpp \ ssl/qsslsocket_openssl.cpp \ ssl/qsslsocket_openssl_symbols.cpp \ - ssl/qsslcertificateextension.cpp + ssl/qsslcertificateextension.cpp \ + ssl/qsslcontext.cpp # Add optional SSL libs # Static linking of OpenSSL with msvc: -- cgit v1.2.3 From 574e5cf9c510fb28781c8006a1184ca158ee859f Mon Sep 17 00:00:00 2001 From: David Faure Date: Sat, 12 Jan 2013 10:12:47 +0100 Subject: Add qunsetenv(), next to qputenv() and friends. The existing tst_qgetputenv shows that qputenv with an empty value doesn't lead to the same result on Windows and on Unix, and there was no way to fully delete an env var on Unix (which is needed for some env vars where not-set and empty are different, such as TZ, see `man tzset`). This is also why qglobal has qEnvironmentVariableIsSet() vs qEnvironmentVariableIsEmpty(), on the getter side. Qt4's ifdefs around unsetenv in qapplication_x11.cpp show that this is needed within Qt too (although this particular startup notification code has to be re-imported into Qt5 still). Change-Id: I631c8cddbcf933d4b9008f11aefc59f5a3c7c866 Reviewed-by: Thiago Macieira --- src/corelib/global/qglobal.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/corelib/global/qglobal.h | 1 + 2 files changed, 38 insertions(+) (limited to 'src') diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 8bbc44978d..9cd19ccae9 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -2171,6 +2171,10 @@ bool qEnvironmentVariableIsSet(const char *varName) Q_DECL_NOEXCEPT \a varName. It will create the variable if it does not exist. It returns 0 if the variable could not be set. + Calling qputenv with an empty value removes the environment variable on + Windows, and makes it set (but empty) on Unix. Prefer using qunsetenv() + for fully portable behavior. + \note qputenv() was introduced because putenv() from the standard C library was deprecated in VC2005 (and later versions). qputenv() uses the replacement function in VC, and calls the standard C @@ -2197,6 +2201,39 @@ bool qputenv(const char *varName, const QByteArray& value) #endif } +/*! + \relates + + This function deletes the variable \a varName from the environment. + + Returns true on success. + + \since 5.1 + + \sa qputenv(), qgetenv() +*/ +bool qunsetenv(const char *varName) +{ +#if defined(_MSC_VER) && _MSC_VER >= 1400 + return _putenv_s(varName, "") == 0; +#elif (defined(_POSIX_VERSION) && (_POSIX_VERSION-0) >= 200112L) || defined(Q_OS_BSD4) + // POSIX.1-2001 and BSD have unsetenv + return unsetenv(varName) == 0; +#elif defined(Q_CC_MINGW) + // On mingw, putenv("var=") removes "var" from the environment + QByteArray buffer(varName); + buffer += '='; + return putenv(buffer.constData()) == 0; +#else + // Fallback to putenv("var=") which will insert an empty var into the + // environment and leak it + QByteArray buffer(varName); + buffer += '='; + char *envVar = qstrdup(buffer.constData()); + return putenv(envVar) == 0; +#endif +} + #if defined(Q_OS_UNIX) && !defined(QT_NO_THREAD) # if defined(Q_OS_INTEGRITY) && defined(__GHS_VERSION_NUMBER) && (__GHS_VERSION_NUMBER < 500) diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 4ee91d821c..73e849cb3e 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -934,6 +934,7 @@ Q_CORE_EXPORT QString qtTrId(const char *id, int n = -1); class QByteArray; Q_CORE_EXPORT QByteArray qgetenv(const char *varName); Q_CORE_EXPORT bool qputenv(const char *varName, const QByteArray& value); +Q_CORE_EXPORT bool qunsetenv(const char *varName); Q_CORE_EXPORT bool qEnvironmentVariableIsEmpty(const char *varName) Q_DECL_NOEXCEPT; Q_CORE_EXPORT bool qEnvironmentVariableIsSet(const char *varName) Q_DECL_NOEXCEPT; -- cgit v1.2.3 From 73e93f43003cfa48aebbce408d13400bdd88514d Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Tue, 5 Feb 2013 18:40:56 +0100 Subject: QtNetwork: give started threads more verbose naming i.e. make it obvious that they come from Qt. This helps when debugging and trying to differ user created threads from Qt threads. Change-Id: Idd6804246d6676b17cf15de6b644a5be629aa023 Reviewed-by: Rafael Roquetto Reviewed-by: Thiago Macieira --- src/network/access/qnetworkreplyhttpimpl.cpp | 4 ++-- src/network/bearer/qnetworkconfigmanager_p.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp index 480598918f..4699d7cd99 100644 --- a/src/network/access/qnetworkreplyhttpimpl.cpp +++ b/src/network/access/qnetworkreplyhttpimpl.cpp @@ -610,14 +610,14 @@ void QNetworkReplyHttpImplPrivate::postRequest() if (synchronous) { // A synchronous HTTP request uses its own thread thread = new QThread(); - thread->setObjectName(QStringLiteral("httpReply")); + thread->setObjectName(QStringLiteral("Qt HTTP synchronous thread")); QObject::connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); thread->start(); } else if (!managerPrivate->httpThread) { // We use the manager-global thread. // At some point we could switch to having multiple threads if it makes sense. managerPrivate->httpThread = new QThread(); - managerPrivate->httpThread->setObjectName(QStringLiteral("httpThread")); + managerPrivate->httpThread->setObjectName(QStringLiteral("Qt HTTP thread")); managerPrivate->httpThread->start(); thread = managerPrivate->httpThread; diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp index c710556f1c..192bf15b50 100644 --- a/src/network/bearer/qnetworkconfigmanager_p.cpp +++ b/src/network/bearer/qnetworkconfigmanager_p.cpp @@ -70,7 +70,7 @@ void QNetworkConfigurationManagerPrivate::initialize() { //Two stage construction, because we only want to do this heavyweight work for the winner of the Q_GLOBAL_STATIC race. bearerThread = new QThread(); - bearerThread->setObjectName(QStringLiteral("bearerThread")); + bearerThread->setObjectName(QStringLiteral("Qt bearer thread")); bearerThread->moveToThread(QCoreApplicationPrivate::mainThread()); // because cleanup() is called in main thread context. moveToThread(bearerThread); -- cgit v1.2.3 From 155a20628b91a7a2e24264feae12f4607574cb6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 7 Feb 2013 14:27:41 +0100 Subject: Use QPaintEngineEx to decide if font is too big for using the glyph cache Instead of having separate logic in the OpenGL paint engine. Change-Id: I9854328f784864e52ba1bbaafe5e1c5dda976231 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/opengl/qopenglpaintengine.cpp | 8 ++------ src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp index 68d9ad0a24..d248d2b8e5 100644 --- a/src/gui/opengl/qopenglpaintengine.cpp +++ b/src/gui/opengl/qopenglpaintengine.cpp @@ -1538,12 +1538,8 @@ namespace { bool QOpenGL2PaintEngineEx::shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &t) const { - float det = t.determinant(); - - // Don't try to cache huge fonts or vastly transformed fonts - return t.type() < QTransform::TxProject - && QPaintEngineEx::shouldDrawCachedGlyphs(fontEngine, t) - && det >= 0.25f && det <= 4.f; + // Don't try to cache vastly transformed fonts + return t.type() < QTransform::TxProject && QPaintEngineEx::shouldDrawCachedGlyphs(fontEngine, t); } void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyphType, diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index b6da578f26..fff1834499 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -628,12 +628,8 @@ bool QGL2PaintEngineEx::isNativePaintingActive() const { bool QGL2PaintEngineEx::shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &t) const { - float det = t.determinant(); - - // Don't try to cache huge fonts or vastly transformed fonts - return t.type() < QTransform::TxProject - && QPaintEngineEx::shouldDrawCachedGlyphs(fontEngine, t) - && det >= 0.25f && det <= 4.f; + // Don't try to cache vastly transformed fonts + return t.type() < QTransform::TxProject && QPaintEngineEx::shouldDrawCachedGlyphs(fontEngine, t); } void QGL2PaintEngineExPrivate::transferMode(EngineMode newMode) -- cgit v1.2.3 From f79cc2d66b16af40aef7af1803c3ba50c939b03f Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 5 Feb 2013 13:39:54 -0800 Subject: Fix crash-on-exit with some plugin systems (e.g. sensors) Don't assume that all entries in the QLibrary global data refer to libraries have have been loaded. There are three (not two) ways of getting entries there: 1) creating a QLibrary 2) using the static QLibrary::resolve 3) via plugins The unload code was meant to handle the first two cases only: libraries are still loaded at the end of the execution if the static methods were called or if QLibrary objects were leaked. It didn't handle the case of plugins being found by the directory scanner in QFactoryLoader but never loaded. Note it's possible that this assertion also happened with leaked QLibrary. Change-Id: Idcd7a551f96d8fe500cbca682f8014f5122b7584 Reviewed-by: Thomas McGuire Reviewed-by: Lars Knoll --- src/corelib/plugin/qlibrary.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp index 40b6b0d150..236832097a 100644 --- a/src/corelib/plugin/qlibrary.cpp +++ b/src/corelib/plugin/qlibrary.cpp @@ -373,17 +373,18 @@ inline void QLibraryStore::cleanup() for (; it != data->libraryMap.end(); ++it) { QLibraryPrivate *lib = it.value(); if (lib->libraryRefCount.load() == 1) { - Q_ASSERT(lib->pHnd); - Q_ASSERT(lib->libraryUnloadCount.load() > 0); - lib->libraryUnloadCount.store(1); + if (lib->libraryUnloadCount.load() > 0) { + Q_ASSERT(lib->pHnd); + lib->libraryUnloadCount.store(1); #ifdef __GLIBC__ - // glibc has a bug in unloading from global destructors - // see https://bugzilla.novell.com/show_bug.cgi?id=622977 - // and http://sourceware.org/bugzilla/show_bug.cgi?id=11941 - lib->unload(QLibraryPrivate::NoUnloadSys); + // glibc has a bug in unloading from global destructors + // see https://bugzilla.novell.com/show_bug.cgi?id=622977 + // and http://sourceware.org/bugzilla/show_bug.cgi?id=11941 + lib->unload(QLibraryPrivate::NoUnloadSys); #else - lib->unload(); + lib->unload(); #endif + } delete lib; it.value() = 0; } -- cgit v1.2.3 From c6cb4ddbf9401ca430a0c0fb0324040313131658 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 5 Feb 2013 15:46:28 +0100 Subject: qMetaTypeId(): deprecate the dummy parameter. It was there because of MSVC6 compatibility. It is not removed, because some code used to do qMetaTypeId(&myVariable); This was not a documented feature anyway, so it should not be user visible. Change-Id: I55327d7e73e67a6bb741817741d530d5a650291a Reviewed-by: Thiago Macieira Reviewed-by: Stephen Kelly --- src/corelib/kernel/qmetatype.h | 30 +++++++++++++++--------------- src/corelib/kernel/qvariant.h | 6 +++--- src/dbus/qdbusreply.h | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 76cee612ce..e4f1052673 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -631,30 +631,30 @@ void qRegisterMetaTypeStreamOperators(const char *typeName #endif // QT_NO_DATASTREAM template -inline Q_DECL_CONSTEXPR int qMetaTypeId( -#ifndef Q_QDOC - T * /* dummy */ = 0 -#endif -) +inline Q_DECL_CONSTEXPR int qMetaTypeId() { Q_STATIC_ASSERT_X(QMetaTypeId2::Defined, "Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system"); return QMetaTypeId2::qt_metatype_id(); } template -inline Q_DECL_CONSTEXPR int qRegisterMetaType( -#if !defined(Q_QDOC) && !defined(Q_CC_SUN) - T * dummy = 0 -#endif -) +inline Q_DECL_CONSTEXPR int qRegisterMetaType() { -#ifdef Q_CC_SUN - return qMetaTypeId(static_cast(0)); -#else - return qMetaTypeId(dummy); -#endif + return qMetaTypeId(); } +#if QT_DEPRECATED_SINCE(5, 1) && !defined(Q_QDOC) +// There used to be a T *dummy = 0 argument in Qt 4.0 to support MSVC6 +template +QT_DEPRECATED inline Q_DECL_CONSTEXPR int qMetaTypeId(T *) +{ return qMetaTypeId(); } +#ifndef Q_CC_SUN +template +QT_DEPRECATED inline Q_DECL_CONSTEXPR int qRegisterMetaType(T *) +{ return qRegisterMetaType(); } +#endif +#endif + template struct QMetaTypeIdQObject { diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 172ce29050..6f212f5000 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -484,7 +484,7 @@ public: template inline QVariant qVariantFromValue(const T &t) { - return QVariant(qMetaTypeId(reinterpret_cast(0)), &t, QTypeInfo::isPointer); + return QVariant(qMetaTypeId(), &t, QTypeInfo::isPointer); } template <> @@ -494,7 +494,7 @@ template inline void qVariantSetValue(QVariant &v, const T &t) { //if possible we reuse the current QVariant private - const uint type = qMetaTypeId(reinterpret_cast(0)); + const uint type = qMetaTypeId(); QVariant::Private &d = v.data_ptr(); if (v.isDetached() && (type == d.type || (type <= uint(QVariant::Char) && d.type <= uint(QVariant::Char)))) { d.type = type; @@ -568,7 +568,7 @@ namespace QtPrivate { { static T metaType(const QVariant &v) { - const int vid = qMetaTypeId(static_cast(0)); + const int vid = qMetaTypeId(); if (vid == v.userType()) return *reinterpret_cast(v.constData()); if (vid < int(QMetaType::User)) { diff --git a/src/dbus/qdbusreply.h b/src/dbus/qdbusreply.h index 1d73e61cc4..7b4a4ebcf8 100644 --- a/src/dbus/qdbusreply.h +++ b/src/dbus/qdbusreply.h @@ -69,7 +69,7 @@ public: } inline QDBusReply& operator=(const QDBusMessage &reply) { - QVariant data(qMetaTypeId(&m_data), reinterpret_cast(0)); + QVariant data(qMetaTypeId(), reinterpret_cast(0)); qDBusReplyFill(reply, m_error, data); m_data = qvariant_cast(data); return *this; -- cgit v1.2.3 From efbecc1a94250e6fc55b3c31bab18819d2a07ccf Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 18 Jan 2013 13:43:40 +0100 Subject: Allow actions in a QMenu to show their tooltips This introduces a property QMenu::toolTipsVisible with default value set to 'false'. Task-number: QTBUG-13663 Task-number: QTBUG-2362 Change-Id: I13079609e2a92adc71b2bbff3dd94494cde1f586 Reviewed-by: Jens Bache-Wiig Reviewed-by: Friedemann Kleint --- src/widgets/widgets/qmenu.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ src/widgets/widgets/qmenu.h | 4 ++++ src/widgets/widgets/qmenu_p.h | 4 +++- 3 files changed, 47 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 922a38b324..12b926e6de 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -67,6 +67,7 @@ #include "qwidgetaction.h" #include "qtoolbutton.h" #include "qpushbutton.h" +#include "qtooltip.h" #include #include #include @@ -2368,6 +2369,19 @@ QMenu::event(QEvent *e) if (d->currentAction) d->popupAction(d->currentAction, 0, false); break; +#ifndef QT_NO_TOOLTIP + case QEvent::ToolTip: + if (d->toolTipsVisible) { + const QHelpEvent *ev = static_cast(e); + if (const QAction *action = actionAt(ev->pos())) { + const QString toolTip = action->d_func()->tooltip; + if (!toolTip.isEmpty()) + QToolTip::showText(ev->globalPos(), toolTip, this); + return true; + } + } + break; +#endif // QT_NO_TOOLTIP #ifndef QT_NO_WHATSTHIS case QEvent::QueryWhatsThis: e->setAccepted(d->whatsThis.size()); @@ -3089,6 +3103,32 @@ void QMenu::setSeparatorsCollapsible(bool collapse) d->platformMenu->syncSeparatorsCollapsible(collapse); } +/*! + \property QMenu::toolTipsVisible + \since 5.1 + + \brief whether tooltips of menu actions should be visible + + This property specifies whether action menu entries show + their tooltip. + + By default, this property is false. +*/ +bool QMenu::toolTipsVisible() const +{ + Q_D(const QMenu); + return d->toolTipsVisible; +} + +void QMenu::setToolTipsVisible(bool visible) +{ + Q_D(QMenu); + if (d->toolTipsVisible == visible) + return; + + d->toolTipsVisible = visible; +} + QT_END_NAMESPACE // for private slots diff --git a/src/widgets/widgets/qmenu.h b/src/widgets/widgets/qmenu.h index 3f6661951d..7547c69a10 100644 --- a/src/widgets/widgets/qmenu.h +++ b/src/widgets/widgets/qmenu.h @@ -70,6 +70,7 @@ private: Q_PROPERTY(QString title READ title WRITE setTitle) Q_PROPERTY(QIcon icon READ icon WRITE setIcon) Q_PROPERTY(bool separatorsCollapsible READ separatorsCollapsible WRITE setSeparatorsCollapsible) + Q_PROPERTY(bool toolTipsVisible READ toolTipsVisible WRITE setToolTipsVisible) public: explicit QMenu(QWidget *parent = 0); @@ -139,6 +140,9 @@ public: bool separatorsCollapsible() const; void setSeparatorsCollapsible(bool collapse); + bool toolTipsVisible() const; + void setToolTipsVisible(bool visible); + Q_SIGNALS: void aboutToShow(); void aboutToHide(); diff --git a/src/widgets/widgets/qmenu_p.h b/src/widgets/widgets/qmenu_p.h index 0b8137cff3..27b4745951 100644 --- a/src/widgets/widgets/qmenu_p.h +++ b/src/widgets/widgets/qmenu_p.h @@ -84,7 +84,8 @@ class QMenuPrivate : public QWidgetPrivate Q_DECLARE_PUBLIC(QMenu) public: QMenuPrivate() : itemsDirty(0), maxIconWidth(0), tabWidth(0), ncols(0), - collapsibleSeparators(true), activationRecursionGuard(false), hasHadMouse(0), aboutToHide(0), motions(0), + collapsibleSeparators(true), toolTipsVisible(false), + activationRecursionGuard(false), hasHadMouse(0), aboutToHide(0), motions(0), currentAction(0), #ifdef QT_KEYPAD_NAVIGATION selectAction(0), @@ -123,6 +124,7 @@ public: QRect popupGeometry(int screen = -1) const; mutable uint ncols : 4; //4 bits is probably plenty uint collapsibleSeparators : 1; + uint toolTipsVisible : 1; QSize adjustMenuSizeForScreen(const QRect & screen); int getLastVisibleAction() const; -- cgit v1.2.3 From bfa1584162960a76170f941d490014f070e4a676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Fri, 8 Feb 2013 08:11:55 +0100 Subject: Added version() and setVersion() convenience API to QSurfaceFormat. This lets you write code like format.version() >= qMakePair(3, 2), and format.setVersion(4, 2) instead of format.setMajorVersion(4); format.setMinorVersion(2); Change-Id: Ib052091cc12865ea0d5db52e468ed6cd28f14840 Reviewed-by: Sean Harmer Reviewed-by: Gunnar Sletta --- src/gui/kernel/qsurfaceformat.cpp | 24 ++++++++++++++++++++++++ src/gui/kernel/qsurfaceformat.h | 4 ++++ 2 files changed, 28 insertions(+) (limited to 'src') diff --git a/src/gui/kernel/qsurfaceformat.cpp b/src/gui/kernel/qsurfaceformat.cpp index e7c93f4e48..6d42613727 100644 --- a/src/gui/kernel/qsurfaceformat.cpp +++ b/src/gui/kernel/qsurfaceformat.cpp @@ -583,6 +583,30 @@ int QSurfaceFormat::minorVersion() const return d->minor; } +/*! + Returns a QPair representing the OpenGL version. + + Useful for version checks, for example format.version() >= qMakePair(3, 2) +*/ +QPair QSurfaceFormat::version() const +{ + return qMakePair(d->major, d->minor); +} + +/*! + Sets the desired \a major and \a minor OpenGL versions. + + The default version is 2.0. +*/ +void QSurfaceFormat::setVersion(int major, int minor) +{ + if (d->minor != minor || d->major != major) { + detach(); + d->minor = minor; + d->major = major; + } +} + /*! Returns true if all the options of the two QSurfaceFormat objects \a a and \a b are equal. diff --git a/src/gui/kernel/qsurfaceformat.h b/src/gui/kernel/qsurfaceformat.h index 69dece0941..7c3c846df3 100644 --- a/src/gui/kernel/qsurfaceformat.h +++ b/src/gui/kernel/qsurfaceformat.h @@ -42,6 +42,7 @@ #define QSURFACEFORMAT_H #include +#include QT_BEGIN_NAMESPACE @@ -120,6 +121,9 @@ public: void setMinorVersion(int minorVersion); int minorVersion() const; + QPair version() const; + void setVersion(int major, int minor); + bool stereo() const; void setStereo(bool enable); -- cgit v1.2.3 From 9b90ab99141fba6730098178a456a48a6f2f68b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Dapena=20Paz?= Date: Tue, 8 Jan 2013 20:17:05 +0100 Subject: Add QWindowSystemInterface::handleFileOpen(const QUrl&) In some cases, the call to handleFileOpen may receive a non local URL. With previous API, there was no way to pass it to other layers. With this change, any platform plugin creating this event can directly pass a URL. Change-Id: Ibd7299ad6c09527e1db979840bd67726882efb9b Reviewed-by: Jose Dapena Paz Reviewed-by: Thiago Macieira Reviewed-by: Paul Olav Tvete --- src/gui/kernel/qguiapplication.cpp | 4 ++-- src/gui/kernel/qwindowsysteminterface.cpp | 6 ++++++ src/gui/kernel/qwindowsysteminterface.h | 1 + src/gui/kernel/qwindowsysteminterface_p.h | 7 +++++-- 4 files changed, 14 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 0de4ba7f4a..c73eeadbfb 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1674,10 +1674,10 @@ void QGuiApplicationPrivate::processCloseEvent(QWindowSystemInterfacePrivate::Cl void QGuiApplicationPrivate::processFileOpenEvent(QWindowSystemInterfacePrivate::FileOpenEvent *e) { - if (e->fileName.isEmpty()) + if (e->url.isEmpty()) return; - QFileOpenEvent event(e->fileName); + QFileOpenEvent event(e->url); QGuiApplication::sendSpontaneousEvent(qApp, &event); } diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 27bb4bae00..92434d1181 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -575,6 +575,12 @@ void QWindowSystemInterface::handleFileOpenEvent(const QString& fileName) QGuiApplicationPrivate::processWindowSystemEvent(&e); } +void QWindowSystemInterface::handleFileOpenEvent(const QUrl &url) +{ + QWindowSystemInterfacePrivate::FileOpenEvent e(url); + QGuiApplicationPrivate::processWindowSystemEvent(&e); +} + void QWindowSystemInterface::handleTabletEvent(QWindow *w, ulong timestamp, bool down, const QPointF &local, const QPointF &global, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, qint64 uid, diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h index 7582f092a3..72bebe19fe 100644 --- a/src/gui/kernel/qwindowsysteminterface.h +++ b/src/gui/kernel/qwindowsysteminterface.h @@ -158,6 +158,7 @@ public: static void handleThemeChange(QWindow *tlw); static void handleFileOpenEvent(const QString& fileName); + static void handleFileOpenEvent(const QUrl &url); static void handleTabletEvent(QWindow *w, ulong timestamp, bool down, const QPointF &local, const QPointF &global, int device, int pointerType, qreal pressure, int xTilt, int yTilt, diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h index 6c12877035..d0b728ec4d 100644 --- a/src/gui/kernel/qwindowsysteminterface_p.h +++ b/src/gui/kernel/qwindowsysteminterface_p.h @@ -285,9 +285,12 @@ public: class FileOpenEvent : public WindowSystemEvent { public: FileOpenEvent(const QString& fileName) - : WindowSystemEvent(FileOpen), fileName(fileName) + : WindowSystemEvent(FileOpen), url(QUrl::fromLocalFile(fileName)) { } - QString fileName; + FileOpenEvent(const QUrl &url) + : WindowSystemEvent(FileOpen), url(url) + { } + QUrl url; }; class TabletEvent : public InputEvent { -- cgit v1.2.3 From 2e9caa8942a2c4938385960c6b92dee629e78922 Mon Sep 17 00:00:00 2001 From: Marcel Krems Date: Thu, 7 Feb 2013 05:24:52 +0100 Subject: SSL: Use correct signature for SSL_get1_session MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes a compilation error with GCC 4.7 which was introduced in b5652df775efbd1c52eecee5f08e40e600e5d70b In function ‘SSL_SESSION* q_SSL_get1_session(const SSL*)’: invalid conversion from ‘const SSL* {aka const ssl_st*}’ to ‘SSL* {aka ssl_st*}’ [-fpermissive] Change-Id: I909f7fb4295b2019283a7af66a038d4711e5f7cb Reviewed-by: Thiago Macieira Reviewed-by: Peter Hartmann --- src/network/ssl/qsslsocket_openssl_symbols.cpp | 2 +- src/network/ssl/qsslsocket_openssl_symbols_p.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp index 82f475078c..31cfa2d00a 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols.cpp +++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp @@ -233,7 +233,7 @@ DEFINEFUNC(void, SSL_set_connect_state, SSL *a, a, return, DUMMYARG) DEFINEFUNC(int, SSL_shutdown, SSL *a, a, return -1, return) DEFINEFUNC2(int, SSL_set_session, SSL* to, to, SSL_SESSION *session, session, return -1, return) DEFINEFUNC(void, SSL_SESSION_free, SSL_SESSION *ses, ses, return, DUMMYARG) -DEFINEFUNC(SSL_SESSION*, SSL_get1_session, const SSL *ssl, ssl, return 0, return) +DEFINEFUNC(SSL_SESSION*, SSL_get1_session, SSL *ssl, ssl, return 0, return) DEFINEFUNC(SSL_SESSION*, SSL_get_session, const SSL *ssl, ssl, return 0, return) #if OPENSSL_VERSION_NUMBER >= 0x10000000L #ifndef OPENSSL_NO_SSL2 diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h index b7daedcbb6..8d8fda888e 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols_p.h +++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h @@ -335,7 +335,7 @@ void q_SSL_set_connect_state(SSL *a); int q_SSL_shutdown(SSL *a); int q_SSL_set_session(SSL *to, SSL_SESSION *session); void q_SSL_SESSION_free(SSL_SESSION *ses); -SSL_SESSION *q_SSL_get1_session(const SSL *ssl); +SSL_SESSION *q_SSL_get1_session(SSL *ssl); SSL_SESSION *q_SSL_get_session(const SSL *ssl); #if OPENSSL_VERSION_NUMBER >= 0x10000000L const SSL_METHOD *q_SSLv2_client_method(); -- cgit v1.2.3 From 916f0ff663f7915387085911ceb7e2c704833e4f Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Fri, 8 Feb 2013 17:48:05 +0100 Subject: QUrl effective TLDs: update table and split into chunks of 64K The table is there to know which domains are allowed to set cookies and which are not. There are more than 2000 new entries since the list has last been generated. The split to 64K chunks was made because this is the hard limit for strings in Visual Studio. Change-Id: I511aec062af673555e9a69442c055f75bdcd1606 Reviewed-by: Thiago Macieira --- src/corelib/io/qtldurl.cpp | 18 +- src/corelib/io/qurltlds_p.h | 15901 +++++++++++++++++++++++++----------------- 2 files changed, 9702 insertions(+), 6217 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qtldurl.cpp b/src/corelib/io/qtldurl.cpp index 436e6a4568..dd4301e9f1 100644 --- a/src/corelib/io/qtldurl.cpp +++ b/src/corelib/io/qtldurl.cpp @@ -51,12 +51,22 @@ QT_BEGIN_NAMESPACE static bool containsTLDEntry(const QString &entry) { int index = qt_hash(entry) % tldCount; - int currentDomainIndex = tldIndices[index]; - while (currentDomainIndex < tldIndices[index+1]) { - QString currentEntry = QString::fromUtf8(tldData + currentDomainIndex); + + // select the right chunk from the big table + short chunk = 0; + uint chunkIndex = tldIndices[index], offset = 0; + while (tldIndices[index] >= tldChunks[chunk] && chunk < tldChunkCount) { + chunkIndex -= tldChunks[chunk]; + offset += tldChunks[chunk]; + chunk++; + } + + // check all the entries from the given index + while (chunkIndex < tldIndices[index+1] - offset) { + QString currentEntry = QString::fromUtf8(tldData[chunk] + chunkIndex); if (currentEntry == entry) return true; - currentDomainIndex += qstrlen(tldData + currentDomainIndex) + 1; // +1 for the ending \0 + chunkIndex += qstrlen(tldData[chunk] + chunkIndex) + 1; // +1 for the ending \0 } return false; } diff --git a/src/corelib/io/qurltlds_p.h b/src/corelib/io/qurltlds_p.h index f4f525ced7..dfc69f500b 100644 --- a/src/corelib/io/qurltlds_p.h +++ b/src/corelib/io/qurltlds_p.h @@ -59,6423 +59,9898 @@ QT_BEGIN_NAMESPACE // for instructions see the program at // util/corelib/qurl-generateTLDs -static const quint16 tldCount = 3949; -static const quint16 tldIndices[] = { +static const quint16 tldCount = 6063; +static const quint32 tldIndices[] = { 0, -7, -14, -14, -20, -51, -61, -93, -100, -100, -116, -159, -167, -180, -180, -193, -234, -234, -234, -255, -255, -255, -280, -280, +13, +19, +36, +66, +90, +90, +113, +130, +151, +151, +151, +168, +179, +196, +203, +222, +222, +237, +237, +251, +258, 287, 287, -295, -303, -313, -326, -326, -380, -393, -413, -419, -419, -419, -424, -438, -438, -469, -515, -515, -515, -534, -534, -557, -557, -557, -557, -572, -572, -572, -579, -587, -597, -612, -612, -624, -636, -648, -662, -687, -709, -714, -740, -766, -789, -789, -805, -805, -810, -815, -815, -824, -824, -831, -857, -869, -891, -891, -916, -916, -916, -927, -934, -964, -971, +287, +287, +287, +314, +336, +352, +352, +352, +369, +369, +377, +396, +396, +396, +405, +405, +431, +431, +442, +451, +485, +495, +509, +509, +509, +524, +524, +533, +533, +552, +552, +552, +552, +577, +577, +593, +593, +593, +593, +593, +593, +622, +643, +643, +658, +691, +703, +715, +731, +731, +747, +781, +793, +793, +814, +826, +851, +851, +866, +885, +914, +929, +929, +929, +941, +947, +947, 987, 987, 987, -1008, -1008, -1016, -1016, -1030, -1030, -1052, -1075, -1075, -1082, -1087, -1115, -1135, -1135, -1135, -1172, -1178, -1178, -1178, -1202, -1207, -1220, -1220, -1266, -1266, -1266, -1266, -1272, -1290, -1316, -1316, -1332, -1332, -1339, -1339, -1352, -1352, -1389, -1389, -1408, -1415, -1437, -1444, -1489, -1489, -1502, -1502, -1512, -1518, -1539, -1555, -1562, +1003, +1061, +1080, +1080, +1080, +1104, +1104, +1138, +1148, +1148, +1148, +1148, +1160, +1179, +1179, +1208, +1208, +1225, +1225, +1273, +1273, +1291, +1291, +1304, +1304, +1304, +1304, +1318, +1335, +1335, +1335, +1349, +1349, +1364, +1364, +1364, +1364, +1402, +1402, +1402, +1402, +1430, +1455, +1506, +1537, +1537, +1559, +1573, +1578, +1578, +1578, +1578, 1584, -1598, -1607, -1607, -1607, -1632, -1652, -1652, -1658, -1658, -1675, +1592, +1599, +1599, +1599, +1606, +1641, +1641, +1663, +1663, +1663, +1663, +1663, 1682, -1709, -1733, -1748, -1776, -1783, -1783, -1790, -1797, -1826, -1850, -1850, -1856, -1880, -1887, -1901, -1921, -1947, -1961, -1967, -1967, -1967, -1972, -1986, -1986, -1986, -2009, -2029, -2029, -2047, -2061, -2075, -2075, -2075, -2075, -2075, -2075, -2082, -2082, -2124, -2124, -2129, -2162, -2162, -2162, -2236, -2256, -2263, -2276, -2283, -2313, -2313, -2347, -2380, -2387, -2387, -2387, -2431, -2438, -2445, -2452, -2459, -2459, -2469, -2490, -2516, -2527, -2540, -2540, -2586, -2610, -2630, -2630, -2653, -2660, -2669, -2693, -2693, -2710, -2710, -2719, -2719, -2734, -2740, -2740, -2753, -2753, -2763, -2770, -2775, -2782, -2789, -2802, -2820, -2827, -2827, -2841, -2855, -2855, -2865, -2872, -2884, -2884, -2919, -2937, -2955, -2962, -3012, -3042, -3073, -3083, -3083, -3100, -3105, -3112, -3131, -3131, -3166, -3180, -3187, -3194, -3211, -3218, -3223, -3233, -3249, -3259, -3268, -3314, -3314, -3324, -3324, -3336, -3336, -3336, +1682, +1689, +1689, +1689, +1715, +1731, +1731, +1741, +1761, +1777, +1777, +1777, +1777, +1777, +1796, +1796, +1824, +1847, +1847, +1854, +1876, +1876, +1876, +1908, +1908, +1925, +1952, +1974, +1991, +2010, +2010, +2010, +2010, +2028, +2048, +2066, +2066, +2091, +2119, +2151, +2151, +2151, +2175, +2175, +2175, +2205, +2219, +2232, +2281, +2281, +2281, +2302, +2311, +2327, +2327, +2327, +2340, +2340, +2340, +2368, +2386, +2404, +2414, +2423, +2423, +2423, +2423, +2443, +2443, +2450, +2487, +2487, +2487, +2487, +2494, +2509, +2509, +2509, +2535, +2545, +2615, +2615, +2615, +2633, +2633, +2641, +2688, +2688, +2688, +2702, +2708, +2730, +2748, +2748, +2748, +2748, +2764, +2798, +2807, +2815, +2826, +2826, +2835, +2864, +2864, +2898, +2898, +2905, +2915, +2922, +2922, +2938, +2938, +2967, +2967, +2967, +2986, +2986, +3002, +3008, +3018, +3052, +3066, +3099, +3099, +3115, +3115, +3115, +3159, +3159, +3172, +3186, +3186, +3262, +3262, +3262, +3305, 3336, 3350, -3363, -3376, -3398, -3416, -3445, -3464, -3488, -3488, -3497, -3545, -3552, -3552, -3552, -3566, -3573, -3573, -3573, -3581, -3581, -3603, -3603, -3615, -3621, -3621, -3683, -3683, -3710, -3710, -3716, -3716, -3748, -3770, -3791, -3803, -3810, -3817, -3833, -3846, -3846, -3852, -3876, -3876, -3882, -3903, -3910, -3939, -3939, -3939, -3947, -3962, -3962, -3981, -3994, -4021, -4030, -4042, -4085, -4085, -4096, -4096, -4104, -4123, -4123, -4123, -4143, -4154, -4164, -4194, -4194, -4194, -4205, -4205, -4222, -4238, -4301, -4309, -4322, -4331, -4331, -4331, -4331, -4331, -4347, -4365, -4375, -4375, -4385, -4398, -4412, -4430, -4430, -4437, -4447, -4463, -4472, -4472, -4472, -4484, -4484, -4484, -4484, -4484, -4490, -4490, -4511, -4511, -4522, -4522, -4522, -4522, -4528, -4528, +3394, +3411, +3411, +3424, +3483, +3505, +3532, +3532, +3532, +3538, +3538, +3561, +3575, +3580, +3601, +3601, +3601, +3601, +3601, +3601, +3601, +3601, +3635, +3635, +3635, +3686, +3704, +3704, +3736, +3749, +3783, +3783, +3816, +3840, +3877, +3885, +3885, +3885, +3885, +3907, +3944, +3944, +3956, +3963, +3963, +3963, +3963, +3975, +3975, +3975, +3993, +4038, +4062, +4062, +4062, +4071, +4071, +4084, +4097, +4119, +4119, +4119, +4135, +4135, +4166, +4178, +4178, +4208, +4225, +4285, +4300, +4300, +4300, +4300, +4318, +4318, +4318, +4336, +4348, +4354, +4354, +4388, +4388, +4416, +4433, +4433, +4433, +4433, +4433, +4433, +4450, +4450, +4450, +4450, +4467, +4467, +4480, +4514, +4524, 4534, -4551, -4551, -4551, -4564, -4583, -4583, -4611, -4611, -4611, -4622, -4622, -4649, -4668, -4677, -4692, -4692, -4692, -4705, -4723, -4723, -4723, -4729, -4729, -4743, -4743, -4750, -4750, -4763, -4770, -4776, -4776, -4776, -4793, -4811, -4811, -4811, -4821, -4821, -4841, -4857, -4891, -4897, -4903, -4903, -4903, -4919, -4935, -4942, -4958, -4958, -4975, -4975, -4975, -4985, -4985, -5020, -5032, +4552, +4552, +4572, +4572, +4599, +4641, +4659, +4659, +4659, +4666, +4666, +4666, +4717, +4769, +4785, +4797, +4797, +4815, +4853, +4859, +4868, +4894, +4894, +4894, +4920, +4930, +4972, +4972, +5005, +5005, +5023, +5023, 5032, -5040, -5053, -5068, -5079, -5079, -5101, -5115, -5115, -5135, -5154, -5161, -5161, -5168, -5168, -5184, -5210, -5210, -5238, -5255, -5278, -5285, -5308, -5318, -5327, -5327, -5333, -5333, -5340, -5348, -5355, -5366, -5377, -5384, -5408, -5415, -5422, -5435, -5442, -5482, -5482, -5482, -5482, -5498, -5527, -5534, -5541, -5572, -5572, -5572, -5579, -5591, -5602, -5602, -5621, -5621, -5646, -5664, -5671, -5671, -5681, -5696, -5707, -5716, -5716, -5723, -5723, -5732, +5059, +5059, +5080, +5094, +5100, +5100, +5100, +5100, +5100, +5118, +5145, +5145, +5145, +5153, +5221, +5256, +5289, +5296, +5306, +5306, +5343, +5343, +5343, +5362, +5369, +5433, +5451, +5451, +5451, +5470, +5470, +5470, +5490, +5506, +5528, +5548, +5548, +5548, +5548, +5563, +5576, +5585, +5636, +5636, +5661, +5661, +5668, +5685, +5698, +5715, 5742, -5742, -5763, -5770, -5776, -5790, -5790, -5797, -5806, -5816, -5832, -5882, -5882, -5882, -5882, -5893, -5934, -5934, -5965, -5965, -5980, -5980, -5980, -5980, -6007, -6017, -6034, -6051, -6065, -6075, -6075, -6091, -6097, -6097, -6109, -6109, -6109, -6122, -6147, -6168, -6168, -6191, -6191, -6191, -6191, -6191, -6198, -6217, -6224, -6224, -6231, -6245, -6252, -6252, -6270, -6270, -6284, -6305, -6315, -6322, -6322, -6322, -6329, -6329, -6329, -6353, -6361, -6361, -6375, -6391, -6405, -6405, -6415, -6431, -6431, -6431, -6431, -6458, -6475, -6475, -6475, -6482, -6489, -6496, -6496, -6503, -6520, -6520, -6520, -6527, -6527, +5748, +5756, +5800, +5800, +5800, +5827, +5827, +5846, +5864, +5910, +5926, +5941, +5952, +5952, +5958, +5958, +5976, +5985, +5991, +5991, +5991, +5998, +5998, +5998, +6011, +6011, +6060, +6076, +6088, +6105, +6124, +6124, +6124, +6157, +6157, +6157, +6157, +6174, +6190, +6190, +6190, +6209, +6228, +6228, +6228, +6228, +6234, +6234, +6234, +6234, +6234, +6249, +6264, +6264, +6290, +6308, +6346, +6362, +6362, +6400, +6420, +6432, +6455, +6455, +6464, +6491, +6491, +6491, +6497, +6524, +6544, +6544, +6544, 6544, -6561, -6573, -6573, -6580, -6580, -6587, -6587, -6592, -6592, -6592, -6592, -6599, -6599, -6612, -6633, -6649, -6649, -6669, -6676, -6683, -6683, -6713, -6720, -6727, -6736, -6736, -6746, -6770, -6807, -6814, -6827, -6846, -6846, -6864, -6864, -6864, -6864, -6881, -6888, -6888, -6888, +6559, +6576, +6619, +6682, +6682, +6716, +6716, +6716, +6716, +6716, +6716, +6730, +6745, +6783, +6783, +6801, +6817, +6841, +6841, +6858, +6858, 6914, -6935, -6935, -6935, -6953, -6959, -6966, -6983, -6983, -6983, -7013, -7023, -7023, -7023, -7023, +6925, +6943, +6954, +6954, +6954, +6973, +6973, +6973, +6987, +6987, +6987, +7005, 7037, -7044, -7058, -7079, -7086, -7123, -7134, -7155, -7168, +7037, +7050, +7050, +7075, +7090, +7090, +7096, +7108, +7124, +7124, +7136, +7136, +7146, +7169, 7178, -7203, -7227, -7236, -7258, -7265, -7274, -7274, -7303, -7303, -7314, -7314, -7345, -7352, -7367, -7377, -7388, -7388, -7402, -7402, -7409, -7421, -7421, -7467, -7484, -7484, -7484, +7197, +7197, +7197, +7204, +7204, +7268, +7268, +7288, +7311, +7311, +7321, +7334, +7334, +7387, +7417, +7426, +7444, +7444, +7460, +7470, 7491, -7532, -7532, -7539, -7546, -7546, -7553, -7573, -7573, -7573, -7580, -7587, -7594, -7594, -7594, -7606, -7606, -7637, -7637, -7637, -7664, -7664, -7664, -7677, -7684, -7701, -7723, -7723, -7723, -7723, -7734, -7734, -7734, -7748, -7748, -7748, -7748, -7759, -7759, -7775, -7775, -7782, -7789, -7817, -7824, -7831, -7836, -7865, -7865, +7516, +7516, +7535, +7535, +7555, +7555, +7555, +7555, +7575, +7597, +7597, +7597, +7597, +7607, +7627, +7627, +7652, +7710, +7710, +7719, +7737, +7737, +7737, +7737, +7737, +7747, +7747, +7753, +7773, +7773, +7793, +7828, +7841, +7860, +7860, +7876, 7876, 7901, 7901, -7908, -7918, -7938, -7945, -7945, -7957, -7964, -7979, -7986, -7994, -8007, -8007, -8014, -8021, -8061, -8061, -8071, -8088, -8131, -8138, -8153, -8160, -8160, -8160, -8175, -8183, +7901, +7911, +7911, +7911, +7911, +7924, +7941, +7951, +7983, +7983, +7990, +8008, +8008, +8018, +8018, +8031, +8056, +8063, +8077, +8077, +8090, +8100, +8165, +8192, +8192, +8192, +8192, +8197, 8197, -8211, -8211, -8211, -8243, -8243, -8243, -8243, -8259, -8259, -8259, -8259, -8259, -8266, -8275, -8281, -8281, -8281, -8281, -8288, -8288, +8197, +8197, +8197, +8197, +8227, +8237, +8253, +8253, 8309, 8309, 8309, -8330, -8330, -8330, -8330, -8337, -8343, -8343, -8360, -8370, -8370, -8380, -8380, -8386, -8386, -8397, -8415, -8415, -8428, -8454, -8460, -8475, -8492, -8526, +8309, +8329, +8329, +8329, +8345, +8378, +8398, +8420, +8420, +8420, +8436, +8452, +8497, +8538, 8554, 8554, 8583, 8583, 8583, -8598, -8607, -8617, -8617, +8616, 8642, 8652, 8652, -8652, -8662, -8688, -8688, -8704, -8704, -8747, -8765, -8775, -8783, -8811, -8835, -8835, -8835, -8850, -8859, -8884, -8910, -8919, -8952, -8978, -8978, -8991, -8991, -8991, -8999, -8999, -8999, -9030, -9030, -9030, -9030, -9030, -9041, -9048, -9048, -9054, -9054, -9054, -9086, -9108, -9108, -9119, -9119, -9130, -9144, -9152, -9161, -9174, -9194, -9207, -9207, -9207, -9232, -9242, -9242, -9271, -9290, -9308, -9308, -9308, -9308, -9320, -9333, -9343, -9356, -9379, -9379, +8672, +8690, +8699, +8699, +8715, +8715, +8737, +8767, +8767, +8767, +8780, +8800, +8837, +8867, +8896, +8931, +8948, +8959, +8981, +9002, +9008, +9017, +9017, +9017, +9017, +9044, +9044, +9044, +9069, +9087, +9087, +9087, +9087, +9104, +9136, +9173, +9173, +9199, +9199, +9199, +9199, +9222, +9233, +9257, +9257, +9257, +9272, +9272, +9284, +9316, +9346, +9346, +9346, +9362, 9379, -9395, -9395, -9406, -9419, -9419, -9419, -9419, -9450, -9485, -9485, -9497, -9497, -9505, -9517, -9528, -9528, +9404, +9413, +9413, +9413, +9439, +9439, +9447, +9460, +9479, +9479, +9486, +9499, +9506, +9506, +9513, 9551, -9564, -9586, -9586, -9608, -9608, -9626, -9626, -9626, -9653, -9653, -9681, -9681, -9681, -9698, -9698, -9698, -9714, -9729, -9737, -9737, -9765, -9765, -9765, -9765, -9765, -9825, -9844, -9866, -9880, -9880, -9880, -9880, -9886, -9895, -9895, -9895, -9895, -9895, -9913, -9913, -9924, -9958, -9958, -9967, -9975, -9975, -9975, -9981, -9998, -9998, -9998, +9551, +9577, +9577, +9634, +9634, +9671, +9693, +9700, +9700, +9732, +9774, +9774, +9780, +9827, +9851, +9875, +9875, +9911, +9937, +9937, +9944, +9944, +9944, +9964, +9992, +9999, +9999, +9999, +10006, 10012, -10036, -10036, -10066, -10079, -10097, +10019, +10026, +10047, +10059, +10059, +10076, +10083, +10083, +10083, +10089, +10089, +10089, +10096, 10121, -10133, -10142, -10142, -10142, -10156, -10173, -10173, -10173, -10196, -10205, -10205, -10205, -10205, -10218, -10234, -10240, -10240, -10240, -10264, -10273, -10286, -10286, -10286, -10286, -10299, -10299, -10309, -10309, -10339, -10358, -10358, -10374, -10374, -10390, -10390, -10413, -10413, -10439, -10461, -10467, +10121, +10137, +10137, +10137, +10137, +10154, +10161, +10161, +10168, +10177, +10177, +10231, +10238, +10261, +10268, +10288, +10295, +10303, +10320, +10344, +10387, +10421, +10421, +10421, 10467, 10467, -10492, -10492, 10501, -10528, -10528, -10528, -10539, -10583, -10583, -10583, -10613, -10613, -10619, -10628, -10645, -10645, -10645, -10650, -10671, -10687, -10709, -10709, -10709, -10709, -10709, -10727, +10517, +10535, +10552, +10577, +10577, +10577, +10577, +10577, +10615, +10621, +10639, +10639, +10639, +10682, +10682, +10698, +10698, +10716, 10727, -10727, -10727, -10733, -10733, -10768, -10768, -10773, -10780, -10788, -10788, +10750, +10774, +10781, 10797, -10797, -10835, -10835, -10845, -10852, -10861, -10861, -10861, -10861, -10861, -10861, -10861, -10875, -10888, -10907, -10907, -10907, -10920, -10920, -10932, -10946, -10977, -10977, -10997, -11008, -11037, -11059, -11059, -11059, -11067, -11067, -11067, -11067, -11067, -11077, -11091, -11102, +10804, +10804, +10804, +10816, +10836, +10850, +10850, +10857, +10857, +10878, +10878, +10934, +10934, +10934, +10934, +10934, +10934, +10934, +10941, +10941, +10941, +10948, +10973, +10984, +11015, +11015, +11015, +11041, +11058, +11066, +11066, +11066, +11087, +11097, 11102, -11112, -11125, +11108, +11115, +11122, +11122, +11122, 11129, -11129, -11154, -11154, -11154, -11164, -11164, -11189, -11189, -11189, -11189, -11189, -11196, -11196, -11227, -11238, -11247, -11256, -11265, -11265, -11286, +11160, +11194, +11194, +11215, +11224, +11224, +11280, +11297, 11307, -11330, -11337, -11378, -11378, -11389, -11413, -11454, -11469, -11475, -11475, -11475, -11475, -11503, -11503, -11503, -11503, -11534, -11534, -11550, -11550, -11557, -11557, -11557, -11557, -11574, -11585, -11585, -11603, -11626, -11643, -11643, -11643, -11643, -11663, -11663, -11682, -11696, -11696, -11696, -11696, -11706, -11706, -11706, -11706, -11723, -11723, -11757, -11757, -11773, -11795, -11813, -11836, -11836, -11883, -11903, -11952, -11965, -11965, -11984, -11997, -12008, -12008, -12008, -12024, -12043, -12065, -12071, -12099, -12129, -12140, -12140, -12146, -12161, -12161, -12161, -12161, -12167, -12167, -12180, -12186, -12208, -12226, -12243, -12243, -12252, -12252, -12274, -12289, -12302, -12302, -12313, -12313, -12313, -12313, -12358, -12358, -12358, -12369, -12375, -12391, -12391, -12391, -12391, -12405, -12410, -12416, -12416, -12436, -12436, -12436, -12443, -12443, -12462, -12477, -12492, -12492, -12503, -12519, -12525, -12531, -12571, -12571, -12591, -12591, -12601, -12641, -12641, -12641, -12657, -12657, -12657, -12699, -12699, -12699, -12712, -12728, -12744, -12761, -12769, -12782, -12793, -12823, -12836, -12851, -12863, -12890, -12900, -12900, -12900, -12910, -12910, -12924, -12924, -12924, -12924, -12924, -12952, -12984, -13003, -13038, -13038, -13056, -13056, -13056, +11319, +11352, +11364, +11364, +11399, +11399, +11430, +11430, +11445, +11478, +11500, +11508, +11526, +11526, +11539, +11539, +11583, +11583, +11624, +11654, +11654, +11661, +11679, +11714, +11721, +11733, +11769, +11778, +11786, +11805, +11820, +11857, +11864, +11877, +11877, +11892, +11892, +11892, +11908, +11915, +11922, +11940, +11947, +11975, +11998, +12021, +12028, +12028, +12046, +12068, +12086, +12109, +12116, +12130, +12150, +12150, +12150, +12150, +12157, +12182, +12205, +12212, +12219, +12219, +12229, +12229, +12229, +12250, +12271, +12285, +12285, +12292, +12330, +12330, +12349, +12349, +12357, +12357, +12357, +12357, +12389, +12409, +12409, +12448, +12459, +12473, +12480, +12489, +12489, +12497, +12535, +12542, +12568, +12575, +12590, +12620, +12645, +12652, +12665, +12672, +12683, +12683, +12709, +12716, +12723, +12746, +12746, +12746, +12771, +12771, +12796, +12796, +12803, +12803, +12803, +12838, +12856, +12872, +12872, +12872, +12872, +12872, +12872, +12889, +12899, +12899, +12899, +12899, +12917, +12934, +12934, +12947, +12969, +12969, +12976, +13012, 13056, -13074, -13081, -13093, -13103, -13103, -13112, -13119, -13132, -13132, -13132, -13141, -13151, -13183, -13193, -13206, -13206, -13206, -13236, -13252, -13267, -13267, -13294, -13307, -13307, -13307, -13343, -13349, -13349, -13349, -13375, -13375, -13375, -13384, -13384, -13384, -13393, -13393, -13393, -13402, -13414, -13425, -13445, -13467, -13485, -13499, -13509, -13528, -13528, -13549, -13549, -13559, -13570, -13570, -13570, -13570, -13598, -13637, -13647, -13647, -13661, -13673, -13682, -13687, -13694, -13694, -13720, -13733, -13742, -13748, -13771, -13795, -13795, -13814, -13821, -13821, -13855, -13862, -13862, -13862, -13874, -13874, -13897, -13909, -13909, -13947, -13947, -13952, -13952, -13970, -13979, -13979, -13979, -14008, -14049, -14049, -14049, -14049, -14049, -14049, -14060, -14083, -14083, -14091, -14101, -14101, -14101, -14101, -14118, -14136, -14195, -14195, -14195, -14213, -14213, -14232, -14232, -14253, -14253, +13063, +13092, +13118, +13142, +13163, +13202, +13237, +13256, +13284, +13295, +13302, +13326, +13355, +13372, +13383, +13398, +13424, +13452, +13452, +13452, +13494, +13533, +13547, +13547, +13551, +13558, +13610, +13657, +13665, +13692, +13692, +13707, +13714, +13714, +13714, +13728, +13728, +13750, +13763, +13782, +13782, +13819, +13840, +13840, +13858, +13867, +13888, +13925, +13925, +13950, +13960, +13960, +13974, +14014, +14051, +14067, +14086, +14095, +14102, +14102, +14102, +14123, +14123, +14123, +14144, +14168, +14168, +14175, +14175, +14175, +14175, +14186, +14237, +14237, 14258, -14275, -14275, -14304, -14311, -14311, -14318, -14318, -14318, -14318, -14318, -14318, -14325, -14325, -14345, -14345, -14379, -14389, -14422, -14422, -14422, -14422, -14435, -14441, -14441, -14460, -14460, -14471, -14471, -14481, -14495, -14495, -14495, -14502, -14502, -14502, -14502, -14524, -14533, -14541, -14552, -14552, -14552, -14552, -14563, -14563, -14568, -14568, -14585, -14595, -14602, -14628, -14628, -14645, -14672, -14678, -14697, -14697, -14734, -14757, -14764, -14771, -14771, -14771, -14796, -14815, -14822, -14845, -14861, -14861, -14861, -14873, -14873, -14873, -14902, -14920, -14920, -14926, -14926, -14926, -14941, -14949, -14949, -14949, -14949, -14949, -14960, -14960, -14971, -14971, -14998, -15003, -15003, -15003, -15013, -15013, -15027, -15027, -15027, -15043, -15053, -15063, -15074, -15083, -15093, -15093, -15121, -15121, -15128, -15128, -15144, -15144, -15144, -15144, -15165, -15170, -15170, -15170, -15170, -15170, -15170, -15170, -15186, -15206, -15206, -15206, -15224, -15236, -15236, -15252, -15258, -15258, -15258, -15258, -15264, -15277, -15288, -15307, -15307, -15318, -15328, -15328, -15334, -15334, -15363, -15399, -15399, -15422, -15438, -15447, -15447, -15456, -15456, -15456, -15495, -15495, -15495, -15495, -15511, -15511, -15530, -15557, -15566, -15582, -15590, -15590, -15604, -15604, -15625, -15635, -15655, -15655, -15655, -15655, -15655, -15665, -15675, -15675, -15675, -15675, -15675, -15682, -15682, -15682, -15694, -15719, -15749, -15749, -15794, -15794, -15837, -15854, -15854, -15861, -15861, -15861, -15861, -15884, -15900, -15911, -15931, -15931, -15931, -15931, -15931, -15963, -15963, -15996, -16006, -16013, -16024, +14258, +14258, +14292, +14292, +14328, +14338, +14338, +14338, +14364, +14390, +14390, +14423, +14454, +14469, +14512, +14512, +14512, +14512, +14512, +14512, +14512, +14525, +14535, +14550, +14572, +14578, +14591, +14603, +14603, +14603, +14619, +14619, +14619, +14619, +14656, +14679, +14700, +14725, +14725, +14725, +14725, +14725, +14730, +14751, +14767, +14767, +14767, +14767, +14787, +14820, +14837, +14837, +14865, +14865, +14882, +14882, +14882, +14882, +14882, +14892, +14892, +14892, +14912, +14929, +14947, +14947, +14947, +14947, +14947, +14947, +14966, +15018, +15034, +15044, +15055, +15055, +15073, +15118, +15118, +15118, +15146, +15158, +15169, +15175, +15175, +15175, +15181, +15181, +15181, +15247, +15279, +15292, +15292, +15292, +15292, +15326, +15331, +15365, +15389, +15398, +15412, +15426, +15433, +15433, +15433, +15433, +15469, +15490, +15490, +15506, +15523, +15553, +15553, +15571, +15571, +15585, +15602, +15602, +15602, +15602, +15602, +15631, +15658, +15669, +15699, +15716, +15716, +15757, +15789, +15796, +15796, +15796, +15796, +15815, +15840, +15898, +15898, +15919, +15933, +15933, +15940, +15946, +15946, +15964, +15964, +15964, +15973, +15979, +16008, +16019, +16019, 16034, -16049, -16049, -16049, -16059, -16059, -16059, -16059, -16059, -16059, -16059, -16064, -16075, -16104, -16104, -16117, -16124, -16124, -16124, -16124, -16130, -16145, -16159, -16190, -16193, -16196, -16210, -16224, -16243, -16255, -16261, -16280, -16283, -16292, -16295, -16295, -16301, -16304, +16042, +16057, +16073, +16095, +16095, +16112, +16121, +16139, +16139, +16139, +16148, +16148, +16148, +16148, +16165, +16187, +16187, +16199, +16199, +16215, +16215, +16215, +16231, +16240, +16284, +16305, +16305, 16322, -16325, -16328, -16349, -16355, -16382, -16408, -16414, -16414, -16414, -16458, -16477, -16480, -16485, -16488, -16514, -16520, -16530, -16530, -16546, -16562, -16597, -16603, -16622, -16622, -16646, -16669, -16672, -16715, -16715, -16715, -16718, -16718, -16727, -16733, -16752, -16770, -16787, -16794, -16810, -16827, -16840, -16850, -16876, -16901, -16901, -16901, -16916, -16919, -16926, -16943, -16972, -16978, -16978, -16978, -16981, -17008, -17008, -17016, -17053, -17053, -17053, -17053, -17072, -17086, -17105, -17139, -17153, -17162, -17162, -17177, -17177, -17177, -17177, -17195, -17218, -17221, -17221, -17237, -17276, -17276, -17300, -17319, -17339, -17357, -17370, -17383, -17400, -17407, -17419, -17439, -17439, -17449, -17465, -17475, -17504, -17527, -17527, -17534, -17548, -17564, -17564, -17598, -17598, -17601, -17630, -17649, -17669, -17669, -17679, -17686, +16343, +16362, +16383, +16393, +16393, +16411, +16419, +16425, +16436, +16461, +16468, +16468, +16468, +16490, +16490, +16490, +16507, +16528, +16528, +16528, +16538, +16555, +16566, +16566, +16590, +16590, +16605, +16623, +16636, +16636, +16636, +16656, +16666, +16696, +16713, +16743, +16760, +16781, +16797, +16811, +16811, +16823, +16838, +16859, +16879, +16879, +16879, +16902, +16908, +16908, +16908, +16908, +16966, +16966, +16966, +16975, +16992, +16992, +16992, +17033, +17069, +17069, +17100, +17117, +17133, +17151, +17151, +17159, +17203, +17203, +17220, +17226, +17226, +17245, +17245, +17259, +17259, +17269, +17295, +17295, +17295, +17353, +17386, +17394, +17394, +17394, +17409, +17409, +17442, +17442, +17454, +17509, +17509, +17509, +17532, +17532, +17532, +17550, +17561, +17561, +17561, +17561, +17561, +17561, +17561, +17561, +17561, +17575, +17581, +17581, +17581, +17620, +17627, +17640, +17640, +17677, +17677, +17688, +17688, +17722, +17734, +17747, +17757, +17757, 17757, -17776, -17796, -17810, -17840, -17840, -17877, -17884, -17884, -17911, -17936, -17970, +17803, +17820, +17846, +17892, +17892, +17899, +17899, +17919, +17919, +17968, 17980, -17995, -17995, -18008, -18011, -18036, -18075, -18097, -18097, -18104, -18115, -18115, -18129, -18134, -18141, -18141, -18157, -18180, -18190, -18217, -18224, -18252, -18284, -18284, -18296, -18299, -18312, -18322, -18338, -18348, -18348, -18363, -18372, -18387, -18387, -18390, +17996, +18021, +18021, +18021, +18021, +18050, +18050, +18072, +18102, +18119, +18119, +18132, +18132, +18132, +18146, +18146, +18165, +18184, +18184, +18192, +18192, +18192, +18223, +18223, +18223, +18231, +18231, +18231, +18231, +18257, +18270, +18300, +18313, +18331, +18331, +18331, +18351, +18351, +18382, +18392, +18392, +18392, 18402, +18402, +18418, 18445, -18445, -18445, -18466, -18479, -18479, -18498, -18508, -18511, -18511, -18511, -18511, -18511, -18526, -18558, -18586, -18622, +18519, +18519, +18528, +18542, +18571, +18595, +18616, +18628, +18628, 18643, -18670, -18686, -18710, -18720, -18739, -18739, -18742, -18745, -18771, -18774, -18777, -18791, -18813, -18816, -18822, -18839, -18845, -18851, -18854, -18878, -18881, -18896, -18896, -18899, -18926, -18937, -18940, -18953, -18963, -19010, -19010, -19017, -19046, -19060, -19060, -19087, -19095, -19101, -19101, -19128, -19146, -19157, -19157, -19188, +18678, +18690, +18715, +18731, +18731, +18751, +18763, +18763, +18763, +18779, +18793, +18793, +18824, +18840, +18840, +18856, +18856, +18864, +18864, +18902, +18902, +18933, +18946, +18946, +18946, +18946, +18946, +18946, +18955, +18955, +18973, +18979, +18992, +18992, +18992, +19008, +19016, +19016, +19033, +19033, +19044, +19044, +19044, +19044, +19082, +19129, +19149, 19198, -19205, -19223, -19230, -19255, -19280, -19280, -19283, -19292, -19301, -19320, -19323, -19323, -19341, -19341, -19365, -19378, -19381, -19394, -19423, -19433, -19440, +19210, +19210, +19210, +19219, +19219, +19219, +19227, +19261, +19261, +19268, +19291, +19319, +19319, +19319, +19331, +19359, +19369, +19369, +19384, +19384, +19406, +19413, 19466, -19490, -19490, -19490, -19497, -19504, -19511, -19511, -19518, -19545, -19568, -19575, -19575, -19583, -19586, -19592, -19592, -19609, -19622, -19629, -19641, -19641, -19656, -19673, -19700, -19723, -19733, -19746, -19759, -19769, -19782, -19789, -19795, -19831, -19834, -19841, -19851, -19854, -19880, -19895, -19898, -19898, -19911, -19922, -19950, -20020, +19482, +19482, +19494, +19515, +19522, +19570, +19570, +19570, +19610, +19625, +19632, +19639, +19658, +19665, +19672, +19672, +19679, +19679, +19692, +19719, +19749, +19756, +19776, +19807, +19817, +19817, +19837, +19844, +19876, +19906, +19906, +19923, +19923, +19942, +19958, +19973, +19995, +20002, +20023, 20030, -20059, -20062, -20089, -20107, -20151, -20154, -20175, +20036, +20036, +20060, +20060, +20066, +20073, +20108, +20116, +20131, +20131, +20131, +20166, +20183, +20202, 20205, -20208, -20229, -20229, -20255, -20261, -20261, -20283, -20335, -20362, -20385, -20392, -20392, -20392, -20392, -20418, -20418, -20418, +20215, +20233, +20233, +20236, +20243, +20253, +20281, +20284, +20294, +20297, +20315, +20355, +20400, +20415, 20418, +20428, 20443, -20446, -20446, -20452, -20452, +20461, 20467, -20467, -20489, -20489, -20498, -20525, -20554, -20560, +20470, +20476, +20499, +20499, +20513, +20513, +20516, +20523, +20546, +20549, 20575, -20589, -20589, -20589, -20614, -20652, -20659, -20659, -20668, -20679, -20679, -20679, -20685, +20615, +20615, +20618, +20682, 20685, -20685, -20685, -20685, -20685, -20696, -20733, -20760, -20766, -20769, -20792, -20792, -20792, -20792, -20813, -20813, -20813, -20813, -20826, -20826, -20846, -20862, -20880, +20691, +20700, +20727, +20776, +20779, +20800, +20816, +20858, 20887, -20901, -20908, -20933, -20938, -20958, -20969, -20978, -20978, -20978, -20985, -20985, -20985, -21000, -21010, -21010, -21014, -21026, -21033, -21041, -21041, -21051, -21051, -21064, -21071, -21113, -21120, -21120, -21127, -21134, -21142, -21164, -21164, -21164, -21188, -21195, -21208, -21215, -21226, -21226, -21226, -21238, -21249, -21255, -21255, -21265, -21279, -21296, -21301, -21315, -21321, -21331, -21331, -21331, -21337, -21343, -21343, -21351, -21351, -21361, -21368, -21383, -21383, -21389, -21413, -21437, -21449, -21462, -21478, -21506, -21534, -21546, -21546, -21557, -21580, -21595, -21595, -21595, -21595, -21626, -21626, -21646, -21670, -21676, -21688, -21688, -21716, -21731, -21762, -21762, -21762, -21762, -21762, -21783, -21789, -21799, -21828, -21828, +20898, +20898, +20898, +20923, +20926, +20949, +20952, +20959, +20965, +20974, +20980, +20996, +20996, +21021, +21039, +21039, +21052, +21055, +21076, +21079, +21091, +21094, +21114, +21114, +21117, +21117, +21124, +21143, +21196, +21196, +21196, +21196, +21196, +21205, +21212, +21261, +21278, +21293, +21333, +21354, +21366, +21373, +21408, +21433, +21439, +21442, +21442, +21445, +21448, +21460, +21463, +21466, +21476, +21479, +21529, +21568, +21574, +21574, +21577, +21604, +21611, +21611, +21631, +21649, +21689, +21692, +21714, +21752, +21752, +21780, +21787, +21813, 21837, -21845, -21868, -21874, -21874, -21880, -21880, -21889, -21901, -21910, -21941, -21941, -21959, -21959, -21959, -21966, -21966, -21972, -21972, -21995, -22011, +21840, +21857, +21885, +21888, +21888, +21911, +21918, +21928, +21928, +21934, +21970, +21983, +21992, +22012, +22019, +22036, 22043, -22043, -22051, -22051, -22060, -22060, -22060, -22074, -22086, -22086, -22099, -22099, -22120, -22120, -22134, -22144, -22150, -22158, -22164, -22164, -22171, -22199, -22210, -22210, -22210, -22220, +22050, +22078, +22112, +22115, +22122, +22125, +22174, +22208, +22211, +22221, 22228, 22228, -22239, -22261, -22304, -22304, -22312, -22349, -22349, -22349, -22357, -22381, -22381, -22390, -22390, -22390, -22390, -22402, -22413, -22413, -22422, -22422, -22445, -22445, -22445, -22456, -22456, +22240, +22254, +22254, +22273, +22291, +22327, +22355, +22358, +22368, +22368, +22368, +22368, +22384, +22397, +22415, +22418, +22418, +22439, +22459, +22459, 22469, -22479, -22501, -22512, -22528, -22528, -22528, -22528, -22528, -22528, -22528, -22540, +22488, +22507, +22524, +22524, 22540, +22543, 22546, 22546, 22546, 22546, -22569, -22591, -22591, -22591, -22591, -22610, -22655, -22655, -22667, -22667, -22677, -22677, -22692, -22692, -22702, -22702, -22702, -22717, -22736, +22553, +22575, +22581, +22584, +22587, +22595, +22607, +22607, +22614, +22624, +22650, +22686, +22699, +22705, +22718, 22750, -22755, -22780, -22785, -22822, -22844, -22859, -22871, -22909, -22949, -22962, -22973, -22979, -22988, -23007, -23027, -23035, -23072, -23082, -23082, -23109, -23116, -23130, -23158, -23166, -23166, -23172, -23177, -23189, -23219, -23219, -23250, -23273, -23281, -23281, -23281, -23281, -23281, +22753, +22772, +22782, +22789, +22825, +22838, +22890, +22913, +22916, +22926, +22932, +22946, +22986, +22986, +23015, +23050, +23073, +23076, +23079, +23101, +23132, +23152, +23211, +23237, +23240, +23259, +23284, 23287, -23287, -23299, -23305, -23315, -23315, -23321, -23328, -23334, -23355, -23355, -23355, -23355, -23355, -23366, -23390, -23396, -23396, -23396, -23396, -23402, -23418, -23424, -23424, -23438, -23446, -23446, -23446, -23500, -23525, -23569, -23592, -23592, -23592, -23605, -23614, -23614, -23614, -23627, -23633, -23657, -23673, -23673, -23673, -23689, -23689, -23701, -23701, -23701, -23713, -23713, -23713, -23738, -23758, -23775, -23775, -23794, -23794, -23803, -23803, -23803, -23803, -23813, -23826, -23845, -23845, -23845, -23845, -23872, -23872, -23872, -23888, -23888, -23900, -23900, -23906, -23906, -23906, -23906, -23906, -23924, -23924, -23924, -23930, -23930, -23939, -23949, -23971, -23971, -23971, -24000, -24012, -24042, -24042, -24042, -24042, -24042, -24070, -24076, -24094, -24094, -24094, -24123, -24123, -24123, -24134, -24150, +23302, +23308, +23311, +23311, +23311, +23318, +23325, +23339, +23352, +23369, +23380, +23430, +23437, +23457, +23460, +23466, +23473, +23516, +23519, +23522, +23534, +23549, +23568, +23589, +23609, +23631, +23642, +23645, +23676, +23683, +23693, +23696, +23730, +23746, +23790, +23807, +23819, +23840, +23843, +23843, +23868, +23885, +23898, +23905, +23921, +23921, +23938, +23979, +23988, +23994, +24022, +24029, +24059, +24059, +24081, +24100, +24100, +24107, +24131, 24150, -24150, -24150, -24150, -24150, -24155, -24179, -24179, -24189, -24189, -24189, -24198, -24198, -24218, -24218, -24218, -24234, -24251, -24257, -24276, +24181, +24181, +24184, +24187, +24209, +24239, +24252, +24265, +24271, +24274, +24300, 24305, -24321, -24321, -24321, -24334, -24334, -24334, -24349, -24356, -24361, -24372, -24372, -24372, -24388, -24396, -24396, -24402, -24410, -24410, -24428, -24428, -24450, -24450, +24308, +24311, +24314, +24330, +24333, +24333, +24333, +24336, +24339, +24345, +24348, +24351, +24378, +24384, +24422, +24435, +24446, 24467, -24485, -24495, -24495, -24495, -24507, -24507, -24514, -24531, -24531, -24531, -24531, +24470, +24473, +24492, +24505, +24508, +24508, 24531, -24537, -24537, -24558, -24572, -24584, -24584, -24601, -24601, -24607, -24615, -24615, -24632, -24632, -24632, -24632, -24661, -24676, -24676, -24724, -24751, -24751, -24774, -24774, -24783, -24793, -24793, -24793, -24813, -24819, -24819, -24826, -24826, -24842, -24858, -24872, -24872, -24890, -24890, -24890, -24890, -24890, -24890, -24890, -24890, -24890, -24906, -24906, -24917, -24928, -24947, -24947, -24947, -24947, -24947, -24947, -24947, -24947, -24947, -24963, -24983, -24991, -24991, -24991, -24991, -24991, -24991, -24991, -24991, -25007, -25007, -25007, -25007, -25007, -25007, -25007, -25030, -25040, -25040, -25040, -25040, -25040, -25059, -25097, +24551, +24593, +24617, +24640, +24652, +24652, +24668, +24668, +24668, +24717, +24748, +24748, +24766, +24769, +24775, +24791, +24791, +24829, +24829, +24851, +24861, +24867, +24913, +24946, +24946, +24965, +24968, +24968, +24981, +24981, +24994, +24994, +25009, +25012, +25015, +25026, +25031, +25043, +25043, +25056, +25056, +25056, +25056, +25062, +25075, +25099, +25106, +25118, +25118, +25118, +25118, +25126, 25132, -25149, -25159, -25169, -25169, -25169, -25192, -25192, -25192, -25192, -25205, -25205, -25216, -25221, -25221, -25233, -25233, -25240, -25250, -25256, -25273, -25273, -25303, -25321, -25321, -25321, -25333, -25333, -25333, -25333, -25370, -25370, -25402, -25418, -25418, -25439, -25439, -25454, -25454, -25454, -25463, -25477, -25526, -25526, -25526, -25526, -25545, -25562, -25572, -25572, -25582, -25582, -25582, +25183, +25183, +25200, +25219, +25225, +25241, +25247, +25259, +25274, +25322, +25322, +25336, +25336, +25336, +25360, +25368, +25368, +25368, +25374, +25381, +25387, +25398, +25417, +25417, +25417, +25431, +25466, +25492, +25500, +25549, +25569, +25569, +25590, +25590, 25597, -25610, -25634, -25641, -25641, -25641, -25668, -25668, -25675, -25707, -25727, -25727, -25741, -25756, -25756, -25779, -25811, -25811, -25811, -25817, -25817, -25817, -25827, -25827, -25827, -25827, -25827, -25836, -25836, -25836, -25836, -25850, -25850, +25616, +25622, +25640, +25640, +25640, +25655, +25655, +25671, +25671, +25691, +25706, +25706, +25706, +25738, +25738, +25746, +25759, +25759, +25781, +25781, +25802, +25815, 25860, -25884, -25901, -25922, -25936, -25946, -25969, -25969, -25969, -25969, -25975, -25975, -25987, -25987, -26065, -26065, +25860, +25867, +25877, +25877, +25877, +25913, +25913, +25953, +25980, +26002, +26013, +26026, +26026, +26032, +26032, +26038, +26050, +26050, +26059, 26065, -26084, -26084, -26103, +26071, +26087, +26122, 26128, -26141, -26151, -26169, -26169, -26169, -26180, -26191, -26191, -26191, -26197, -26197, -26205, -26211, -26235, -26235, -26235, -26235, -26235, -26235, -26245, -26245, -26259, -26259, -26259, -26259, -26284, -26284, -26325, -26325, -26355, -26364, -26364, -26402, -26418, -26418, -26425, -26432, -26432, -26454, -26504, -26513, -26525, -26525, -26525, -26525, -26525, -26545, -26545, -26571, -26590, -26597, -26597, -26597, -26597, -26597, +26146, +26164, +26185, +26212, +26212, +26229, +26229, +26236, +26248, +26266, +26290, +26311, +26311, +26311, +26311, +26321, +26352, +26365, +26371, +26371, +26394, +26403, +26435, +26435, +26435, +26435, +26485, +26516, +26522, +26528, +26565, +26565, +26600, 26639, -26648, -26659, -26666, -26672, -26672, -26672, -26672, -26672, -26694, -26701, -26701, -26701, -26724, -26724, -26746, -26753, -26774, -26774, -26774, -26774, -26806, -26824, -26824, -26830, -26852, -26882, -26882, -26889, -26889, -26889, -26889, -26889, -26889, -26903, -26911, -26918, -26918, -26928, -26948, -26948, -26970, -26970, -26985, -26996, -27045, -27045, -27058, -27058, -27068, -27068, -27104, -27155, -27155, -27155, -27155, -27155, -27172, -27172, -27172, -27172, -27189, -27195, -27195, -27223, -27223, -27223, -27223, -27244, -27290, -27322, -27332, -27364, -27371, +26649, +26649, +26649, +26649, +26700, +26735, +26745, +26759, +26778, +26778, +26801, +26810, +26810, +26829, +26836, +26849, +26849, +26856, +26856, +26874, +26883, +26883, +26883, +26883, +26899, +26915, +26915, +26915, +26915, +26936, +26951, +26958, +26958, +26975, +26994, +27000, +27010, +27041, +27066, +27073, +27110, +27150, +27150, +27168, +27168, +27175, +27184, +27184, +27184, +27196, +27209, +27224, +27242, +27242, +27248, +27248, +27278, +27298, +27314, +27320, +27363, 27371, 27371, -27401, -27401, -27417, -27417, +27393, +27399, +27399, +27405, +27405, +27405, +27411, +27418, +27425, 27431, -27470, -27470, -27470, -27470, -27484, -27484, -27484, -27484, -27484, -27496, -27496, -27515, -27515, -27543, -27560, -27576, -27604, -27622, -27631, -27631, -27638, -27649, -27672, -27682, -27682, -27682, -27707, -27717, -27724, -27732, -27755, -27755, -27755, -27768, -27768, -27783, -27789, -27799, -27799, -27799, -27818, -27826, -27838, -27848, -27848, -27848, -27855, -27862, -27862, -27896, -27921, -27921, -27943, -27954, -27954, -27976, -27976, -27976, -27985, -28002, -28012, -28019, -28034, -28034, -28046, -28068, -28097, -28122, -28122, -28131, -28137, -28151, -28151, -28172, -28190, +27431, +27455, +27469, +27475, +27475, +27475, +27475, +27475, +27500, +27500, +27523, +27523, +27558, +27574, +27580, +27650, +27663, +27679, +27679, +27733, +27745, +27754, +27761, +27774, +27774, +27782, +27816, +27854, +27854, +27875, +27875, +27875, +27930, +27947, +27967, +27967, +27979, +27986, +28007, +28015, +28036, +28036, +28060, +28060, +28078, +28078, +28078, +28085, +28085, +28091, +28105, +28119, +28119, +28157, +28157, +28163, +28175, +28196, 28196, -28211, -28211, -28264, -28273, -28286, -28324, -28324, -28324, -28354, -28354, -28361, -28397, -28417, -28417, -28424, -28435, -28461, -28461, -28470, -28483, -28483, -28483, -28483, -28483, -28483, -28483, -28515, -28531, -28531, +28196, +28230, +28230, +28230, +28230, +28256, +28265, +28265, +28281, +28281, +28299, +28310, +28325, +28325, +28344, +28353, +28353, +28389, +28389, +28389, +28399, +28421, +28444, +28444, +28478, +28525, +28525, +28549, 28549, -28575, -28575, -28575, -28582, -28599, -28615, -28630, -28630, +28579, +28579, +28594, +28607, +28621, +28638, 28672, -28711, -28723, -28723, -28731, -28752, -28752, -28752, -28763, -28763, -28775, -28775, -28775, -28775, -28775, -28775, -28805, -28814, -28830, -28861, -28882, -28882, -28902, -28918, -28937, -28952, -28959, -28998, -29009, -29009, -29009, -29009, -29019, -29019, -29019, -29019, -29019, -29057, -29069, -29076, -29076, -29076, -29076, -29076, -29082, -29082, -29082, +28679, +28679, +28679, +28690, +28738, +28748, +28748, +28748, +28748, +28748, +28769, +28803, +28810, +28810, +28819, +28819, +28819, +28826, +28853, +28853, +28853, +28860, +28873, +28898, +28898, +28913, +28913, +28913, +28930, +28930, +28956, +28981, +29024, +29024, +29044, +29044, +29074, +29085, +29104, 29117, -29117, -29117, -29117, -29134, -29134, -29159, -29159, -29185, -29185, -29196, -29196, -29242, -29248, -29256, -29280, -29301, -29307, -29307, -29307, -29314, -29314, -29338, -29356, -29367, -29367, -29381, -29391, -29399, -29399, -29414, -29434, -29434, -29441, -29473, -29484, -29503, -29520, -29520, -29548, -29565, -29572, -29572, -29572, -29572, -29572, -29597, -29597, -29620, -29655, -29660, -29660, -29660, -29667, -29674, -29688, -29698, -29705, -29728, -29740, -29740, -29761, -29761, -29767, -29780, -29787, -29794, -29794, -29807, -29820, -29820, -29820, -29820, -29832, -29844, -29855, -29855, -29855, -29867, -29867, -29867, -29867, -29881, -29881, -29905, -29905, -29905, -29923, -29923, -29948, -29948, -29948, -29976, -29986, -29996, -29996, -30030, -30030, -30054, -30054, -30070, -30070, -30070, -30077, -30077, -30087, -30107, -30107, -30115, -30141, -30178, -30178, -30201, -30201, -30201, -30207, -30229, -30239, -30254, -30268, -30277, -30311, -30323, -30323, -30331, -30331, -30331, -30331, -30331, -30353, -30365, -30374, -30374, -30374, -30380, -30380, -30380, -30380, -30410, -30410, -30410, -30443, -30443, -30453, -30462, -30472, -30472, -30472, -30472, -30472, -30472, -30489, -30500, -30500, -30500, -30532, -30532, -30553, -30577, -30599, -30599, -30609, -30640, -30640, -30640, -30664, -30676, -30676, -30676, -30692, -30719, -30728, -30728, -30742, -30742, -30749, -30749, -30760, -30770, -30770, -30783, -30783, -30783, -30804, -30847, -30847, -30847, -30847, -30857, -30857, -30857, -30857, -30875, -30875, -30895, -30895, -30921, -30926, -30926, -30926, -30945, +29125, +29125, +29146, +29153, +29153, +29160, +29175, +29189, +29189, +29214, +29214, +29214, +29224, +29224, +29224, +29234, +29299, +29318, +29325, +29325, +29343, +29400, +29417, +29417, +29436, +29436, +29436, +29436, +29454, +29460, +29460, +29478, +29478, +29478, +29487, +29487, +29516, +29516, +29549, +29559, +29559, +29576, +29587, +29609, +29609, +29630, +29630, +29644, +29644, +29644, +29644, +29664, +29664, +29686, +29711, +29734, +29734, +29741, +29752, +29752, +29778, +29798, +29805, +29819, +29835, +29842, +29849, +29866, +29884, +29891, +29891, +29919, +29943, +29993, +30000, +30010, +30016, +30046, +30069, +30085, +30085, +30102, +30124, +30143, +30150, +30150, +30169, +30169, +30216, +30230, +30256, +30256, +30265, +30280, +30304, +30320, +30324, +30340, +30354, +30364, +30382, +30396, +30396, +30407, +30457, +30473, +30490, +30490, +30490, +30514, +30514, +30539, +30562, +30583, +30615, +30622, +30622, +30629, +30638, +30662, +30662, +30688, +30712, +30712, +30721, +30721, +30721, +30721, +30721, +30758, +30792, +30811, +30811, +30811, +30843, +30843, +30876, +30876, +30876, +30876, +30889, +30909, +30923, 30945, 30945, -30945, -30959, -30959, -30959, -30959, -30972, -30972, -30984, -31011, -31011, -31048, -31056, -31056, -31070, -31077, -31077, -31110, -31110, -31115, -31122, -31139, -31159, -31159, -31165, -31171, -31171, -31197, -31204, -31211, -31211, -31221, -31228, -31228, -31245, -31245, -31245, -31252, -31265, -31265, -31265, -31265, -31294, -31305, -31320, -31333, -31333, -31333, -31343, -31350, -31357, -31369, -31369, -31379, -31385, -31391, -31407, -31407, -31407, -31423, -31423, -31423, -31434, -31454, -31470, -31511, -31521, -31521, -31521, -31542, -31582, -31582, -31597, -31597, -31597, -31614, -31623, -31645, -31645, -31661, +30980, +31031, +31059, +31078, +31108, +31125, +31137, +31174, +31200, +31200, +31200, +31200, +31207, +31237, +31237, +31259, +31279, +31307, +31335, +31378, +31378, +31378, +31378, +31397, +31437, +31443, +31467, +31467, +31483, +31527, +31537, +31548, +31557, +31564, +31564, +31589, +31603, +31647, 31661, -31669, -31669, -31676, -31676, -31706, -31720, -31726, -31743, -31785, -31804, -31817, -31817, -31835, -31846, -31863, -31885, -31885, -31896, -31907, -31907, -31907, -31922, -31922, -31929, -31929, -31929, -31936, -31943, -31949, -31949, -31949, -31959, -32006, -32024, -32031, -32031, -32038, -32063, -32095, -32095, -32105, -32105, -32105, -32105, -32105, -32125, -32134, -32140, -32176, -32185, -32195, -32195, -32195, -32195, -32202, -32202, -32218, -32236, -32259, -32294, +31677, +31677, +31690, +31709, +31709, +31762, +31769, +31776, +31799, +31841, +31841, +31848, +31869, +31875, +31875, +31904, +31904, +31925, +31939, +31952, +31984, +31984, +31984, +32029, +32029, +32029, +32045, +32055, +32086, +32086, +32124, +32152, +32152, +32159, +32159, +32184, +32190, +32211, +32231, +32231, +32238, +32261, +32268, +32284, +32284, +32284, +32284, 32300, -32305, -32305, -32305, 32323, -32337, -32352, -32359, -32374, -32381, -32388, -32388, -32388, -32402, -32402, +32351, +32358, +32396, +32396, +32396, 32402, 32402, -32418, -32428, -32428, -32428, -32450, -32450, -32450, -32462, -32467, -32480, -32480, -32480, -32487, -32502, -32509, -32525, -32560, -32570, -32583, -32597, -32623, -32637, -32644, -32667, -32707, -32725, -32725, -32747, -32747, -32751, -32758, -32789, -32807, -32824, -32824, -32824, -32824, -32843, -32843, -32850, -32876, -32908, -32915, -32946, -32965, -32965, -32982, -33002, -33009, -33029, -33064, -33084, -33098, -33098, -33098, -33098, +32414, +32414, +32438, +32449, +32455, +32483, +32490, +32510, +32541, +32548, +32578, +32585, +32592, +32592, +32592, +32616, +32625, +32641, +32671, +32681, +32681, +32688, +32711, +32737, +32754, +32761, +32761, +32777, +32810, +32817, +32817, +32817, +32817, +32817, +32844, +32867, +32901, +32943, +32956, +32974, +32983, +33004, +33004, +33050, +33066, +33072, +33072, +33080, +33080, 33110, 33110, -33151, -33158, -33180, -33198, -33205, -33227, -33227, -33237, -33237, -33253, -33258, -33277, -33292, -33315, -33315, -33333, +33134, +33157, +33164, +33200, +33200, +33207, +33244, +33244, +33309, +33316, +33316, +33316, +33316, +33316, +33323, +33341, 33348, -33348, -33348, -33348, -33348, -33348, -33348, -33355, -33355, -33355, -33390, -33408, -33423, -33437, -33452, -33458, -33465, -33480, -33480, +33361, +33394, +33394, +33394, +33394, +33432, +33442, +33470, +33470, +33470, +33487, +33487, 33487, -33494, -33504, -33511, -33551, -33551, -33558, -33589, -33595, -33595, +33516, +33548, +33562, +33562, +33569, +33584, +33584, +33584, 33602, -33627, -33644, -33668, -33668, -33668, -33676, -33676, -33716, -33728, -33747, -33747, -33769, -33775, -33789, -33803, -33803, -33810, -33810, -33810, -33820, -33820, -33820, -33820, -33843, -33843, -33843, -33879, -33889, -33889, -33889, -33903, -33917, -33931, -33959, -33993, -34000, -34014, -34037, -34043, -34055, -34055, +33621, +33621, +33629, +33645, +33645, +33652, +33652, +33672, +33691, +33707, +33714, +33721, +33721, +33735, +33766, +33772, +33772, +33772, +33779, +33779, +33824, +33844, +33844, +33850, +33867, +33867, +33874, +33874, +33874, +33874, +33901, +33946, +33960, +33971, +34019, +34050, 34077, -34083, -34090, -34099, -34099, -34115, -34115, -34133, -34140, -34167, -34172, -34184, -34221, -34245, -34252, -34252, +34084, +34103, +34110, +34121, +34128, +34157, +34193, +34193, +34220, 34259, +34272, +34272, +34272, +34279, +34294, +34300, +34313, 34318, -34318, -34325, 34325, -34352, -34400, -34415, -34422, -34422, -34431, -34438, -34445, -34445, -34473, -34473, -34489, -34489, -34489, -34489, -34499, -34499, -34499, -34516, -34536, -34551, -34564, -34580, -34580, -34580, -34589, -34589, +34333, +34347, +34354, +34361, +34368, +34368, +34368, +34408, +34433, +34467, +34504, +34504, +34547, +34547, +34554, +34561, +34561, +34561, +34582, 34589, -34613, -34648, -34648, -34648, -34655, -34664, -34681, -34681, -34698, -34698, -34720, -34736, +34611, +34627, +34637, +34637, +34637, +34641, +34666, +34666, +34683, +34690, +34690, +34699, +34699, +34716, 34749, 34749, -34765, -34778, -34785, -34795, -34819, -34819, -34829, -34841, -34848, -34854, -34854, -34854, -34878, -34894, -34894, -34900, -34917, -34934, -34940, -34970, -34998, -34998, -35004, -35004, -35012, -35012, -35012, -35020, -35020, -35032, -35038, -35062, -35062, -35062, -35068, -35068, -35082, -35092, -35096, -35107, -35118, -35134, -35155, -35155, -35166, -35178, -35178, -35195, -35201, -35201, -35201, +34756, +34756, +34756, +34756, +34777, +34777, +34777, +34820, +34827, +34862, +34874, +34881, +34881, +34903, +34903, +34903, +34920, +34949, +34949, +34949, +34949, +34968, +34968, +35003, +35003, +35015, +35039, +35039, +35081, +35093, +35093, +35115, +35115, +35132, +35132, +35132, +35132, +35157, 35226, -35226, -35226, -35226, -35256, -35262, -35272, -35280, +35241, +35248, +35266, +35266, +35273, +35273, +35273, +35273, +35299, 35299, -35332, -35354, -35354, -35354, -35370, -35386, -35417, -35417, -35460, -35473, -35478, -35495, -35504, -35504, -35518, -35552, -35589, -35624, -35624, -35637, -35637, -35643, -35643, -35669, -35682, -35695, -35702, -35709, -35709, -35726, -35739, -35749, -35756, -35756, -35778, -35803, -35810, -35829, -35883, +35306, +35334, +35365, +35365, +35406, +35428, +35428, +35441, +35474, +35506, +35506, +35529, +35529, +35548, +35555, +35574, +35574, +35574, +35595, +35630, +35644, +35649, +35698, +35750, +35750, +35762, +35762, +35762, +35798, +35842, +35849, +35866, +35878, +35885, +35892, 35899, -35905, -35911, -35911, +35899, +35906, +35906, +35906, 35923, -35947, -35954, -35980, -35987, -36034, -36052, -36063, -36095, -36106, -36106, +35944, +35951, +35961, +35978, +35984, +35992, +36023, +36060, +36076, +36085, 36113, -36120, -36140, -36140, -36153, -36160, -36160, -36167, -36203, -36203, -36218, -36218, -36225, -36253, -36259, -36284, -36296, -36310, -36324, -36331, -36344, -36367, -36367, -36367, -36412, -36412, -36422, -36463, -36463, -36463, -36479, -36490, -36513, -36520, -36520, -36527, -36527, -36527, -36540, -36574, -36594, -36594, -36605, -36621, -36621, -36641, -36641, -36641, -36659, -36682, -36682, -36682, -36682, -36705, -36705, -36705, -36720, -36720, -36755, -36755, -36771, -36771, -36771, -36788, -36806, -36835, -36845, -36875, -36875, -36903, -36921, -36928, -36928, -36940, -36940, -36940, -36966, -36966, -36973, -36983, -36998, -37004, -37014, -37024, -37024, -37032, -37038, -37038, -37061, -37074, -37074, -37091, -37098, -37105, -37105, -37133, -37141, -37141, -37148, -37191, -37191, -37197, -37197, -37210, -37224, -37224, -37231, -37250, -37257, -37273, -37273, -37280, -37287, -37294, -37300, -37307, -37330, -37348, -37348, -37359, -37359, -37359, -37377, -37392, -37398, -37412, -37431, -37469, -37486, -37508, -37517, -37535, -37535, -37542, -37542, -37549, -37549, -37549, -37549, -37556, -37576, -37576, -37583, -37590, -37597, -37604, -37604, -37621, -37635, -37676, -37676, -37704, -37711, -37728, +36144, +36144, +36159, +36166, +36166, +36173, +36173, +36201, +36201, +36220, +36227, +36227, +36227, +36247, +36263, +36270, +36270, +36315, +36315, +36322, +36330, +36354, +36408, +36420, +36420, +36440, +36454, +36454, +36454, +36461, +36474, +36529, +36569, +36667, +36674, +36674, +36700, +36707, +36707, +36714, +36721, +36721, +36731, +36760, +36781, +36793, +36800, +36800, +36847, +36854, +36868, +36938, +36945, +36967, +36967, +36992, +37008, +37050, +37050, +37050, +37068, +37081, +37088, +37113, +37145, +37145, +37145, +37145, +37165, +37171, +37171, +37198, +37198, +37211, +37239, +37247, +37298, +37341, +37341, +37367, +37400, +37422, +37458, +37492, +37530, +37530, +37530, +37537, +37551, +37566, +37592, +37614, +37614, +37631, +37638, +37645, +37652, +37664, +37702, +37714, +37721, 37728, -37737, -37737, -37737, -37750, -37757, -37778, -37785, -37785, -37819, -37826, -37833, -37843, -37850, -37869, -37914, -37921, -37935, +37740, +37770, +37770, +37793, +37809, +37830, +37830, +37841, +37841, +37867, +37867, +37883, +37890, +37890, +37910, +37926, 37942, -37949, -37982, -38013, -38013, -38013, -38023, -38057, -38077, -38097, -38110, -38117, -38123, -38133, -38133, -38133, -38140, -38140, -38148, -38159, -38179, -38192, -38205, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38218, -38225, -38225, -38230, -38246, -38258, -38280, -38287, -38294, -38294, -38294, -38301, -38318, -38318, -38340, -38371, -38371, -38384, -38420, -38440, -38453, -38481, -38506, -38522, -38534, -38559, -38559, +37957, +37991, +38010, +38010, +38026, +38079, +38086, +38093, +38112, +38119, +38136, +38136, +38155, +38189, +38210, +38220, +38248, +38278, +38278, +38314, +38339, +38339, +38354, +38370, +38385, +38399, +38417, +38441, +38469, +38476, +38483, +38499, +38499, +38499, +38521, 38559, -38564, -38564, -38581, -38604, -38604, -38611, -38620, -38626, -38635, -38635, -38635, -38666, -38674, +38599, +38617, +38624, +38624, +38660, +38673, 38688, -38693, -38710, -38722, -38722, -38722, -38729, -38734, -38752, -38792, -38818, -38825, +38742, +38774, +38774, +38799, +38799, +38830, +38861, +38861, +38861, +38861, 38861, +38890, 38902, -38934, -38949, -38949, -38960, -38969, -38985, -38985, -38996, -39013, -39024, -39024, -39032, -39061, -39074, +38909, +38944, +38989, +39007, +39045, +39063, 39089, -39123, -39123, -39123, -39140, -39161, -39180, -39206, -39215, -39254, -39261, -39277, -39284, -39314, -39314, -39330, -39340, -39340, -39371, -39371, -39392, +39096, +39109, +39109, +39114, +39127, +39162, +39177, +39177, +39200, +39218, +39226, +39226, +39257, +39293, +39293, +39324, +39324, +39352, +39364, +39364, +39377, +39395, +39395, +39413, 39430, -39430, -39437, -39444, -39461, -39468, -39468, -39485, -39517, -39524, -39538, -39543, -39548, -39555, +39459, +39469, +39469, +39479, +39479, +39479, +39503, +39518, +39528, +39528, +39528, +39540, +39565, +39565, 39581, -39588, -39588, -39609, -39609, -39616, -39652, +39605, +39622, +39653, +39670, +39670, +39670, 39670, -39677, -39677, -39684, -39691, -39702, -39717, -39717, -39717, -39724, -39749, -39760, -39766, -39775, -39791, -39791, -39814, -39827, -39827, -39837, -39859}; +39683, +39689, +39708, +39743, +39743, +39743, +39743, +39743, +39750, +39750, +39750, +39761, +39761, +39777, +39805, +39845, +39855, +39855, +39855, +39855, +39887, +39887, +39887, +39887, +39916, +39916, +39936, +39943, +39962, +39962, +39976, +39976, +40005, +40011, +40011, +40011, +40039, +40051, +40071, +40087, +40087, +40087, +40099, +40099, +40099, +40148, +40170, +40170, +40183, +40183, +40210, +40210, +40210, +40210, +40210, +40221, +40221, +40221, +40221, +40243, +40271, +40271, +40293, +40309, +40314, +40329, +40329, +40354, +40354, +40354, +40354, +40373, +40383, +40383, +40383, +40383, +40396, +40404, +40411, +40417, +40417, +40417, +40417, +40424, +40462, +40473, +40473, +40479, +40479, +40510, +40539, +40539, +40539, +40539, +40539, +40539, +40539, +40556, +40556, +40577, +40588, +40588, +40588, +40588, +40597, +40614, +40623, +40623, +40623, +40623, +40635, +40635, +40635, +40652, +40652, +40652, +40663, +40702, +40724, +40724, +40724, +40724, +40724, +40750, +40750, +40759, +40781, +40781, +40791, +40817, +40817, +40817, +40817, +40817, +40840, +40891, +40891, +40891, +40936, +40990, +40997, +41022, +41071, +41086, +41086, +41102, +41110, +41131, +41157, +41157, +41198, +41216, +41216, +41216, +41235, +41235, +41235, +41247, +41273, +41273, +41273, +41286, +41286, +41320, +41351, +41377, +41403, +41403, +41416, +41426, +41426, +41442, +41458, +41458, +41458, +41470, +41470, +41487, +41498, +41525, +41525, +41544, +41550, +41581, +41598, +41608, +41645, +41654, +41687, +41715, +41715, +41721, +41763, +41776, +41800, +41800, +41800, +41826, +41853, +41879, +41879, +41898, +41908, +41908, +41908, +41926, +41926, +41926, +41943, +41962, +41972, +41998, +42013, +42027, +42027, +42064, +42064, +42073, +42073, +42087, +42101, +42101, +42138, +42148, +42185, +42185, +42208, +42244, +42284, +42284, +42311, +42311, +42321, +42367, +42367, +42367, +42413, +42413, +42427, +42427, +42447, +42486, +42486, +42486, +42509, +42518, +42556, +42556, +42556, +42568, +42586, +42586, +42586, +42605, +42605, +42605, +42628, +42638, +42651, +42651, +42651, +42660, +42681, +42731, +42769, +42769, +42769, +42794, +42802, +42831, +42862, +42862, +42862, +42862, +42911, +42911, +42931, +42946, +42946, +42977, +42994, +43024, +43024, +43024, +43030, +43030, +43084, +43116, +43163, +43163, +43175, +43175, +43175, +43175, +43175, +43175, +43200, +43206, +43206, +43217, +43249, +43249, +43268, +43268, +43285, +43285, +43306, +43306, +43306, +43306, +43324, +43342, +43342, +43361, +43375, +43375, +43375, +43391, +43418, +43424, +43424, +43436, +43443, +43443, +43443, +43473, +43473, +43473, +43486, +43486, +43501, +43501, +43534, +43552, +43567, +43583, +43583, +43599, +43599, +43621, +43621, +43630, +43646, +43663, +43663, +43680, +43680, +43680, +43692, +43720, +43753, +43765, +43778, +43795, +43795, +43795, +43811, +43811, +43811, +43823, +43879, +43895, +43895, +43930, +43930, +43954, +43954, +43971, +43971, +43971, +44004, +44029, +44038, +44048, +44060, +44060, +44060, +44066, +44075, +44090, +44100, +44137, +44157, +44166, +44175, +44175, +44180, +44188, +44210, +44220, +44220, +44220, +44220, +44220, +44220, +44236, +44246, +44255, +44279, +44279, +44302, +44332, +44332, +44332, +44352, +44368, +44391, +44391, +44391, +44420, +44420, +44444, +44479, +44479, +44497, +44510, +44510, +44510, +44510, +44510, +44510, +44543, +44550, +44550, +44557, +44623, +44623, +44642, +44642, +44642, +44679, +44691, +44774, +44774, +44774, +44819, +44836, +44895, +44895, +44930, +44945, +44945, +45013, +45020, +45083, +45099, +45111, +45119, +45129, +45136, +45148, +45148, +45148, +45154, +45171, +45171, +45171, +45171, +45171, +45182, +45182, +45208, +45217, +45255, +45255, +45274, +45274, +45274, +45303, +45309, +45323, +45323, +45354, +45363, +45372, +45372, +45388, +45421, +45449, +45463, +45477, +45504, +45504, +45521, +45521, +45537, +45556, +45556, +45563, +45569, +45569, +45569, +45587, +45593, +45611, +45616, +45616, +45628, +45648, +45692, +45710, +45740, +45773, +45787, +45805, +45811, +45828, +45828, +45861, +45875, +45881, +45881, +45881, +45891, +45891, +45908, +45920, +45920, +45932, +45932, +45932, +45932, +45947, +45966, +45966, +46003, +46039, +46045, +46081, +46087, +46104, +46133, +46150, +46165, +46176, +46176, +46176, +46176, +46181, +46187, +46187, +46187, +46187, +46196, +46202, +46202, +46202, +46213, +46213, +46218, +46218, +46235, +46235, +46235, +46235, +46240, +46302, +46302, +46324, +46324, +46324, +46324, +46324, +46324, +46324, +46324, +46344, +46344, +46356, +46365, +46365, +46396, +46396, +46402, +46430, +46444, +46467, +46492, +46492, +46534, +46563, +46563, +46584, +46595, +46605, +46616, +46616, +46629, +46629, +46654, +46660, +46676, +46676, +46676, +46682, +46682, +46682, +46682, +46711, +46728, +46728, +46728, +46728, +46782, +46797, +46802, +46818, +46818, +46824, +46853, +46853, +46870, +46876, +46876, +46928, +46961, +46981, +46981, +47023, +47023, +47023, +47023, +47075, +47112, +47134, +47146, +47162, +47172, +47172, +47172, +47177, +47177, +47177, +47182, +47193, +47193, +47214, +47256, +47278, +47289, +47338, +47344, +47344, +47367, +47367, +47414, +47423, +47423, +47434, +47451, +47464, +47464, +47464, +47464, +47464, +47479, +47479, +47520, +47520, +47533, +47546, +47552, +47561, +47573, +47573, +47573, +47591, +47591, +47591, +47591, +47596, +47609, +47609, +47620, +47650, +47650, +47650, +47655, +47693, +47708, +47708, +47732, +47737, +47742, +47754, +47768, +47800, +47818, +47818, +47829, +47850, +47850, +47908, +47908, +47930, +47936, +47936, +47978, +47978, +47983, +48002, +48012, +48025, +48025, +48034, +48049, +48083, +48093, +48138, +48138, +48153, +48182, +48205, +48205, +48205, +48212, +48212, +48212, +48234, +48234, +48234, +48234, +48250, +48264, +48264, +48280, +48280, +48295, +48295, +48295, +48295, +48319, +48319, +48319, +48328, +48328, +48334, +48356, +48356, +48362, +48419, +48469, +48488, +48494, +48534, +48534, +48559, +48569, +48583, +48604, +48620, +48670, +48688, +48688, +48697, +48710, +48710, +48710, +48724, +48751, +48757, +48770, +48782, +48797, +48835, +48835, +48840, +48886, +48906, +48922, +48931, +48931, +48951, +48951, +48951, +48962, +48962, +48969, +49033, +49033, +49033, +49074, +49116, +49116, +49123, +49130, +49130, +49164, +49170, +49187, +49206, +49215, +49234, +49261, +49261, +49273, +49324, +49324, +49357, +49404, +49404, +49429, +49448, +49448, +49466, +49472, +49499, +49499, +49499, +49543, +49572, +49579, +49622, +49632, +49685, +49724, +49724, +49724, +49724, +49724, +49761, +49769, +49769, +49797, +49797, +49832, +49832, +49832, +49859, +49859, +49873, +49884, +49884, +49920, +49920, +49931, +49947, +49961, +49978, +50008, +50038, +50038, +50038, +50060, +50076, +50089, +50089, +50089, +50102, +50130, +50130, +50146, +50146, +50146, +50151, +50159, +50184, +50206, +50233, +50250, +50250, +50266, +50274, +50274, +50274, +50274, +50287, +50315, +50315, +50315, +50327, +50327, +50334, +50334, +50366, +50372, +50402, +50402, +50434, +50474, +50494, +50494, +50510, +50510, +50510, +50510, +50510, +50510, +50515, +50515, +50536, +50557, +50578, +50595, +50595, +50595, +50620, +50626, +50626, +50644, +50656, +50671, +50671, +50671, +50695, +50730, +50730, +50740, +50746, +50750, +50765, +50771, +50771, +50817, +50817, +50828, +50837, +50837, +50844, +50844, +50894, +50894, +50905, +50905, +50905, +50944, +50944, +50944, +50975, +51011, +51024, +51024, +51024, +51042, +51042, +51042, +51054, +51054, +51064, +51073, +51073, +51073, +51073, +51073, +51073, +51098, +51117, +51117, +51117, +51137, +51137, +51137, +51200, +51221, +51246, +51246, +51272, +51307, +51334, +51334, +51334, +51334, +51354, +51354, +51370, +51377, +51377, +51415, +51431, +51431, +51431, +51450, +51450, +51456, +51499, +51517, +51529, +51550, +51550, +51558, +51569, +51569, +51569, +51569, +51569, +51569, +51584, +51584, +51584, +51598, +51638, +51638, +51638, +51671, +51683, +51710, +51710, +51731, +51766, +51775, +51808, +51829, +51861, +51861, +51861, +51877, +51877, +51889, +51889, +51889, +51911, +51946, +51946, +51966, +51966, +51966, +51966, +51980, +51985, +51997, +51997, +51997, +51997, +52004, +52004, +52004, +52004, +52017, +52032, +52032, +52032, +52063, +52063, +52076, +52095, +52107, +52121, +52121, +52121, +52121, +52121, +52121, +52149, +52184, +52213, +52213, +52213, +52213, +52213, +52213, +52246, +52257, +52286, +52286, +52316, +52316, +52329, +52329, +52329, +52365, +52365, +52365, +52365, +52372, +52386, +52386, +52412, +52420, +52430, +52430, +52436, +52436, +52448, +52454, +52454, +52454, +52479, +52497, +52497, +52512, +52531, +52531, +52551, +52571, +52609, +52609, +52623, +52623, +52635, +52656, +52656, +52668, +52689, +52689, +52706, +52706, +52716, +52716, +52732, +52749, +52755, +52772, +52772, +52772, +52772, +52801, +52801, +52830, +52841, +52841, +52841, +52864, +52864, +52864, +52864, +52864, +52875, +52885, +52893, +52914, +52936, +52960, +52980, +53001, +53001, +53001, +53001, +53001, +53023, +53039, +53039, +53039, +53056, +53069, +53069, +53127, +53145, +53162, +53162, +53183, +53199, +53230, +53244, +53251, +53251, +53269, +53269, +53284, +53320, +53326, +53326, +53359, +53359, +53377, +53404, +53404, +53436, +53454, +53471, +53481, +53498, +53517, +53517, +53517, +53517, +53536, +53557, +53603, +53617, +53617, +53636, +53663, +53663, +53682, +53682, +53702, +53702, +53702, +53717, +53717, +53757, +53769, +53788, +53788, +53788, +53788, +53788, +53809, +53809, +53823, +53840, +53840, +53866, +53907, +53942, +53942, +53942, +53979, +54003, +54003, +54024, +54024, +54024, +54024, +54024, +54043, +54043, +54059, +54069, +54110, +54131, +54142, +54160, +54177, +54177, +54177, +54187, +54187, +54205, +54212, +54212, +54244, +54270, +54280, +54292, +54292, +54292, +54309, +54309, +54335, +54335, +54335, +54343, +54365, +54379, +54379, +54414, +54414, +54414, +54414, +54414, +54448, +54448, +54458, +54490, +54496, +54513, +54521, +54583, +54583, +54603, +54637, +54658, +54658, +54666, +54682, +54691, +54691, +54726, +54743, +54784, +54784, +54794, +54825, +54825, +54825, +54839, +54866, +54866, +54899, +54899, +54908, +54908, +54936, +54936, +54942, +54942, +54977, +54977, +54977, +54977, +54977, +54977, +54977, +54977, +54977, +54988, +54988, +54995, +55056, +55082, +55082, +55082, +55092, +55104, +55128, +55128, +55148, +55170, +55170, +55170, +55210, +55229, +55251, +55308, +55308, +55326, +55336, +55355, +55355, +55355, +55355, +55368, +55375, +55382, +55382, +55382, +55389, +55389, +55389, +55415, +55425, +55467, +55467, +55481, +55492, +55492, +55492, +55516, +55516, +55516, +55529, +55540, +55540, +55560, +55560, +55577, +55577, +55577, +55584, +55584, +55602, +55602, +55602, +55638, +55638, +55655, +55655, +55655, +55655, +55655, +55672, +55680, +55680, +55698, +55715, +55754, +55762, +55802, +55802, +55802, +55808, +55825, +55825, +55825, +55865, +55865, +55865, +55885, +55891, +55901, +55901, +55918, +55945, +55945, +55971, +55978, +55991, +56004, +56011, +56026, +56026, +56041, +56049, +56049, +56071, +56122, +56122, +56149, +56149, +56149, +56169, +56169, +56181, +56181, +56181, +56181, +56181, +56196, +56196, +56255, +56281, +56281, +56299, +56299, +56336, +56342, +56342, +56375, +56381, +56381, +56381, +56387, +56410, +56426, +56426, +56436, +56436, +56436, +56457, +56457, +56457, +56464, +56464, +56478, +56490, +56490, +56490, +56511, +56511, +56517, +56531, +56548, +56548, +56548, +56554, +56570, +56593, +56605, +56619, +56619, +56638, +56638, +56638, +56638, +56650, +56668, +56685, +56698, +56698, +56698, +56709, +56722, +56739, +56739, +56755, +56773, +56812, +56828, +56834, +56865, +56865, +56865, +56865, +56871, +56893, +56911, +56937, +56937, +56937, +56937, +56976, +56976, +57000, +57009, +57027, +57073, +57073, +57124, +57124, +57149, +57190, +57221, +57243, +57253, +57279, +57300, +57300, +57338, +57338, +57338, +57347, +57359, +57380, +57380, +57380, +57403, +57409, +57424, +57433, +57450, +57472, +57472, +57480, +57480, +57480, +57480, +57491, +57518, +57518, +57518, +57533, +57533, +57533, +57533, +57553, +57553, +57553, +57588, +57595, +57610, +57619, +57619, +57661, +57691, +57691, +57691, +57691, +57707, +57713, +57731, +57731, +57750, +57750, +57756, +57791, +57791, +57791, +57791, +57791, +57805, +57829, +57867, +57867, +57867, +57873, +57893, +57912, +57912, +57948, +57948, +57973, +57979, +57979, +57979, +57990, +58009, +58027, +58039, +58056, +58056, +58080, +58080, +58080, +58115, +58115, +58115, +58115, +58122, +58122, +58122, +58122, +58122, +58153, +58168, +58175, +58175, +58188, +58212, +58237, +58237, +58237, +58275, +58275, +58275, +58275, +58313, +58322, +58343, +58352, +58379, +58379, +58388, +58401, +58418, +58430, +58444, +58469, +58479, +58484, +58503, +58521, +58545, +58572, +58582, +58597, +58630, +58630, +58637, +58654, +58654, +58690, +58690, +58697, +58707, +58713, +58713, +58713, +58730, +58730, +58730, +58763, +58817, +58817, +58817, +58817, +58838, +58838, +58838, +58866, +58902, +58902, +58902, +58911, +58911, +58930, +58930, +58960, +58960, +58988, +59006, +59043, +59061, +59061, +59097, +59122, +59122, +59122, +59122, +59122, +59122, +59122, +59122, +59151, +59167, +59187, +59204, +59212, +59222, +59222, +59222, +59238, +59266, +59285, +59300, +59315, +59315, +59315, +59330, +59343, +59375, +59375, +59395, +59413, +59428, +59428, +59428, +59456, +59466, +59486, +59508, +59508, +59517, +59524, +59542, +59542, +59549, +59549, +59557, +59571, +59587, +59587, +59642, +59668, +59679, +59679, +59694, +59734, +59744, +59758, +59771, +59771, +59786, +59793, +59802, +59820, +59831, +59870, +59896, +59896, +59917, +59932, +59932, +59942, +59942, +59962, +59969, +59969, +60007, +60038, +60050, +60057, +60064, +60102, +60102, +60109, +60116, +60132, +60146, +60165, +60181, +60201, +60201, +60208, +60224, +60245, +60328, +60328, +60335, +60342, +60349, +60349, +60401, +60401, +60401, +60436, +60467, +60467, +60474, +60497, +60504, +60545, +60545, +60569, +60592, +60632, +60638, +60645, +60654, +60654, +60654, +60684, +60684, +60701, +60701, +60718, +60744, +60751, +60751, +60751, +60751, +60776, +60792, +60799, +60799, +60806, +60806, +60845, +60872, +60890, +60890, +60930, +60930, +60930, +60930, +60930, +60948, +60992, +61000, +61000, +61017, +61017, +61044, +61061, +61087, +61107, +61107, +61107, +61107, +61123, +61123, +61142, +61142, +61142, +61184, +61207, +61227, +61227, +61276, +61283, +61290, +61313, +61342, +61376, +61383, +61383, +61390, +61390, +61415, +61424, +61449, +61461, +61461, +61495, +61495, +61502, +61502, +61548, +61548, +61548, +61570, +61602, +61619, +61628, +61628, +61628, +61659, +61673, +61680, +61706, +61729, +61753, +61753, +61753, +61753, +61763, +61796, +61796, +61813, +61820, +61820, +61845, +61852, +61877, +61884, +61904, +61912, +61912, +61912, +61949, +61949, +61961, +61961, +61968, +61968, +61968, +61968, +62014, +62026, +62047, +62068, +62075, +62075, +62082, +62089, +62099, +62128, +62155, +62184, +62184, +62213, +62220, +62245, +62274, +62318, +62338, +62359, +62359, +62359, +62388, +62408, +62415, +62415, +62421, +62421, +62429, +62440, +62440, +62470, +62470, +62470, +62494, +62535, +62542, +62549, +62556, +62564, +62571, +62578, +62611, +62618, +62645, +62655, +62667, +62676, +62701, +62720, +62720, +62727, +62752, +62759, +62766, +62782, +62794, +62794, +62804, +62804, +62814, +62831, +62839, +62846, +62852, +62886, +62886, +62900, +62910, +62929, +62943, +62950, +62972, +62985, +62985, +62985, +62998, +63014, +63041, +63067, +63067, +63085, +63101, +63108, +63108, +63115, +63135, +63135, +63142, +63149, +63149, +63156, +63173, +63173, +63180, +63212, +63219, +63236, +63236, +63247, +63298, +63310, +63343, +63343, +63343, +63356, +63356, +63374, +63374, +63374, +63374, +63381, +63401, +63421, +63436, +63459, +63459, +63500, +63506, +63516, +63528, +63551, +63551, +63567, +63615, +63615, +63651, +63679, +63693, +63700, +63734, +63734, +63748, +63763, +63763, +63763, +63775, +63815, +63861, +63884, +63884, +63899, +63907, +63943, +63943, +63950, +63950, +63964, +63964, +63964, +63996, +64003, +64012, +64012, +64106, +64124, +64131, +64131, +64138, +64158, +64158, +64177, +64208, +64208, +64220, +64220, +64220, +64235, +64243, +64258, +64258, +64280, +64290, +64301, +64321, +64334, +64341, +64357, +64400, +64400, +64407, +64407, +64414, +64414, +64433, +64454, +64472, +64502, +64523, +64523, +64582, +64589, +64589, +64619, +64619, +64619, +64619, +64638, +64638, +64638, +64648, +64660, +64660, +64676, +64676, +64695, +64705, +64705, +64732, +64732, +64732, +64738, +64764, +64774, +64787, +64830, +64854, +64888, +64893, +64902, +64938, +64967, +64997, +64997, +65015, +65046, +65072, +65072, +65097, +65110, +65110, +65110, +65110, +65110, +65110, +65122, +65122, +65122, +65129, +65170, +65187, +65187, +65210, +65228, +65235, +65251, +65259, +65259, +65259, +65274, +65274, +65287, +65307, +65323, +65323, +65323, +65362, +65384, +65384, +65400, +65400, +65400, +65400, +65423, +65430, +65457, +65457, +65457, +65476, +65476, +65476, +65476, +65486, +65486, +65521, +65550, +65550, +65550, +65584, +65584, +65584, +65584, +65584, +65601, +65621, +65631, +65672, +65692, +65719, +65719, +65743, +65766, +65766, +65782, +65788, +65828, +65854, +65868, +65877, +65897, +65909, +65936, +65936, +65948, +65948, +65968, +65989, +65989, +65989, +65989, +66016, +66016, +66032, +66039, +66039, +66039, +66055, +66066, +66098, +66114, +66140, +66140, +66174, +66174, +66174, +66220, +66249, +66249, +66249, +66249, +66268, +66276, +66295, +66314, +66322, +66343, +66343, +66343, +66395, +66395, +66413, +66413, +66422, +66430, +66430, +66449, +66449, +66460, +66486, +66492, +66492, +66492, +66492, +66492, +66492, +66510, +66510, +66519, +66530, +66563, +66563, +66573, +66573, +66573, +66612, +66612, +66612, +66625, +66625, +66642, +66642, +66642, +66658, +66672, +66672, +66680, +66715, +66724, +66724, +66740, +66745, +66753, +66769, +66802, +66802, +66802, +66802, +66829, +66843, +66858, +66875, +66893, +66893, +66893, +66933, +66933, +66945, +66945, +66945, +66945, +66956, +66976, +66976, +66976, +66985, +67003, +67003, +67010, +67031, +67031, +67051, +67064, +67083, +67091, +67116, +67116, +67141, +67190, +67220, +67220, +67220, +67233, +67241, +67241, +67275, +67281, +67292, +67302, +67302, +67315, +67379, +67395, +67405, +67421, +67421, +67475, +67483, +67526, +67526, +67546, +67546, +67546, +67571, +67579, +67637, +67659, +67676, +67676, +67676, +67705, +67723, +67739, +67739, +67777, +67792, +67792, +67811, +67811, +67819, +67860, +67876, +67876, +67899, +67915, +67955, +67955, +67969, +67979, +67991, +67991, +67991, +68006, +68020, +68020, +68020, +68045, +68057, +68072, +68072, +68086, +68097, +68113, +68120, +68129, +68136, +68155, +68170, +68170, +68195, +68241, +68258, +68287, +68313, +68325, +68342, +68384, +68416, +68427, +68461, +68461, +68476, +68498, +68498, +68506, +68513, +68533, +68546, +68563, +68563, +68581, +68621, +68634, +68657, +68657, +68657, +68676, +68707, +68726, +68739, +68753, +68753, +68753, +68753, +68765, +68798, +68804, +68819, +68819, +68819, +68847, +68856, +68872, +68872, +68904, +68915, +68942, +68953, +68962, +68980, +69007, +69013, +69024, +69038, +69069, +69082, +69108, +69116, +69134, +69157, +69180, +69180, +69201, +69217, +69217, +69234, +69257, +69257, +69257, +69312, +69312, +69330, +69343, +69360, +69360, +69383, +69402, +69423, +69434, +69455, +69455, +69488, +69496, +69541, +69559, +69559, +69578, +69587, +69587, +69622, +69622, +69630, +69654, +69667, +69674, +69685, +69696, +69734, +69749, +69759, +69759, +69759, +69759, +69790, +69805, +69805, +69823, +69823, +69823, +69839, +69861, +69871, +69871, +69871, +69916, +69916, +69931, +69931, +69931, +69931, +69949, +70014, +70026, +70026, +70026, +70050, +70077, +70113, +70152, +70165, +70182, +70191, +70191, +70191, +70206, +70206, +70206, +70206, +70206, +70230, +70230, +70230, +70230, +70244, +70244, +70244, +70251, +70251, +70251, +70288, +70315, +70357, +70363, +70363, +70376, +70376, +70387, +70387, +70397, +70397, +70397, +70434, +70460, +70476, +70476, +70476, +70507, +70507, +70515, +70534, +70534, +70554, +70570, +70580, +70594, +70623, +70623, +70641, +70641, +70641, +70641, +70641, +70674, +70704, +70735, +70735, +70735, +70748, +70748, +70757, +70802, +70852, +70873, +70873, +70892, +70923, +70923, +70935, +70935, +70941, +70941, +70960, +70980, +70980, +71023, +71034, +71034, +71034, +71045, +71045, +71045, +71045, +71045, +71083, +71093, +71115, +71115, +71131, +71131, +71131, +71141, +71148, +71148, +71166, +71186, +71186, +71201, +71209, +71209, +71238, +71246, +71246, +71246, +71246, +71258, +71258, +71258, +71258, +71276, +71276, +71276, +71291, +71309, +71309, +71309, +71309, +71318, +71318, +71318, +71332, +71342, +71342, +71356, +71388, +71388, +71397, +71407, +71407, +71407, +71425, +71436, +71436, +71466, +71466, +71491, +71491, +71527, +71540, +71540, +71560, +71584, +71600, +71600, +71632, +71648, +71678, +71689, +71703, +71703, +71727, +71742, +71742, +71742, +71759, +71759, +71774, +71780, +71780, +71780, +71799, +71819, +71819, +71837, +71849, +71867, +71867, +71867, +71867, +71867, +71867, +71867, +71867, +71867, +71890, +71890, +71941, +71941, +71972, +72002, +72016, +72037, +72053, +72053, +72053, +72053, +72106, +72131, +72131, +72131, +72152, +72159, +72159, +72171, +72176, +72207, +72207, +72207, +72207, +72221, +72221, +72237, +72264, +72264, +72264, +72280, +72289, +72307, +72326, +72343, +72343, +72343, +72370, +72370, +72370, +72370, +72370, +72396, +72402, +72402, +72402, +72430, +72430, +72449, +72489, +72499, +72499, +72550, +72550, +72573, +72588, +72623, +72623, +72623, +72641, +72652, +72670, +72684, +72684, +72684, +72684, +72699, +72699, +72699, +72699, +72699, +72718, +72769, +72774, +72786, +72799, +72799, +72799, +72837, +72867, +72915, +72935, +72935, +72935, +72953, +72973, +72973, +72973, +72973, +73005, +73005, +73018, +73018, +73028, +73058, +73068, +73068, +73090, +73102, +73114, +73142, +73180, +73180, +73223, +73247, +73247, +73247, +73247, +73247, +73247, +73247, +73256, +73256, +73304, +73321, +73328, +73328, +73328, +73389, +73405, +73405, +73425, +73425, +73425, +73443, +73460, +73476, +73476, +73498, +73518, +73533, +73563, +73591, +73628, +73628, +73648, +73667, +73736, +73736, +73736, +73756, +73756, +73756, +73803, +73803, +73803, +73803, +73831, +73863, +73875, +73875, +73875, +73875, +73875, +73908, +73931, +73942, +73942, +73953, +73982, +74007, +74066, +74075, +74075, +74108, +74108, +74108, +74114, +74167, +74178, +74178, +74178, +74199, +74199, +74218, +74218, +74248, +74248, +74248, +74248, +74248, +74272, +74272, +74290, +74326, +74349, +74349, +74349, +74367, +74367, +74367, +74385, +74410, +74429, +74429, +74475, +74497, +74497, +74513, +74527, +74551, +74581, +74581, +74581, +74638, +74644, +74644, +74665, +74691, +74691, +74691, +74691, +74701, +74701, +74708, +74721, +74721, +74721, +74761, +74801, +74801, +74808, +74825, +74833, +74833, +74850, +74870, +74870, +74893, +74893, +74928, +74928, +74928, +74928, +74938, +74938, +74938, +74938, +74938, +74938, +74938, +74938, +74949, +74949, +74981, +75000, +75019, +75029, +75029, +75029, +75044, +75054, +75071, +75071, +75089, +75103, +75103, +75103, +75103, +75103, +75103, +75103, +75103, +75103, +75103, +75120, +75120, +75120, +75120, +75165, +75165, +75165, +75165, +75185, +75191, +75208, +75208, +75236, +75252, +75269, +75292, +75311, +75318, +75318, +75344, +75359, +75359, +75359, +75423, +75423, +75444, +75444, +75444, +75457, +75464, +75476, +75493, +75516, +75516, +75516, +75532, +75539}; -static const char tldData[] = { -"com.cn\0" -"com.co\0" -"hb.cn\0" -"med.br\0conf.lv\0wallonie.museum\0" -"namsos.no\0" -"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0farmers.museum\0rel.pl\0" -"com.cu\0" -"military.museum\0" -"*.jm\0convent.museum\0cymru.museum\0malvik.no\0" -"univ.sn\0" -"gliding.aero\0" -"wodzislaw.pl\0" -"com.dm\0!pref.iwate.jp\0tran\xc3\xb8y.no\0pila.pl\0" -"mb.it\0*.ke\0lib.ri.us\0" -"com.ec\0*.kh\0tr\xc3\xb8gstad.no\0" -"com.ee\0" -"mobi.gp\0" +static const char *tldData[] = { +"vgs.no\0ah.no\0" +"ma.us\0" +"mizunami.gifu.jp\0" +"saitama.jp\0kimino.wakayama.jp\0" +"int.bo\0cambridge.museum\0" +"andasuolo.no\0lardal.no\0" +"transport.museum\0" +"nishinomiya.hyogo.jp\0" +"is-into-cars.com\0" +"karlsoy.no\0" +"bungoono.oita.jp\0" +"int.ci\0" +"chikujo.fukuoka.jp\0" +"aisai.aichi.jp\0" +"os.hedmark.no\0" +"int.co\0" +"komaki.aichi.jp\0seki.gifu.jp\0" +"wanouchi.gifu.jp\0lib.ri.us\0" +"higashiosaka.osaka.jp\0" +"org\0cechire.com\0" +"satte.saitama.jp\0" +"berg.no\0" +"saitama.saitama.jp\0" +"cc.sd.us\0" +"act.gov.au\0mansion.museum\0" +"fe.it\0y.se\0" +"gunma.jp\0" +"otoyo.kochi.jp\0miyoshi.saitama.jp\0" +"sa.gov.au\0" +"online.museum\0" +"abiko.chiba.jp\0" +"!educ.ar\0" +"agematsu.nagano.jp\0" +"akiruno.tokyo.jp\0lund.no\0" +"kasuga.hyogo.jp\0" +"nakano.tokyo.jp\0homeunix.net\0" +"ambulance.aero\0sv.it\0" +"shiso.hyogo.jp\0" +"fuso.aichi.jp\0delmenhorst.museum\0" +"dali.museum\0" +"brindisi.it\0" +"midori.gunma.jp\0" +"nantan.kyoto.jp\0" +"takaishi.osaka.jp\0imizu.toyama.jp\0" +"tonsberg.no\0" +"countryestate.museum\0" +"rawa-maz.pl\0" +"yokoshibahikari.chiba.jp\0" +"ontario.museum\0" +"certification.aero\0" +"franziskaner.museum\0cc.nj.us\0" +"genkai.saga.jp\0" +"tysfjord.no\0" +"ra.it\0" +"air-traffic-control.aero\0ina.ibaraki.jp\0" +"in-the-band.net\0" +"ainan.ehime.jp\0oita.oita.jp\0!national-library-scotland.uk\0" +"kamiichi.toyama.jp\0" +"ogata.akita.jp\0smola.no\0" +"matsushima.miyagi.jp\0langev\xc3\xa5g.no\0" +"vard\xc3\xb8.no\0" +"limanowa.pl\0" +"is-a-bruinsfan.org\0" +"yufu.oita.jp\0berkeley.museum\0" +"torino.it\0per.la\0" +"noheji.aomori.jp\0koebenhavn.museum\0isa-geek.com\0" +"choyo.kumamoto.jp\0" +"s\xc3\xb8r-odal.no\0" +"int.is\0bir.ru\0" +"jefferson.museum\0" +"brasil.museum\0" +"sologne.museum\0" +"shimosuwa.nagano.jp\0setagaya.tokyo.jp\0" +"tokoname.aichi.jp\0lerdal.no\0" +"!retina.ar\0boston.museum\0" +"bologna.it\0kimobetsu.hokkaido.jp\0yuzawa.niigata.jp\0" +"obuse.nagano.jp\0gs.svalbard.no\0" +"furudono.fukushima.jp\0" +"isla.pr\0ny.us\0" +"5.bg\0" +"lt.ua\0" "gran.no\0" -"wa.gov.au\0" -"com.dz\0kg.kr\0" -"zoological.museum\0gjerstad.no\0haugesund.no\0kharkov.ua\0" -"walbrzych.pl\0" -"civilization.museum\0" -"ha.no\0" -"*.kw\0" -"med.ec\0com.es\0" -"med.ee\0otago.museum\0svelvik.no\0" -"art.ht\0amber.museum\0elvendrell.museum\0rost.no\0" -"jx.cn\0gratangen.no\0" -"association.aero\0ca.it\0" -"zaporizhzhe.ua\0" -"com.fr\0" -"szex.hu\0" -"e-burg.ru\0" -"com.ge\0bokn.no\0" -"mordovia.ru\0" -"com.gh\0*.mm\0" -"com.gi\0z.se\0" -"cahcesuolo.no\0" -"hurdal.no\0joshkar-ola.ru\0" -"cadaques.museum\0ma.us\0" -"a.bg\0" -"com.gn\0bozen.it\0tambov.ru\0" -"*.gifu.jp\0*.tokyo.jp\0*.mt\0" -"com.gp\0travel\0cc.tx.us\0" -"com.gr\0hemne.no\0" -"*.ni\0" -"*.mz\0" -"cc.il.us\0" -"com.gy\0" -"zj.cn\0oksnes.no\0museum.tt\0" -"com.hk\0*.np\0" -"rc.it\0baseball.museum\0" -"com.hn\0exhibition.museum\0" -"h\xc3\xa1""bmer.no\0" -"com.hr\0" -"fg.it\0stathelle.no\0defense.tn\0" -"com.ht\0" -"qld.gov.au\0*.nz\0" -"davvenj\xc3\xa1rga.no\0*.om\0" -"vang.no\0" -"*.kumamoto.jp\0" -"vercelli.it\0usenet.pl\0" -"com.io\0stalbans.museum\0" -"com.iq\0" -"*.pg\0" -"com.is\0klabu.no\0skiptvet.no\0" -"med.ht\0field.museum\0" -"gr.it\0gj\xc3\xb8vik.no\0tromsa.no\0lib.mi.us\0" -"ca.na\0" -"hagebostad.no\0k12.ma.us\0" -"*.qa\0" -"*.niigata.jp\0" -"monzaebrianza.it\0com.jo\0comunica\xc3\xa7\xc3\xb5""es.museum\0" -"gr.jp\0" -"ballangen.no\0*.py\0" -"scienceandindustry.museum\0" -"nuoro.it\0com.kg\0" -"com.ki\0" -"im.it\0idv.tw\0" -"*.akita.jp\0com.km\0r\xc3\xb8ros.no\0sopot.pl\0" -"!pref.yamanashi.jp\0" -"com.kp\0" -"!pref.kochi.jp\0com.la\0" -"com.lb\0" -"com.lc\0stjordalshalsen.no\0sigdal.no\0cc.nm.us\0" -"samnanger.no\0" -"drobak.no\0" -"vt.it\0" -"catering.aero\0com.ky\0" -"com.kz\0cc.ca.us\0" -"com.lk\0" -"grosseto.it\0mosvik.no\0" -"namsskogan.no\0" -"loten.no\0" -"chirurgiens-dentistes.fr\0" -"com.lr\0bremanger.no\0" -"gs.cn\0" -"com.lv\0lib.co.us\0" -"com.mg\0" -"passenger-association.aero\0" -"com.ly\0yekaterinburg.ru\0" -"vladivostok.ru\0" -"com.mk\0beeldengeluid.museum\0" -"com.ml\0" -"art.pl\0" -"com.mo\0" -"britishcolumbia.museum\0tx.us\0" -"com.na\0sakhalin.ru\0*.sv\0" -"mc.it\0" -"amsterdam.museum\0udm.ru\0" -"com.mu\0" -"com.mv\0com.nf\0" -"com.mw\0com.ng\0il.us\0" -"geometre-expert.fr\0com.mx\0" -"med.ly\0com.my\0" -"ag.it\0" -"*.tr\0" -"!pref.oita.jp\0" -"hoyanger.no\0skedsmo.no\0" -"com.nr\0turystyka.pl\0" -"koebenhavn.museum\0" -"quebec.museum\0" -"stord.no\0*.uk\0" -"act.au\0" -"br.it\0cb.it\0gyeonggi.kr\0jobs.tt\0lib.hi.us\0" -"*.ve\0" -"*.saga.jp\0wildlife.museum\0com.pa\0" -"monzabrianza.it\0sciencehistory.museum\0stange.no\0oskol.ru\0principe.st\0*.uy\0" -"plaza.museum\0com.pe\0" -"com.pf\0" -"eigersund.no\0" -"com.ph\0" -"manx.museum\0marylhurst.museum\0" -"md.ci\0pi.it\0schweiz.museum\0com.pk\0" -"grp.lk\0fr\xc3\xb8ya.no\0com.pl\0press.se\0" -"us.com\0" -"b.bg\0cremona.it\0communication.museum\0art.sn\0" -"med.pa\0" -"com.pr\0" -"com.ps\0" -"com.pt\0" -"k12.in.us\0" -"ah.cn\0bahcavuotna.no\0" -"sondrio.it\0arkhangelsk.ru\0" -"cargo.aero\0" -"council.aero\0" -"museum.mv\0hattfjelldal.no\0spydeberg.no\0med.pl\0" -"niepce.museum\0museum.mw\0" -"anthropology.museum\0" -"pharmacien.fr\0smola.no\0" -"fin.ec\0" -"selbu.no\0" -"workinggroup.aero\0nm.us\0" -"museum.no\0com.re\0" -"cc.vt.us\0" -"village.museum\0" -"ca.us\0" -"*.sapporo.jp\0" -"teramo.it\0" -"com.ro\0" -"*.ye\0" -"com.sa\0" -"com.sb\0" -"so.it\0com.sc\0" -"jolster.no\0com.sd\0" -"com.ru\0" -"com.rw\0com.sg\0" -"sydney.museum\0" -"sa.edu.au\0" -"tom.ru\0" -"com.sl\0*.za\0" -"\xe7\xbd\x91\xe7\xb5\xa1.hk\0naturbruksgymn.se\0com.sn\0" -"assedic.fr\0com.so\0" -"!pref.mie.jp\0*.yu\0" -"med.sa\0" -"newspaper.museum\0holmestrand.no\0dnepropetrovsk.ua\0" -"christiansburg.museum\0roan.no\0" -"pesaro-urbino.it\0med.sd\0com.st\0" -"s\xc3\xb8gne.no\0" -"nuernberg.museum\0" -"*.zm\0" -"com.sy\0" -"*.nagano.jp\0com.tj\0" -"nt.gov.au\0news.hu\0paderborn.museum\0" -"boston.museum\0" -"com.tn\0" -"com.to\0" -"broadcast.museum\0" -"com.ua\0" -"*.zw\0" -"baikal.ru\0" -"bykle.no\0com.tt\0" -"verdal.no\0" -"roros.no\0" -"fi.cr\0carboniaiglesias.it\0chuvashia.ru\0com.tw\0" -"k12.ca.us\0" -"eidsvoll.no\0" -"*.ishikawa.jp\0" -"dolls.museum\0" -"naval.museum\0" -"karasjok.no\0tysvar.no\0" -"bielawa.pl\0com.vc\0" -"svalbard.no\0deatnu.no\0rnd.ru\0" -"grandrapids.museum\0" -"bauern.museum\0k12.pr.us\0" -"press.ma\0" -"*.kagawa.jp\0fribourg.museum\0przeworsk.pl\0com.vi\0" -"com.uz\0" -"babia-gora.pl\0" -"com.vn\0" -"med.pro\0" -"suedtirol.it\0kursk.ru\0" -"bonn.museum\0" -"lt.it\0" -"design.aero\0microlight.aero\0americanantiques.museum\0meland.no\0" -"insurance.aero\0aarborte.no\0" -"kh.ua\0" -"macerata.it\0architecture.museum\0" -"rovigo.it\0rawa-maz.pl\0" -"store.nf\0levanger.no\0" -"b\xc3\xa1jddar.no\0" -"not.br\0" -"com.ws\0" -"!pref.kagawa.jp\0" -"!omanpost.om\0" -"vt.us\0" -"gs.ah.no\0vladikavkaz.ru\0" -"no.it\0" -"in.na\0szkola.pl\0a.se\0" -"aid.pl\0" -"workshop.museum\0vegarshei.no\0" +"per.nf\0" +"int.la\0" +"kumakogen.ehime.jp\0nasu.tochigi.jp\0" +"shirataka.yamagata.jp\0" +"vet.br\0graz.museum\0" +"int.lk\0" +"plc.co.im\0md.us\0k12.gu.us\0" +"wildlife.museum\0" +"stokke.no\0" +"stordal.no\0oskol.ru\0" +"kosaka.akita.jp\0" +"kitami.hokkaido.jp\0" +"higashimatsuyama.saitama.jp\0" +"s\xc3\xb8rreisa.no\0poznan.pl\0" +"\xd1\x81\xd1\x80\xd0\xb1\0" +"tokuyama.yamaguchi.jp\0" +"tosa.kochi.jp\0est-le-patron.com\0" +"hachijo.tokyo.jp\0" +"ibaraki.osaka.jp\0rindal.no\0" +"taishi.osaka.jp\0ol.no\0" +"int.mv\0lib.az.us\0" +"int.mw\0hjartdal.no\0" +"imb.br\0\xc3\xb8ksnes.no\0" +"ishikawa.jp\0osen.no\0" +"nakamura.kochi.jp\0" +"seiyo.ehime.jp\0mincom.tn\0" +"chieti.it\0sakado.saitama.jp\0" +"enebakk.no\0cc.ca.us\0from-hi.com\0" +"kokonoe.oita.jp\0auto.pl\0" +"venice.it\0shimada.shizuoka.jp\0" +"surrey.museum\0" +"audnedaln.no\0" +"minamifurano.hokkaido.jp\0axis.museum\0webhop.info\0" +"is-not-certified.com\0" +"volda.no\0" +"is-a-lawyer.com\0" +"oga.akita.jp\0" +"higashimatsushima.miyagi.jp\0" +"tonaki.okinawa.jp\0" +"somna.no\0rovno.ua\0" +"nt.gov.au\0" +"cc.pr.us\0" +"cs.it\0bieszczady.pl\0" +"per.sg\0" +"research.museum\0endoftheinternet.org\0" +"int.pt\0" +"costume.museum\0" +"eisenbahn.museum\0slask.pl\0" +"gdynia.pl\0" +"wa.au\0pol.dz\0fukui.jp\0higashishirakawa.gifu.jp\0botanicalgarden.museum\0" +"automotive.museum\0" +"sshn.se\0" +"nogata.fukuoka.jp\0cc.nm.us\0is-an-anarchist.com\0" +"dontexist.com\0" +"an.it\0" +"uenohara.yamanashi.jp\0" +"midtre-gauldal.no\0" +"hm.no\0komvux.se\0" +"hidaka.wakayama.jp\0hobby-site.org\0" +"giske.no\0" "sund.no\0" -"bs.it\0flora.no\0" -"agriculture.museum\0" -"koeln.museum\0" -"minnesota.museum\0k12.il.us\0" -"froya.no\0" -"aeroport.fr\0" -"davvenjarga.no\0zgora.pl\0ivano-frankivsk.ua\0" -"*.gunma.jp\0" -"amot.no\0" -"mus.br\0chungbuk.kr\0" -"ggf.br\0lorenskog.no\0" -"jeonbuk.kr\0" -"k12.vi.us\0" -"c.bg\0sande.more-og-romsdal.no\0" -"perugia.it\0" -"massa-carrara.it\0" -"michigan.museum\0" -"archaeology.museum\0mosj\xc3\xb8""en.no\0czest.pl\0koenig.ru\0\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0" -"mobi.tt\0" -"kraanghke.no\0" -"cc.in.us\0" -"re.it\0lib.vt.us\0" -"dell-ogliastra.it\0" -"s\xc3\xb8mna.no\0" -"k12.wv.us\0" -"gok.pk\0fh.se\0" -"luzern.museum\0" -"fi.it\0swidnica.pl\0" -"cbg.ru\0" -"latina.it\0" -"vibovalentia.it\0" -"modum.no\0" -"safety.aero\0" -"sp.it\0" -"science.museum\0ah.no\0" -"norddal.no\0" -"cc.na\0" -"re.kr\0" -"dielddanuorri.no\0" -"force.museum\0" -"torino.it\0cc.md.us\0" -"artanddesign.museum\0pisz.pl\0" -"olsztyn.pl\0" -"unsa.ba\0rade.no\0vinnica.ua\0" -"in.rs\0astrakhan.ru\0" +"troms\xc3\xb8.no\0" +"zagan.pl\0" +"chikusei.ibaraki.jp\0wlocl.pl\0" +"in-addr.arpa\0notaires.fr\0altai.ru\0" +"int.ru\0" +"aquila.it\0" +"int.rw\0" +"ito.shizuoka.jp\0" +"missoula.museum\0kolobrzeg.pl\0" +"assabu.hokkaido.jp\0" +"sld.do\0meloy.no\0" +"ak.us\0" +"k12.md.us\0" +"kawanishi.yamagata.jp\0is-lost.org\0" +"ochi.kochi.jp\0" +"amami.kagoshima.jp\0gamo.shiga.jp\0" +"yamazoe.nara.jp\0" +"shirako.chiba.jp\0matsuda.kanagawa.jp\0int.tj\0" +"ota.tokyo.jp\0" +"kicks-ass.net\0" +"yamato.fukushima.jp\0shinjo.okayama.jp\0baltimore.museum\0ushistory.museum\0pro\0" +"mallorca.museum\0hoyanger.no\0hobby-site.com\0" +"narvik.no\0olsztyn.pl\0warmia.pl\0" +"pol.ht\0int.tt\0" +"mizusawa.iwate.jp\0h\xc3\xb8yanger.no\0przeworsk.pl\0" +"matsuno.ehime.jp\0" +"folkebibl.no\0" +"pb.ao\0taranto.it\0nomi.ishikawa.jp\0chizu.tottori.jp\0alta.no\0" +"8.bg\0okazaki.aichi.jp\0" +"goshiki.hyogo.jp\0lib.wi.us\0" +"or.at\0" +"stateofdelaware.museum\0" +"modern.museum\0" +"\xd1\x80\xd1\x84\0" +"or.bi\0himi.toyama.jp\0" +"kitaaiki.nagano.jp\0toga.toyama.jp\0" +"kutchan.hokkaido.jp\0tamaki.mie.jp\0finnoy.no\0int.vn\0" +"fujisawa.iwate.jp\0" +"homebuilt.aero\0cranbrook.museum\0" +"kv\xc3\xa6""fjord.no\0" +"or.ci\0saigawa.fukuoka.jp\0kutno.pl\0" +"asuke.aichi.jp\0kanonji.kagawa.jp\0" +"higashikagawa.kagawa.jp\0" +"inashiki.ibaraki.jp\0matta-varjjat.no\0" +"lviv.ua\0" +"or.cr\0mitane.akita.jp\0" +"*.kitakyushu.jp\0fujikawa.shizuoka.jp\0" +"egersund.no\0" +"srv.br\0" +"belgorod.ru\0" +"v\xc3\xa5gs\xc3\xb8y.no\0fh.se\0" +"tsuruta.aomori.jp\0shibuya.tokyo.jp\0k12.va.us\0" +"kamishihoro.hokkaido.jp\0" "sogne.no\0" -"homebuilt.aero\0" -"polkowice.pl\0" -"hole.no\0health.vn\0" -"fj.cn\0" -"davvesiida.no\0" -"vic.au\0" -"kongsberg.no\0" -"pub.sa\0" -"vv.it\0" -"!pref.tottori.jp\0" -"*.sendai.jp\0in.th\0" -"lib.pa.us\0" -"chiropractic.museum\0" -"mobi.na\0aca.pro\0" -"konyvelo.hu\0sciencecenters.museum\0" -"he.cn\0" -"in.ua\0" -"!city.nagoya.jp\0" -"muenchen.museum\0" -"psi.br\0" -"maryland.museum\0" -"!statecouncil.om\0" -"tr\xc3\xa6na.no\0" -"!pref.yamagata.jp\0jewishart.museum\0" -"lu.it\0me.it\0" -"chel.ru\0" -"tatarstan.ru\0" -"adult.ht\0in.us\0" -"kafjord.no\0" -"\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0" -"net.ac\0k12.ec\0" -"net.ae\0bashkiria.ru\0" -"net.af\0!omantel.om\0" -"net.ag\0" -"net.ai\0" -"!pref.toyama.jp\0" -"net.al\0timekeeping.museum\0" -"net.an\0design.museum\0fin.tn\0" -"ethnology.museum\0" -"perso.ht\0asker.no\0b.se\0" -"net.ba\0" -"net.bb\0flanders.museum\0" -"mincom.tn\0" +"turystyka.pl\0" +"gujo.gifu.jp\0" +"experts-comptables.fr\0" +"yame.fukuoka.jp\0" +"annaka.gunma.jp\0kawagoe.mie.jp\0" +"wakayama.jp\0" +"openair.museum\0operaunite.com\0" +"wakuya.miyagi.jp\0" +"bjarkoy.no\0ivano-frankivsk.ua\0dyndns.tv\0is-a-linux-user.org\0" +"olbiatempio.it\0" +"etne.no\0fosnes.no\0" +"ginoza.okinawa.jp\0" +"krager\xc3\xb8.no\0" +"vn.ua\0" +"jx.cn\0bill.museum\0home.dyndns.org\0" +"lecco.it\0bihoro.hokkaido.jp\0" +"asaka.saitama.jp\0" +"tagajo.miyagi.jp\0" +"maintenance.aero\0" +"nordreisa.no\0" +"kamogawa.chiba.jp\0nebraska.museum\0" +"lib.nm.us\0" +"r\xc3\xa1isa.no\0" +"historisch.museum\0" +"is-a-republican.com\0" +"prd.fr\0yonaguni.okinawa.jp\0" +"bristol.museum\0crafts.museum\0blogsite.org\0" +"kasamatsu.gifu.jp\0" +"fin.ec\0" +"slg.br\0seirou.niigata.jp\0cahcesuolo.no\0from-ma.com\0" +"ba.it\0aq.it\0exhibition.museum\0heimatunduhren.museum\0" +"rg.it\0dyndns.ws\0" +"homedns.org\0" +"kakogawa.hyogo.jp\0" +"chikushino.fukuoka.jp\0mito.ibaraki.jp\0" +"dc.us\0" +"terni.it\0" +"or.id\0yoshida.shizuoka.jp\0" +"fukaya.saitama.jp\0rost.no\0" +"aomori.jp\0" +"aeroport.fr\0sabae.fukui.jp\0geology.museum\0" +"yakage.okayama.jp\0rahkkeravju.no\0" +"kasama.ibaraki.jp\0" "frana.no\0" -"bt.it\0" -"net.bh\0" -"auto.pl\0" -"net.az\0" -"treviso.it\0" -"war.museum\0" -"net.bm\0" -"langevag.no\0m\xc3\xa5lselv.no\0" -"net.bo\0" -"gol.no\0" -"folkebibl.no\0" -"net.br\0" -"net.bs\0troandin.no\0saotome.st\0lib.tn.us\0" -"md.us\0k12.ut.us\0" -"d.bg\0cambridge.museum\0\xc3\xa5s.no\0" -"net.ci\0" -"net.bz\0" -"sch.ae\0undersea.museum\0odda.no\0" -"net.cn\0" -"net.co\0c.la\0" -"gliwice.pl\0" -"aurskog-h\xc3\xb8land.no\0" +"hatoyama.saitama.jp\0za.org\0" +"kitayama.wakayama.jp\0" +"bilbao.museum\0" +"or.it\0" +"!nawrastelecom.om\0" +"nanjo.okinawa.jp\0k12.me.us\0" +"mobi.gp\0" +"daisen.akita.jp\0bizen.okayama.jp\0hembygdsforbund.museum\0salangen.no\0" +"yoshikawa.saitama.jp\0homelinux.com\0" +"or.jp\0farmers.museum\0from-ri.com\0" +"\xe1\x83\x92\xe1\x83\x94\0" +"\xc3\xa5snes.no\0" +"assisi.museum\0muos\xc3\xa1t.no\0kemerovo.ru\0" +"musashino.tokyo.jp\0" +"sld.pa\0" +"kushimoto.wakayama.jp\0virginia.museum\0is-a-financialadvisor.com\0" +"yuasa.wakayama.jp\0" +"yachimata.chiba.jp\0" +"\xc3\xa5seral.no\0klabu.no\0" +"onna.okinawa.jp\0" +"hikone.shiga.jp\0or.kr\0" +"tranby.no\0lib.vt.us\0" +"carrier.museum\0" +"isa-geek.net\0" +"orsta.no\0" +"toyone.aichi.jp\0fortmissoula.museum\0zoology.museum\0" +"historicalsociety.museum\0" +"prd.km\0" +"iheya.okinawa.jp\0" +"kongsberg.no\0" +"dreamhosters.com\0" +"chicago.museum\0gjerdrum.no\0" +"pe.ca\0" +"cpa.pro\0" +"makurazaki.kagoshima.jp\0mashiki.kumamoto.jp\0" +"sondrio.it\0masaki.ehime.jp\0" +"numazu.shizuoka.jp\0" +"kawanishi.nara.jp\0" +"futaba.fukushima.jp\0nachikatsuura.wakayama.jp\0" +"airguard.museum\0" +"society.museum\0" +"ulm.museum\0" +"or.na\0" +"tohma.hokkaido.jp\0" +"masoy.no\0" +"or.mu\0" +"prd.mg\0" +"!omanpost.om\0" +"izumizaki.fukushima.jp\0nishikatsura.yamanashi.jp\0" +"miyazu.kyoto.jp\0" +"unj\xc3\xa1rga.no\0" +"noshiro.akita.jp\0" +"ryokami.saitama.jp\0" +"carboniaiglesias.it\0homeunix.org\0" +"australia.museum\0" +"sowa.ibaraki.jp\0" +"urausu.hokkaido.jp\0" +"kaisei.kanagawa.jp\0" +"vt.it\0" +"virtual.museum\0" +"hs.kr\0brand.se\0" +"daejeon.kr\0seaport.museum\0" +"takaoka.toyama.jp\0" +"kitakata.fukushima.jp\0fribourg.museum\0" +"montreal.museum\0" +"higashiyama.kyoto.jp\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0" +"chitose.hokkaido.jp\0" +"engine.aero\0" +"rome.it\0medical.museum\0" +"tjome.no\0" +"asti.it\0reggio-calabria.it\0" +"or.pw\0" +"to.it\0murayama.yamagata.jp\0" +"shiraoi.hokkaido.jp\0" +"joshkar-ola.ru\0" +"fetsund.no\0wa.us\0" +"nakaniikawa.toyama.jp\0wroclaw.pl\0lib.nh.us\0" +"ragusa.it\0nakanojo.gunma.jp\0r\xc3\xa5""de.no\0barrell-of-knowledge.info\0" +"yuza.yamagata.jp\0moareke.no\0cv.ua\0" +"anjo.aichi.jp\0" +"!omanmobile.om\0" +"fukuroi.shizuoka.jp\0space-to-rent.com\0" +"torahime.shiga.jp\0" +"gojome.akita.jp\0" +"at.it\0yawara.ibaraki.jp\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0" +"okutama.tokyo.jp\0naturbruksgymn.se\0est-mon-blogueur.com\0" +"gj\xc3\xb8vik.no\0" +"marylhurst.museum\0" +"ferrara.it\0" +"shimonita.gunma.jp\0" +"chernivtsi.ua\0" +"yusuhara.kochi.jp\0" +"indianmarket.museum\0from-nm.com\0" +"chambagri.fr\0" +"yono.saitama.jp\0romsa.no\0" +"lucerne.museum\0" +"pe.it\0" +"from-mn.com\0" +"kurgan.ru\0or.th\0" +"udmurtia.ru\0" +"k12.nj.us\0" +"c.bg\0atami.shizuoka.jp\0" +"herad.no\0" +"midatlantic.museum\0" +"\xd1\x83\xd0\xba\xd1\x80\0" +"inazawa.aichi.jp\0matsumoto.nagano.jp\0francaise.museum\0horten.no\0" +"isehara.kanagawa.jp\0" +"fuji.shizuoka.jp\0or.ug\0" +"oppdal.no\0" +"or.tz\0\xd9\x82\xd8\xb7\xd8\xb1\0" +"!nacion.ar\0shiroi.chiba.jp\0muncie.museum\0from-ct.com\0" +"television.museum\0doomdns.com\0" +"bod\xc3\xb8.no\0" +"seihi.nagasaki.jp\0" +"memorial.museum\0" +"slupsk.pl\0" +"arkhangelsk.ru\0or.us\0" +"pe.kr\0is-a-bulls-fan.com\0" +"matsubara.osaka.jp\0" +"ishigaki.okinawa.jp\0" +"nysa.pl\0from-nv.com\0" +"ishikawa.fukushima.jp\0" +"drobak.no\0" +"stpetersburg.museum\0" "andria-trani-barletta.it\0" -"net.cu\0loab\xc3\xa1t.no\0" -"rep.kp\0" -"\xe7\xbb\x84\xe7\xb9\x94.hk\0" -"gallery.museum\0" -"\xc3\xb8rland.no\0" -"store.ro\0" -"net.dm\0" -"somna.no\0" -"hemnes.no\0" -"ringebu.no\0k12.ky.us\0" -"net.ec\0" -"dn.ua\0" -"tarnobrzeg.pl\0" -"soc.lk\0" -"romsa.no\0" -"bamble.no\0" -"net.dz\0lutsk.ua\0" -"barlettatraniandria.it\0ta.it\0countryestate.museum\0" -"kaszuby.pl\0" -"*.yamaguchi.jp\0cranbrook.museum\0store.st\0" -"southcarolina.museum\0lib.md.us\0" -"textile.museum\0" -"cheltenham.museum\0hurum.no\0" -"*.oita.jp\0" -"shop.ht\0cc.me.us\0" -"shop.hu\0turin.it\0" -"louvre.museum\0" -"k12.ar.us\0" -"consulting.aero\0" -"gv.ao\0" -"sauherad.no\0" -"gv.at\0net.ge\0" -"ostre-toten.no\0lib.ok.us\0" -"net.gg\0pilots.museum\0" -"2000.hu\0geology.museum\0" -"net.gn\0" -"mazowsze.pl\0bir.ru\0" -"net.gp\0" -"net.gr\0" -"oxford.museum\0" -"per.la\0" -"eastafrica.museum\0" -"meeres.museum\0" -"net.gy\0*.shizuoka.jp\0" -"\xe5\x95\x86\xe6\xa5\xad.tw\0" -"net.hk\0" -"net.hn\0" -"philadelphiaarea.museum\0" -"osen.no\0" -"net.ht\0net.id\0" -"fundacio.museum\0" -"j\xc3\xb8rpeland.no\0" -"\xe6\x95\x99\xe8\x82\xb2.hk\0" -"divtasvuodna.no\0" -"student.aero\0sch.gg\0net.im\0" -"\xe7\xbd\x91\xe7\xbb\x9c.cn\0net.in\0" -"net.iq\0" -"net.ir\0" -"net.is\0" -"net.je\0" -"kepno.pl\0lapy.pl\0" -"per.nf\0" -"gov\0*.shimane.jp\0" -"artcenter.museum\0" -"k\xc3\xa5""fjord.no\0" -"net.jo\0" +"aibetsu.hokkaido.jp\0plants.museum\0silk.museum\0holtalen.no\0" +"lakas.hu\0" +"gs.of.no\0rauma.no\0" +"modena.it\0" +"kh.ua\0" +"togitsu.nagasaki.jp\0" +"newhampshire.museum\0" +"oirase.aomori.jp\0grajewo.pl\0fin.tn\0" +"depot.museum\0" +"nayoro.hokkaido.jp\0" +"forgot.her.name\0" +"sande.more-og-romsdal.no\0" +"reklam.hu\0" +"\xc3\xa5krehamn.no\0" +"ancona.it\0h\xc3\xa5.no\0" +"lib.as.us\0" +"marketplace.aero\0schweiz.museum\0" "eu.int\0" -"c.se\0" -"net.kg\0" -"ce.it\0net.ki\0" -"sch.id\0os.hedmark.no\0" -"columbus.museum\0" -"arteducation.museum\0" -"net.kn\0" -"kr.com\0" -"net.la\0bushey.museum\0cc.gu.us\0" -"net.lb\0" -"net.lc\0" -"gs.bu.no\0" -"e164.arpa\0" -"chieti.it\0labour.museum\0" -"sch.ir\0creation.museum\0krodsherad.no\0" -"net.ky\0" -"net.kz\0me.us\0" -"e.bg\0sch.je\0net.lk\0" -"zlg.br\0suwalki.pl\0" -"\xe5\x80\x8b\xe4\xba\xba.hk\0net.ma\0" -"net.lr\0" -"sch.jo\0notaires.km\0net.me\0" -"net.lv\0karate.museum\0" -"net.ly\0karm\xc3\xb8y.no\0" -"rg.it\0" -"net.mk\0" -"net.ml\0evenes.no\0" -"ngo.lk\0net.mo\0egyptian.museum\0" -"marine.ru\0" -"realestate.pl\0" -"net.mu\0" -"net.mv\0net.nf\0" -"net.mw\0net.ng\0gda.pl\0" -"net.mx\0" -"freemasonry.museum\0net.my\0enebakk.no\0" -"karlsoy.no\0" -"\xe7\xbd\x91\xe7\xbb\x9c.hk\0\xc3\xb8rskog.no\0" -"randaberg.no\0" -"club.aero\0" -"certification.aero\0sr.it\0" -"center.museum\0so.gov.pl\0" -"caa.aero\0" -"sch.lk\0tvedestrand.no\0" -"net.nr\0" -"luroy.no\0" -"aukra.no\0s\xc3\xa1lat.no\0lib.me.us\0" -"ddr.museum\0" -"york.museum\0stryn.no\0k12.nm.us\0" -"per.sg\0" -"judaica.museum\0" -"verona.it\0" -"agdenes.no\0" -"cng.br\0sch.ly\0" -"net.pa\0" -"author.aero\0" -"naturalhistory.museum\0steiermark.museum\0bu.no\0" -"sn\xc3\xa5sa.no\0net.pe\0" -"net.ph\0" -"savannahga.museum\0batsfjord.no\0lib.oh.us\0" -"net.pk\0" -"net.pl\0" -"net.pn\0" -"washingtondc.museum\0" -"net.pr\0" -"net.ps\0" -"net.pt\0" -"nordkapp.no\0" -"emergency.aero\0krokstadelva.no\0" -"satx.museum\0ngo.ph\0omsk.ru\0" -"texas.museum\0" -"ngo.pl\0" -"mantova.it\0gu.us\0" -"!pref.shiga.jp\0isa.us\0" -"usa.museum\0" -"gb.net\0k12.vi\0" -"iveland.no\0" -"tempio-olbia.it\0" -"net.sa\0" -"net.sb\0" -"works.aero\0net.sc\0komvux.se\0" -"net.sd\0" -"net.ru\0" -"0.bg\0" -"forlicesena.it\0net.rw\0net.sg\0" -"klodzko.pl\0" -"detroit.museum\0wegrow.pl\0" -"net.sl\0" -"glogow.pl\0" -"store.bb\0air.museum\0" -"net.so\0" -"katowice.pl\0" -"nsk.ru\0" -"pisa.it\0eid.no\0" -"net.st\0" -"film.hu\0" -"tuva.ru\0d.se\0" -"net.th\0" -"net.sy\0" -"viterbo.it\0tsaritsyn.ru\0perso.sn\0net.tj\0" -"lib.gu.us\0" -"plc.co.im\0sec.ps\0" -"r\xc3\xa1hkker\xc3\xa1vju.no\0kazimierz-dolny.pl\0net.tn\0" -"net.to\0" -"veterinaire.km\0" -"net.ua\0" -"info.ht\0net.tt\0" -"info.hu\0" -"exchange.aero\0" -"sch.sa\0net.tw\0" -"andriatranibarletta.it\0perso.tn\0" -"f.bg\0malselv.no\0" -"net.vc\0" +"urasoe.okinawa.jp\0" +"kaluga.ru\0" +"godo.gifu.jp\0" +"kitagawa.kochi.jp\0kr.com\0" +"pvt.ge\0" +"usuki.oita.jp\0" +"mino.gifu.jp\0" +"rovigo.it\0" +"yamada.fukuoka.jp\0amakusa.kumamoto.jp\0lajolla.museum\0uzhgorod.ua\0" +"shimane.jp\0workshop.museum\0" +"aero\0" +"shikatsu.aichi.jp\0warszawa.pl\0" +"wegrow.pl\0" +"koga.fukuoka.jp\0" +"funabashi.chiba.jp\0moriya.ibaraki.jp\0yamaga.kumamoto.jp\0" +"act.edu.au\0mbone.pl\0" +"ikaruga.nara.jp\0" +"shinichi.hiroshima.jp\0gjesdal.no\0" +"hanawa.fukushima.jp\0" +"tr.it\0wakasa.fukui.jp\0" +"\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0" +"olbia-tempio.it\0" +"aizumisato.fukushima.jp\0convent.museum\0bd.se\0" +"fukuchi.fukuoka.jp\0takino.hyogo.jp\0vt.us\0" +"yazu.tottori.jp\0" +"kagoshima.jp\0loyalist.museum\0" +"kitahiroshima.hokkaido.jp\0fed.us\0" +"sandnessj\xc3\xb8""en.no\0varoy.no\0" +"hurdal.no\0" +"salem.museum\0jar.ru\0" +"yaizu.shizuoka.jp\0" +"cc.nv.us\0" +"airtraffic.aero\0" +"bg.it\0sukumo.kochi.jp\0" +"rm.it\0nishiokoppe.hokkaido.jp\0" +"house.museum\0" +"aizumi.tokushima.jp\0" +"hitachinaka.ibaraki.jp\0kicks-ass.org\0" +"hokuryu.hokkaido.jp\0k12.or.us\0" +"geisei.kochi.jp\0tatarstan.ru\0" +"toyotsu.fukuoka.jp\0meguro.tokyo.jp\0" +"myoko.niigata.jp\0" +"bronnoy.no\0" +"nishikawa.yamagata.jp\0" +"minamata.kumamoto.jp\0" +"gd.cn\0" "trana.no\0" -"ns.ca\0" -"net.vi\0" -"lucca.it\0oristano.it\0" -"usarts.museum\0net.vn\0" -"gon.pk\0" -"pl.ua\0" -"eastcoast.museum\0" -"novara.it\0" -"k12.ks.us\0" -"dp.ua\0" -"nesseby.no\0" -"!pref.wakayama.jp\0" -"repbody.aero\0" -"jamison.museum\0lugansk.ua\0" -"ss.it\0" -"alessandria.it\0" -"hadsel.no\0net.ws\0" -"\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0" -"veterinaire.fr\0leirfjord.no\0" -"massacarrara.it\0north.museum\0" -"project.museum\0" -"other.nf\0" +"takasaki.gunma.jp\0cc.ma.us\0" +"trani-barletta-andria.it\0" +"\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0c.la\0" +"hanno.saitama.jp\0" +"ami.ibaraki.jp\0kurotaki.nara.jp\0" +"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0boldlygoingnowhere.org\0" +"f.bg\0unjarga.no\0lib.ia.us\0" +"\xc3\xb8rskog.no\0tingvoll.no\0" +"webhop.org\0" +"grue.no\0dyndns-blog.com\0" +"dyndns-web.com\0" +"zakopane.pl\0" +"britishcolumbia.museum\0turek.pl\0" +"omi.nagano.jp\0is-an-actor.com\0" +"ms.it\0gov.nc.tr\0" +"kijo.miyazaki.jp\0" +"starostwo.gov.pl\0mobi.tt\0" +"gs.ah.no\0" +"minobu.yamanashi.jp\0tr.no\0" +"mobi.tz\0" +"rakkestad.no\0" +"org.ac\0from-az.net\0" +"org.ae\0" +"org.af\0bj.cn\0" +"org.ag\0" +"org.ai\0" +"nanae.hokkaido.jp\0oshino.yamanashi.jp\0" +"org.al\0takashima.shiga.jp\0" +"org.an\0naha.okinawa.jp\0matsuzaki.shizuoka.jp\0bahn.museum\0" +"chungbuk.kr\0biev\xc3\xa1t.no\0homelinux.net\0" +"org.ba\0umi.fukuoka.jp\0" +"org.bb\0" +"mihama.wakayama.jp\0cyber.museum\0" +"org.au\0yorii.saitama.jp\0hagi.yamaguchi.jp\0" +"ms.kr\0" +"org.bh\0fujikawa.yamanashi.jp\0floro.no\0oryol.ru\0" +"org.bi\0sakahogi.gifu.jp\0" +"org.az\0niimi.okayama.jp\0" +"aguni.okinawa.jp\0sells-for-less.com\0" +"org.bm\0tsukuba.ibaraki.jp\0" +"org.bo\0" +"org.br\0r\xc3\xa6lingen.no\0" +"org.bs\0kuriyama.hokkaido.jp\0" +"org.bt\0" +"org.bw\0" +"nf.ca\0" +"org.ci\0" +"org.bz\0" +"hirogawa.wakayama.jp\0" +"mordovia.ru\0" +"org.cn\0k12.vt.us\0" +"org.co\0" +"if.ua\0" +"org.cu\0" +"futsu.nagasaki.jp\0hu.net\0" +"dyndns-pics.com\0" +"karumai.iwate.jp\0" +"org.dm\0" +"org.do\0" +"risor.no\0" +"kujukuri.chiba.jp\0abashiri.hokkaido.jp\0novosibirsk.ru\0" +"org.ec\0" +"ballangen.no\0k12.co.us\0" +"org.ee\0" +"navuotna.no\0pisz.pl\0" +"org.eg\0" +"mobi.na\0" +"tonami.toyama.jp\0" +"org.dz\0sci.eg\0\xc3\xa5rdal.no\0" +"environmentalconservation.museum\0edunet.tn\0" +"murakami.niigata.jp\0usarts.museum\0" +"eidfjord.no\0e-burg.ru\0from-mt.com\0from-nd.com\0" +"karasuyama.tochigi.jp\0utah.museum\0" +"maritimo.museum\0" +"union.aero\0org.es\0" +"esan.hokkaido.jp\0" +"namegawa.saitama.jp\0c.se\0" +"anamizu.ishikawa.jp\0kitakami.iwate.jp\0" +"ga.us\0" +"qld.au\0gjemnes.no\0" +"ichinoseki.iwate.jp\0makinohara.shizuoka.jp\0" +"bahccavuotna.no\0" +"is-an-actress.com\0" +"karm\xc3\xb8y.no\0" +"org.ge\0cesena-forli.it\0" +"vantaa.museum\0gaular.no\0" +"org.gg\0" +"org.gh\0cc.ny.us\0" +"org.gi\0" +"from-dc.com\0" +"fitjar.no\0vyatka.ru\0" +"org.gn\0museum\0" +"org.gp\0" +"org.gr\0beppu.oita.jp\0" +"groundhandling.aero\0org.gt\0okegawa.saitama.jp\0lib.ky.us\0" +"org.hk\0" +"org.hn\0" +"presidio.museum\0cc.md.us\0" +"bolzano.it\0" +"sosa.chiba.jp\0koenig.ru\0iki.fi\0" +"org.ht\0ebetsu.hokkaido.jp\0" +"fuel.aero\0org.hu\0" +"hole.no\0" +"blog.br\0tosu.saga.jp\0" "k12.nh.us\0" -"mat.br\0artgallery.museum\0" -"sr.gov.pl\0" -"gamvik.no\0" -"info.ec\0lancashire.museum\0" -"fm.br\0ltd.co.im\0" -"americana.museum\0southwest.museum\0cc.ak.us\0" -"enna.it\0lunner.no\0" -"v\xc3\xa5gan.no\0" -"mari.ru\0" -"accident-investigation.aero\0" -"sor-aurdal.no\0lib.ny.us\0" -"novosibirsk.ru\0" -"bjugn.no\0" -"n\xc3\xa6r\xc3\xb8y.no\0ostrowwlkp.pl\0" -"info.bb\0foundation.museum\0" -"brand.se\0" -"info.at\0!pref.akita.jp\0l\xc3\xb8ten.no\0" -"coal.museum\0miners.museum\0" -"glass.museum\0" -"info.az\0" -"frog.museum\0szczytno.pl\0nov.ru\0" -"sunndal.no\0" -"gen.in\0" -"gx.cn\0" -"web.co\0*.mie.jp\0hobol.no\0\xe5\x8f\xb0\xe6\xb9\xbe\0" -"logistics.aero\0plo.ps\0" -"erotika.hu\0" -"torsken.no\0" -"exeter.museum\0" -"info.co\0" -"selje.no\0" -"storfjord.no\0" -"barum.no\0lind\xc3\xa5s.no\0" -"leasing.aero\0" -"championship.aero\0fst.br\0" -"lierne.no\0" -"!gobiernoelectronico.ar\0""1.bg\0" -"corporation.museum\0" -"al.it\0*.miyagi.jp\0" -"*.aomori.jp\0" -"\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0" -"amursk.ru\0" -"vestvagoy.no\0" -"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0cc.fl.us\0" -"os.hordaland.no\0" -"pistoia.it\0" -"tver.ru\0e.se\0" -"res.in\0*.yamagata.jp\0syzran.ru\0" -"capebreton.museum\0sandnessj\xc3\xb8""en.no\0" -"ternopil.ua\0" -"shop.pl\0" -"tank.museum\0" -"m\xc3\xa5s\xc3\xb8y.no\0" -"potenza.it\0time.museum\0" -"mjondalen.no\0" -"eng.br\0nedre-eiker.no\0" -"air-surveillance.aero\0" -"nt.au\0am.br\0pn.it\0" -"oystre-slidre.no\0ug.gov.pl\0" -"g.bg\0nesodden.no\0vologda.ru\0" -"parma.it\0tula.ru\0" -"*.nara.jp\0ak.us\0" -"nt.ca\0konin.pl\0" -"kiev.ua\0" -"skierv\xc3\xa1.no\0vestre-toten.no\0" -"ri.it\0botanical.museum\0farsund.no\0veg\xc3\xa5rshei.no\0dagestan.ru\0" -"ind.br\0k-uralsk.ru\0" -"rahkkeravju.no\0cmw.ru\0" -"canada.museum\0" -"fm.it\0" -"cc.wi.us\0" -"web.id\0aver\xc3\xb8y.no\0" -"dudinka.ru\0" -"baghdad.museum\0fitjar.no\0grane.no\0" -"gs.fm.no\0" -"sumy.ua\0" -"al.no\0" -"westfalen.museum\0" -"oregon.museum\0" -"bruxelles.museum\0elk.pl\0" -"planetarium.museum\0sn\xc3\xa5""ase.no\0" -"s\xc3\xb8rreisa.no\0" -"gs.st.no\0skien.no\0" -"bible.museum\0ivanovo.ru\0" -"avellino.it\0" -"tgory.pl\0" -"family.museum\0" -"ppg.br\0k12.as.us\0" -"trader.aero\0gorlice.pl\0" -"cc.al.us\0" -"ogliastra.it\0" -"is.it\0lib.nv.us\0" -"dr.na\0" -"media.hu\0nesna.no\0fl.us\0" -"uri.arpa\0" -"bjerkreim.no\0" -"charter.aero\0" -"genova.it\0" -"it.ao\0botany.museum\0hapmir.no\0" -"educational.museum\0" -"helsinki.museum\0" -"memorial.museum\0" -"web.lk\0pharmacy.museum\0" -"aircraft.aero\0appspot.com\0" -"ferrara.it\0beskidy.pl\0" -"hi.cn\0" -"taxi.aero\0flekkefjord.no\0" -"varoy.no\0" -"ragusa.it\0ambulance.museum\0" -"can.museum\0" -"*.osaka.jp\0isleofman.museum\0fm.no\0warmia.pl\0" -"educator.aero\0asmatart.museum\0" -"mi.it\0" -"kutno.pl\0" -"skedsmokorset.no\0" -"2.bg\0" -"*.kagoshima.jp\0km.ua\0" -"!city.sendai.jp\0" -"web.nf\0st.no\0cc.ri.us\0" -"reggiocalabria.it\0" -"wi.us\0" -"ancona.it\0newjersey.museum\0nnov.ru\0" -"f.se\0" -"ind.in\0" -"info.vn\0" -"andoy.no\0" -"ch.it\0fredrikstad.no\0guovdageaidnu.no\0" -"fjaler.no\0" -"sa.com\0" -"gs.nt.no\0" -"masfjorden.no\0" -"pordenone.it\0" -"po.it\0basel.museum\0" -"chambagri.fr\0" -"h.bg\0web.pk\0" -"london.museum\0" -"sciencecenter.museum\0\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" -"unbi.ba\0augustow.pl\0" -"wolomin.pl\0" -"notaires.fr\0tcm.museum\0al.us\0" -"nu.ca\0!pref.nagano.jp\0" -"info.tn\0" -"lib.wa.us\0" -"ed.ao\0info.tt\0" -"barreau.bj\0" -"k12.wy.us\0" -"pp.az\0gop.pk\0" -"int\0" -"l\xc3\xb8renskog.no\0podhale.pl\0" -"voagat.no\0" -"telekommunikation.museum\0" -"qld.au\0" -"te.it\0freiburg.museum\0snasa.no\0" -"gjemnes.no\0" -"sejny.pl\0" -"media.pl\0" -"skjak.no\0" -"watchandclock.museum\0" -"ed.ci\0pacific.museum\0" -"theater.museum\0info.ro\0" -"uk.com\0" -"campobasso.it\0aquarium.museum\0tysv\xc3\xa6r.no\0" -"kragero.no\0" -"windmill.museum\0info.sd\0" -"sologne.museum\0sande.m\xc3\xb8re-og-romsdal.no\0" -"nt.no\0cc.mi.us\0" -"ed.cr\0" -"academy.museum\0zachpomor.pl\0" -"tananger.no\0v\xc3\xa1rgg\xc3\xa1t.no\0ri.us\0" -"federation.aero\0" -"web.tj\0" -"matta-varjjat.no\0" -"steigen.no\0" -"local\0akrehamn.no\0" -"!pref.chiba.jp\0info.pk\0" -"info.pl\0""6bone.pl\0" -"klepp.no\0kherson.ua\0" -"ketrzyn.pl\0info.pr\0" -"sweden.museum\0" -"lardal.no\0" -"!retina.ar\0gz.cn\0" -"barletta-trani-andria.it\0vikna.no\0" -"bearalv\xc3\xa1hki.no\0" -"broker.aero\0gov.nc.tr\0" -"info.na\0k12.fl.us\0" -"hembygdsforbund.museum\0" -"entertainment.aero\0jerusalem.museum\0l\xc3\xa6rdal.no\0" -"hitra.no\0sogndal.no\0" -"farmequipment.museum\0info.mv\0info.nf\0\xc3\xa5lg\xc3\xa5rd.no\0" -"la-spezia.it\0" -"skanland.no\0fam.pk\0" -"skole.museum\0" -"art.museum\0" -"presidio.museum\0" -"3.bg\0public.museum\0" -"h\xc3\xb8yanger.no\0zagan.pl\0" -"an.it\0" -"philadelphia.museum\0info.nr\0" -"pesarourbino.it\0g\xc3\xa1ivuotna.no\0" -"poltava.ua\0" -"nt.ro\0" -"station.museum\0" -"mi.th\0" -"altoadige.it\0" -"nu.it\0" -"usculture.museum\0g.se\0" -"h\xc3\xa1mm\xc3\xa1rfeasta.no\0" -"daegu.kr\0info.la\0" -"dovre.no\0" -"ci.it\0horology.museum\0" -"bergbau.museum\0" -"press.museum\0" -"gangwon.kr\0" -"!city.kitakyushu.jp\0sor-varanger.no\0cc.hi.us\0" -"fuossko.no\0" -"zp.ua\0" -"american.museum\0" -"fl\xc3\xa5.no\0mi.us\0" "i.bg\0" -"od.ua\0" -"encyclopedic.museum\0" -"ind.tn\0" -"midatlantic.museum\0" -"newyork.museum\0" -"castres.museum\0" -"act.edu.au\0" -"topology.museum\0" -"ed.jp\0" -"of.by\0" -"iris.arpa\0inf.br\0askim.no\0pyatigorsk.ru\0" -"nord-fron.no\0nsn.us\0" -"beardu.no\0" -"agrar.hu\0corvette.museum\0chtr.k12.ma.us\0" -"figueres.museum\0" -"!pref.gunma.jp\0medizinhistorisches.museum\0" -"tjeldsund.no\0" -"nebraska.museum\0" -"bellevue.museum\0" -"abo.pa\0k12.al.us\0" -"info.ki\0" -"inf.cu\0sv.it\0" -"jfk.museum\0" -"!city.osaka.jp\0swinoujscie.pl\0" -"bydgoszcz.pl\0" -"!city.kyoto.jp\0" -"uvic.museum\0" -"madrid.museum\0steinkjer.no\0" -"lib.ma.us\0" -"sirdal.no\0" -"n\xc3\xb8tter\xc3\xb8y.no\0" -"taranto.it\0starnberg.museum\0" -"vic.gov.au\0pvt.ge\0pors\xc3\xa1\xc5\x8bgu.no\0" -"naroy.no\0ris\xc3\xb8r.no\0" -"va.it\0salem.museum\0starachowice.pl\0" -"!nawrastelecom.om\0" -"town.museum\0te.ua\0" -"se.net\0" -"kemerovo.ru\0" -"lerdal.no\0" -"gs.va.no\0" -"kms.ru\0" -"consulado.st\0" -"haram.no\0" -"tysnes.no\0" -"!pref.ibaraki.jp\0hamburg.museum\0" -"\xc3\xa5rdal.no\0" -"airline.aero\0" -"crew.aero\0newhampshire.museum\0" -"muenster.museum\0" -"aerodrome.aero\0" -"heroy.nordland.no\0belau.pw\0" -"kamchatka.ru\0" -"b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0lillehammer.no\0hi.us\0" -"hk.cn\0" -"!city.kobe.jp\0berlevag.no\0" -"ardal.no\0" -"askoy.no\0" -"vardo.no\0" -"fyresdal.no\0" -"sassari.it\0" -"video.hu\0drammen.no\0" -"lyngen.no\0nakhodka.ru\0" -"ip6.arpa\0games.hu\0" -"online.museum\0" -"k12.sd.us\0" -"4.bg\0sebastopol.ua\0" -"ao.it\0atlanta.museum\0" +"rs.ba\0" +"org.im\0" +"org.in\0" +"org.iq\0" +"lel.br\0org.ir\0kasahara.gifu.jp\0" +"org.is\0chofu.tokyo.jp\0notodden.no\0" +"org.je\0spjelkavik.no\0" +"vefsn.no\0" +"fukuoka.jp\0yamanobe.yamagata.jp\0yamanakako.yamanashi.jp\0" +"yaese.okinawa.jp\0" +"baikal.ru\0" +"from-me.org\0" +"kanazawa.ishikawa.jp\0nowaruda.pl\0" +"swidnica.pl\0" +"org.jo\0!city.yokohama.jp\0olkusz.pl\0" +"higashiura.aichi.jp\0mosjoen.no\0" +"vestv\xc3\xa5g\xc3\xb8y.no\0" +"takahama.aichi.jp\0dyn-o-saur.com\0" +"shimabara.nagasaki.jp\0" +"ebiz.tw\0" +"caserta.it\0org.kg\0" +"sc.cn\0org.ki\0" +"aizuwakamatsu.fukushima.jp\0is-a-teacher.com\0" +"sado.niigata.jp\0org.km\0resistance.museum\0" +"togo.aichi.jp\0org.kn\0skien.no\0" +"org.kp\0" +"org.la\0kommune.no\0" +"vic.edu.au\0miyoshi.aichi.jp\0org.lb\0" +"org.lc\0" +"cagliari.it\0" +"uscountryestate.museum\0h\xc3\xb8nefoss.no\0" +"gs.ol.no\0" +"riik.ee\0" +"g12.br\0ms.us\0nc.us\0" +"org.ky\0agro.pl\0" +"org.kz\0landes.museum\0doesntexist.com\0" +"org.lk\0" +"holt\xc3\xa5len.no\0" +"nedre-eiker.no\0" +"org.ma\0naroy.no\0" +"org.lr\0" +"org.ls\0" +"tagawa.fukuoka.jp\0" +"org.me\0" +"nonoichi.ishikawa.jp\0org.lv\0" +"org.mg\0horology.museum\0" +"utazas.hu\0ako.hyogo.jp\0" +"org.ly\0" +"org.mk\0sandnes.no\0" +"ayabe.kyoto.jp\0org.ml\0" +"office-on-the.net\0" +"minato.tokyo.jp\0org.mn\0" +"org.mo\0" +"koryo.nara.jp\0" +"org.na\0balsfjord.no\0" +"org.mu\0" +"hyuga.miyazaki.jp\0org.mv\0" +"perso.ht\0org.mw\0org.ng\0" +"org.mx\0" +"org.my\0" +"powiat.pl\0" +"kinokawa.wakayama.jp\0" +"shichinohe.aomori.jp\0" +"ru.com\0se.com\0" +"org.nr\0" +"environment.museum\0planetarium.museum\0" +"niigata.niigata.jp\0" +"name.hr\0" +"asago.hyogo.jp\0is-very-nice.org\0" +"hirata.fukushima.jp\0" +"sera.hiroshima.jp\0shizuoka.shizuoka.jp\0" +"nrw.museum\0" +"palace.museum\0" +"org.pa\0" +"cc.ak.us\0" +"wiki.br\0" +"shimotsuke.tochigi.jp\0org.pe\0press.se\0" +"org.pf\0" +"nishiizu.shizuoka.jp\0f.se\0" +"org.ph\0" +"is-a-llama.com\0" +"kamikawa.saitama.jp\0elblag.pl\0" +"kochi.jp\0gs.hm.no\0org.pk\0" +"org.pl\0" +"paleo.museum\0" +"org.pn\0" +"torsken.no\0" +"iwafune.tochigi.jp\0org.qa\0" +"org.pr\0" +"org.ps\0" +"bato.tochigi.jp\0org.pt\0" +"isumi.chiba.jp\0and\xc3\xb8y.no\0" +"tatsuno.nagano.jp\0org.py\0" +"pub.sa\0" +"portal.museum\0is-into-cartoons.com\0" +"sasayama.hyogo.jp\0" +"ibigawa.gifu.jp\0" +"uruma.okinawa.jp\0" +"orskog.no\0" +"cincinnati.museum\0" +"farmstead.museum\0" +"ftpaccess.cc\0" +"castres.museum\0org.ro\0" +"org.sa\0" +"sassari.it\0saka.hiroshima.jp\0org.sb\0" +"higashihiroshima.hiroshima.jp\0org.rs\0org.sc\0" +"org.sd\0" +"tokai.aichi.jp\0org.ru\0org.se\0" +"games.hu\0pn.it\0v\xc3\xa6r\xc3\xb8y.no\0" +"amsterdam.museum\0org.sg\0" +"campobasso.it\0org.sh\0" +"forli-cesena.it\0corvette.museum\0ath.cx\0" +"yokawa.hyogo.jp\0is-a-socialist.com\0" +"tjeldsund.no\0az.us\0" +"student.aero\0name.eg\0org.sl\0" +"l.bg\0sc.kr\0" +"org.sn\0" +"frankfurt.museum\0org.so\0" +"barcelona.museum\0from-wy.com\0" +"is-an-artist.com\0" +"dvrdns.org\0" +"ikata.ehime.jp\0" +"dr.na\0steinkjer.no\0org.st\0" +"yao.osaka.jp\0british.museum\0" +"grosseto.it\0gemological.museum\0lipetsk.ru\0" +"civilization.museum\0iron.museum\0org.sy\0" +"org.sz\0org.tj\0" +"tel\0" +"org.tm\0" +"honbetsu.hokkaido.jp\0minamioguni.kumamoto.jp\0org.tn\0" +"name.az\0ohira.miyagi.jp\0s\xc3\xb8ndre-land.no\0org.to\0" +"intl.tn\0" +"schlesisches.museum\0org.ua\0" +"cesenaforli.it\0" +"org.tt\0" +"org.tw\0org.ug\0" +"takehara.hiroshima.jp\0" +"bible.museum\0" +"narashino.chiba.jp\0" +"tsubame.niigata.jp\0hinohara.tokyo.jp\0" +"minamiawaji.hyogo.jp\0" +"is-into-anime.com\0" +"press.ma\0" +"nishihara.okinawa.jp\0" +"kita.osaka.jp\0kazo.saitama.jp\0org.vc\0" +"tagami.niigata.jp\0org.ve\0" "lebork.pl\0" -"ravenna.it\0" -"railway.museum\0songdalen.no\0" -"!pref.shimane.jp\0delaware.museum\0ed.pw\0" -"f\xc3\xb8rde.no\0" -"living.museum\0" -"juif.museum\0" -"lomza.pl\0" -"h.se\0" -"!bl.uk\0" -"portland.museum\0\xe7\xb5\x84\xe7\xb9\x94.tw\0" -"stj\xc3\xb8rdal.no\0" -"lecce.it\0" -"bz.it\0" -"farmstead.museum\0va.no\0" -"express.aero\0!nacion.ar\0" -"presse.km\0gs.of.no\0" -"\xe5\x8f\xb0\xe7\x81\xa3\0" -"og.ao\0gyeongbuk.kr\0vestv\xc3\xa5g\xc3\xb8y.no\0" -"prd.fr\0" -"pp.ru\0pp.se\0" -"forum.hu\0!pref.saga.jp\0" -"kvalsund.no\0" -"!city.kawasaki.jp\0n\xc3\xa5\xc3\xa5mesjevuemie.no\0" -"j.bg\0" -"vlaanderen.museum\0" -"cc.va.us\0" -"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0alabama.museum\0" -"school.museum\0her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0" -"\xc3\xa5seral.no\0" -"traniandriabarletta.it\0" -"flog.br\0" -"presse.ml\0" -"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0" -"historisch.museum\0" -"farm.museum\0palmsprings.museum\0oslo.no\0dyroy.no\0stranda.no\0" -"gs.rl.no\0r\xc3\xa5""de.no\0" -"bomlo.no\0s\xc3\xb8rum.no\0" -"jan-mayen.no\0ivgu.no\0" -"coop\0" -"agr.br\0k12.ak.us\0" -"!nic.ar\0catanzaro.it\0fusa.no\0" -"hu.com\0" -"inf.mk\0" -"vet.br\0" -"k12.mt.us\0k12.nd.us\0" -"vlog.br\0\xe5\x85\xac\xe5\x8f\xb8.cn\0sandnessjoen.no\0" -"lib.az.us\0" -"nsw.edu.au\0of.no\0\xc3\xb8stre-toten.no\0" -"*.okinawa.jp\0" -"vb.it\0" -"asso.fr\0firenze.it\0" -"trieste.it\0" -"\xe5\x85\xac\xe5\x8f\xb8.hk\0" -"museet.museum\0" -"prd.km\0" -"navuotna.no\0lib.ca.us\0" -"cc.nv.us\0" -"asso.gp\0" -"meraker.no\0" -"h\xc3\xa1pmir.no\0" -"i.ph\0" -"sx.cn\0jeonnam.kr\0" -"halden.no\0" -"fed.us\0" -"medio-campidano.it\0tsk.ru\0" -"barcelona.museum\0" -"giessen.museum\0roma.museum\0" -"hl.cn\0" -"\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0" -"biz.bb\0benevento.it\0rl.no\0bygland.no\0" -"port.fr\0asso.ht\0prd.mg\0" -"biz.at\0" -"tra.kp\0" -"*.aichi.jp\0khabarovsk.ru\0" -"campidano-medio.it\0" -"biz.az\0" -"newmexico.museum\0va.us\0" -"finearts.museum\0" -"murmansk.ru\0" -"\xc3\xb8rsta.no\0radom.pl\0k12.sc.us\0" -"5.bg\0kvinesdal.no\0" -"ap.it\0" -"*.fukushima.jp\0" -"asso.bj\0" -"mad.museum\0" -"lebesby.no\0" -"og.it\0glas.museum\0sauda.no\0" +"chuo.osaka.jp\0" +"kashiwa.chiba.jp\0turen.tn\0org.uy\0org.vi\0" +"flakstad.no\0org.uz\0isa-hockeynut.com\0" +"kyuragi.saga.jp\0" +"ichikai.tochigi.jp\0" +"aoste.it\0" +"org.vn\0" +"mishima.fukushima.jp\0" +"funagata.yamagata.jp\0" +"from-ms.com\0from-nc.com\0" +"psc.br\0" +"gorlice.pl\0" +"nl.ca\0chippubetsu.hokkaido.jp\0tone.ibaraki.jp\0i.ph\0" +"etajima.hiroshima.jp\0" +"uji.kyoto.jp\0sakai.osaka.jp\0la.us\0" +"aukra.no\0stranda.no\0stryn.no\0org.ws\0" +"tromsa.no\0" +"ind.br\0yoichi.hokkaido.jp\0" +"sayama.osaka.jp\0usenet.pl\0" +"amusement.aero\0maniwa.okayama.jp\0" +"katowice.pl\0is-a-nascarfan.com\0" +"okawa.kochi.jp\0" +"tomisato.chiba.jp\0cadaques.museum\0cc.dc.us\0" +"space.museum\0" +"afjord.no\0" +"oharu.aichi.jp\0" +"koriyama.fukushima.jp\0" +"il.us\0" +"n\xc3\xa1vuotna.no\0" +"satx.museum\0" +"misato.akita.jp\0" +"katsuragi.wakayama.jp\0history.museum\0" +"pharmacien.fr\0rieti.it\0" +"assassination.museum\0" +"j\xc3\xb8rpeland.no\0r\xc3\xb8yken.no\0" "i.se\0" -"k12.tx.us\0" -"asso.ci\0mk.ua\0" -"cesena-forli.it\0" -"lowicz.pl\0" -"k12.id.us\0" -"tas.gov.au\0" -"lukow.pl\0" -"utazas.hu\0" -"maritimo.museum\0bjark\xc3\xb8y.no\0" -"adm.br\0" -"pr.it\0lib.vi.us\0" -"bergamo.it\0k12.va.us\0" -"k.bg\0" -"railroad.museum\0" -"!british-library.uk\0" -"cincinnati.museum\0" -"sorreisa.no\0" -"asso.dz\0!nel.uk\0" -"rm.it\0" -"nv.us\0" -"nx.cn\0gos.pk\0" -"vic.edu.au\0" -"biella.it\0tjome.no\0" -"r\xc3\xb8yken.no\0" -"beiarn.no\0" -"qc.ca\0" -"georgia.museum\0square.museum\0" -"labor.museum\0omasvuotna.no\0cc.la.us\0" -"br.com\0reggioemilia.it\0" -"kristiansund.no\0" -"sorum.no\0" -"orsta.no\0" -"furniture.museum\0surrey.museum\0eng.pro\0" -"asn.lv\0balat.no\0" -"lavangen.no\0sld.pa\0" -"fla.no\0k12.ms.us\0k12.nc.us\0" -"bardu.no\0" -"donostia.museum\0" -"club.tw\0" -"elburg.museum\0" -"gs.hl.no\0lodingen.no\0" -"samara.ru\0" -"vc.it\0*.nagasaki.jp\0" -"fosnes.no\0" -"fuel.aero\0" -"qc.com\0" -"skjervoy.no\0" -"bill.museum\0kv\xc3\xa6""fjord.no\0" -"skydiving.aero\0*.tokushima.jp\0" -"!congresodelalengua3.ar\0laquila.it\0k12.ct.us\0" -"gorge.museum\0linz.museum\0sherbrooke.museum\0" -"tranoy.no\0ing.pa\0" -"ptz.ru\0" -"kr.it\0prato.it\0stat.no\0" -"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0" -"cosenza.it\0" -"stj\xc3\xb8rdalshalsen.no\0" -"finland.museum\0leka.no\0cc.pr.us\0" -"historichouses.museum\0s\xc3\xa1l\xc3\xa1t.no\0" -"venice.it\0" -"biz.ki\0" -"g\xc3\xa1ls\xc3\xa1.no\0" -"\xe7\xbb\x84\xe7\xbb\x87.hk\0" -"*.yamanashi.jp\0" -"rad\xc3\xb8y.no\0" -"6.bg\0" -"fareast.ru\0" -"paragliding.aero\0ba.it\0aq.it\0" -"sk\xc3\xa5nland.no\0" +"miyoshi.hiroshima.jp\0" +"computer.museum\0" +"tsubata.ishikawa.jp\0" +"kawakita.ishikawa.jp\0for-the.biz\0" +"fortworth.museum\0" +"akita.akita.jp\0storfjord.no\0" +"b\xc3\xa1hccavuotna.no\0" +"andebu.no\0" +"taketomi.okinawa.jp\0" +"isshiki.aichi.jp\0" +"taiji.wakayama.jp\0" +"haebaru.okinawa.jp\0" +"dell-ogliastra.it\0historichouses.museum\0trogstad.no\0" +"tx.us\0k12.pa.us\0" +"lib.ks.us\0" +"kherson.ua\0" +"uonuma.niigata.jp\0" +"bifuka.hokkaido.jp\0kouhoku.saga.jp\0luster.no\0" +"gotsu.shimane.jp\0r\xc3\xb8""d\xc3\xb8y.no\0" +"skiptvet.no\0" +"press.aero\0" +"sc.ug\0" +"sc.tz\0" +"hekinan.aichi.jp\0kariya.aichi.jp\0kounosu.saitama.jp\0quebec.museum\0" +"ind.gt\0kuromatsunai.hokkaido.jp\0" +"money.museum\0" +"historical.museum\0sc.us\0k12.mn.us\0" +"o.bg\0" +"chesapeakebay.museum\0ringerike.no\0" +"fst.br\0shitara.aichi.jp\0" +"urn.arpa\0" +"homelinux.org\0" +"ina.nagano.jp\0" "its.me\0" -"us.na\0" -"hl.no\0cc.ga.us\0" -"ac\0granvin.no\0" -"ad\0qld.edu.au\0!city.sapporo.jp\0" +"kawakami.nagano.jp\0miyada.nagano.jp\0" +"ishikari.hokkaido.jp\0" +"national.museum\0" +"imabari.ehime.jp\0" +"akaiwa.okayama.jp\0rhcloud.com\0" +"kamaishi.iwate.jp\0" +"joyo.kyoto.jp\0" +"ind.in\0school.na\0" +"kiso.nagano.jp\0sevastopol.ua\0" +"shimoichi.nara.jp\0loten.no\0" +"selfip.net\0" +"a\xc3\xa9roport.ci\0ascoli-piceno.it\0" +"nuremberg.museum\0" +"otaki.saitama.jp\0chuvashia.ru\0defense.tn\0" +"mibu.tochigi.jp\0mitaka.tokyo.jp\0" +"odo.br\0" +"koori.fukushima.jp\0" +"omuta.fukuoka.jp\0med.pro\0" +"tomioka.gunma.jp\0kitakata.miyazaki.jp\0arteducation.museum\0" +"yamatotakada.nara.jp\0" +"brunel.museum\0" +"vik.no\0" +"sf.no\0" +"is-a-designer.com\0" +"perso.sn\0" +"lg.jp\0" +"hayashima.okayama.jp\0name.vn\0" +"gangwon.kr\0" +"atlanta.museum\0" +"coop.ht\0" +"veterinaire.km\0" +"gda.pl\0cc.wa.us\0" +"qsl.br\0mitsue.nara.jp\0" +"oumu.hokkaido.jp\0" +"zarow.pl\0" +"kisarazu.chiba.jp\0" +"perso.tn\0" +"ono.fukushima.jp\0" +"tas.au\0nordre-land.no\0" +"kanagawa.jp\0" +"pasadena.museum\0" +"uto.kumamoto.jp\0" +"sport.hu\0" +"yamatokoriyama.nara.jp\0stj\xc3\xb8rdal.no\0name.tj\0" +"nishigo.fukushima.jp\0" +"nikko.tochigi.jp\0" +"tsushima.nagasaki.jp\0" +"palmsprings.museum\0" +"coop.br\0yaroslavl.ru\0" +"meldal.no\0" +"takasago.hyogo.jp\0" +"name.tt\0" +"nl.no\0" +"webhop.net\0" +"nic.im\0sayama.saitama.jp\0" +"nic.in\0" +"tomakomai.hokkaido.jp\0" +"agano.niigata.jp\0" +"\xd9\x85\xd8\xb5\xd8\xb1\0go.dyndns.org\0" +"savona.it\0" +"kodaira.tokyo.jp\0" +"qld.gov.au\0" +"kashiwara.osaka.jp\0l.se\0" +"veterinaire.fr\0" +"university.museum\0" +"haugesund.no\0" +"hokuto.yamanashi.jp\0" +"lib.ok.us\0" +"pesarourbino.it\0n\xc3\xb8tter\xc3\xb8y.no\0" +"2000.hu\0froya.no\0" +"genova.it\0saskatchewan.museum\0" +"isleofman.museum\0" +"video.hu\0smolensk.ru\0" +"taira.toyama.jp\0" +"masfjorden.no\0" +"jessheim.no\0" +"science.museum\0" +"cc.or.us\0from-pa.com\0" +"muroran.hokkaido.jp\0" +"bs.it\0ube.yamaguchi.jp\0" +"si.it\0" +"catering.aero\0esashi.hokkaido.jp\0newmexico.museum\0tana.no\0" +"opole.pl\0" +"iruma.saitama.jp\0" +"hiroo.hokkaido.jp\0ogawa.ibaraki.jp\0rv.ua\0" +"nakatsugawa.gifu.jp\0\xc3\xa1k\xc5\x8boluokta.no\0" +"naie.hokkaido.jp\0kvinnherad.no\0" +"pilot.aero\0ws.na\0" +"yahaba.iwate.jp\0" +"birthplace.museum\0" +"name.qa\0" +"tahara.aichi.jp\0hashikami.aomori.jp\0name.pr\0" +"filatelia.museum\0" +"pt.it\0" +"chattanooga.museum\0" +"*.yokohama.jp\0" +"k12.mo.us\0" +"r.bg\0yugawara.kanagawa.jp\0" +"geometre-expert.fr\0koka.shiga.jp\0fundacio.museum\0hamar.no\0" +"yamanouchi.nagano.jp\0\xc3\xa5lesund.no\0" +"name.na\0" +"village.museum\0" +"shinkamigoto.nagasaki.jp\0name.mv\0" +"orkanger.no\0" +"mikasa.hokkaido.jp\0name.my\0balestrand.no\0kr\xc3\xa5""anghke.no\0" +"no.it\0pesaro-urbino.it\0" +"kamikawa.hyogo.jp\0" +"\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0" +"botany.museum\0" +"cc.na\0" +"ntr.br\0sango.nara.jp\0masuda.shimane.jp\0" +"ind.tn\0" +"trondheim.no\0" +"fermo.it\0kagamino.okayama.jp\0odda.no\0" +"askvoll.no\0" +"tottori.tottori.jp\0bronnoysund.no\0" +"ena.gifu.jp\0" +"\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0" +"evenes.no\0" +"shiriuchi.hokkaido.jp\0hino.tokyo.jp\0lib.vi.us\0" +"iide.yamagata.jp\0" +"sande.m\xc3\xb8re-og-romsdal.no\0" +"shibata.niigata.jp\0botanicgarden.museum\0lg.ua\0" +"\xc3\xa5s.no\0" +"namegata.ibaraki.jp\0" +"architecture.museum\0fineart.museum\0ostrowwlkp.pl\0" +"sorreisa.no\0" +"psi.br\0cc.vt.us\0" +"barrel-of-knowledge.info\0" +"kunitomi.miyazaki.jp\0name.mk\0" +"stor-elvdal.no\0uy.com\0" +"bonn.museum\0budejju.no\0rnu.tn\0" +"chiyoda.gunma.jp\0" +"yoro.gifu.jp\0" +"yasu.shiga.jp\0" +"amagasaki.hyogo.jp\0" +"m\xc3\xa1tta-v\xc3\xa1rjjat.no\0" +"jur.pro\0" +"mukawa.hokkaido.jp\0narviika.no\0" +"name.jo\0" +"marburg.museum\0tysv\xc3\xa6r.no\0" +"lorenskog.no\0" +"aland.fi\0yonezawa.yamagata.jp\0" +"gyeongnam.kr\0" +"maebashi.gunma.jp\0" +"tateshina.nagano.jp\0" +"yamato.kanagawa.jp\0dyndns.info\0" +"mosvik.no\0" +"crimea.ua\0" +"laakesvuemie.no\0" +"her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0" +"embetsu.hokkaido.jp\0chiyoda.tokyo.jp\0kudamatsu.yamaguchi.jp\0gop.pk\0nic.tj\0" +"yalta.ua\0" +"oregon.museum\0" +"naples.it\0ginan.gifu.jp\0o.se\0" +"va.it\0tamayu.shimane.jp\0" +"ninomiya.kanagawa.jp\0" +"orenburg.ru\0" +"academy.museum\0" +"miyakonojo.miyazaki.jp\0appspot.com\0" +"moma.museum\0" +"lib.nv.us\0readmyblog.org\0" +"wake.okayama.jp\0" +"kusu.oita.jp\0ing.pa\0" +"blogdns.org\0" +"is-a-doctor.com\0" +"london.museum\0" +"group.aero\0fukumitsu.toyama.jp\0" +"osaki.miyagi.jp\0" +"is-a-techie.com\0" +"!nel.uk\0" +"otake.hiroshima.jp\0shinonsen.hyogo.jp\0" +"oshima.yamaguchi.jp\0mari-el.ru\0" +"obu.aichi.jp\0" +"bykle.no\0" +"yasuoka.nagano.jp\0" +"gs.cn\0" +"\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0" +"chuo.fukuoka.jp\0" +"aero.tt\0" +"tokai.ibaraki.jp\0" +"nsw.edu.au\0" +"suzu.ishikawa.jp\0kitagawa.miyazaki.jp\0" +"kawaminami.miyazaki.jp\0aisho.shiga.jp\0gs.tr.no\0" +"bungotakada.oita.jp\0" +"center.museum\0maritime.museum\0timekeeping.museum\0" +"u.bg\0ecn.br\0" +"yamal.ru\0" +"aero.mv\0" +"botanical.museum\0at-band-camp.net\0" +"isa.us\0" +"kasumigaura.ibaraki.jp\0" +"ogawa.nagano.jp\0oppegard.no\0" +"avellino.it\0" +"samukawa.kanagawa.jp\0nat.tn\0" +"b\xc3\xb8mlo.no\0" +"gov.ac\0asso.fr\0" +"gov.ae\0konan.aichi.jp\0" +"gov.af\0" +"research.aero\0omitama.ibaraki.jp\0kita.tokyo.jp\0va.no\0" +"okaya.nagano.jp\0" +"zhitomir.ua\0" +"communication.museum\0" +"gov.al\0" +"kanra.gunma.jp\0kamisu.ibaraki.jp\0googlecode.com\0" +"sandefjord.no\0astrakhan.ru\0kamchatka.ru\0" +"gov.ba\0asso.gp\0" +"gov.bb\0" +"gov.as\0" +"okinawa.okinawa.jp\0" +"gov.au\0" +"gov.bf\0" +"gov.bh\0" +"gov.az\0bv.nl\0" +"pisa.it\0showa.yamanashi.jp\0" +"kawajima.saitama.jp\0uw.gov.pl\0" +"gov.bm\0" +"kunimi.fukushima.jp\0" +"gov.bo\0vologda.ru\0servebbs.net\0" +"lib.ut.us\0" +"gov.br\0naval.museum\0" +"gov.bs\0" +"gov.bt\0gov.cd\0minakami.gunma.jp\0" +"asso.ht\0ovre-eiker.no\0coop.tt\0" +"nt.edu.au\0mat.br\0" +"gov.by\0bale.museum\0" +"gov.bz\0cc.ga.us\0" +"aga.niigata.jp\0" +"gov.cl\0fredrikstad.no\0" +"gov.cm\0" +"gov.cn\0bushey.museum\0" +"gov.co\0" +"nu.ca\0" +"kamiamakusa.kumamoto.jp\0" +"aa.no\0" +"gov.cu\0" +"omachi.saga.jp\0k12.wy.us\0lib.ca.us\0" +"coop.mv\0" +"gov.cx\0coop.mw\0" +"asso.bj\0venezia.it\0windmill.museum\0" +"ac\0likes-pie.com\0" +"ad\0gov.dm\0kepno.pl\0" "ae\0" -"af\0" -"ag\0crotone.it\0" -"dallas.museum\0" -"ai\0brussels.museum\0" -"dali.museum\0" -"la.us\0" -"al\0salzburg.museum\0" +"af\0gov.do\0" +"aerodrome.aero\0ag\0" +"ai\0" +"gov.ec\0" +"milano.it\0" +"al\0gov.ee\0oguni.kumamoto.jp\0" "am\0" -"an\0cl.it\0" +"an\0gov.eg\0" "ao\0" -"aq\0ba\0" -"bb\0" -"as\0lajolla.museum\0" +"kumiyama.kyoto.jp\0" +"aq\0ba\0asso.ci\0gov.dz\0hidaka.hokkaido.jp\0" +"bb\0hongo.hiroshima.jp\0shishikui.tokushima.jp\0" +"as\0blogdns.com\0" "at\0" -"be\0" -"bf\0inderoy.no\0snz.ru\0" -"aw\0bg\0" -"ax\0bh\0cim.br\0ltd.gi\0biz.mv\0" -"bi\0xz.cn\0\xe7\xb5\x84\xe7\xb9\x94.hk\0biz.mw\0" +"be\0idv.hk\0" +"agents.aero\0bf\0" +"aw\0bg\0notteroy.no\0" +"ax\0bh\0" +"bi\0" "az\0bj\0" -"bm\0tranibarlettaandria.it\0naamesjevuemie.no\0" -"chattanooga.museum\0" +"higashiizu.shizuoka.jp\0" +"bm\0norilsk.ru\0" "bo\0" -"l.bg\0" -"ca\0" -"br\0stateofdelaware.museum\0" -"bs\0cc\0" -"cd\0biz.nr\0" -"cf\0berlev\xc3\xa5g.no\0" -"bw\0cg\0snaase.no\0" -"ch\0harvestcelebration.museum\0ck.ua\0" +"gos.pk\0" +"ca\0yawatahama.ehime.jp\0" +"br\0" +"bs\0cc\0chiropractic.museum\0" +"bt\0cd\0\xe7\xae\x87\xe4\xba\xba.hk\0en.it\0clock.museum\0r.se\0" +"cf\0" +"bw\0cg\0kobayashi.miyazaki.jp\0aurskog-h\xc3\xb8land.no\0valer.hedmark.no\0" +"ch\0" "by\0ci\0" -"bz\0bahccavuotna.no\0" -"cl\0yuzhno-sakhalinsk.ru\0" -"cm\0halsa.no\0lyngdal.no\0" -"cn\0" -"co\0rn.it\0childrens.museum\0frankfurt.museum\0" -"cr\0" -"pskov.ru\0" -"cu\0de\0" -"cv\0fr.it\0lib.ky.us\0" -"aseral.no\0kvam.no\0" -"cx\0hellas.museum\0" -"hof.no\0" -"cz\0dj\0k12.la.us\0" -"dk\0moscow.museum\0" -"sosnowiec.pl\0" -"dm\0biz.pk\0" -"schokoladen.museum\0biz.pl\0" -"far.br\0arna.no\0tynset.no\0" -"even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0" +"gv.ao\0bz\0" +"osakasayama.osaka.jp\0wv.us\0" +"cl\0gov.ge\0tozsde.hu\0nakagyo.kyoto.jp\0homeftp.org\0" +"cm\0" +"cn\0gov.gg\0bus.museum\0" +"gv.at\0co\0gov.gh\0" +"consultant.aero\0gov.gi\0kahoku.ishikawa.jp\0" +"shobara.hiroshima.jp\0coop.py\0" +"cr\0asso.dz\0" +"cu\0de\0gov.gn\0getmyip.com\0" +"cv\0" +"kasai.hyogo.jp\0amur.ru\0" +"cx\0" +"gov.gr\0" +"cz\0dj\0" +"dk\0ci.it\0" +"so.it\0" +"express.aero\0dm\0" +"do\0tomigusuku.okinawa.jp\0" +"oseto.nagasaki.jp\0" +"gov.hk\0va.us\0" "ec\0" -"biz.pr\0" -"ee\0celtic.museum\0" -"scientist.aero\0modern.museum\0" -"pr.us\0" +"izumozaki.niigata.jp\0" +"ee\0" +"principe.st\0" +"eg\0" +"is-a-bookkeeper.com\0" "dz\0" -"mj\xc3\xb8ndalen.no\0s\xc3\xb8r-odal.no\0" -"!nic.tr\0" -"conference.aero\0vestnes.no\0k12.mn.us\0" -"!pref.hiroshima.jp\0" -"es\0trapani.it\0" -"fermo.it\0vard\xc3\xb8.no\0" -"eu\0gs.hm.no\0r\xc3\xb8""d\xc3\xb8y.no\0stordal.no\0" -"gc.ca\0!nhs.uk\0" -"jgora.pl\0" -"fi\0stjordal.no\0" -"fm\0!mediaphone.om\0" -"kirov.ru\0pvt.k12.ma.us\0" +"gov.ie\0" +"showa.fukushima.jp\0" +"noboribetsu.hokkaido.jp\0tourism.tn\0cc.ms.us\0cc.nc.us\0" +"es\0pz.it\0" +"gov.im\0" +"eu\0gov.in\0coop.km\0!british-library.uk\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0" +"artcenter.museum\0" +"suwa.nagano.jp\0" +"gov.iq\0nationalfirearms.museum\0lubin.pl\0" +"fi\0gov.ir\0aver\xc3\xb8y.no\0" +"x.bg\0gov.is\0" +"gov.it\0" +"radio.br\0gov.je\0sasebo.nagasaki.jp\0" +"fm\0monzaedellabrianza.it\0" +"ad.jp\0" "fo\0" -"ga\0hyllestad.no\0" -"gov.ac\0fr\0andriabarlettatrani.it\0ga.us\0" -"gov.ae\0gd\0estate.museum\0" -"gov.af\0ge\0tolga.no\0" -"gf\0asso.re\0cc.oh.us\0" -"gg\0florida.museum\0" -"presse.ci\0gh\0" -"gi\0k12.dc.us\0" -"ltd.lk\0orland.no\0" -"gov.al\0" -"gl\0tokke.no\0" -"hanggliding.aero\0gm\0" -"hareid.no\0" -"gov.ba\0tj.cn\0gp\0" -"gov.bb\0gq\0" -"gov.as\0gr\0agrigento.it\0lc.it\0" -"gs\0kalmykia.ru\0aero.tt\0" -"gov.bf\0" -"county.museum\0" -"gov.bh\0hn.cn\0gw\0" -"gov.az\0gy\0assn.lk\0guernsey.museum\0" +"ga\0" +"fr\0" +"from-nj.com\0" +"gd\0" +"ge\0" +"gf\0gov.jo\0" +"gg\0" +"gh\0eiheiji.fukui.jp\0shintomi.miyazaki.jp\0odesa.ua\0" +"gi\0gifu.jp\0rockart.museum\0homeunix.com\0" +"nu.it\0" +"gl\0" +"gm\0publ.pt\0forgot.his.name\0" +"gov.kg\0" +"gp\0gov.ki\0karmoy.no\0" +"gq\0kr\xc3\xb8""dsherad.no\0" +"far.br\0gr\0roma.museum\0endofinternet.net\0" +"gs\0" +"gt\0gov.km\0inder\xc3\xb8y.no\0" +"nakama.fukuoka.jp\0gov.kn\0kvanangen.no\0" +"gw\0taiki.hokkaido.jp\0gov.kp\0" +"gov.la\0" +"gy\0haga.tochigi.jp\0gov.lb\0" +"gobo.wakayama.jp\0gov.lc\0" "hk\0" -"gov.bm\0h\xc3\xa6gebostad.no\0biz.tj\0" -"hm\0computer.museum\0" -"gov.bo\0hn\0kl\xc3\xa6""bu.no\0" -"pulawy.pl\0" -"gov.br\0" -"trd.br\0gov.bs\0hr\0reggio-calabria.it\0historyofscience.museum\0lipetsk.ru\0" -"gov.cd\0*.nagoya.jp\0" -"ht\0id\0spjelkavik.no\0" -"hu\0ie\0aero.mv\0" -"marketplace.aero\0mn.it\0biz.tt\0" -"gov.by\0saintlouis.museum\0mer\xc3\xa5ker.no\0" -"gov.bz\0" -"7.bg\0gov.cl\0virtual.museum\0" -"gov.cm\0vennesla.no\0kr.ua\0" -"gov.cn\0im\0ar.it\0galsa.no\0rovno.ua\0" -"gov.co\0in\0" -"io\0limanowa.pl\0" -"iq\0k12.ga.us\0" -"ir\0" -"riik.ee\0is\0\xc3\xa1laheadju.no\0" -"gov.cu\0it\0hawaii.museum\0seaport.museum\0" -"je\0pubol.museum\0hm.no\0" -"gov.cx\0" -"*.chiba.jp\0" -"*.kawasaki.jp\0" -"k.se\0" -"gov.dm\0" -"aland.fi\0vik.no\0" -"yk.ca\0jo\0kobierzyce.pl\0" -"jp\0biz.vn\0" -"presse.fr\0lib.il.us\0\xe9\xa6\x99\xe6\xb8\xaf\0" -"gov.ec\0" -"transport.museum\0bronnoy.no\0" -"slg.br\0gov.ee\0asso.nc\0bievat.no\0" -"nyny.museum\0" +"natori.miyagi.jp\0" +"hm\0crotone.it\0snillfjord.no\0" +"hn\0" +"chiryu.aichi.jp\0gov.ky\0" +"gov.kz\0" +"hr\0gov.lk\0" +"ht\0id\0" +"hu\0ie\0nanbu.yamanashi.jp\0nesseby.no\0" +"ono.fukui.jp\0" +"vikna.no\0" +"gov.ma\0bashkiria.ru\0" +"gov.lr\0" +"niihama.ehime.jp\0" +"gov.lt\0" +"gov.me\0" +"im\0shonai.fukuoka.jp\0gov.lv\0" +"in\0gov.mg\0gorge.museum\0dyndns.org\0" +"io\0" +"gov.ly\0" +"iq\0" +"ir\0campidanomedio.it\0nichinan.miyazaki.jp\0gov.mk\0" +"is\0minamitane.kagoshima.jp\0gov.ml\0" +"it\0" +"je\0gov.mn\0" +"gov.mo\0" +"*.nagoya.jp\0" +"gov.mr\0est.pr\0" +"kinko.kagoshima.jp\0" +"gov.mu\0dudinka.ru\0" +"kouyama.kagoshima.jp\0gov.mv\0rnrt.tn\0" +"gov.mw\0gov.ng\0swiebodzin.pl\0" +"jo\0" +"jp\0gov.my\0" +"columbia.museum\0" +"udono.mie.jp\0" +"nx.cn\0oristano.it\0" "kg\0" -"mo-i-rana.no\0" -"gov.dz\0ki\0" -"monmouth.museum\0" -"suldal.no\0" -"bc.ca\0km\0zt.ua\0" -"pt.it\0kn\0" -"fineart.museum\0" -"la\0" -"kr\0gulen.no\0" -"m.bg\0mo.cn\0lc\0alaheadju.no\0g\xc3\xa1\xc5\x8bgaviika.no\0" -"nowaruda.pl\0cc.ut.us\0" -"br\xc3\xb8nn\xc3\xb8y.no\0" -"ky\0li\0overhalla.no\0" -"kz\0khv.ru\0" +"ki\0bygland.no\0gov.nr\0" +"toyoura.hokkaido.jp\0" +"\xe6\x94\xbf\xe5\xba\x9c.hk\0" +"taishi.hyogo.jp\0km\0" +"miyako.iwate.jp\0kn\0" +"hamatama.saga.jp\0" +"la\0stavropol.ru\0" +"kr\0" +"lc\0" +"cn.com\0" +"tarumizu.kagoshima.jp\0" +"ky\0li\0" +"kz\0" "lk\0" -"artdeco.museum\0" -"ma\0fortworth.museum\0kostroma.ru\0" -"ro.it\0kirkenes.no\0vestby.no\0" -"urbino-pesaro.it\0ls\0mc\0alstahaug.no\0" -"blog.br\0gov.ge\0lt\0md\0" -"lu\0me\0botanicgarden.museum\0" -"gov.gg\0lv\0oh.us\0" -"gov.gh\0mg\0valley.museum\0" -"gov.gi\0mh\0" -"ly\0sandiego.museum\0" -"mk\0" -"ml\0" -"gov.gn\0rollag.no\0naklo.pl\0" -"mn\0" +"tver.ru\0" +"uvic.museum\0" +"gov.ph\0" +"lyngen.no\0" +"koto.tokyo.jp\0ma\0cc.az.us\0" +"sannan.hyogo.jp\0gov.pk\0sells-it.net\0" +"ls\0mc\0gov.pl\0" +"lt\0md\0" +"lu\0me\0gov.pn\0" +"lv\0meland.no\0u.se\0servegame.org\0" +"mg\0" +"mh\0other.nf\0gov.qa\0" +"ly\0gov.pr\0" +"gov.ps\0" +"\xe7\xbb\x84\xe7\xbb\x87.hk\0nishio.aichi.jp\0mk\0gov.pt\0" +"ml\0miasta.pl\0" +"iwamizawa.hokkaido.jp\0ikeda.osaka.jp\0sejny.pl\0wy.us\0" +"kesennuma.miyagi.jp\0mn\0" "mo\0" -"mp\0leirvik.no\0" -"gov.gr\0mq\0na\0cc.ks.us\0" -"mr\0" -"ms\0nc\0" -"valer.hedmark.no\0" -"mu\0ne\0" -"mv\0nf\0" -"mw\0" -"mx\0nord-odal.no\0jur.pro\0" +"mp\0gov.py\0" +"mq\0na\0" +"mr\0selfip.org\0" +"tsuruoka.yamagata.jp\0ms\0touch.museum\0nc\0" +"matsumoto.kagoshima.jp\0mu\0ne\0" +"lecce.it\0wassamu.hokkaido.jp\0mv\0nf\0" +"hirono.fukushima.jp\0mw\0" +"mx\0" "my\0" -"gov.hk\0name.hr\0" -"nl\0" -"astronomy.museum\0lib.nm.us\0" -"catania.it\0" +"hamamatsu.shizuoka.jp\0" +"rikubetsu.hokkaido.jp\0jamal.ru\0" +"nl\0nieruchomosci.pl\0" +"cl.it\0hisayama.fukuoka.jp\0minami.kyoto.jp\0arai.shizuoka.jp\0" +"sr.it\0kikonai.hokkaido.jp\0" "no\0" -"skjerv\xc3\xb8y.no\0" -"k12.ne.us\0" -"monza-e-della-brianza.it\0!pref.fukushima.jp\0nr\0" -"gov.ie\0" -"stuttgart.museum\0nu\0cc.mn.us\0" -"karasjohka.no\0" -"engine.aero\0bearalvahki.no\0" -"oyer.no\0" -"ve.it\0" -"gov.im\0froland.no\0cc.ar.us\0" -"gov.in\0magadan.ru\0" -"pescara.it\0" -"gov.iq\0usdecorativearts.museum\0" -"gov.ir\0pa\0" -"gov.is\0" -"gov.it\0lavagis.no\0" -"gov.je\0" -"naustdal.no\0pe\0k12.or.us\0" -"gd.cn\0carraramassa.it\0pf\0" -"ph\0" -"cc.ny.us\0" -"rissa.no\0" -"info\0pk\0pomorze.pl\0" -"pl\0" -"gov.jo\0asso.km\0pn\0" -"*.okayama.jp\0cieszyn.pl\0" -"freight.aero\0" -"pr\0" -"narvik.no\0ps\0" -"!pref.aichi.jp\0elverum.no\0pt\0" -"edunet.tn\0" -"gov.kg\0" -"flatanger.no\0marker.no\0pw\0" -"gov.ki\0nuremberg.museum\0" -"aip.ee\0" -"gov.km\0" -"gov.kn\0" -"gov.kp\0" -"rieti.it\0gov.la\0bajddar.no\0" -"gov.lb\0aviation.museum\0" -"gov.lc\0" -"asso.mc\0" -"re\0" +"yakumo.hokkaido.jp\0" +"keisen.fukuoka.jp\0idv.tw\0" +"nr\0" +"b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0" "ut.us\0" -"sa.gov.au\0gov.ky\0" -"mo.it\0gov.kz\0" -"gov.lk\0" -"iraq.museum\0" -"badajoz.museum\0" -"8.bg\0inder\xc3\xb8y.no\0" -"monticello.museum\0ro\0ks.ua\0" -"gov.ma\0svizzera.museum\0" -"gov.lr\0sa\0" -"matera.it\0sb\0" -"gov.lt\0rs\0sc\0" -"gov.me\0sd\0" -"gov.lv\0ru\0se\0" -"gov.mg\0" +"nu\0" +"gov.sa\0" +"gov.sb\0" +"gov.rs\0gov.sc\0" +"hi.cn\0gov.sd\0" +"orkdal.no\0gov.ru\0" +"fuoisku.no\0" +"shiraoka.saitama.jp\0building.museum\0gov.rw\0gov.sg\0" +"gov.sh\0" +"co.ae\0aeroclub.aero\0" +"pa\0" +"co.ag\0" +"gov.sl\0" +"ag.it\0higashi.okinawa.jp\0lancashire.museum\0" +"pe\0" +"pf\0" +"oygarden.no\0" +"!siemens.om\0ph\0" +"aikawa.kanagawa.jp\0" +"co.ao\0tempioolbia.it\0" +"lierne.no\0pk\0gov.st\0" +"co.ba\0force.museum\0pl\0" +"pm\0asso.re\0" +"pn\0" +"co.at\0dep.no\0irkutsk.ru\0gov.sx\0" +"gov.sy\0" +"qa\0gov.tj\0" +"pr\0" +"historyofscience.museum\0ps\0gov.tl\0" +"co.bi\0pt\0gov.tm\0" +"higashinaruse.akita.jp\0madrid.museum\0gov.tn\0" +"gov.to\0\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"pw\0cc.la.us\0" +"tarui.gifu.jp\0gov.ua\0" +"py\0" +"kyotango.kyoto.jp\0gov.tt\0" +"tourism.pl\0co.ca\0" +"leirfjord.no\0" +"gov.tw\0" +"tenkawa.nara.jp\0" +"minowa.nagano.jp\0" +"co.bw\0takazaki.miyazaki.jp\0ullensvang.no\0" +"andoy.no\0" +"co.ci\0" +"finland.museum\0tysnes.no\0re\0" +"e12.ve\0" +"co.cl\0austevoll.no\0wolomin.pl\0" +"kunstunddesign.museum\0" +"k\xc3\xa5""fjord.no\0gov.vc\0" +"gov.ve\0" +"co.cr\0kasuga.fukuoka.jp\0" +"iris.arpa\0cc.il.us\0" +"latina.it\0copenhagen.museum\0ro\0" +"sa\0" +"sb\0" +"mc.it\0um.gov.pl\0rs\0sc\0" +"futtsu.chiba.jp\0incheon.kr\0sd\0" +"ru\0se\0gov.vn\0" +"oppeg\xc3\xa5rd.no\0" "rw\0sg\0" -"gov.ly\0assisi.museum\0kids.museum\0sh\0" -"si\0" -"gov.mk\0" -"gov.ml\0sk\0" +"sh\0" +"cnt.br\0harima.hyogo.jp\0si\0" +"1.bg\0" +"sk\0" "sl\0" -"gov.mn\0airguard.museum\0sm\0" -"gov.mo\0l.se\0sn\0" +"sm\0" +"plaza.museum\0sn\0" "so\0" -"gov.mr\0ks.us\0" -"name.az\0sr\0" -"naturhistorisches.museum\0tc\0" -"trainer.aero\0cn.it\0urbinopesaro.it\0gov.mu\0nativeamerican.museum\0st\0td\0" -"gov.mv\0su\0" -"trentino.it\0gov.mw\0gov.ng\0tf\0" -"tg\0" -"co.ae\0venezia.it\0gov.my\0th\0" -"!pref.ehime.jp\0sy\0" -"co.ag\0lewismiller.museum\0ostrowiec.pl\0sz\0tj\0" -"tk\0" -"motorcycle.museum\0tl\0" -"birdart.museum\0trogstad.no\0tm\0" +"sr\0" +"tc\0" +"st\0td\0" +"su\0" +"tf\0" +"nishiawakura.okayama.jp\0tg\0" +"sx\0th\0" +"unbi.ba\0sumita.iwate.jp\0forsand.no\0sy\0" +"sz\0tj\0gov.ws\0" +"asso.nc\0tk\0" +"artgallery.museum\0tl\0" +"tm\0" "tn\0" -"humanities.museum\0to\0" -"pu.it\0gov.nr\0ua\0lib.ut.us\0" -"co.ao\0" -"co.ba\0trondheim.no\0tt\0" -"in-addr.arpa\0tempioolbia.it\0!city.yokohama.jp\0mn.us\0" -"n.bg\0schoenbrunn.museum\0tv\0" -"co.at\0aremark.no\0tw\0ug\0" -"jus.br\0" -"co.bi\0bialowieza.pl\0ar.us\0" -"audnedaln.no\0kustanai.ru\0" +"toda.saitama.jp\0to\0" +"for-some.biz\0" +"ua\0" +"yatsushiro.kumamoto.jp\0" +"!rakpetroleum.om\0tt\0" +"taishin.fukushima.jp\0beeldengeluid.museum\0" +"hellas.museum\0tv\0gr.com\0" +"fujimi.nagano.jp\0tw\0ug\0" +"rennesoy.no\0" +"asahi.nagano.jp\0" +"ogano.saitama.jp\0mjondalen.no\0loabat.no\0cc.tx.us\0" +"kikuchi.kumamoto.jp\0gniezno.pl\0" +"iwaizumi.iwate.jp\0" "va\0" -"us\0vc\0" -"newport.museum\0" -"kopervik.no\0gov.ph\0vg\0" -"ny.us\0vi\0" -"co.bw\0finn\xc3\xb8y.no\0gov.pk\0uz\0" -"honefoss.no\0gov.pl\0lanbib.se\0" -"co.ci\0" -"gov.pn\0intl.tn\0" -"act.gov.au\0vn\0" -"television.museum\0gov.pr\0" -"sykkylven.no\0v\xc3\xa5ler.hedmark.no\0gov.ps\0" -"gov.pt\0" -"co.cr\0vu\0" -"legnica.pl\0" -"sa.au\0" -"bjarkoy.no\0" -"openair.museum\0birkenes.no\0lib.nj.us\0" -"fylkesbibl.no\0holt\xc3\xa5len.no\0" -"iz.hr\0" -"ws\0" -"oceanographique.museum\0" -"b\xc3\xa1id\xc3\xa1r.no\0cc.mo.us\0" -"\xc3\xb8ygarden.no\0" -"contemporary.museum\0" -"gb.com\0cc.as.us\0" -"belluno.it\0gov.sa\0" -"gov.sb\0" -"gov.rs\0gov.sc\0" -"gov.sd\0" -"!pref.nagasaki.jp\0gov.ru\0" -"asia\0" -"sa.cr\0gov.rw\0gov.sg\0" -"kuzbass.ru\0" -"gs.vf.no\0" -"gov.sl\0" -"norfolk.museum\0" -"k12.de.us\0" -"mil\0" -"rendalen.no\0" -"gov.st\0" -"agro.pl\0" -"orkdal.no\0" -"le.it\0gov.sy\0" -"gov.tj\0" -"co.gg\0nore-og-uvdal.no\0v\xc3\xa5ler.\xc3\xb8stfold.no\0" -"gov.tl\0" -"gov.tn\0" -"gov.to\0" -"kids.us\0" -"equipment.aero\0gov.ua\0" -"!city.niigata.jp\0gov.tt\0" -"sel.no\0" -"l\xc3\xa4ns.museum\0" -"gov.tw\0" -"rennebu.no\0" -"egersund.no\0" -"medecin.km\0" -"co.gy\0" -"!mecon.ar\0" -"berlin.museum\0" -"carrara-massa.it\0" -"9.bg\0" -"pri.ee\0gov.vc\0" -"at.it\0" -"muosat.no\0" +"co.gg\0" +"nesset.no\0us\0vc\0" +"parma.it\0hasama.oita.jp\0b\xc3\xa1l\xc3\xa1t.no\0ve\0" +"kashima.ibaraki.jp\0vg\0" +"k12.ut.us\0" +"uy\0vi\0" +"monza-e-della-brianza.it\0ebina.kanagawa.jp\0uz\0" +"kosa.kumamoto.jp\0nagi.okayama.jp\0" +"yomitan.okinawa.jp\0" +"vn\0" +"ouda.nara.jp\0" +"ogliastra.it\0" +"co.gy\0cc.sc.us\0" +"vu\0" +"wf\0" +"webhop.biz\0" +"x.se\0" +"farm.museum\0" +"nord-fron.no\0" "co.id\0" -"co.hu\0" -"etne.no\0" -"\xc3\xa1lt\xc3\xa1.no\0" -"gov.vn\0" -"modelling.aero\0" +"mil.ac\0co.hu\0" +"suzuka.mie.jp\0sigdal.no\0" +"mil.ae\0" +"forde.no\0ws\0" +"ivgu.no\0" "co.im\0" -"co.in\0\xc3\xa5krehamn.no\0m.se\0" -"gouv.fr\0*.kitakyushu.jp\0" -"narviika.no\0" -"rennes\xc3\xb8y.no\0" -"co.ir\0afjord.no\0" -"lea\xc5\x8bgaviika.no\0buryatia.ru\0" -"co.it\0coastaldefence.museum\0" -"co.je\0vf.no\0" -"osteroy.no\0" -"uslivinghistory.museum\0" -"aerobatic.aero\0" -"mesaverde.museum\0mining.museum\0" -"a\xc3\xa9roport.ci\0gov.ws\0" -"co.jp\0copenhagen.museum\0" -"pv.it\0" -"r\xc3\xb8mskog.no\0" -"vossevangen.no\0porsanger.no\0" -"salat.no\0mo.us\0" -"o.bg\0imperia.it\0carrier.museum\0" -"carbonia-iglesias.it\0" -"as.us\0" -"alvdal.no\0" -"state.museum\0mandal.no\0cn.ua\0" -"cuneo.it\0" -"gouv.ht\0" -"!city.okayama.jp\0co.kr\0" -"co.lc\0" -"sa.it\0" -"donna.no\0" -"sortland.no\0" -"tomsk.ru\0" -"birthplace.museum\0l\xc3\xb8""dingen.no\0" -"ge.it\0orenburg.ru\0" -"cn.com\0" -"co.ma\0" -"co.ls\0skaun.no\0name.vn\0" -"navigation.aero\0" -"cagliari.it\0co.me\0portal.museum\0" -"gouv.bj\0" -"udine.it\0" -"engineer.aero\0" -"szczecin.pl\0" -"wales.museum\0" -"co.na\0bo.telemark.no\0" -"austin.museum\0" -"k12.mo.us\0" -"co.mu\0" -"gouv.ci\0" -"co.mw\0" -"esp.br\0" -"naturalhistorymuseum.museum\0" -"mosjoen.no\0" -"solund.no\0" -"name.tj\0" -"sand\xc3\xb8y.no\0" -"kunstunddesign.museum\0" -"cartoonart.museum\0collection.museum\0gsm.pl\0" -"aure.no\0" -"!pref.yamaguchi.jp\0historical.museum\0" -"name.tt\0" -"england.museum\0valle.no\0" -"cc.ok.us\0" -"salangen.no\0" -"gloppen.no\0" -"cc.co.us\0" -"contemporaryart.museum\0" -"tas.edu.au\0" -"trading.aero\0" -"mazury.pl\0" -"!pref.aomori.jp\0co.pl\0" -"opoczno.pl\0" -"*.kobe.jp\0co.pn\0" -"oppegard.no\0" -"co.pw\0" -"saltdal.no\0smolensk.ru\0" -"na.it\0\xc4\x8d\xc3\xa1hcesuolo.no\0" -"vgs.no\0evenassi.no\0" -"parachuting.aero\0jl.cn\0maritime.museum\0bd.se\0" -"badaddja.no\0" -"bergen.no\0" -"brussel.museum\0" -"avoues.fr\0" -"cesenaforli.it\0" -"oregontrail.museum\0" +"mil.al\0co.in\0uchiko.ehime.jp\0mer\xc3\xa5ker.no\0s\xc3\xb8rum.no\0" +"vibo-valentia.it\0" +"nango.fukushima.jp\0" +"co.ir\0" +"mil.ba\0\xc3\xa5mot.no\0" +"co.it\0" +"te.it\0co.je\0" +"ostre-toten.no\0" +"engineer.aero\0kumamoto.jp\0nativeamerican.museum\0" +"miyama.mie.jp\0" +"mil.az\0nagawa.nagano.jp\0" +"eng.pro\0" +"co.jp\0" +"mil.bo\0" +"hl.cn\0" +"sk\xc3\xa1nit.no\0" +"mil.br\0uda.nara.jp\0" +"pvt.k12.ma.us\0" +"medio-campidano.it\0columbus.museum\0" +"sakaiminato.tottori.jp\0yt\0" +"asso.km\0" +"mil.by\0higashiyodogawa.osaka.jp\0nanbu.tottori.jp\0" +"intelligence.museum\0" +"mil.cl\0aioi.hyogo.jp\0" +"mil.cn\0" +"mil.co\0levanger.no\0" +"co.kr\0" +"co.lc\0from-wi.com\0" +"kawai.iwate.jp\0" +"b\xc3\xb8.telemark.no\0" +"tsurugi.ishikawa.jp\0" +"flekkefjord.no\0" +"furniture.museum\0newyork.museum\0" +"asso.mc\0" +"mil.do\0co.ma\0" +"nagara.chiba.jp\0co.ls\0" +"mil.ec\0bolt.hu\0co.me\0" +"uhren.museum\0" +"joso.ibaraki.jp\0niyodogawa.kochi.jp\0gs.sf.no\0" +"mil.eg\0" +"lib.il.us\0" +"umaji.kochi.jp\0kurashiki.okayama.jp\0" +"kakinoki.shimane.jp\0oishida.yamagata.jp\0" +"bearalv\xc3\xa1hki.no\0sokndal.no\0" +"wa.gov.au\0sx.cn\0co.na\0" +"art.museum\0" +"mo-i-rana.no\0" +"co.mu\0" +"co.mw\0" +"design.aero\0" +"vadso.no\0" +"am.br\0" +"co.nl\0" +"hidaka.kochi.jp\0" +"tokushima.jp\0communications.museum\0" +"co.no\0" +"oh.us\0blogdns.net\0" +"4.bg\0nord-odal.no\0" +"kumamoto.kumamoto.jp\0" +"altoadige.it\0koto.shiga.jp\0" +"yasaka.nagano.jp\0" +"mil.ge\0" +"jaworzno.pl\0" +"saito.miyazaki.jp\0" +"mil.gh\0toyoake.aichi.jp\0" +"mombetsu.hokkaido.jp\0" +"fauske.no\0" +"nishi.fukuoka.jp\0alaska.museum\0" +"marnardal.no\0" +"on.ca\0" +"higashikurume.tokyo.jp\0" +"gs.nl.no\0" +"mil.gt\0reggioemilia.it\0r\xc3\xb8st.no\0" +"fnd.br\0bjark\xc3\xb8y.no\0l\xc3\xa6rdal.no\0tromso.no\0krakow.pl\0" +"takahashi.okayama.jp\0hasvik.no\0" +"co.pl\0" +"zt.ua\0" +"katsuyama.fukui.jp\0co.pn\0homeftp.net\0" +"mil.hn\0fuchu.tokyo.jp\0omaha.museum\0" +"date.hokkaido.jp\0shimokawa.hokkaido.jp\0" +"tyumen.ru\0" +"mil.id\0philadelphiaarea.museum\0sanfrancisco.museum\0" +"honjo.akita.jp\0living.museum\0co.pw\0" +"beiarn.no\0" "ullensaker.no\0" -"jobs\0" -"accident-prevention.aero\0" -"n.se\0" -"association.museum\0california.museum\0" -"cultural.museum\0co.rs\0" -"zoology.museum\0" -"pruszkow.pl\0" -"control.aero\0nt.edu.au\0net\0komforb.se\0" -"lincoln.museum\0aurland.no\0name.pr\0co.rw\0" -"ostroleka.pl\0" -"isernia.it\0" -"tm.fr\0" -"gs.ol.no\0" -"nb.ca\0marnardal.no\0" -"williamsburg.museum\0" -"!jet.uk\0" -"suisse.museum\0\xc3\xa5""fjord.no\0flakstad.no\0" -"karmoy.no\0" -"yn.cn\0chesapeakebay.museum\0" -"nsw.au\0" -"amur.ru\0co.st\0" -"imb.br\0siellak.no\0\xe7\xb6\xb2\xe8\xb7\xaf.tw\0" -"name.na\0" +"tozawa.yamagata.jp\0" +"aya.miyazaki.jp\0uk.net\0" +"sklep.pl\0" +"hokuto.hokkaido.jp\0" +"mil.in\0" +"tsaritsyn.ru\0" +"mil.iq\0" +"minami.fukuoka.jp\0" +"naklo.pl\0" +"susaki.kochi.jp\0" +"karatsu.saga.jp\0" +"fg.it\0badajoz.museum\0" +"for-better.biz\0" +"mil.jo\0" +"midsund.no\0co.rs\0" +"shimane.shimane.jp\0" +"hi.us\0" +"d\xc3\xb8nna.no\0" +"york.museum\0spydeberg.no\0co.rw\0" +"hamatonbetsu.hokkaido.jp\0" +"mil.kg\0" +"!nic.ar\0kagami.kochi.jp\0dynalias.com\0" +"civilaviation.aero\0modelling.aero\0uz.ua\0" +"nanao.ishikawa.jp\0" +"mil.km\0" +"modum.no\0" +"badaddja.no\0" +"mil.kr\0co.st\0" +"oi.kanagawa.jp\0" +"author.aero\0cr.it\0" "co.th\0" -"p.bg\0" -"co.sz\0co.tj\0" -"name.mv\0\xc3\xa5lesund.no\0lib.in.us\0" -"lucerne.museum\0naumburg.museum\0" -"society.museum\0name.my\0" -"tinn.no\0" +"versailles.museum\0co.sz\0co.tj\0" +"encyclopedic.museum\0" +"mil.kz\0grong.no\0" +"co.tm\0" +"minamiboso.chiba.jp\0lib.ma.us\0servebbs.org\0" +"kiev.ua\0" +"journalist.aero\0co.ua\0" +"te.ua\0" "co.tt\0" -"unj\xc3\xa1rga.no\0" "co.ug\0" -"lib.wy.us\0" +"mil.lv\0" +"mil.mg\0" "co.tz\0" -"ass.km\0" +"council.aero\0ibaraki.jp\0" +"family.museum\0" +"rc.it\0" +"hl.no\0ostrowiec.pl\0co.us\0" +"!statecouncil.om\0co.ve\0" +"!congresodelalengua3.ar\0nalchik.ru\0" +"mil.mv\0halsa.no\0" +"co.vi\0" +"takayama.gifu.jp\0fujishiro.ibaraki.jp\0os.hordaland.no\0sirdal.no\0co.uz\0" +"fj.cn\0mil.my\0" +"kazuno.akita.jp\0" +"unzen.nagasaki.jp\0mizuho.tokyo.jp\0indianapolis.museum\0" +"from-id.com\0" +"hurum.no\0" +"mil.no\0" +"pordenone.it\0" +"kvam.no\0" +"mutsuzawa.chiba.jp\0artdeco.museum\0" +"hamada.shimane.jp\0philadelphia.museum\0" +"kudoyama.wakayama.jp\0" +"mishima.shizuoka.jp\0minami-alps.yamanashi.jp\0k12.mi.us\0" +"nanmoku.gunma.jp\0" +"ashikaga.tochigi.jp\0" +"from-wv.com\0" +"\xe5\x8f\xb0\xe6\xb9\xbe\0" +"kawatana.nagasaki.jp\0" +"oslo.no\0" +"fukuchiyama.kyoto.jp\0" +"kisofukushima.nagano.jp\0" +"okayama.jp\0mil.pe\0" +"mil.ph\0" +"mi.it\0" +"russia.museum\0" +"abo.pa\0mil.pl\0" +"nobeoka.miyazaki.jp\0shinjuku.tokyo.jp\0" "ok.us\0" -"tm.hu\0kongsvinger.no\0" -"ibestad.no\0" -"juedisches.museum\0co.us\0" -"cq.cn\0" -"rs.ba\0" -"wa.edu.au\0co.vi\0" -"co.uz\0" -"health.museum\0" -"grue.no\0" -"automotive.museum\0journalism.museum\0settlement.museum\0" -"qh.cn\0interactive.museum\0" -"snillfjord.no\0!national-library-scotland.uk\0" -"balsfjord.no\0lib.nh.us\0" -"kolobrzeg.pl\0" -"gs.tm.no\0" -"h\xc3\xb8nefoss.no\0" -"ol.no\0" -"music.museum\0moareke.no\0" -"b\xc3\xb8.nordland.no\0" -"name.mk\0lier.no\0" -"eidfjord.no\0" -"sc.cn\0tm.km\0" -"jelenia-gora.pl\0sanok.pl\0" -"intelligence.museum\0" -"srv.br\0elblag.pl\0" -"judygarland.museum\0" -"padua.it\0" -"k12.co.us\0" -"lindesnes.no\0" -"name.jo\0izhevsk.ru\0" -"yorkshire.museum\0mel\xc3\xb8y.no\0" -"tm.mc\0lib.pr.us\0" -"hjartdal.no\0" -"tm.mg\0" -"bari.it\0milano.it\0" -"lg.jp\0" -"zgrad.ru\0" -"sm\xc3\xb8la.no\0" -"communications.museum\0" -"arts.co\0seoul.kr\0engerdal.no\0" -"oster\xc3\xb8y.no\0" -"\xe6\x95\x8e\xe8\x82\xb2.hk\0foggia.it\0verran.no\0" -"orskog.no\0voronezh.ru\0kv.ua\0" -"av.it\0" -"tm.no\0nissedal.no\0" -"historisches.museum\0gs.mr.no\0" -"medecin.fr\0" -"montreal.museum\0" -"o.se\0" -"!metro.tokyo.jp\0sola.no\0" -"k12.tn.us\0" -"floro.no\0" -"milan.it\0*.shiga.jp\0" -"berkeley.museum\0" -"maintenance.aero\0" -"ws.na\0" -"lindas.no\0cc.ia.us\0" -"brescia.it\0embroidery.museum\0" -"arezzo.it\0tm.pl\0" -"r\xc3\xa6lingen.no\0" -"burghof.museum\0" -"rec.br\0" -"q.bg\0" -"!nawras.om\0" +"7.bg\0mil.qa\0" +"verran.no\0suwalki.pl\0" +"onjuku.chiba.jp\0szczytno.pl\0lv.ua\0" +"mitou.yamaguchi.jp\0mil.py\0" +"chita.ru\0" +"hirono.iwate.jp\0" +"embroidery.museum\0" +"mad.museum\0" +"kawaue.gifu.jp\0" +"shiiba.miyazaki.jp\0" +"asnes.no\0" +"media.hu\0sande.vestfold.no\0\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0" +"lib.de.us\0" +"erotika.hu\0ski.museum\0" +"parti.se\0on-the-web.tv\0" +"works.aero\0gb.com\0dyndns-free.com\0" +"biz.bb\0firm.ht\0rifu.miyagi.jp\0watari.miyagi.jp\0" +"takagi.nagano.jp\0biz.at\0" +"surgeonshall.museum\0skanit.no\0" +"florida.museum\0" +"kani.gifu.jp\0" +"biz.az\0mil.ru\0" +"isesaki.gunma.jp\0" +"firm.in\0yusui.kagoshima.jp\0mil.rw\0" +"mil.sh\0" +"inderoy.no\0" +"software.aero\0kushiro.hokkaido.jp\0pyatigorsk.ru\0" +"bindal.no\0" +"sakegawa.yamagata.jp\0" +"ninohe.iwate.jp\0yonago.tottori.jp\0" +"mil.st\0" +"galsa.no\0" +"mil.sy\0" +"salvadordali.museum\0mil.tj\0" +"mil.tm\0" +"for-our.info\0" +"shikama.miyagi.jp\0mil.to\0" +"yaotsu.gifu.jp\0" +"niki.hokkaido.jp\0" +"hikawa.shimane.jp\0stat.no\0" +"joetsu.niigata.jp\0mil.tw\0" +"firm.co\0bruxelles.museum\0endofinternet.org\0" +"asahi.mie.jp\0mil.tz\0" +"sor-varanger.no\0dynathome.net\0" +"skoczow.pl\0" +"shonai.yamagata.jp\0" +"stadt.museum\0" +"roma.it\0" +"shijonawate.osaka.jp\0" +"mil.vc\0" +"mil.ve\0" +"honai.ehime.jp\0" +"muko.kyoto.jp\0" +"karpacz.pl\0mil.uy\0us.com\0" +"k12.az.us\0" +"\xe6\x95\x99\xe8\x82\xb2.hk\0" +"monza-brianza.it\0shingo.aomori.jp\0toshima.tokyo.jp\0prochowice.pl\0" +"kuju.oita.jp\0cr.ua\0" +"eid.no\0" +"kyowa.hokkaido.jp\0" +"higashikagura.hokkaido.jp\0otari.nagano.jp\0kiyama.saga.jp\0" +"rochester.museum\0" +"fuchu.hiroshima.jp\0" +"hasuda.saitama.jp\0" +"ap.it\0" +"fm.br\0dagestan.ru\0" +"gs.va.no\0" +"shinshiro.aichi.jp\0lowicz.pl\0" +"taiwa.miyagi.jp\0yekaterinburg.ru\0" +"wielun.pl\0" +"geelvinck.museum\0" +"slattum.no\0" +"utsunomiya.tochigi.jp\0" +"bern.museum\0rivne.ua\0" +"miners.museum\0" +"com.ac\0kraanghke.no\0" +"pa.it\0davvenj\xc3\xa1rga.no\0" +"com.af\0tsushima.aichi.jp\0" +"com.ag\0asmatart.museum\0" +"com.ai\0" +"etnedal.no\0" +"com.al\0snaase.no\0media.pl\0" +"sula.no\0vanylven.no\0" +"com.an\0" +"torino.museum\0" +"helsinki.museum\0" +"com.ba\0" +"com.bb\0" +"kimitsu.chiba.jp\0" +"tarama.okinawa.jp\0" +"com.au\0" +"com.aw\0\xe4\xb8\xaa\xe4\xba\xba.hk\0aremark.no\0" +"com.bh\0vestre-slidre.no\0" +"com.bi\0goto.nagasaki.jp\0higashisumiyoshi.osaka.jp\0" +"com.az\0" +"rollag.no\0" +"bc.ca\0" +"com.bm\0oceanographique.museum\0" +"mesaverde.museum\0mi.th\0" +"com.bo\0gs.aa.no\0" +"jerusalem.museum\0" +"com.br\0is-a-green.com\0" +"com.bs\0nagasaki.jp\0" +"com.bt\0" +"nishiwaki.hyogo.jp\0" +"verbania.it\0takarazuka.hyogo.jp\0georgia.museum\0" +"com.by\0com.ci\0" +"com.bz\0uchinomi.kagawa.jp\0" +"ehime.jp\0" +"shinjo.nara.jp\0" +"com.cn\0shiki.saitama.jp\0" +"com.co\0cc.wv.us\0" +"xxx\0" +"tychy.pl\0nkz.ru\0" +"tobe.ehime.jp\0" +"strand.no\0" +"biz.ki\0ivanovo.ru\0" +"com.cu\0com.de\0" +"s\xc3\xa1l\xc3\xa1t.no\0" +"hichiso.gifu.jp\0nirasaki.yamanashi.jp\0flesberg.no\0" +"mi.us\0k12.il.us\0" +"jgora.pl\0sumy.ua\0" +"com.dm\0izumo.shimane.jp\0" +"com.do\0hiranai.aomori.jp\0" +"jor.br\0!city.sendai.jp\0" +"omaezaki.shizuoka.jp\0" +"turin.it\0nissedal.no\0skierva.no\0" +"com.ec\0" +"com.ee\0" +"cc.va.us\0" +"com.eg\0nagano.nagano.jp\0" +"halloffame.museum\0leka.no\0" +"com.dz\0morioka.iwate.jp\0" +"lesja.no\0" +"vibovalentia.it\0nishi.osaka.jp\0kg.kr\0" +"!city.kawasaki.jp\0flanders.museum\0" +"com.es\0florence.it\0" +"kumano.hiroshima.jp\0from-sd.com\0" +"mo.cn\0yamagata.nagano.jp\0!nic.tr\0" +"yamanashi.jp\0" +"is-with-theband.com\0" +"canada.museum\0" +"bardu.no\0tr\xc3\xb8gstad.no\0" +"fm.it\0biz.mv\0bialowieza.pl\0!nic.uk\0" +"com.fr\0vs.it\0kunohe.iwate.jp\0aoki.nagano.jp\0biz.mw\0" +"izumi.osaka.jp\0koeln.museum\0" +"gulen.no\0ruovat.no\0" +"agr.br\0com.ge\0nes.buskerud.no\0" +"fukudomi.saga.jp\0" +"dnsdojo.com\0" +"com.gh\0hitachi.ibaraki.jp\0selfip.biz\0" +"com.gi\0nakagawa.nagano.jp\0" +"biz.nr\0" +"com.gn\0nishiaizu.fukushima.jp\0" +"com.gp\0bearalvahki.no\0" +"m\xc3\xa5lselv.no\0kchr.ru\0" +"com.gr\0tosashimizu.kochi.jp\0" +"tas.gov.au\0nosegawa.nara.jp\0" +"com.gt\0kanan.osaka.jp\0oyer.no\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0" +"shinagawa.tokyo.jp\0" +"com.gy\0tn.it\0kyoto.jp\0kurume.fukuoka.jp\0" +"yk.ca\0" +"com.hk\0itako.ibaraki.jp\0" "hammarfeasta.no\0" -"moss.no\0" -"on.ca\0" -"gouv.rw\0" -"luxembourg.museum\0" -"rec.co\0british.museum\0" -"reggio-emilia.it\0" -"gouv.sn\0lib.wv.us\0" -"avocat.fr\0" -"simbirsk.ru\0" -"jar.ru\0" -"monza-brianza.it\0" -"tm.ro\0" -"imageandsound.museum\0" -"jpn.com\0mr.no\0" -"siracusa.it\0" -"norilsk.ru\0tm.se\0" -"tn.it\0" -"jeju.kr\0" -"!pref.fukuoka.jp\0" -"*.hyogo.jp\0portlligat.museum\0" -"!pref.osaka.jp\0" -"siena.it\0sc.kr\0omaha.museum\0saskatchewan.museum\0" -"phoenix.museum\0vanylven.no\0" -"botanicalgarden.museum\0" -"turek.pl\0" -"vagsoy.no\0" -"riodejaneiro.museum\0" -"vi.it\0" -"uy.com\0" -"kristiansand.no\0" -"sd.cn\0trento.it\0" -"muncie.museum\0" -"berg.no\0meldal.no\0" -"nes.buskerud.no\0" -"saratov.ru\0" -"gs.oslo.no\0" -"harstad.no\0vaga.no\0" -"research.museum\0" -"brunel.museum\0ia.us\0" -"test.tj\0" -"columbia.museum\0" -"ms.it\0stockholm.museum\0" -"reklam.hu\0" -"pomorskie.pl\0lg.ua\0" -"bg.it\0historicalsociety.museum\0rns.tn\0" -"mallorca.museum\0surgut.ru\0cc.sc.us\0" -"ushistory.museum\0" -"palana.ru\0" -"snoasa.no\0" -"naturalsciences.museum\0" -"yaroslavl.ru\0" -"unjarga.no\0" -"p.se\0" -"ingatlan.hu\0" -"irc.pl\0" -"savona.it\0" -"cr.it\0" -"test.ru\0cc.tn.us\0" -"ms.kr\0museumvereniging.museum\0" -"time.no\0k12.ia.us\0" -"vladimir.ru\0" -"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0" -"gouv.km\0nationalfirearms.museum\0" -"m\xc3\xa1latvuopmi.no\0" -"aero\0yosemite.museum\0" -"r.bg\0school.na\0" -"cc.vi.us\0" -"*.wakayama.jp\0" -"beauxarts.museum\0averoy.no\0ullensvang.no\0bar.pro\0" -"!city.hiroshima.jp\0" -"b\xc3\xa1hccavuotna.no\0" -"frosta.no\0" -"gdynia.pl\0" -"medical.museum\0" -"embaixada.st\0" -"balsan.it\0vantaa.museum\0" -"za.net\0" -"!city.saitama.jp\0lib.ks.us\0" -"fnd.br\0" -"ru.com\0se.com\0hol.no\0modalen.no\0" -"gouv.ml\0chukotka.ru\0" -"malopolska.pl\0" -"mansion.museum\0" -"iki.fi\0children.museum\0" -"cyber.museum\0rec.nf\0mo\xc3\xa5reke.no\0" -"to.it\0" -"hasvik.no\0" -"\xc3\xb8yer.no\0" -"arts.ro\0sc.ug\0" -"lib.ar.us\0" -"sc.tz\0cc.ms.us\0cc.nc.us\0" -"etc.br\0poznan.pl\0" -"cnt.br\0viking.museum\0" -"*.miyazaki.jp\0" -"melhus.no\0" -"skodje.no\0vevelstad.no\0" -"sc.us\0" -"upow.gov.pl\0" -"!city.fukuoka.jp\0brandywinevalley.museum\0natuurwetenschappen.museum\0tranby.no\0" -"bahn.museum\0msk.ru\0" -"delmenhorst.museum\0" -"russia.museum\0fuoisku.no\0" -"shell.museum\0" -"r\xc3\xa1isa.no\0" -"hs.kr\0udmurtia.ru\0" -"palermo.it\0" -"pilot.aero\0" -"tn.us\0" -"priv.hu\0" +"broker.aero\0com.hn\0shinshinotsu.hokkaido.jp\0" +"k12.ri.us\0" +"czeladz.pl\0" +"dovre.no\0" +"com.hr\0" +"com.ht\0ebino.miyazaki.jp\0" +"celtic.museum\0" +"fujimi.saitama.jp\0biz.pk\0dyndns-at-home.com\0" +"asn.au\0biz.pl\0" +"kanzaki.saga.jp\0" +"nannestad.no\0" +"yachiyo.ibaraki.jp\0" +"kaizuka.osaka.jp\0r\xc3\xa5holt.no\0biz.pr\0is-into-games.com\0" +"\xe9\xa6\x99\xe6\xb8\xaf\0" +"com.io\0" +"ri.it\0komoro.nagano.jp\0" +"com.iq\0gyokuto.kumamoto.jp\0googleapis.com\0" +"com.is\0" +"issmarterthanyou.com\0" +"de.us\0" +"castle.museum\0!parliament.uk\0" +"shimodate.ibaraki.jp\0" +"g\xc3\xa1ivuotna.no\0" +"kviteseid.no\0" +"yabu.hyogo.jp\0naamesjevuemie.no\0" +"com.jo\0science-fiction.museum\0zaporizhzhe.ua\0" +"tanabe.kyoto.jp\0" +"aejrie.no\0" +"sakae.nagano.jp\0is-a-nurse.com\0" +"moriguchi.osaka.jp\0stjordalshalsen.no\0" +"pd.it\0ot.it\0com.kg\0tokke.no\0" +"com.ki\0" +"bibai.hokkaido.jp\0tsk.ru\0" +"fm.no\0" +"com.km\0kirovograd.ua\0" +"b.bg\0tomi.nagano.jp\0" +"com.kp\0" +"ballooning.aero\0com.la\0" +"com.lb\0" +"com.lc\0lutsk.ua\0" +"yatomi.aichi.jp\0" +"virtuel.museum\0firm.ro\0" +"navigation.aero\0b.br\0com.ky\0" +"com.kz\0" +"tenei.fukushima.jp\0chungnam.kr\0com.lk\0" +"mo.it\0" +"dnsdojo.org\0" +"com.lr\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0" +"opoczno.pl\0" +"pa.us\0" +"saga.jp\0kvinesdal.no\0biz.tj\0" +"com.lv\0" +"gose.nara.jp\0com.mg\0" +"nagaokakyo.kyoto.jp\0tcm.museum\0" +"com.ly\0" +"kawasaki.miyagi.jp\0cieszyn.pl\0" +"com.mk\0" +"com.ml\0" +"com.mo\0siljan.no\0biz.tt\0" +"akita.jp\0" +"com.na\0cc.wy.us\0" +"riodejaneiro.museum\0marine.ru\0" +"averoy.no\0" +"com.mu\0" +"com.mv\0com.nf\0tolga.no\0" +"com.mw\0com.ng\0vladimir.ru\0" +"com.mx\0deatnu.no\0" +"com.my\0" +"mihara.kochi.jp\0" +"hyllestad.no\0melhus.no\0lib.co.us\0" +"eng.br\0" +"mashike.hokkaido.jp\0com.nr\0" +"minamiminowa.nagano.jp\0" +"moroyama.saitama.jp\0moscow.museum\0" +"phoenix.museum\0vladikavkaz.ru\0from-nh.com\0" +"jan-mayen.no\0" +"granvin.no\0khv.ru\0" +"cc.ut.us\0" +"mj\xc3\xb8ndalen.no\0biz.vn\0" +"accident-investigation.aero\0v\xc3\xa5ler.hedmark.no\0" +"kisosaki.mie.jp\0" +"nb.ca\0" +"firm.nf\0" +"biz\0doshi.yamanashi.jp\0com.pa\0" +"lib.ar.us\0dyndns-ip.com\0" +"fukushima.fukushima.jp\0" +"com.pe\0" +"misasa.tottori.jp\0fuossko.no\0com.pf\0" +"com.ph\0" +"tokashiki.okinawa.jp\0\xc4\x8d\xc3\xa1hcesuolo.no\0" +"moriyama.shiga.jp\0museumcenter.museum\0hof.no\0vegarshei.no\0com.pk\0" +"com.pl\0" +"com.qa\0" +"imperia.it\0com.pr\0" +"com.ps\0" +"vv.it\0com.pt\0" +"ayagawa.kagawa.jp\0davvenjarga.no\0" +"iwakuni.yamaguchi.jp\0com.py\0k12.dc.us\0" +"royken.no\0" +"pri.ee\0nishikata.tochigi.jp\0" +"urawa.saitama.jp\0" +"equipment.aero\0sweden.museum\0" +"kyowa.akita.jp\0guovdageaidnu.no\0" +"ogaki.gifu.jp\0" +"com.re\0" +"emergency.aero\0" +"ikusaka.nagano.jp\0" +"hirosaki.aomori.jp\0" +"jobs.tt\0" +"maryland.museum\0" +"com.ro\0" +"com.sa\0is-found.org\0" +"usa.oita.jp\0com.sb\0" +"frogn.no\0com.sc\0" +"com.sd\0" +"com.ru\0" +"com.rw\0com.sg\0" +"inawashiro.fukushima.jp\0com.sh\0" +"yn.cn\0" +"com.sl\0" +"togakushi.nagano.jp\0unazuki.toyama.jp\0com.sn\0" +"porsanger.no\0com.so\0" +"av.it\0" +"gc.ca\0okinawa.jp\0" +"com.st\0" +"asn.lv\0namdalseid.no\0tn.us\0" +"amber.museum\0com.sy\0broke-it.net\0podzone.net\0" +"net.ac\0com.tj\0" +"selfip.com\0" +"net.ae\0ofunato.iwate.jp\0shichikashuku.miyagi.jp\0" +"net.af\0yoita.niigata.jp\0com.tm\0" +"net.ag\0com.tn\0dynalias.net\0" +"com.to\0" +"net.ai\0eidsberg.no\0" +"com.ua\0" +"lugansk.ua\0" +"net.al\0" +"nishihara.kumamoto.jp\0com.tt\0" +"net.an\0cymru.museum\0heritage.museum\0" +"sarpsborg.no\0com.tw\0com.ug\0" +"net.ba\0higashiyamato.tokyo.jp\0\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0" +"net.bb\0pg.it\0" +"net.au\0" +"meiwa.gunma.jp\0" +"as.us\0" +"net.bh\0ri.us\0" +"e.bg\0" +"net.az\0" +"roan.no\0" +"com.vc\0\xe5\x8f\xb0\xe7\x81\xa3\0" +"net.bm\0" +"com.ve\0" +"net.bo\0" +"net.br\0com.uy\0com.vi\0fuettertdasnetz.de\0" +"net.bs\0tran\xc3\xb8y.no\0com.uz\0" +"net.bt\0higashiomi.shiga.jp\0kms.ru\0" +"accident-prevention.aero\0from-ca.com\0" +"ozora.hokkaido.jp\0com.vn\0dyndns-server.com\0" +"net.ci\0" +"net.bz\0" +"livinghistory.museum\0" +"net.cn\0" +"net.co\0ryuoh.shiga.jp\0" +"krokstadelva.no\0" +"lib.wa.us\0" +"cat\0" +"oz.au\0net.cu\0from-sc.com\0" +"chocolate.museum\0" +"sch.ae\0" +"iwate.jp\0" +"museum.tt\0com.ws\0" +"net.dm\0selje.no\0is-very-good.org\0" +"net.do\0" +"net.ec\0gildesk\xc3\xa5l.no\0" +"moriyoshi.akita.jp\0rl.no\0mo.us\0blogspot.re\0" +"net.eg\0" +"hachioji.tokyo.jp\0childrens.museum\0" +"shizuoka.jp\0" +"net.dz\0" +"minamiizu.shizuoka.jp\0" +"is-a-patsfan.org\0" +"inagawa.hyogo.jp\0blogspot.ro\0" +"yamagata.jp\0gsm.pl\0" +"suldal.no\0dlugoleka.pl\0blogspot.se\0" +"blogspot.sg\0" +"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0dnsalias.com\0" +"kamikawa.hokkaido.jp\0kamoenai.hokkaido.jp\0" +"blogspot.sk\0" +"siracusa.it\0k12.wi.us\0" +"oksnes.no\0\xed\x95\x9c\xea\xb5\xad\0" +"vardo.no\0starachowice.pl\0" +"net.ge\0ishinomaki.miyagi.jp\0oji.nara.jp\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0blogspot.td\0" +"trustee.museum\0" +"net.gg\0" +"misato.saitama.jp\0" +"ppg.br\0" +"net.gn\0chikuho.fukuoka.jp\0" +"net.gp\0" +"osoyro.no\0dyndns-office.com\0" +"net.gr\0higashikawa.hokkaido.jp\0" +"net.gt\0monzabrianza.it\0mr.no\0eidsvoll.no\0" +"aridagawa.wakayama.jp\0" +"sykkylven.no\0" +"minamiaiki.nagano.jp\0blogspot.tw\0" +"net.gy\0naturhistorisches.museum\0" +"net.hk\0zaporizhzhia.ua\0" +"mifune.kumamoto.jp\0" +"net.hn\0" +"kahoku.yamagata.jp\0" +"asakawa.fukushima.jp\0" +"barlettatraniandria.it\0blogspot.mr\0" +"net.ht\0net.id\0" +"b.se\0" +"ud.it\0tsuchiura.ibaraki.jp\0naturalhistory.museum\0" +"matsushige.tokushima.jp\0nanto.toyama.jp\0from-al.com\0" +"blogspot.mx\0" +"nagakute.aichi.jp\0zamami.okinawa.jp\0" +"net.im\0ikawa.akita.jp\0lib.ne.us\0blogspot.nl\0" +"net.in\0" +"yokkaichi.mie.jp\0" +"blogspot.no\0" +"net.iq\0" +"net.ir\0" +"net.is\0" +"net.je\0" +"from.hr\0cc.oh.us\0" +"biratori.hokkaido.jp\0" +"sch.gg\0" +"taxi.aero\0" +"bi.it\0treviso.it\0" +"ro.it\0" +"mine.nu\0" +"net.jo\0tenri.nara.jp\0alvdal.no\0" +"ikeda.hokkaido.jp\0here-for-more.info\0" +"owani.aomori.jp\0" +"uri.arpa\0" +"tsukui.kanagawa.jp\0bryne.no\0" +"shibetsu.hokkaido.jp\0grozny.ru\0" +"jewelry.museum\0" +"net.kg\0" +"net.ki\0" +"sakura.chiba.jp\0nittedal.no\0" +"kawazu.shizuoka.jp\0" +"net.kn\0" +"net.la\0hoylandet.no\0" +"net.lb\0\xc3\xa5mli.no\0" +"net.lc\0" +"mihama.fukui.jp\0yamagata.gifu.jp\0blogspot.pt\0" +"sch.id\0" +"aca.pro\0" +"sanjo.niigata.jp\0net.ky\0" +"tsukumi.oita.jp\0net.kz\0oceanographic.museum\0k12.nm.us\0" +"h.bg\0net.lk\0" +"miharu.fukushima.jp\0" +"aknoluokta.no\0" +"net.ma\0" +"tw.cn\0net.lr\0" +"kamikitayama.nara.jp\0miyashiro.saitama.jp\0chernihiv.ua\0" +"ichikawa.hyogo.jp\0comunica\xc3\xa7\xc3\xb5""es.museum\0" +"sch.ir\0oki.fukuoka.jp\0yoshioka.gunma.jp\0akkeshi.hokkaido.jp\0net.me\0kazimierz-dolny.pl\0blogspot.it\0" +"net.lv\0" +"sch.je\0yoshida.saitama.jp\0" +"net.ly\0" +"net.mk\0" +"net.ml\0" +"museum.mv\0" +"hokkaido.jp\0net.mo\0museum.mw\0" +"\xc3\xa1lt\xc3\xa1.no\0vestnes.no\0" +"blogspot.jp\0" +"sch.jo\0" +"yokoze.saitama.jp\0stathelle.no\0blogspot.com.ar\0" +"net.mu\0" +"net.mv\0net.nf\0" +"adult.ht\0ne.jp\0coldwar.museum\0net.mw\0net.ng\0museum.no\0blogspot.com.au\0" +"net.mx\0" +"skydiving.aero\0net.my\0" +"nakasatsunai.hokkaido.jp\0" +"undersea.museum\0" +"kainan.wakayama.jp\0sebastopol.ua\0cc.hi.us\0" +"gamagori.aichi.jp\0" +"gyeongbuk.kr\0" +"net.nr\0" +"jorpeland.no\0blogspot.kr\0" +"bellevue.museum\0blogspot.com.br\0" +"kanegasaki.iwate.jp\0" +"ne.kr\0" +"aosta.it\0mima.tokushima.jp\0" +"pro.az\0km.ua\0" +"nakanoto.ishikawa.jp\0sch.lk\0" +"nome.pt\0" +"nagareyama.chiba.jp\0himeji.hyogo.jp\0denmark.museum\0" +"echizen.fukui.jp\0net.pa\0\xe4\xb8\xad\xe5\x9b\xbd\0from-oh.com\0" +"kongsvinger.no\0ringebu.no\0" +"tsukigata.hokkaido.jp\0m\xc3\xa5s\xc3\xb8y.no\0" +"pro.br\0net.pe\0bar.pro\0" +"viterbo.it\0heroy.more-og-romsdal.no\0" +"omihachiman.shiga.jp\0labor.museum\0" +"toho.fukuoka.jp\0tome.miyagi.jp\0net.ph\0" +"net.pk\0" +"sch.ly\0net.pl\0" +"saijo.ehime.jp\0" +"shiojiri.nagano.jp\0net.pn\0" +"newport.museum\0\xe4\xb8\xad\xe5\x9c\x8b\0" +"\xe6\x95\x8e\xe8\x82\xb2.hk\0net.qa\0" +"net.pr\0" +"net.ps\0" +"net.pt\0" +"akrehamn.no\0" +"oshu.iwate.jp\0lincoln.museum\0fjell.no\0" +"selfip.info\0" +"hol.no\0" +"net.py\0" +"blogspot.fi\0" +"kakegawa.shizuoka.jp\0cc.co.us\0" +"com\0schoenbrunn.museum\0" +"microlight.aero\0" +"shimogo.fukushima.jp\0" +"leirvik.no\0" +"veg\xc3\xa5rshei.no\0blogspot.fr\0" +"blogspot.com.es\0" +"pro.ec\0" +"civilisation.museum\0" +"g\xc3\xa1\xc5\x8bgaviika.no\0" +"nago.okinawa.jp\0" +"station.museum\0" +"akashi.hyogo.jp\0ichinohe.iwate.jp\0" +"tsukiyono.gunma.jp\0" +"b\xc3\xa1hcavuotna.no\0" +"notogawa.shiga.jp\0sciencehistory.museum\0s\xc3\xb8r-fron.no\0" +"net.sa\0" +"net.sb\0" +"net.sc\0blogspot.gr\0" +"net.sd\0" +"mandal.no\0net.ru\0" +"net.rw\0e.se\0net.sg\0" +"flight.aero\0alabama.museum\0net.sh\0" +"dgca.aero\0dominic.ua\0" +"vestby.no\0" +"kuroishi.aomori.jp\0gs.hl.no\0" +"sorfold.no\0net.sl\0blogspot.hk\0" +"nemuro.hokkaido.jp\0l\xc3\xa1hppi.no\0wi.us\0" +"tsuno.miyazaki.jp\0net.so\0" +"giessen.museum\0" +"l\xc3\xb8ten.no\0dn.ua\0" +"wada.nagano.jp\0" +"sch.qa\0net.st\0" +"shiroishi.saga.jp\0" +"blogspot.hu\0blogspot.ie\0" +"teramo.it\0kuzumaki.iwate.jp\0" +"net.th\0" +"net.sy\0" +"net.tj\0cc.ok.us\0" +"uozu.toyama.jp\0net.tm\0" +"bl.it\0naoshima.kagawa.jp\0ne.pw\0net.tn\0" +"ohi.fukui.jp\0fusa.no\0net.to\0blogspot.in\0" +"hirakata.osaka.jp\0" +"net.ua\0" +"fujiyoshida.yamanashi.jp\0beskidy.pl\0" +"ed.ao\0net.tt\0" +"kochi.kochi.jp\0" +"southcarolina.museum\0valle.no\0blogspot.be\0dnsdojo.net\0" +"tomika.gifu.jp\0muosat.no\0net.tw\0" +"minamiyamashiro.kyoto.jp\0" +"itano.tokushima.jp\0blogspot.bj\0" +"tainai.niigata.jp\0zachpomor.pl\0" +"komono.mie.jp\0project.museum\0" +"blogspot.ca\0" +"net.vc\0" +"aerobatic.aero\0benevento.it\0sch.sa\0" +"nakadomari.aomori.jp\0ibara.okayama.jp\0net.ve\0" +"elvendrell.museum\0" +"pro.ht\0tomari.hokkaido.jp\0blogspot.cf\0" +"hikimi.shimane.jp\0" +"net.uy\0net.vi\0blogspot.ch\0" +"net.uz\0" +"servebbs.com\0" +"k.bg\0" +"ed.ci\0net.vn\0" +"paragliding.aero\0otobe.hokkaido.jp\0" +"sakai.fukui.jp\0" +"rikuzentakata.iwate.jp\0" +"journalism.museum\0" +"news.hu\0" +"susono.shizuoka.jp\0blogspot.de\0" +"ed.cr\0mediocampidano.it\0blogspot.cv\0" +"soma.fukushima.jp\0blogspot.com\0" +"blogspot.cz\0is-a-player.com\0" +"blogspot.dk\0" +"consulado.st\0" +"shingu.fukuoka.jp\0" +"inami.wakayama.jp\0" +"education.museum\0" +"sciencecenters.museum\0net.ws\0" +"lib.ga.us\0" +"bergen.no\0" +"prato.it\0shiwa.iwate.jp\0" +"bo.nordland.no\0" +"foggia.it\0" +"pp.az\0ne.ug\0" +"chirurgiens-dentistes.fr\0" +"toyama.jp\0ne.tz\0" +"forum.hu\0chita.aichi.jp\0" +"nisshin.aichi.jp\0" +"lc.it\0mitake.gifu.jp\0solund.no\0" +"ogose.saitama.jp\0" +"kunst.museum\0" +"ne.us\0" +"furukawa.miyagi.jp\0" +"nakatombetsu.hokkaido.jp\0lib.tn.us\0" +"\xc3\xa5l.no\0" +"fareast.ru\0" +"railroad.museum\0" +"yamaguchi.jp\0sakae.chiba.jp\0" +"atsuma.hokkaido.jp\0minamimaki.nagano.jp\0" +"marker.no\0" +"yabuki.fukushima.jp\0from-ak.com\0" +"settlers.museum\0rubtsovsk.ru\0" +"akabira.hokkaido.jp\0" +"pro.na\0" +"yurihonjo.akita.jp\0" +"kuji.iwate.jp\0" +"morotsuka.miyazaki.jp\0pro.mv\0" +"mx.na\0" +"cargo.aero\0ohira.tochigi.jp\0" +"fyresdal.no\0" +"trieste.it\0tokyo.jp\0" +"midori.chiba.jp\0" +"manx.museum\0" +"soo.kagoshima.jp\0kunstsammlung.museum\0rzeszow.pl\0" +"samegawa.fukushima.jp\0" +"leasing.aero\0" +"higashi.fukuoka.jp\0kids.us\0" +"assedic.fr\0" +"state.museum\0czest.pl\0" +"wallonie.museum\0podzone.org\0" +"hitoyoshi.kumamoto.jp\0" +"hamura.tokyo.jp\0" +"h.se\0" +"minoh.osaka.jp\0" +"tako.chiba.jp\0kafjord.no\0" +"freemasonry.museum\0" +"lib.mo.us\0" +"ed.jp\0pro.pr\0" +"film.hu\0" +"act.au\0" +"in.na\0" +"no.com\0" +"higashiizumo.shimane.jp\0elburg.museum\0" +"siedlce.pl\0" +"bo.it\0" +"chikugo.fukuoka.jp\0from-mo.com\0" +"!city.kitakyushu.jp\0sopot.pl\0" +"togura.nagano.jp\0" +"handson.museum\0sb.ua\0" +"rennebu.no\0" +"milan.it\0" +"kamioka.akita.jp\0" +"cc.mi.us\0" +"from-de.com\0" +"urayasu.chiba.jp\0" +"varggat.no\0" +"takatsuki.shiga.jp\0k12.ms.us\0k12.nc.us\0" +"n.bg\0sakaki.nagano.jp\0" +"uwajima.ehime.jp\0skaun.no\0" +"kursk.ru\0" +"tabayama.yamanashi.jp\0" +"ryazan.ru\0" +"oyabe.toyama.jp\0health.vn\0" +"higashiyoshino.nara.jp\0" +"isen.kagoshima.jp\0nogi.tochigi.jp\0broadcast.museum\0" +"iitate.fukushima.jp\0yawata.kyoto.jp\0daegu.kr\0" +"obihiro.hokkaido.jp\0rebun.hokkaido.jp\0kamo.niigata.jp\0" +"vrn.ru\0" +"higashimurayama.tokyo.jp\0" +"ora.gunma.jp\0shimoji.okinawa.jp\0pro.tt\0lib.wv.us\0" +"odate.akita.jp\0" +"shoo.okayama.jp\0" +"tula.ru\0" +"uchinada.ishikawa.jp\0" +"sh.cn\0kawahara.tottori.jp\0" +"ingatlan.hu\0chikuma.nagano.jp\0vaksdal.no\0" +"foundation.museum\0" +"lewismiller.museum\0" +"trentino.it\0" +"qc.ca\0piacenza.it\0bokn.no\0" +"in.rs\0tom.ru\0" +"cng.br\0lebesby.no\0nh.us\0k12.ia.us\0" +"noto.ishikawa.jp\0arita.saga.jp\0" +"svizzera.museum\0ask\xc3\xb8y.no\0" +"kiyose.tokyo.jp\0frosta.no\0" +"ks.ua\0pro.vn\0" +"namsos.no\0" +"federation.aero\0" +"naumburg.museum\0" +"szczecin.pl\0" +"koza.wakayama.jp\0" +"poltava.ua\0" +"sorum.no\0ed.pw\0from-ky.com\0" +"nishiazai.shiga.jp\0" +"in.th\0" +"moseushi.hokkaido.jp\0sn\xc3\xa5sa.no\0" +"nankoku.kochi.jp\0" +"orland.no\0" +"miyoshi.tokushima.jp\0larvik.no\0ks.us\0" +"loppa.no\0" +"*.kobe.jp\0childrensgarden.museum\0" +"sakai.ibaraki.jp\0\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0" +"in.ua\0" +"inf.br\0\xe7\xbd\x91\xe7\xb5\xa1.hk\0h\xc3\xb8ylandet.no\0skedsmo.no\0" +"dynalias.org\0" +"kurobe.toyama.jp\0gol.no\0" +"not.br\0shingu.wakayama.jp\0" +"nakai.kanagawa.jp\0cc.de.us\0" +"azumino.nagano.jp\0rade.no\0" +"dyndns-at-work.com\0" +"travel.pl\0" +"katsuura.chiba.jp\0" +"oiso.kanagawa.jp\0" +"it.ao\0cim.br\0in.us\0" +"bamble.no\0" +"inf.cu\0mimata.miyazaki.jp\0" +"bo.telemark.no\0" +"karasjohka.no\0" +"hanyu.saitama.jp\0artanddesign.museum\0" +"padua.it\0" +"health.museum\0" +"edu\0aseral.no\0" +"carbonia-iglesias.it\0nikaho.akita.jp\0" +"r\xc3\xb8ros.no\0" +"matsudo.chiba.jp\0yoshinogari.saga.jp\0" +"\xc3\xb8ystre-slidre.no\0k.se\0" +"bodo.no\0holmestrand.no\0vestvagoy.no\0" +"horokanai.hokkaido.jp\0matsue.shimane.jp\0" +"oyodo.nara.jp\0dnsalias.net\0" +"fr\xc3\xb8ya.no\0" +"monzaebrianza.it\0katagami.akita.jp\0istmein.de\0" +"tochigi.tochigi.jp\0lea\xc5\x8bgaviika.no\0komforb.se\0" +"design.museum\0" +"hanamigawa.chiba.jp\0" +"zj.cn\0nahari.kochi.jp\0discovery.museum\0" +"carraramassa.it\0elk.pl\0" +"cc.pa.us\0" +"kaga.ishikawa.jp\0tokamachi.niigata.jp\0" +"br.it\0cb.it\0" +"plc.ly\0agrinet.tn\0" +"gs.fm.no\0surgut.ru\0" +"usa.museum\0pp.ru\0pp.se\0" +"lib.la.us\0" +"go.ci\0\xe8\x87\xba\xe7\x81\xa3\0" +"rodoy.no\0" +"niikappu.hokkaido.jp\0" +"kure.hiroshima.jp\0fudai.iwate.jp\0maizuru.kyoto.jp\0" +"passenger-association.aero\0iveland.no\0" +"go.cr\0takayama.nagano.jp\0" +"game.tw\0" +"tvedestrand.no\0chernovtsy.ua\0" +"entertainment.aero\0trader.aero\0" +"shikaoi.hokkaido.jp\0komagane.nagano.jp\0travel.tt\0" +"katsushika.tokyo.jp\0" +"suita.osaka.jp\0" +"nasushiobara.tochigi.jp\0za.com\0" +"q.bg\0cody.museum\0" +"esp.br\0sagamihara.kanagawa.jp\0" +"pp.ua\0" +"andriatranibarletta.it\0mikawa.yamagata.jp\0naustdal.no\0" +"takinoue.hokkaido.jp\0gs.oslo.no\0" +"shiroishi.miyagi.jp\0community.museum\0bievat.no\0" +"from-ia.com\0" +"rep.kp\0luxembourg.museum\0" +"sk.ca\0" +"vic.gov.au\0" +"yamanashi.yamanashi.jp\0hemne.no\0" +"ulsan.kr\0k12.ky.us\0" +"is-a-caterer.com\0" +"kozagawa.wakayama.jp\0" +"capebreton.museum\0" +"is-a-musician.com\0" +"kaita.hiroshima.jp\0" +"seto.aichi.jp\0" +"yoshino.nara.jp\0" +"muenster.museum\0os\xc3\xb8yro.no\0" "li.it\0" -"kr\xc3\xa5""anghke.no\0mosreg.ru\0" -"lib.fl.us\0" -"plants.museum\0" -"ulsan.kr\0national.museum\0" -"mil.ac\0!pref.nara.jp\0surgeonshall.museum\0" -"mil.ae\0santacruz.museum\0vi.us\0" -"wlocl.pl\0" -"mt.it\0napoli.it\0alaska.museum\0arts.nf\0" -"missoula.museum\0" -"rec.ro\0" -"mil.al\0" -"marburg.museum\0waw.pl\0" -"pharmaciens.km\0indianapolis.museum\0larsson.museum\0" -"cc.sd.us\0" -"mil.ba\0mobi\0" -"indianmarket.museum\0" -"recreation.aero\0padova.it\0" -"varese.it\0parti.se\0" -"mil.az\0" -"mil.bo\0!pref.kagoshima.jp\0khmelnitskiy.ua\0" -"rygge.no\0" -"os\xc3\xb8yro.no\0" -"mil.br\0" -"cs.it\0" -"austevoll.no\0fjell.no\0" -"mil.by\0" -"!pref.tokushima.jp\0org\0" -"mil.cn\0gs.svalbard.no\0" -"mil.co\0" -"pz.it\0lib.va.us\0\xd1\x80\xd1\x84\0" -"\xe4\xb8\xaa\xe4\xba\xba.hk\0ms.us\0nc.us\0k12.wi.us\0" -"s.bg\0drangedal.no\0" -"en.it\0" -"culturalcenter.museum\0" -"house.museum\0divttasvuotna.no\0" -"fhs.no\0" -"circus.museum\0" -"priv.at\0" -"mil.ec\0" -"ruovat.no\0" -"midsund.no\0vagan.no\0" -"casadelamoneda.museum\0" -"bristol.museum\0" -"and.museum\0" -"ascolipiceno.it\0computerhistory.museum\0vyatka.ru\0" -"uhren.museum\0" -"lahppi.no\0" -"*.yokohama.jp\0cody.museum\0lib.al.us\0" -"colonialwilliamsburg.museum\0indian.museum\0cc.ky.us\0" -"tp.it\0biev\xc3\xa1t.no\0" -"can.br\0royken.no\0" +"hokksund.no\0" +"snz.ru\0" +"hannan.osaka.jp\0brumunddal.no\0" +"fukushima.jp\0" +"tgory.pl\0kv.ua\0" +"hachinohe.aomori.jp\0media.museum\0" +"hidaka.saitama.jp\0" +"oto.fukuoka.jp\0" +"kozaki.chiba.jp\0" +"sandnessjoen.no\0" +"christiansburg.museum\0" +"res.aero\0" +"ashiya.hyogo.jp\0" +"soeda.fukuoka.jp\0" +"nuernberg.museum\0" +"sakhalin.ru\0" +"go.id\0soundandvision.museum\0" +"tajimi.gifu.jp\0tonosho.kagawa.jp\0" +"from-ut.com\0" +"aki.kochi.jp\0" +"niiza.saitama.jp\0" +"stalowa-wola.pl\0" +"from-ne.com\0" +"tado.mie.jp\0abeno.osaka.jp\0bergbau.museum\0dallas.museum\0" +"inf.mk\0cc.tn.us\0" +"onomichi.hiroshima.jp\0saga.saga.jp\0" +"go.it\0motoyama.kochi.jp\0" +"iwakura.aichi.jp\0" +"kashihara.nara.jp\0inagi.tokyo.jp\0" +"\xe7\xbd\x91\xe7\xbb\x9c.cn\0judaica.museum\0" +"ilawa.pl\0" +"lib.pr.us\0" +"buryatia.ru\0" +"go.jp\0" +"snasa.no\0" +"otaki.chiba.jp\0" +"mielno.pl\0" +"tachiarai.fukuoka.jp\0settsu.osaka.jp\0" +"hikari.yamaguchi.jp\0" +"cc.as.us\0" +"cc.ri.us\0" +"jobs\0" +"mail.pl\0" +"santacruz.museum\0n.se\0" +"hapmir.no\0" +"go.kr\0k12.sc.us\0" +"lib.ny.us\0" +"nuoro.it\0" +"sogndal.no\0sosnowiec.pl\0" +"asaminami.hiroshima.jp\0" +"isernia.it\0froland.no\0vang.no\0" +"nanporo.hokkaido.jp\0" +"dyndns-wiki.com\0" +"bari.it\0bahcavuotna.no\0" +"panama.museum\0santafe.museum\0" +"ce.it\0shirakawa.gifu.jp\0" +"aircraft.aero\0ptz.ru\0iamallama.com\0" +"takayama.gunma.jp\0" +"ama.aichi.jp\0" +"yakumo.shimane.jp\0taito.tokyo.jp\0" +"cmw.ru\0" +"res.in\0" +"hb.cn\0tohnosho.chiba.jp\0kashiba.nara.jp\0soni.nara.jp\0ostroleka.pl\0" +"aogashima.tokyo.jp\0" +"minano.saitama.jp\0lur\xc3\xb8y.no\0cc.mo.us\0" +"gjerstad.no\0" +"yashiro.hyogo.jp\0hitachiomiya.ibaraki.jp\0hakone.kanagawa.jp\0watch-and-clock.museum\0" +"pv.it\0toyohashi.aichi.jp\0okuizumo.shimane.jp\0" +"shop.ht\0olawa.pl\0" +"shop.hu\0sukagawa.fukushima.jp\0marugame.kagawa.jp\0v\xc3\xa5g\xc3\xa5.no\0" +"\xe7\xb5\x84\xe7\xbb\x87.hk\0usantiques.museum\0udm.ru\0" +"railway.museum\0" +"t.bg\0tsubetsu.hokkaido.jp\0kariwa.niigata.jp\0tsurugashima.saitama.jp\0" +"etc.br\0" +"obira.hokkaido.jp\0ide.kyoto.jp\0educational.museum\0bydgoszcz.pl\0" +"figueres.museum\0" +"langevag.no\0" +"tinn.no\0" +"\xe7\xbd\x91\xe7\xbb\x9c.hk\0" +"ens.tn\0" +"vercelli.it\0" +"ac.ae\0" +"newspaper.museum\0" +"potenza.it\0" +"komatsushima.tokushima.jp\0" +"gs.rl.no\0" +"nakayama.yamagata.jp\0abu.yamaguchi.jp\0" +"lind\xc3\xa5s.no\0pila.pl\0" +"ac.at\0tamatsukuri.ibaraki.jp\0" +"ac.be\0" +"durham.museum\0" +"sn.cn\0kadena.okinawa.jp\0atm.pl\0" +"haram.no\0" +"aichi.jp\0" +"mihama.aichi.jp\0" +"mizumaki.fukuoka.jp\0serveftp.net\0" +"portland.museum\0from-in.com\0" +"hagebostad.no\0" +"nara.jp\0go.pw\0" +"sa.edu.au\0ukiha.fukuoka.jp\0" +"*.ar\0nyny.museum\0" +"media.aero\0*.bd\0" +"ine.kyoto.jp\0bu.no\0" +"br.com\0" +"ac.ci\0" +"onagawa.miyagi.jp\0" +"nt.au\0" +"ac.cn\0from-tx.com\0" +"*.bn\0" +"sor-odal.no\0" +"ac.cr\0ikeda.gifu.jp\0" +"sobetsu.hokkaido.jp\0culture.museum\0zgrad.ru\0" +"tadotsu.kagawa.jp\0" +"machida.tokyo.jp\0chernigov.ua\0" +"kembuchi.hokkaido.jp\0from-mi.com\0" +"sor-aurdal.no\0" +"pippu.hokkaido.jp\0" +"nt.ca\0" +"mitoyo.kagawa.jp\0" +"*.ck\0tsuwano.shimane.jp\0gs.mr.no\0" +"toyo.kochi.jp\0" +"ky.us\0" +"tranoy.no\0" +"br\xc3\xb8nn\xc3\xb8ysund.no\0" +"hemsedal.no\0" +"rendalen.no\0" +"*.cy\0utsira.no\0" +"takasu.hokkaido.jp\0" +"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0" +"tsuyama.okayama.jp\0beauxarts.museum\0" +"gr.it\0" +"firenze.it\0misugi.mie.jp\0and.museum\0" +"go.th\0" +"semboku.akita.jp\0" +"tokushima.tokushima.jp\0go.tj\0" +"buzen.fukuoka.jp\0" +"land-4-sale.us\0" +"nyc.museum\0" +"mobi\0" +"gr.jp\0" +"raisa.no\0" +"go.ug\0" +"*.er\0go.tz\0" +"*.et\0" +"vc.it\0h\xc3\xa1pmir.no\0" +"*.fj\0" +"scientist.aero\0*.fk\0yamato.kumamoto.jp\0modalen.no\0stargard.pl\0" +"ac.gn\0sumida.tokyo.jp\0" +"historisches.museum\0" +"kvits\xc3\xb8y.no\0" +"store.nf\0" +"yoka.hyogo.jp\0omachi.nagano.jp\0" +"ch.it\0" +"overhalla.no\0likescandy.com\0" +"www.ro\0se.net\0" +"nakamichi.yamanashi.jp\0" +"adm.br\0dnipropetrovsk.ua\0" +"vindafjord.no\0k12.ak.us\0is-a-rockstar.com\0" +"ac.id\0minamiechizen.fukui.jp\0" +"*.gu\0children.museum\0" +"tsu.mie.jp\0" +"fr\xc3\xa6na.no\0" +"gliwice.pl\0" +"he.cn\0aid.pl\0" +"ac.im\0kishiwada.osaka.jp\0" +"ac.in\0" +"finearts.museum\0" +"ac.ir\0" +"\xe5\x80\x8b\xe4\xba\xba.hk\0lucca.it\0odessa.ua\0" +"massa-carrara.it\0" +"happou.akita.jp\0colonialwilliamsburg.museum\0k12.nv.us\0" +"w.bg\0lib.in.us\0" +"*.il\0" +"scotland.museum\0" +"ac.jp\0" +"shimoda.shizuoka.jp\0is-by.us\0" +"kui.hiroshima.jp\0" +"us.na\0" +"reggio-emilia.it\0asahi.ibaraki.jp\0saintlouis.museum\0" +"kashima.saga.jp\0arboretum.museum\0" +"bandai.fukushima.jp\0" +"chikuhoku.nagano.jp\0hayakawa.yamanashi.jp\0" +"*.jm\0namikata.ehime.jp\0haibara.shizuoka.jp\0bytom.pl\0" +"furano.hokkaido.jp\0zushi.kanagawa.jp\0" +"\xe7\xbb\x84\xe7\xb9\x94.hk\0*.sendai.jp\0" +"ulan-ude.ru\0" +"ac.kr\0beardu.no\0" +"lib.gu.us\0" +"*.ke\0" +"*.kh\0" +"vinnica.ua\0" +"takahata.yamagata.jp\0" +"honjyo.akita.jp\0scienceandindustry.museum\0" +"tokorozawa.saitama.jp\0" +"meraker.no\0" +"katsuragi.nara.jp\0h\xc3\xa1mm\xc3\xa1rfeasta.no\0bialystok.pl\0" +"ac.ma\0" +"lo.it\0akagi.shimane.jp\0" +"tawaramoto.nara.jp\0obanazawa.yamagata.jp\0ac.me\0" +"genoa.it\0" +"iz.hr\0*.kw\0" +"og.ao\0yakutia.ru\0" +"taku.saga.jp\0" +"heguri.nara.jp\0" +"mansions.museum\0folldal.no\0omasvuotna.no\0" +"cherkassy.ua\0" +"trainer.aero\0" +"ac.mu\0" +"cc.wi.us\0" +"ac.mw\0ac.ng\0" +"cartoonart.museum\0" +"*.mm\0" +"paris.museum\0" +"can.museum\0" +"juedisches.museum\0from-vt.com\0" +"*.mt\0" +"narita.chiba.jp\0fukushima.hokkaido.jp\0" +"awaji.hyogo.jp\0" +"lodi.it\0is-uberleet.com\0" +"*.ni\0" +"*.mz\0" +"engerdal.no\0" +"square.museum\0" +"saroma.hokkaido.jp\0neues.museum\0" +"reggiocalabria.it\0" +"*.np\0ac.pa\0" +"mb.ca\0seika.kyoto.jp\0" +"higashiagatsuma.gunma.jp\0iizuna.nagano.jp\0nesoddtangen.no\0" +"nakatane.kagoshima.jp\0" +"nt.no\0" +"tendo.yamagata.jp\0brandywinevalley.museum\0" +"*.nz\0" +"kunitachi.tokyo.jp\0" +"b\xc3\xa6rum.no\0" +"*.om\0tuva.ru\0" +"balat.no\0" +"sue.fukuoka.jp\0" +"iwata.shizuoka.jp\0tysvar.no\0ac.pr\0" +"skodje.no\0" +"ama.shimane.jp\0illustration.museum\0idrett.no\0" +"better-than.tv\0" +"ashiya.fukuoka.jp\0leksvik.no\0" +"*.pg\0wloclawek.pl\0t.se\0" +"mie.jp\0" +"kawamata.fukushima.jp\0" +"donostia.museum\0" +"is-a-chef.org\0" +"guernsey.museum\0" +"saku.nagano.jp\0" +"minamisanriku.miyagi.jp\0" +"penza.ru\0" +"ta.it\0" +"kawanabe.kagoshima.jp\0" +"ac.rs\0" +"okayama.okayama.jp\0kamiizumi.saitama.jp\0annefrank.museum\0" +"association.aero\0gushikami.okinawa.jp\0ac.ru\0ac.se\0" +"zentsuji.kagawa.jp\0" +"ac.rw\0" +"nagahama.shiga.jp\0narusawa.yamanashi.jp\0" +"telekommunikation.museum\0" +"crew.aero\0" +"services.aero\0" +"gx.cn\0konan.shiga.jp\0" +"misaki.osaka.jp\0" +"fukui.fukui.jp\0toya.hokkaido.jp\0toyonaka.osaka.jp\0" +"sugito.saitama.jp\0" +"cc.ne.us\0" +"hornindal.no\0" +"noda.iwate.jp\0" +"wakkanai.hokkaido.jp\0nt.ro\0" +"ac.th\0" +"ringsaker.no\0" +"ac.sz\0ac.tj\0" +"arq.br\0nnov.ru\0" +"itami.hyogo.jp\0kashiwazaki.niigata.jp\0" +"z.bg\0" +"eti.br\0showa.gunma.jp\0unnan.shimane.jp\0sos.pl\0" +"rishiri.hokkaido.jp\0" +"aso.kumamoto.jp\0" +"store.ro\0" +"otofuke.hokkaido.jp\0" +"*.sv\0ac.ug\0" +"ae.org\0" +"iida.nagano.jp\0kitanakagusuku.okinawa.jp\0ac.tz\0teaches-yoga.com\0" +"shimokitayama.nara.jp\0arakawa.saitama.jp\0" +"og.it\0joboji.iwate.jp\0kainan.tokushima.jp\0" +"ski.no\0" +"lib.ee\0" +"itakura.gunma.jp\0sor-fron.no\0*.tr\0" +"vf.no\0" +"astronomy.museum\0" +"takatsuki.osaka.jp\0" +"store.st\0" +"rokunohe.aomori.jp\0" +"kiyokawa.kanagawa.jp\0od.ua\0" +"kvalsund.no\0" +"ashoro.hokkaido.jp\0utazu.kagawa.jp\0ibestad.no\0*.uk\0" +"urbinopesaro.it\0lyngdal.no\0ac.vn\0" +"koshu.yamanashi.jp\0michigan.museum\0r\xc3\xb8mskog.no\0" +"kitagata.saga.jp\0omsk.ru\0" +"mashiko.tochigi.jp\0" +"kofu.yamanashi.jp\0" +"mb.it\0" +"medizinhistorisches.museum\0" +"inuyama.aichi.jp\0dnsalias.org\0is-a-chef.com\0" +"otaki.nagano.jp\0austrheim.no\0" +"ar.com\0" +"0.bg\0anthropology.museum\0hvaler.no\0shop.pl\0" +"lib.va.us\0" +"fukusaki.hyogo.jp\0baths.museum\0culturalcenter.museum\0" +"show.aero\0iraq.museum\0r\xc3\xa1hkker\xc3\xa1vju.no\0" +"kamakura.kanagawa.jp\0toyono.osaka.jp\0" +"vega.no\0" +"sumoto.hyogo.jp\0film.museum\0" +"kadogawa.miyazaki.jp\0garden.museum\0" +"schokoladen.museum\0!nls.uk\0" +"konskowola.pl\0" +"legnica.pl\0" +"caltanissetta.it\0wajima.ishikawa.jp\0" +"mragowo.pl\0" +"hattfjelldal.no\0" +"kuwana.mie.jp\0" +"tsuga.tochigi.jp\0" +"itayanagi.aomori.jp\0v\xc3\xa5gan.no\0" +"museumvereniging.museum\0zp.ua\0" +"kawanehon.shizuoka.jp\0" +"american.museum\0" +"dolls.museum\0" +"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0" +"hiroshima.jp\0betainabox.com\0" +"kawaba.gunma.jp\0" +"*.ye\0" +"law.pro\0" +"kin.okinawa.jp\0skj\xc3\xa5k.no\0" +"is-a-conservative.com\0" +"americana.museum\0k12.vi.us\0" +"yamada.toyama.jp\0" +"miasa.nagano.jp\0" +"conf.au\0" +"aure.no\0*.za\0" +"oizumi.gunma.jp\0lodingen.no\0" +"from-or.com\0" +"qc.com\0" +"fc.it\0farmequipment.museum\0w.se\0" +"vi.it\0" +"archaeological.museum\0moss.no\0" +"khakassia.ru\0*.zm\0isteingeek.de\0" +"izumi.kagoshima.jp\0imageandsound.museum\0" +"suisse.museum\0gu.us\0" +"tajiri.osaka.jp\0" +"*.zw\0" +"kiyosato.hokkaido.jp\0" +"takaharu.miyazaki.jp\0" +"takanabe.miyazaki.jp\0" +"paroch.k12.ma.us\0" +"hatsukaichi.hiroshima.jp\0" +"cn.it\0" +"ranzan.saitama.jp\0" +"murmansk.ru\0" +"hamburg.museum\0" +"es.kr\0heroy.nordland.no\0" +"barletta-trani-andria.it\0lib.me.us\0" +"hob\xc3\xb8l.no\0" +"ck.ua\0" +"gov\0" +"city.hu\0fhs.no\0" +"hk.cn\0" +"ascolipiceno.it\0motorcycle.museum\0skanland.no\0" +"qld.edu.au\0" +"cc.nh.us\0" +"gub.uy\0" +"trani-andria-barletta.it\0birkenes.no\0is-a-cpa.com\0" +"trapani.it\0" +"art.br\0kibichuo.okayama.jp\0tananger.no\0" +"otama.fukushima.jp\0kiho.mie.jp\0" +"nose.osaka.jp\0nakagawa.tokushima.jp\0" +"is-slick.com\0" +"assn.lk\0\xe5\x95\x86\xe6\xa5\xad.tw\0" +"from-ga.com\0" +"\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0" +"cc.ks.us\0" +"kamagaya.chiba.jp\0grp.lk\0" +"hioki.kagoshima.jp\0" +"nagato.yamaguchi.jp\0" +"control.aero\0gliding.aero\0tsumagoi.gunma.jp\0nishitosa.kochi.jp\0" +"kitadaito.okinawa.jp\0" +"art.do\0zoological.museum\0" +"toyako.hokkaido.jp\0plo.ps\0" +"cq.cn\0kadoma.osaka.jp\0basel.museum\0" +"osakikamijima.hiroshima.jp\0" +"elverum.no\0cc.in.us\0" +"shingu.hyogo.jp\0" +"art.dz\0" +"avoues.fr\0lu.it\0me.it\0nerima.tokyo.jp\0" +"military.museum\0" +"satosho.okayama.jp\0" +"st.no\0" +"3.bg\0yamagata.ibaraki.jp\0humanities.museum\0" +"championship.aero\0" +"does-it.net\0" +"higashi.fukushima.jp\0" +"taxi.br\0" +"kharkiv.ua\0" +"ushuaia.museum\0" +"kumano.mie.jp\0" +"unsa.ba\0shimamoto.osaka.jp\0wodzislaw.pl\0" +"yokosuka.kanagawa.jp\0is-leet.com\0" +"jevnaker.no\0" +"minamiashigara.kanagawa.jp\0" +"ryugasaki.ibaraki.jp\0" +"tsuno.kochi.jp\0flora.no\0kuzbass.ru\0" +"nesna.no\0" +"yachiyo.chiba.jp\0civilwar.museum\0" +"matsumae.hokkaido.jp\0" +"kumatori.osaka.jp\0namsskogan.no\0" +"knowsitall.info\0" +"linz.museum\0" +"sakuragawa.ibaraki.jp\0" +"toride.ibaraki.jp\0traeumtgerade.de\0" +"store.bb\0jolster.no\0" +"pilots.museum\0" +"asia\0" +"kustanai.ru\0" +"art.ht\0" +"pubol.museum\0" +"england.museum\0" +"shimizu.shizuoka.jp\0kartuzy.pl\0" +"volgograd.ru\0" +"tateyama.toyama.jp\0" +"augustow.pl\0" +"askoy.no\0z.se\0" +"obama.nagasaki.jp\0k12.ca.us\0" +"higashine.yamagata.jp\0wales.museum\0" +"kiwa.mie.jp\0izena.okinawa.jp\0" +"js.cn\0kanna.gunma.jp\0from-tn.com\0" +"brescia.it\0" +"aip.ee\0otoineppu.hokkaido.jp\0" +"sakyo.kyoto.jp\0kami.miyagi.jp\0" +"serveftp.org\0" +"miyama.fukuoka.jp\0hakui.ishikawa.jp\0" +"adv.br\0" +"exeter.museum\0" +"nichinan.tottori.jp\0vi.us\0" +"enna.it\0" +"flor\xc3\xb8.no\0" +"cn.ua\0" +"from-co.net\0" +"hn.cn\0" +"andria-barletta-trani.it\0" +"himeshima.oita.jp\0" +"boleslawiec.pl\0" +"nishiarita.saga.jp\0" +"al.it\0sydney.museum\0" +"washingtondc.museum\0" +"iglesiascarbonia.it\0kanuma.tochigi.jp\0" +"educator.aero\0" +"from-ny.net\0" +"watchandclock.museum\0" +"frog.museum\0" +"takamori.kumamoto.jp\0" +"is-a-blogger.com\0" +"habmer.no\0" +"consulting.aero\0" +"ogawa.saitama.jp\0" +"fi.cr\0" +"hanggliding.aero\0" +"minamiise.mie.jp\0\xc3\xa5lg\xc3\xa5rd.no\0" +"ueda.nagano.jp\0lebtimnetz.de\0" +"karelia.ru\0" +"zlg.br\0koge.tottori.jp\0" +"kvitsoy.no\0" +"vagsoy.no\0" +"time.no\0" +"toyotomi.hokkaido.jp\0" +"tj.cn\0nes.akershus.no\0" +"med.br\0fujioka.gunma.jp\0" +"imakane.hokkaido.jp\0" +"yamakita.kanagawa.jp\0" +"okinoshima.shimane.jp\0" +"gs.jan-mayen.no\0" +"kasugai.aichi.jp\0" +"texas.museum\0" +"tsugaru.aomori.jp\0miyawaka.fukuoka.jp\0otsuki.yamanashi.jp\0" +"6.bg\0suedtirol.it\0" +"koya.wakayama.jp\0" +"shikokuchuo.ehime.jp\0" +"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0" +"kameyama.mie.jp\0missile.museum\0" +"fhv.se\0hu.com\0" +"art.pl\0" +"tamano.okayama.jp\0" +"taketa.oita.jp\0" +"\xc3\xb8yer.no\0oystre-slidre.no\0rad\xc3\xb8y.no\0" +"me.tz\0" +"takahagi.ibaraki.jp\0steam.museum\0" +"technology.museum\0" +"med.ec\0asakuchi.okayama.jp\0" +"med.ee\0stavanger.no\0merseine.nu\0" +"al.no\0porsangu.no\0" +"stavern.no\0me.us\0" +"lib.ct.us\0" +"emp.br\0tr\xc3\xa6na.no\0" +"kayabe.hokkaido.jp\0" +"sekigahara.gifu.jp\0" +"udine.it\0shacknet.nu\0" +"presse.km\0posts-and-telecommunications.museum\0" +"is-a-chef.net\0" +"gokase.miyazaki.jp\0" +"choshi.chiba.jp\0podhale.pl\0" +"archaeology.museum\0" +"localhistory.museum\0" +"krasnoyarsk.ru\0" +"minamidaito.okinawa.jp\0yorkshire.museum\0" +"lavangen.no\0" +"oyamazaki.kyoto.jp\0" +"nagasaki.nagasaki.jp\0" +"\xc3\xa1laheadju.no\0" +"kameoka.kyoto.jp\0" +"bielawa.pl\0\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0" +"\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0art.sn\0from-pr.com\0" +"takata.fukuoka.jp\0dielddanuorri.no\0" +"fujisato.akita.jp\0association.museum\0" +"gouv.fr\0fi.it\0presse.ml\0" +"nakagawa.hokkaido.jp\0" +"tanabe.wakayama.jp\0" +"monmouth.museum\0" +"dyr\xc3\xb8y.no\0" +"takikawa.hokkaido.jp\0urakawa.hokkaido.jp\0" +"shibecha.hokkaido.jp\0" +"sand\xc3\xb8y.no\0" +"collection.museum\0" +"kusatsu.gunma.jp\0" +"pulawy.pl\0" +"monticello.museum\0" +"med.ht\0" +"ct.it\0otago.museum\0alaheadju.no\0" +"omotego.fukushima.jp\0name\0" +"balsan.it\0" +"ogi.saga.jp\0" +"okawa.fukuoka.jp\0" +"norfolk.museum\0n\xc3\xa6r\xc3\xb8y.no\0" +"gouv.ht\0" +"kaminokawa.tochigi.jp\0" +"hammerfest.no\0" +"hiraya.nagano.jp\0settlement.museum\0" +"toei.aichi.jp\0santabarbara.museum\0" +"\xc3\xb8rsta.no\0" +"ao.it\0sano.tochigi.jp\0jondal.no\0" +"re.it\0" +"kamitsue.oita.jp\0" +"sola.no\0" +"laspezia.it\0luzern.museum\0salat.no\0stv.ru\0est-a-la-maison.com\0" +"avocat.fr\0sm\xc3\xb8la.no\0" +"bando.ibaraki.jp\0kawakami.nara.jp\0" +"*.kawasaki.jp\0ngo.lk\0" +"gouv.bj\0" +"sennan.osaka.jp\0" +"greta.fr\0" +"minamiuonuma.niigata.jp\0h\xc3\xa1""bmer.no\0" +"sanuki.kagawa.jp\0" +"cosenza.it\0kota.aichi.jp\0takko.aomori.jp\0" +"gamvik.no\0" +"kaneyama.fukushima.jp\0cc.ky.us\0" +"stjohn.museum\0" +"habikino.osaka.jp\0askim.no\0" +"gouv.ci\0musashimurayama.tokyo.jp\0" +"gs.bu.no\0" +"teshikaga.hokkaido.jp\0al.us\0" +"re.kr\0" +"kyotamba.kyoto.jp\0minnesota.museum\0" +"ise.mie.jp\0" +"med.ly\0" +"safety.aero\0kyonan.chiba.jp\0koga.ibaraki.jp\0skedsmokorset.no\0" +"!www.ck\0sherbrooke.museum\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0" +"b\xc3\xa1jddar.no\0" +"fuchu.toyama.jp\0conf.lv\0" +"yonabaru.okinawa.jp\0" +"9.bg\0ujiie.tochigi.jp\0" +"numata.hokkaido.jp\0luroy.no\0sortland.no\0" +"yamamoto.miyagi.jp\0" +"morimachi.shizuoka.jp\0" +"iijima.nagano.jp\0ichikawamisato.yamanashi.jp\0upow.gov.pl\0" +"losangeles.museum\0" +"club.aero\0" +"kommunalforbund.se\0" +"drangedal.no\0" +"ngo.ph\0" +"tur.br\0" +"ngo.pl\0" +"nishinoomote.kagoshima.jp\0" +"lib.dc.us\0" +"chihayaakasaka.osaka.jp\0eastafrica.museum\0" +"leitungsen.de\0" +"aurland.no\0" +"misawa.aomori.jp\0med.pa\0" +"inabe.mie.jp\0" +"laquila.it\0" +"tm.fr\0toon.ehime.jp\0" +"kusatsu.shiga.jp\0" +"med.pl\0" +"hofu.yamaguchi.jp\0" +"mamurogawa.yamagata.jp\0vinnytsia.ua\0" +"miyota.nagano.jp\0" +"parachuting.aero\0" +"suli.hu\0" +"yasugi.shimane.jp\0" +"johana.toyama.jp\0" +"yaita.tochigi.jp\0!nawras.om\0izhevsk.ru\0" +"frei.no\0" +"kumenan.okayama.jp\0kikugawa.shizuoka.jp\0" +"vr.it\0" +"ambulance.museum\0" +"tsunan.niigata.jp\0matsubushi.saitama.jp\0" +"ichiba.tokushima.jp\0" +"tm.hu\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0" +"id.au\0perugia.it\0" +"gotemba.shizuoka.jp\0fla.no\0" +"kamikoani.akita.jp\0sec.ps\0" +"med.sa\0" +"skole.museum\0" +"airport.aero\0" +"med.sd\0" +"sibenik.museum\0" +"sondre-land.no\0" +"jpn.com\0" +"shimamaki.hokkaido.jp\0" +"owariasahi.aichi.jp\0utashinai.hokkaido.jp\0hotel.tz\0" +"namie.fukushima.jp\0komi.ru\0" +"malvik.no\0lib.nj.us\0" +"k-uralsk.ru\0" +"xz.cn\0lukow.pl\0" +"iiyama.nagano.jp\0steiermark.museum\0radom.pl\0blogspot.co.at\0" +"saltdal.no\0vladivostok.ru\0" +"int\0kira.aichi.jp\0" +"flog.br\0shiranuka.hokkaido.jp\0nsk.ru\0" +"ar.it\0" +"tono.iwate.jp\0fujiidera.osaka.jp\0" +"tm.km\0" +"ct.us\0" +"kuchinotsu.nagasaki.jp\0" +"shinto.gunma.jp\0" +"trysil.no\0" +"saves-the-whales.com\0" +"off.ai\0" +"county.museum\0" +"tank.museum\0" +"is-a-hard-worker.com\0" +"pc.it\0" +"tm.mc\0kyiv.ua\0" +"onojo.fukuoka.jp\0" +"tm.mg\0" +"onga.fukuoka.jp\0" +"a.bg\0vlog.br\0lib.id.us\0" +"kalmykia.ru\0" +"alto-adige.it\0" +"shibukawa.gunma.jp\0" +"toba.mie.jp\0" +"misato.shimane.jp\0" +"kitahata.saga.jp\0" +"for-more.biz\0" +"siellak.no\0" +"la-spezia.it\0" +"mn.it\0seljord.no\0" +"mihama.chiba.jp\0" +"miyako.fukuoka.jp\0" +"fujinomiya.shizuoka.jp\0moka.tochigi.jp\0" +"cultural.museum\0" +"tm.no\0" +"kamisato.saitama.jp\0magadan.ru\0" +"mk.ua\0" +"\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0" +"motobu.okinawa.jp\0" +"r\xc3\xb8yrvik.no\0is-a-geek.com\0" +"shizukuishi.iwate.jp\0omura.nagasaki.jp\0" +"rec.br\0kai.yamanashi.jp\0" +"monza.it\0" +"teo.br\0pescara.it\0" +"yugawa.fukushima.jp\0circus.museum\0kirkenes.no\0" +"air-surveillance.aero\0br\xc3\xb8nn\xc3\xb8y.no\0roros.no\0rnd.ru\0" +"pharmacy.museum\0gs.nt.no\0" +"bmd.br\0takizawa.iwate.jp\0bunkyo.tokyo.jp\0" +"motegi.tochigi.jp\0youth.museum\0" +"gob.bo\0tamba.hyogo.jp\0" +"lib.tx.us\0" +"kitashiobara.fukushima.jp\0" +"rec.co\0kautokeino.no\0" +"baseball.museum\0dinosaur.museum\0tm.pl\0" +"grane.no\0" +"oster\xc3\xb8y.no\0" +"eidskog.no\0lanbib.se\0" +"gob.cl\0kristiansund.no\0" "id.ir\0" -"mediocampidano.it\0tromso.no\0" -"kartuzy.pl\0k12.ok.us\0" -"*.saitama.jp\0stjohn.museum\0m\xc3\xa1tta-v\xc3\xa1rjjat.no\0" -"mil.ge\0trani-barletta-andria.it\0" -"lib.as.us\0" -"swiebodzin.pl\0cc.mt.us\0cc.nd.us\0" -"mil.gh\0" -"science-fiction.museum\0\xd9\x82\xd8\xb7\xd8\xb1\0" -"airtraffic.aero\0" -"konskowola.pl\0" -"scienceandhistory.museum\0nysa.pl\0sd.us\0" -"balestrand.no\0" -"oygarden.no\0" -"her\xc3\xb8y.nordland.no\0" -"!pref.ishikawa.jp\0strand.no\0" -"\xe7\xb5\x84\xe7\xbb\x87.hk\0mil.hn\0" -"gob.bo\0volda.no\0" -"losangeles.museum\0larvik.no\0" -"university.museum\0" -"cc.dc.us\0" -"mil.id\0" -"sorfold.no\0" -"watch-and-clock.museum\0" -"flor\xc3\xb8.no\0" -"nittedal.no\0oppeg\xc3\xa5rd.no\0" -"k12.ri.us\0" -"gob.cl\0" -"komi.ru\0" -"government.aero\0mil.in\0" -"mil.iq\0id.lv\0" -"culture.museum\0" -"id.ly\0" -"raholt.no\0" -"lubin.pl\0grozny.ru\0" -"kchr.ru\0" -"nikolaev.ua\0" -"lib.sd.us\0" -"de.com\0" -"mil.jo\0" -"*.kanagawa.jp\0gaular.no\0miasta.pl\0" -"bi.it\0rnu.tn\0uzhgorod.ua\0" -"idrett.no\0v\xc3\xa5gs\xc3\xb8y.no\0" -"wroclaw.pl\0" -"res.aero\0ne.jp\0mil.kg\0" -"\xc3\xa5mli.no\0" -"education.museum\0" -"dgca.aero\0" -"mil.km\0" -"trolley.museum\0" -"cci.fr\0r.se\0" -"archaeological.museum\0" -"monzaedellabrianza.it\0mil.kr\0" -"gob.es\0kvafjord.no\0ky.us\0" -"lecco.it\0" -"ct.it\0" +"iwate.iwate.jp\0" +"hotel.lk\0" +"omiya.saitama.jp\0" +"tanagura.fukushima.jp\0" +"perm.ru\0" +"\xc3\xb8rland.no\0" +"western.museum\0from-va.com\0" +"game-server.cc\0" +"gob.do\0hita.oita.jp\0" +"ashibetsu.hokkaido.jp\0zgorzelec.pl\0" +"gob.ec\0" +"blogspot.co.il\0" +"barum.no\0" +"bozen.it\0kotohira.kagawa.jp\0tm.ro\0gouv.rw\0" +"varese.it\0hirokawa.fukuoka.jp\0" +"ia.us\0k12.ct.us\0" +"tm.se\0" +"gouv.sn\0lib.or.us\0" +"is-a-therapist.com\0" +"pc.pl\0" +"gob.es\0seiro.niigata.jp\0farsund.no\0" "magazine.aero\0" -"operaunite.com\0ne.kr\0" -"mil.kz\0skoczow.pl\0" -"nf.ca\0" -"western.museum\0" -"kunst.museum\0gaivuotna.no\0karpacz.pl\0spb.ru\0cc.id.us\0" -"slask.pl\0" -"youth.museum\0" -"adv.br\0campidanomedio.it\0!songfest.om\0" -"geelvinck.museum\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0" -"mil.lv\0" -"fie.ee\0mil.mg\0mt.us\0nd.us\0k12.vt.us\0" -"t.bg\0ushuaia.museum\0" -"off.ai\0" -"irkutsk.ru\0" -"stor-elvdal.no\0tourism.tn\0" -"penza.ru\0" -"bj.cn\0\xe4\xb8\xad\xe5\x9b\xbd\0" -"civilwar.museum\0mil.mv\0opole.pl\0" -"nes.akershus.no\0" -"mil.my\0karelia.ru\0" -"como.it\0sande.vestfold.no\0" -"\xe4\xb8\xad\xe5\x9c\x8b\0" -"gob.hn\0lib.la.us\0" -"mil.no\0cc.wv.us\0" -"boleslawiec.pl\0" -"!pref.niigata.jp\0gs.sf.no\0dc.us\0k12.mi.us\0" -"museum\0dep.no\0kv\xc3\xa6nangen.no\0l\xc3\xa1hppi.no\0" -"film.museum\0" -"frei.no\0" -"notodden.no\0risor.no\0" -"messina.it\0" -"eidsberg.no\0" -"krakow.pl\0lib.mt.us\0lib.nd.us\0" -"rauma.no\0" -"mulhouse.museum\0" -"sibenik.museum\0grong.no\0mil.pe\0" -"budejju.no\0k12.nv.us\0" -"stavanger.no\0mil.ph\0" -"forli-cesena.it\0" -"naples.it\0cc.ne.us\0" -"s\xc3\xb8r-aurdal.no\0" -"mil.pl\0" -"vibo-valentia.it\0ski.museum\0siedlce.pl\0" -"bus.museum\0" -"tozsde.hu\0" -"!pref.shizuoka.jp\0santabarbara.museum\0" -"zhitomir.ua\0" -"pro.az\0" -"ne.pw\0" -"pro.br\0orkanger.no\0b\xc3\xb8.telemark.no\0" -"roma.it\0cc.ct.us\0" -"heritage.museum\0giske.no\0" -"!pref.kumamoto.jp\0prof.pr\0" -"*.kochi.jp\0" -"andria-barletta-trani.it\0*.toyama.jp\0sveio.no\0" -"id.us\0" -"bolt.hu\0" -"fetsund.no\0porsgrunn.no\0" -"iglesias-carbonia.it\0" -"sf.no\0" -"mil.ru\0" -"from.hr\0asnes.no\0mil.rw\0" -"alesund.no\0sos.pl\0" -"livorno.it\0" -"crafts.museum\0" -"aquila.it\0" -"vega.no\0" -"jewelry.museum\0" -"sk\xc3\xa1nit.no\0chita.ru\0" -"pro.ec\0" -"fortmissoula.museum\0j\xc3\xb8lster.no\0" -"pro\0mil.st\0" -"busan.kr\0lib.ga.us\0" -"dellogliastra.it\0" -"aosta.it\0chungnam.kr\0gob.mx\0" -"mil.sy\0k12.hi.us\0" -"mil.tj\0" -"ulan-ude.ru\0mil.to\0wv.us\0" -"luster.no\0volgograd.ru\0" -"pa.it\0kommunalforbund.se\0lib.tx.us\0" -"s.se\0" -"qsl.br\0" -"mil.tw\0" -"est.pr\0ens.tn\0" -"lib.id.us\0" -"mil.tz\0" -"uscountryestate.museum\0" -"agents.aero\0" -"\xc3\xb8vre-eiker.no\0ne.ug\0" -"pb.ao\0" -"gob.pa\0ne.tz\0" -"tur.br\0" -"mil.vc\0" -"or.at\0gob.pe\0" -"s\xc3\xb8r-fron.no\0" -"or.bi\0ne.us\0" -"u.bg\0gob.pk\0" -"stavern.no\0" -"brindisi.it\0" -"aknoluokta.no\0" -"!pref.kyoto.jp\0tydal.no\0" -"plc.ly\0muos\xc3\xa1t.no\0" -"or.ci\0hamaroy.no\0priv.pl\0" -"vestre-slidre.no\0gniezno.pl\0" -"\xe7\xae\x87\xe4\xba\xba.hk\0" -"andebu.no\0" -"nieruchomosci.pl\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0" -"or.cr\0pro.ht\0bolzano.it\0" -"ct.us\0k12.md.us\0" -"za.org\0" -"!icnet.uk\0" -"localhistory.museum\0" -"firm.ht\0" -"lel.br\0tr.it\0kvanangen.no\0" -"sondre-land.no\0t\xc3\xb8nsberg.no\0vefsn.no\0" -"nature.museum\0yamal.ru\0" -"rv.ua\0" -"lans.museum\0lib.ne.us\0" -"lur\xc3\xb8y.no\0" -"eu.com\0firm.in\0" -"hjelmeland.no\0" -"gs.tr.no\0" -"casino.hu\0essex.museum\0tourism.pl\0" -"rennesoy.no\0" -"priv.no\0" -"baths.museum\0mytis.ru\0" -"tingvoll.no\0" -"cc.az.us\0" -"sh.cn\0" -"!pref.miyazaki.jp\0s\xc3\xb8rfold.no\0" -"aurskog-holand.no\0malatvuopmi.no\0" -"lib.ct.us\0" -"cc.pa.us\0" -"pa.gov.pl\0" -"firm.co\0cc.de.us\0" -"nrw.museum\0" -"daejeon.kr\0livinghistory.museum\0" -"gildeskal.no\0lund.no\0" -"\xc3\xb8ksnes.no\0stavropol.ru\0" -"b\xc3\xa6rum.no\0r\xc3\xb8yrvik.no\0" -"osoyro.no\0" -"priv.me\0sula.no\0!parliament.uk\0" -"nationalheritage.museum\0" -"jaworzno.pl\0" -"dinosaur.museum\0" -"garden.museum\0trust.museum\0" -"turen.tn\0" -"kautokeino.no\0" -"pro.na\0" -"gorizia.it\0" -"siljan.no\0" -"or.id\0pro.mv\0" -"bieszczady.pl\0www.ro\0" -"lib.ee\0antiques.museum\0brasil.museum\0tr.no\0" -"aejrie.no\0" -"!pref.hokkaido.jp\0" -"schlesisches.museum\0" -"huissier-justice.fr\0or.it\0" -"t.se\0" -"environment.museum\0" -"vindafjord.no\0" -"edu.ac\0or.jp\0" -"tree.museum\0" -"groundhandling.aero\0edu.af\0" -"rochester.museum\0sanfrancisco.museum\0" -"ebiz.tw\0" -"kirovograd.ua\0" +"ueno.gunma.jp\0\xe7\xb6\xb2\xe8\xb7\xaf.tw\0" +"ayase.kanagawa.jp\0kitaura.miyazaki.jp\0" +"cz.it\0" +"tp.it\0ikoma.nara.jp\0" +"presse.ci\0konin.pl\0" +"id.lv\0eigersund.no\0nore-og-uvdal.no\0" +"yoshimi.saitama.jp\0fl.us\0" +"id.ly\0" +"dyndns.biz\0" +"ohkura.yamagata.jp\0" +"vlaanderen.museum\0" +"surnadal.no\0" +"urbino-pesaro.it\0" +"evenassi.no\0from-ok.com\0" +"tara.saga.jp\0hashimoto.wakayama.jp\0" +"gob.gt\0" +"hotel.hu\0gs.vf.no\0\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0" +"groks-the.info\0" +"!bl.uk\0" +"ota.gunma.jp\0" +"gob.hn\0kitagata.gifu.jp\0" +"airline.aero\0simbirsk.ru\0" +"katashina.gunma.jp\0hiraizumi.iwate.jp\0" +"hirado.nagasaki.jp\0corporation.museum\0" +"volyn.ua\0" +"fujisawa.kanagawa.jp\0" +"6bone.pl\0" +"gifu.gifu.jp\0kami.kochi.jp\0" +"molde.no\0" +"essex.museum\0" +"tatsuno.hyogo.jp\0" +"cherkasy.ua\0" +"sayo.hyogo.jp\0" +"ar.us\0is-an-engineer.com\0" +"k12.ma.us\0" +"d.bg\0" +"shimofusa.chiba.jp\0" +"california.museum\0" +"songdalen.no\0svelvik.no\0" +"vic.au\0setouchi.okayama.jp\0" +"presse.fr\0" +"theater.museum\0" +"leg.br\0harvestcelebration.museum\0" +"mus.br\0" +"towada.aomori.jp\0" +"mochizuki.nagano.jp\0is-a-knight.org\0" +"nsn.us\0" +"lindas.no\0" +"na.it\0" +"paderborn.museum\0" +"catanzaro.it\0wajiki.tokushima.jp\0" +"gosen.niigata.jp\0busan.kr\0clinton.museum\0embaixada.st\0" +"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0jfk.museum\0" +"hanamaki.iwate.jp\0mielec.pl\0" +"casadelamoneda.museum\0hjelmeland.no\0" +"cc.gu.us\0" +"is-a-anarchist.com\0" +"\xc3\xb8stre-toten.no\0is-a-geek.org\0" +"katori.chiba.jp\0myphotos.cc\0" +"hakata.fukuoka.jp\0" +"oguchi.aichi.jp\0hachirogata.akita.jp\0" +"eniwa.hokkaido.jp\0" +"tottori.jp\0okagaki.fukuoka.jp\0mn.us\0" +"bergamo.it\0noda.chiba.jp\0" +"coastaldefence.museum\0rec.nf\0" +"izu.shizuoka.jp\0" +"karuizawa.nagano.jp\0" +"tadaoka.osaka.jp\0" +"gouv.km\0" +"lunner.no\0" +"topology.museum\0" +"maibara.shiga.jp\0ostroda.pl\0" +"takamori.nagano.jp\0" +"larsson.museum\0" +"obama.fukui.jp\0" +"gob.mx\0amot.no\0" +"hida.gifu.jp\0" +"alessandria.it\0nagiso.nagano.jp\0" +"shunan.yamaguchi.jp\0" +"ogawara.miyagi.jp\0" +"ritto.shiga.jp\0" +"tsuru.yamanashi.jp\0lomza.pl\0" +"f\xc3\xb8rde.no\0" +"yokaichiba.chiba.jp\0" +"\xc3\xb8ygarden.no\0pskov.ru\0" +"chiba.jp\0" +"irc.pl\0" +"fr.it\0mo\xc3\xa5reke.no\0" +"gen.in\0" +"gouv.ml\0" +"estate.museum\0" +"id.us\0k12.de.us\0" +"aomori.aomori.jp\0naturalhistorymuseum.museum\0lib.pa.us\0" +"iwaki.fukushima.jp\0gob.pa\0" +"vaapste.no\0" +"kosei.shiga.jp\0" +"shirosato.ibaraki.jp\0gob.pe\0from-la.net\0" +"tj\xc3\xb8me.no\0" +"viking.museum\0" +"neat-url.com\0" +"chelyabinsk.ru\0" +"gob.pk\0" +"selbu.no\0" +"shari.hokkaido.jp\0" +"gausdal.no\0" +"edu.ac\0catania.it\0ureshino.mie.jp\0a.se\0" +"ts.it\0is-a-celticsfan.org\0" +"edu.af\0school.museum\0" +"blogspot.co.uk\0" +"k12.ar.us\0" +"lib.mt.us\0lib.nd.us\0" "edu.al\0" -"edu.an\0\xc3\xa1k\xc5\x8boluokta.no\0v\xc3\xa5g\xc3\xa5.no\0" -"v.bg\0" +"edu.an\0entomology.museum\0gildeskal.no\0" +"gallery.museum\0stuff-4-sale.us\0" +"nesodden.no\0" "edu.ba\0" -"edu.bb\0nesset.no\0" -"hornindal.no\0pro.pr\0" -"or.kr\0" -"az.us\0" -"edu.bh\0volkenkunde.museum\0" -"edu.bi\0" -"edu.az\0" -"b\xc3\xb8mlo.no\0" +"edu.bb\0" +"iizuka.fukuoka.jp\0shikabe.hokkaido.jp\0" +"edu.au\0" +"rec.ro\0" +"chosei.chiba.jp\0" +"edu.bh\0msk.ru\0" +"edu.bi\0sauherad.no\0" +"edu.az\0ardal.no\0" +"rn.it\0game-host.org\0" "edu.bm\0" -"edu.bo\0tyumen.ru\0" +"histoire.museum\0" +"edu.bo\0mihama.mie.jp\0" +"massacarrara.it\0mobara.chiba.jp\0aogaki.hyogo.jp\0hatogaya.saitama.jp\0oe.yamagata.jp\0" "edu.br\0" -"edu.bs\0pa.us\0" -"alto-adige.it\0whaling.museum\0" -"*.iwate.jp\0" -"edu.ci\0law.pro\0" -"edu.bz\0de.us\0" -"lib.ak.us\0" +"edu.bs\0" +"edu.bt\0" +"tamakawa.fukushima.jp\0uslivinghistory.museum\0waw.pl\0" +"tas.edu.au\0edu.ci\0yura.wakayama.jp\0" +"edu.bz\0niepce.museum\0baidar.no\0" +"mod.gi\0" +"vicenza.it\0gets-it.net\0" "edu.cn\0" -"edu.co\0" -"laspezia.it\0" -"baidar.no\0" -"ts.it\0" -"or.na\0" -"edu.cu\0hotel.lk\0" -"show.aero\0or.mu\0" -"sandnes.no\0" -"museumcenter.museum\0" -"edu.dm\0kazan.ru\0" -"biz\0caltanissetta.it\0odessa.ua\0k12.oh.us\0" -"crimea.ua\0" -"research.aero\0lom.no\0" -"edu.ec\0florence.it\0clock.museum\0sshn.se\0" -"edu.ee\0game.tw\0" -"!pref.okinawa.jp\0" -"ilawa.pl\0" -"edu.dz\0indiana.museum\0" -"gs.jan-mayen.no\0" -"publ.pt\0" -"nom.ad\0" -"skanit.no\0gdansk.pl\0k12.pa.us\0" -"nom.ag\0edu.es\0" -"if.ua\0" -"pro.tt\0lib.de.us\0" -"environmentalconservation.museum\0cc.or.us\0" -"bern.museum\0nat.tn\0" -"rubtsovsk.ru\0" -"!educ.ar\0masoy.no\0" -"bologna.it\0" -"\xc3\xa5snes.no\0fhv.se\0" -"*.tottori.jp\0radoy.no\0" -"romskog.no\0" -"malbork.pl\0" -"olbiatempio.it\0" -"edu.ge\0" -"edu.gh\0" +"edu.co\0glass.museum\0sciencecenter.museum\0" +"tv.bo\0neyagawa.osaka.jp\0" +"pi.it\0arakawa.tokyo.jp\0" +"isahaya.nagasaki.jp\0iwatsuki.saitama.jp\0" +"tv.br\0" +"edu.cu\0" +"gs.st.no\0" +"g.bg\0kamisunagawa.hokkaido.jp\0" +"omigawa.chiba.jp\0" +"edu.dm\0so.gov.pl\0" +"sa.au\0nakagawa.fukuoka.jp\0" +"edu.do\0" +"edu.ec\0suginami.tokyo.jp\0" +"hashima.gifu.jp\0" +"edu.ee\0" +"edu.eg\0" +"mt.it\0hadano.kanagawa.jp\0dontexist.net\0" +"edu.dz\0pistoia.it\0hobol.no\0" +"warabi.saitama.jp\0" +"trading.aero\0nsw.au\0kagawa.jp\0hadsel.no\0" +"ooshika.nagano.jp\0" +"edu.es\0isa.kagoshima.jp\0n\xc3\xa5\xc3\xa5mesjevuemie.no\0" +"priv.hu\0" +"jewishart.museum\0" +"meeres.museum\0trust.museum\0" +"suifu.ibaraki.jp\0" +"oarai.ibaraki.jp\0bomlo.no\0" +"sa.cr\0tarnobrzeg.pl\0" +"conference.aero\0" +"kasaoka.okayama.jp\0" +"gjovik.no\0her\xc3\xb8y.nordland.no\0sk\xc3\xa5nland.no\0" +"edu.ge\0wazuka.kyoto.jp\0" +"syzran.ru\0k12.id.us\0" +"edu.gh\0wakasa.tottori.jp\0fylkesbibl.no\0snoasa.no\0" "edu.gi\0" -"or.pw\0" -"hob\xc3\xb8l.no\0" -"nom.br\0edu.gn\0virginia.museum\0mbone.pl\0!nls.uk\0" -"seljord.no\0pro.vn\0" +"nom.ad\0" +"kamifurano.hokkaido.jp\0" +"kitamoto.saitama.jp\0targi.pl\0" +"nom.ag\0kuki.saitama.jp\0arendal.no\0" +"edu.gn\0" "edu.gp\0" -"edu.gr\0" -"!uba.ar\0!pref.saitama.jp\0" -"greta.fr\0gs.aa.no\0kvinnherad.no\0" -"lib.sc.us\0" -"js.cn\0nom.co\0edu.hk\0" -"lesja.no\0" -"bl.it\0" -"edu.hn\0\xc3\xb8ystre-slidre.no\0mari-el.ru\0" -"hotel.hu\0" -"rindal.no\0" -"edu.ht\0" -"!pref.miyagi.jp\0" -"midtre-gauldal.no\0" -"xj.cn\0australia.museum\0" -"ab.ca\0salvadordali.museum\0olawa.pl\0" -"pc.it\0" -"u.se\0" -"edu.in\0b\xc3\xa1l\xc3\xa1t.no\0" -"ln.cn\0alta.no\0" -"chelyabinsk.ru\0" +"edu.gr\0akishima.tokyo.jp\0" +"cc.vi.us\0" +"edu.gt\0toyokawa.aichi.jp\0" +"nikolaev.ua\0" +"meiwa.mie.jp\0kaneyama.yamagata.jp\0" +"sel.no\0" +"edu.hk\0is-an-entertainer.com\0is-certified.com\0" +"edu.hn\0burghof.museum\0" +"contemporary.museum\0from-wa.com\0" +"s\xc3\xb8r-varanger.no\0" +"klepp.no\0" +"edu.ht\0fedje.no\0!mediaphone.om\0" +"krodsherad.no\0" +"web.co\0" +"messina.it\0fussa.tokyo.jp\0" +"nom.br\0divtasvuodna.no\0" +"war.museum\0porsgrunn.no\0" +"amursk.ru\0" +"edu.in\0ge.it\0komatsu.ishikawa.jp\0" +"is-very-evil.org\0" "edu.iq\0" -"ontario.museum\0" -"edu.is\0" +"edu.is\0erimo.hokkaido.jp\0" "edu.it\0" -"b\xc3\xa5tsfjord.no\0" -"trysil.no\0or.th\0" -"utsira.no\0" -"nom.es\0edu.jo\0fhsk.se\0" -"bale.museum\0" -"w.bg\0" -"lillesand.no\0" +"nom.co\0univ.sn\0k12.tx.us\0" +"web.do\0" +"minami.tokushima.jp\0" +"jeju.kr\0" +"soc.lk\0grimstad.no\0kharkov.ua\0gb.net\0" +"ralingen.no\0" +"edu.jo\0" +"miura.kanagawa.jp\0kunigami.okinawa.jp\0priv.at\0" +"time.museum\0" +"kaho.fukuoka.jp\0d.se\0" +"tv.it\0blogspot.co.nz\0" "edu.kg\0" -"amusement.aero\0" "edu.ki\0" -"fauske.no\0or.ug\0" -"int.az\0askvoll.no\0eidskog.no\0cv.ua\0" -"algard.no\0" -"edu.km\0or.tz\0" -"nom.fr\0edu.kn\0" -"*.ibaraki.jp\0hoylandet.no\0" -"int.bo\0edu.kp\0" +"ass.km\0" +"k12.as.us\0" +"lahppi.no\0\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0" +"edu.km\0lib.ms.us\0lib.nc.us\0" +"izunokuni.shizuoka.jp\0edu.kn\0" +"nakagusuku.okinawa.jp\0edu.kp\0" "edu.la\0" -"si.it\0edu.lb\0travel.pl\0" -"edu.lc\0mx.na\0n\xc3\xa1vuotna.no\0ovre-eiker.no\0" -"aa.no\0!siemens.om\0" -"sciences.museum\0or.us\0" -"cat\0" -"edu.ky\0" -"int.ci\0edu.kz\0firm.ro\0cc.wy.us\0" -"edu.lk\0vaapste.no\0" -"!pref.tochigi.jp\0" -"int.co\0podlasie.pl\0" -"edu.lr\0" -"karikatur.museum\0jamal.ru\0" -"gjovik.no\0krager\xc3\xb8.no\0k12.az.us\0" -"edu.me\0" -"ud.it\0edu.lv\0entomology.museum\0" -"edu.mg\0moskenes.no\0" -"\xe6\x94\xbf\xe5\xba\x9c.hk\0edu.ly\0" -"stpetersburg.museum\0" +"yashio.saitama.jp\0edu.lb\0" +"nozawaonsen.nagano.jp\0edu.lc\0" +"oguni.yamagata.jp\0jelenia-gora.pl\0gdansk.pl\0" +"tobetsu.hokkaido.jp\0" +"matsuura.nagasaki.jp\0" +"nom.es\0daito.osaka.jp\0edu.ky\0" +"ozu.ehime.jp\0edu.kz\0" +"edu.lk\0" +"sa.it\0" +"lier.no\0" +"cremona.it\0" +"oamishirasato.chiba.jp\0edu.lr\0" +"matsusaka.mie.jp\0edu.me\0" +"minokamo.gifu.jp\0edu.lv\0divttasvuotna.no\0" +"edu.mg\0" +"nom.fr\0" +"edu.ly\0" +"club.tw\0" "edu.mk\0" -"edu.ml\0nordreisa.no\0" -"!pref.fukui.jp\0lib.ms.us\0lib.nc.us\0" -"edu.mn\0\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0" -"fot.br\0edu.mo\0" -"iron.museum\0" -"asti.it\0annefrank.museum\0stv.ru\0cc.nh.us\0" +"edu.ml\0" +"wakayama.wakayama.jp\0skierv\xc3\xa1.no\0" +"edu.mn\0" +"edu.mo\0saratov.ru\0cc.me.us\0" +"vdonsk.ru\0" +"from-ar.com\0" +"zgora.pl\0" +"usculture.museum\0mari.ru\0" +"daiwa.hiroshima.jp\0" "edu.mv\0" -"lodi.it\0edu.mw\0edu.ng\0" -"gwangju.kr\0edu.mx\0" +"edu.mw\0edu.ng\0kaszuby.pl\0" +"edu.mx\0" "edu.my\0" -"soundandvision.museum\0" -"lenvik.no\0" -"ballooning.aero\0" -"name\0" -"jogasz.hu\0frogn.no\0" -"history.museum\0" -"consultant.aero\0edu.nr\0" -"manchester.museum\0" -"*.hiroshima.jp\0" -"pol.dz\0" -"*.tochigi.jp\0heimatunduhren.museum\0" -"!pref.kanagawa.jp\0" -"firm.nf\0edu.pa\0" -"coop.ht\0pc.pl\0" -"chicago.museum\0" -"vn.ua\0" -"edu.pe\0" -"tana.no\0edu.pf\0" +"usui.fukuoka.jp\0" +"j.bg\0web.id\0" +"sr.gov.pl\0" +"s\xc3\xb8mna.no\0" +"info.ht\0sauda.no\0" +"info.hu\0" +"edu.nr\0" +"tv.na\0" +"\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0" +"chuo.tokyo.jp\0" +"s\xc3\xa1lat.no\0" +"dazaifu.fukuoka.jp\0" +"kawai.nara.jp\0" +"eun.eg\0" +"koshimizu.hokkaido.jp\0" +"charter.aero\0" +"thruhere.net\0" +"usgarden.museum\0" +"kanoya.kagoshima.jp\0edu.pa\0" +"kihoku.ehime.jp\0kalisz.pl\0" +"sakura.tochigi.jp\0" +"agrar.hu\0edu.pe\0" +"edu.pf\0" "edu.ph\0" -"nom.km\0" -"travel.tt\0" +"sd.cn\0oxford.museum\0" "edu.pk\0" -"experts-comptables.fr\0edu.pl\0bryansk.ru\0" +"edu.pl\0" "edu.pn\0" -"evje-og-hornnes.no\0warszawa.pl\0" -"ac.ae\0" -"edu.pr\0" -"vaksdal.no\0edu.ps\0dni.us\0" -"po.gov.pl\0edu.pt\0" -"nordre-land.no\0vadso.no\0" -"rnrt.tn\0" -"sport.hu\0!pref.gifu.jp\0voss.no\0targi.pl\0" -"flesberg.no\0" -"photography.museum\0" -"modena.it\0tonsberg.no\0" -"ac.at\0" -"ac.be\0coop.br\0" -"services.aero\0" -"nom.mg\0" -"wielun.pl\0" -"jefferson.museum\0wy.us\0" -"pd.it\0ot.it\0neues.museum\0slattum.no\0" -"vdonsk.ru\0" -"ar.com\0edu.sa\0" -"\xc3\xa5l.no\0edu.sb\0" +"arao.kumamoto.jp\0" +"edu.qa\0" +"kr.it\0nakijin.okinawa.jp\0edu.pr\0" +"edu.ps\0" +"fjaler.no\0edu.pt\0" +"gotdns.org\0" +"itoigawa.niigata.jp\0oregontrail.museum\0kvafjord.no\0" +"mt.us\0nd.us\0" +"freight.aero\0ando.nara.jp\0edu.py\0" +"ino.kochi.jp\0" +"portlligat.museum\0" +"web.lk\0" +"nom.km\0music.museum\0" +"ishikawa.okinawa.jp\0" +"chtr.k12.ma.us\0" +"andriabarlettatrani.it\0" +"nationalheritage.museum\0giehtavuoatna.no\0" +"im.it\0" +"hareid.no\0" +"kids.museum\0" +"kanmaki.nara.jp\0tra.kp\0" +"numata.gunma.jp\0" +"info.ec\0hizen.saga.jp\0labour.museum\0honefoss.no\0" +"misato.wakayama.jp\0edu.sa\0lib.sd.us\0" +"arts.co\0shima.mie.jp\0edu.sb\0" "edu.rs\0edu.sc\0" -"ac.ci\0int.is\0edu.sd\0!tsk.tr\0" -"br\xc3\xb8nn\xc3\xb8ysund.no\0and\xc3\xb8y.no\0edu.ru\0" -"pol.ht\0" +"edu.sd\0" +"tama.tokyo.jp\0t\xc3\xb8nsberg.no\0edu.ru\0" "edu.rw\0edu.sg\0" -"gyeongnam.kr\0olecko.pl\0" -"ac.cn\0" -"graz.museum\0" -"coldwar.museum\0edu.sl\0" -"ac.cr\0" -"edu.sn\0" -"hamar.no\0" -"histoire.museum\0" -"!city.shizuoka.jp\0" +"komae.tokyo.jp\0" +"mazowsze.pl\0" +"shintoku.hokkaido.jp\0lans.museum\0edu.sl\0" +"nom.mg\0l\xc3\xa4ns.museum\0web.nf\0skjak.no\0\xe7\xb5\x84\xe7\xb9\x94.tw\0" +"info.bb\0chel.ru\0edu.sn\0" +"trd.br\0info.at\0" +"info.au\0" +"chikuzen.fukuoka.jp\0asahi.toyama.jp\0" "edu.st\0" -"oceanographic.museum\0nh.us\0" -"x.bg\0" -"surnadal.no\0" -"fc.it\0costume.museum\0stalowa-wola.pl\0" -"valer.ostfold.no\0edu.sy\0" +"info.az\0tv.sd\0" +"shimonoseki.yamaguchi.jp\0edu.sy\0" "edu.tj\0" -"arq.br\0" -"aeroclub.aero\0odo.br\0pe.ca\0\xe7\xb6\xb2\xe7\xb5\xa1.cn\0bronnoysund.no\0nom.pa\0" +"radoy.no\0" +"sasaguri.fukuoka.jp\0nakano.nagano.jp\0ogimi.okinawa.jp\0computerhistory.museum\0ug.gov.pl\0edu.tm\0" +"abira.hokkaido.jp\0" "edu.to\0" -"paleo.museum\0nom.pe\0edu.ua\0" -"int.la\0trustee.museum\0forsand.no\0krasnoyarsk.ru\0" -"!pref.hyogo.jp\0" -"edu.tt\0" -"zarow.pl\0" -"edu.tw\0" +"edu.ua\0" +"lavagis.no\0cc.al.us\0" +"kopervik.no\0edu.tt\0" +"nishimera.miyazaki.jp\0kuban.ru\0" +"g.se\0edu.tw\0" +"lillehammer.no\0" +"info.co\0" +"achi.nagano.jp\0" +"karasjok.no\0pa.gov.pl\0" +"lib.mn.us\0" +"osteroy.no\0" +"naganohara.gunma.jp\0" +"web.pk\0dp.ua\0" +"edu.vc\0" +"minato.osaka.jp\0" +"rotorcraft.aero\0uchihara.ibaraki.jp\0edu.ve\0" +"nom.pa\0" +"edu.uy\0" +"nom.pe\0ternopil.ua\0" +"h\xc3\xa6gebostad.no\0tv.tz\0" +"iwade.wakayama.jp\0" +"bn.it\0oyama.tochigi.jp\0edu.vn\0" +"yukuhashi.fukuoka.jp\0" +"rel.ht\0biei.hokkaido.jp\0cinema.museum\0yuzhno-sakhalinsk.ru\0" "nom.pl\0" -"community.museum\0kvitsoy.no\0" -"int.lk\0tychy.pl\0" -"k12.me.us\0" -"jondal.no\0edu.vc\0" -"illustration.museum\0" -"clinton.museum\0" -"tas.au\0es.kr\0" -"production.aero\0" -"rodoy.no\0" -"database.museum\0bodo.no\0" -"anthro.museum\0landes.museum\0edu.vn\0" -"nom.re\0" -"altai.ru\0" -"filatelia.museum\0" -"sk.ca\0lezajsk.pl\0" -"rockart.museum\0int.mv\0" -"int.mw\0herad.no\0" -"eti.br\0ac.gn\0" -"fedje.no\0nom.ro\0" -"money.museum\0" -"\xd9\x85\xd8\xb5\xd8\xb1\0" -"horten.no\0" -"gangaviika.no\0mielec.pl\0" -"uw.gov.pl\0" -"moma.museum\0" -"edu.ws\0" -"go.ci\0" -"tv.bo\0technology.museum\0" -"s\xc3\xb8ndre-land.no\0" -"tv.br\0" -"jor.br\0lib.dc.us\0" -"arboretum.museum\0" -"go.cr\0" -"artsandcrafts.museum\0\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0" -"psc.br\0ac.id\0!city.chiba.jp\0" -"wa.au\0" -"rome.it\0" -"amli.no\0" -"ac.im\0lo.it\0" -"ac.in\0" -"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0durham.museum\0" -"ac.ir\0" -"torino.museum\0" -"loabat.no\0" -"com\0" -"nalchik.ru\0" -"yakutia.ru\0" -"settlers.museum\0" -"!promocion.ar\0int.pt\0" -"union.aero\0" -"utah.museum\0" -"giehtavuoatna.no\0" -"ac.jp\0" -"air-traffic-control.aero\0" -"silk.museum\0usantiques.museum\0" -"bn.it\0" -"kalisz.pl\0" -"perm.ru\0" -"aoste.it\0bindal.no\0" -"coloradoplateau.museum\0k12.gu.us\0" -"frosinone.it\0forde.no\0" +"ichinomiya.chiba.jp\0s\xc3\xb8gne.no\0" +"izumisano.osaka.jp\0" +"rimini.it\0" +"skjervoy.no\0" +"anpachi.gifu.jp\0" +"verdal.no\0sanok.pl\0" +"matera.it\0" +"nagatoro.saitama.jp\0edu.ws\0" +"po.it\0" +"takatori.nara.jp\0dyroy.no\0" +"!mecon.ar\0" +"walbrzych.pl\0" +"yamashina.kyoto.jp\0sandoy.no\0is-a-geek.net\0" +"kunisaki.oita.jp\0nom.re\0" +"hazu.aichi.jp\0k12.mt.us\0k12.nd.us\0" +"m.bg\0" +"ulvik.no\0" +"asahi.chiba.jp\0rankoshi.hokkaido.jp\0" +"stockholm.museum\0troandin.no\0" +"berlev\xc3\xa5g.no\0pomorze.pl\0pl.ua\0" +"itoman.okinawa.jp\0" +"kasuya.fukuoka.jp\0skjerv\xc3\xb8y.no\0" +"okoppe.hokkaido.jp\0nom.ro\0" +"caa.aero\0togane.chiba.jp\0" +"polkowice.pl\0" +"mosj\xc3\xb8""en.no\0" +"web.tj\0" +"iglesias-carbonia.it\0stj\xc3\xb8rdalshalsen.no\0" +"ogori.fukuoka.jp\0" +"north.museum\0lib.wy.us\0" +"scrapper-site.net\0" +"eu.com\0" +"database.museum\0" +"vaga.no\0" +"birdart.museum\0" +"gratangen.no\0" +"kasukabe.saitama.jp\0" +"dyndns-home.com\0" +"seranishi.hiroshima.jp\0asker.no\0nom.tm\0" +"le.it\0brussels.museum\0" +"is-a-hunter.com\0" +"babia-gora.pl\0ustka.pl\0" +"travel\0" +"chijiwa.nagasaki.jp\0web.ve\0" +"gaivuotna.no\0kr.ua\0" +"\xe5\x85\xac\xe5\x8f\xb8.cn\0" +"yamada.iwate.jp\0evje-og-hornnes.no\0" +, + +"kamijima.ehime.jp\0malbork.pl\0" +"otsu.shiga.jp\0kosuge.yamanashi.jp\0" +"kakuda.miyagi.jp\0" +"est-a-la-masion.com\0" +"\xe5\x85\xac\xe5\x8f\xb8.hk\0" +"chigasaki.kanagawa.jp\0writesthisblog.com\0" +"szkola.pl\0k12.wa.us\0" +"ookuwa.nagano.jp\0lib.sc.us\0" +"info\0ujitawara.kyoto.jp\0" +"tranibarlettaandria.it\0" +"aviation.museum\0" +"nm.cn\0" +"antiques.museum\0ddr.museum\0l\xc3\xb8""dingen.no\0" +"shibata.miyagi.jp\0priv.pl\0" +"bauern.museum\0" +"cc.ct.us\0" +"tokigawa.saitama.jp\0" +"pruszkow.pl\0" +"belluno.it\0chonan.chiba.jp\0" +"from-ks.com\0" +"kannami.shizuoka.jp\0" +"tatebayashi.gunma.jp\0" +"rel.pl\0k12.tn.us\0lib.al.us\0" +"oshima.tokyo.jp\0" +"cbg.ru\0" "epilepsy.museum\0" -"olbia-tempio.it\0" -"journalist.aero\0ac.kr\0*.sch.uk\0" -"nic.im\0sciencesnaturelles.museum\0bedzin.pl\0" -"nic.in\0pe.it\0" -"w.se\0" -"!pref.okayama.jp\0" -"urn.arpa\0" -"cinema.museum\0" -"monza.it\0versailles.museum\0int.ru\0" -"andasuolo.no\0skj\xc3\xa5k.no\0chernovtsy.ua\0" -"nyc.museum\0int.rw\0paroch.k12.ma.us\0" -"ringerike.no\0" -"ac.ma\0" -"org.ac\0civilaviation.aero\0" -"rakkestad.no\0" -"org.ae\0ac.me\0" -"org.af\0" -"org.ag\0" -"org.ai\0stokke.no\0" -"airport.aero\0" -"finnoy.no\0" -"org.al\0" -"org.an\0y.bg\0habmer.no\0" -"stadt.museum\0holtalen.no\0" -"int.tj\0" -"org.ba\0gjerdrum.no\0" -"org.bb\0ascoli-piceno.it\0molde.no\0r\xc3\xb8st.no\0tysfjord.no\0" -"pe.kr\0rybnik.pl\0" -"go.id\0" -"ac.mu\0" -"ac.mw\0ac.ng\0" -"org.bh\0\xc3\xa5mot.no\0rana.no\0" -"org.bi\0" -"org.az\0belgorod.ru\0int.tt\0" -"ae.org\0" -"group.aero\0posts-and-telecommunications.museum\0" -"org.bm\0salerno.it\0" -"etnedal.no\0" -"org.bo\0*.hokkaido.jp\0donetsk.ua\0" -"ostroda.pl\0" -"org.br\0" -"org.bs\0" -"go.it\0h\xc3\xb8ylandet.no\0" -"zgorzelec.pl\0" -"org.bw\0" -"org.ci\0" -"org.bz\0vicenza.it\0resistance.museum\0" -"missile.museum\0" -"org.cn\0" -"org.co\0assassination.museum\0" -"go.jp\0" -"tv.it\0austrheim.no\0ac.pa\0" -"verbania.it\0" -"palace.museum\0" -"tmp.br\0int.vn\0" -"org.cu\0" -"paris.museum\0" -"media.aero\0hokksund.no\0" -"arts.museum\0gemological.museum\0hammerfest.no\0" -"k12.ny.us\0" -"org.dm\0hemsedal.no\0ringsaker.no\0sklep.pl\0" -"h\xc3\xa5.no\0cc.nj.us\0" -"rzeszow.pl\0" -"go.kr\0gjesdal.no\0ac.pr\0" -"org.ec\0" -"org.ee\0" -"media.museum\0" -"terni.it\0touch.museum\0zakopane.pl\0" -"journal.aero\0org.dz\0" -"incheon.kr\0" -"b\xc3\xa1hcavuotna.no\0" -"leksvik.no\0ulvik.no\0" +"spy.museum\0" +"!city.sapporo.jp\0kanie.aichi.jp\0" +"mulhouse.museum\0" +"taki.mie.jp\0gangaviika.no\0" +"v\xc3\xa5ler.\xc3\xb8stfold.no\0gok.pk\0!jet.uk\0" +"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0sagae.yamagata.jp\0austin.museum\0" +"manno.kagawa.jp\0lillesand.no\0" +"kitaakita.akita.jp\0" +"priv.no\0" +"campidano-medio.it\0" +"lapy.pl\0lezajsk.pl\0" +"info.ve\0" +"shakotan.hokkaido.jp\0" +"takahama.fukui.jp\0kiryu.gunma.jp\0arna.no\0sunndal.no\0" +"nagai.yamagata.jp\0" +"tomsk.ru\0" +"info.vn\0" +"agriculture.museum\0" +"jeonbuk.kr\0" +"realestate.pl\0from-md.com\0" +"ca.it\0" "plantation.museum\0" -"org.es\0loyalist.museum\0" -"gildesk\xc3\xa5l.no\0bytom.pl\0" -"bo.nordland.no\0" -"ambulance.aero\0iglesiascarbonia.it\0" -"tw.cn\0\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0" -"chocolate.museum\0" -"pittsburgh.museum\0" -"royrvik.no\0sor-odal.no\0ac.rs\0" -"kaluga.ru\0" -"org.ge\0erotica.hu\0ac.ru\0ac.se\0" -"org.gg\0leangaviika.no\0ac.rw\0" -"org.gh\0v\xc3\xa6r\xc3\xb8y.no\0" -"org.gi\0" -"jevnaker.no\0" -"org.gn\0tv.na\0leikanger.no\0" -"org.gp\0" -"ask\xc3\xb8y.no\0" -"org.gr\0wroc.pl\0" -"ad.jp\0" -"powiat.pl\0" -"tj\xc3\xb8me.no\0" -"coop.tt\0" -"ac.th\0" -"mragowo.pl\0ac.sz\0ac.tj\0" -"org.hk\0bo.it\0" -"philately.museum\0" -"org.hn\0" -"fet.no\0" -"axis.museum\0mansions.museum\0" -"wiki.br\0" -"org.ht\0" -"org.hu\0piacenza.it\0scotland.museum\0cpa.pro\0" -"ac.ug\0" -"coop.mv\0x.se\0" -"coop.mw\0ac.tz\0" -"bmd.br\0" -"org.im\0ralingen.no\0" -"org.in\0" -"cz.it\0lib.ia.us\0" -"org.iq\0" -"org.ir\0" -"org.is\0" -"nl.ca\0" -"org.je\0" -"childrensgarden.museum\0" -"kvits\xc3\xb8y.no\0go.pw\0" -"sokndal.no\0" -"ra.it\0grimstad.no\0" -"denmark.museum\0" -"ac.vn\0" -"ecn.br\0org.jo\0" -"bialystok.pl\0nj.us\0" -"z.bg\0bilbao.museum\0stargard.pl\0nic.tj\0" -"eisenbahn.museum\0" -"fe.it\0bryne.no\0vrn.ru\0" -"cc.wa.us\0" -"sex.hu\0skierva.no\0" -"org.kg\0" -"org.ki\0" -"org.km\0" -"org.kn\0khakassia.ru\0" -"org.kp\0" -"org.la\0" -"org.lb\0" -"org.lc\0" -"francaise.museum\0" -"panama.museum\0" -"rotorcraft.aero\0gateway.museum\0olkusz.pl\0" -"org.ky\0czeladz.pl\0ryazan.ru\0" -"org.kz\0" -"org.lk\0dyr\xc3\xb8y.no\0" -"raisa.no\0" -"dlugoleka.pl\0" -"org.ma\0" -"org.lr\0prochowice.pl\0" -"org.ls\0" -"org.me\0sandoy.no\0s\xc3\xb8r-varanger.no\0" -"org.lv\0" -"org.mg\0" -"tel\0go.th\0" -"org.ly\0" -"steam.museum\0go.tj\0" -"org.mk\0pasadena.museum\0jessheim.no\0lib.mn.us\0" -"org.ml\0" -"software.aero\0" -"org.mn\0" -"org.mo\0" -"*.fukui.jp\0decorativearts.museum\0" -"spy.museum\0org.na\0jorpeland.no\0" -"vads\xc3\xb8.no\0" -"org.mu\0building.museum\0gausdal.no\0" -"org.mv\0nannestad.no\0" -"org.mw\0org.ng\0go.ug\0" -"vr.it\0org.mx\0" -"org.my\0" -"go.tz\0" -"oppdal.no\0" -"uk.net\0" -"coop.km\0" -"*.kyoto.jp\0" -"sarpsborg.no\0org.nr\0" -"chernigov.ua\0" -"ha.cn\0no.com\0" -"space.museum\0" -"org.pa\0" -"*.ar\0" -"usgarden.museum\0" -"*.bd\0org.pe\0" -"*.au\0org.pf\0um.gov.pl\0" -"bio.br\0" -"org.ph\0" -"org.pk\0" -"fr\xc3\xa6na.no\0org.pl\0" -"nord-aurdal.no\0org.pn\0" -"*.bn\0handson.museum\0agrinet.tn\0" -"kviteseid.no\0" -"rel.ht\0virtuel.museum\0atm.pl\0org.pr\0" -"org.ps\0cherkassy.ua\0" -"org.pt\0wa.us\0" -"*.bt\0arendal.no\0magnitka.ru\0" -"depot.museum\0porsangu.no\0" -"laakesvuemie.no\0" -"sor-fron.no\0" -"heroy.more-og-romsdal.no\0" -"*.ck\0" -"!rakpetroleum.om\0" -"kr\xc3\xb8""dsherad.no\0mail.pl\0" -"mod.gi\0" -"gs.nl.no\0" -"mb.ca\0" "pavia.it\0" -"civilisation.museum\0folldal.no\0" -"suli.hu\0" -"brumunddal.no\0" -"*.cy\0" -"pg.it\0troms\xc3\xb8.no\0" -"sex.pl\0y.se\0" -"org.ro\0" -"*.do\0" -"caserta.it\0org.sa\0" -"za.com\0halloffame.museum\0org.sb\0lviv.ua\0" -"mill.museum\0org.rs\0org.sc\0" -"org.sd\0" -"idv.hk\0!omanmobile.om\0org.ru\0org.se\0" -"langev\xc3\xa5g.no\0r\xc3\xa5holt.no\0starostwo.gov.pl\0" -"trani-andria-barletta.it\0org.sg\0" -"*.eg\0hvaler.no\0" -"*.ehime.jp\0" -"gmina.pl\0" -"bod\xc3\xb8.no\0org.sl\0" -"edu\0org.sn\0" -"org.so\0lib.wi.us\0" -"kommune.no\0" -"nome.pt\0" -"*.er\0namdalseid.no\0k12.wa.us\0" -"nm.cn\0org.st\0" -"*.et\0d\xc3\xb8nna.no\0" -"jewish.museum\0preservation.museum\0" -"slupsk.pl\0org.sy\0" -"art.br\0org.sz\0org.tj\0" -"ntr.br\0*.fj\0ski.no\0" -"*.fk\0rimini.it\0grajewo.pl\0" -"loppa.no\0" -"franziskaner.museum\0notteroy.no\0org.tn\0" -"org.to\0" -"nesoddtangen.no\0" -"org.ua\0" -"discovery.museum\0wloclawek.pl\0" -"lakas.hu\0org.tt\0" -"kurgan.ru\0" -"baltimore.museum\0nkz.ru\0org.tw\0" -"com.ac\0castle.museum\0" -"*.fukuoka.jp\0sandefjord.no\0varggat.no\0" -"com.af\0" -"com.ag\0" -"ato.br\0k12.nj.us\0" -"com.ai\0" -"city.hu\0oryol.ru\0" -"com.al\0nl.no\0mielno.pl\0cc.ma.us\0" -"org.vc\0" -"com.an\0g12.br\0" -"*.gt\0" -"*.gu\0" -"com.ba\0" -"com.bb\0americanart.museum\0" -"org.vi\0" -"kunstsammlung.museum\0" -"com.aw\0" -"flight.aero\0com.bh\0lib.mo.us\0org.vn\0" -"com.bi\0adygeya.ru\0" -"com.az\0" -"art.dz\0" -"com.bm\0" +"jeonnam.kr\0" +"jogasz.hu\0klodzko.pl\0kostroma.ru\0" +"ltd.co.im\0" +"koshigaya.saitama.jp\0dyndns-remote.com\0" +"coop\0arts.ro\0" +"hyogo.jp\0priv.me\0" +"stalbans.museum\0" +"pr.it\0test.tj\0" +"info.tn\0" +"kouzushima.tokyo.jp\0pacific.museum\0" +"gs.tm.no\0" +"sd.us\0k12.ne.us\0" +"p.bg\0" +"info.tt\0" +"khmelnitskiy.ua\0" +"decorativearts.museum\0alesund.no\0" +"ginowan.okinawa.jp\0info.tz\0" +"mining.museum\0" +"\xc3\xb8vre-eiker.no\0" +"gonohe.aomori.jp\0" +"aurskog-holand.no\0" +"kagamiishi.fukushima.jp\0m\xc3\xa1latvuopmi.no\0" +"podlasie.pl\0" +"malselv.no\0" +"odawara.kanagawa.jp\0" +"rygge.no\0" +"arida.wakayama.jp\0" +"dni.us\0" +"info.ro\0codespot.com\0" +"ca.na\0kv\xc3\xa6nangen.no\0" +"ome.tokyo.jp\0" +"atsugi.kanagawa.jp\0" +"info.sd\0" +"egyptian.museum\0cc.ia.us\0" +"suzaka.nagano.jp\0test.ru\0" +"kumejima.okinawa.jp\0\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0groks-this.info\0" +"public.museum\0\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0" +"ono.hyogo.jp\0" +"arts.nf\0" +"iwama.ibaraki.jp\0kamimine.saga.jp\0" +"nj.us\0" +"mantova.it\0" +"padova.it\0" +"samnanger.no\0" +"yuki.ibaraki.jp\0higashitsuno.kochi.jp\0sciencesnaturelles.museum\0" +"miho.ibaraki.jp\0" +"hemnes.no\0" +"yosemite.museum\0" +"tochio.niigata.jp\0whaling.museum\0is-an-accountant.com\0" +"info.pk\0" +"soja.okayama.jp\0voagat.no\0info.pl\0cc.fl.us\0" +"sekikawa.niigata.jp\0" +"is.it\0photography.museum\0" +"info.pr\0" +"aizubange.fukushima.jp\0jinsekikogen.hiroshima.jp\0rissa.no\0" +"napoli.it\0glas.museum\0" +"\xe7\xb5\x84\xe7\xb9\x94.hk\0rns.tn\0" +"k12.wv.us\0is-a-candidate.org\0" +"ushiku.ibaraki.jp\0" +"production.aero\0" +"fukagawa.hokkaido.jp\0philately.museum\0" +"miyake.nara.jp\0" +"akune.kagoshima.jp\0" +"info.na\0" +"fujikawaguchiko.yamanashi.jp\0from-il.com\0" +"ozu.kumamoto.jp\0" +"exchange.aero\0gmina.pl\0" +"info.mv\0info.nf\0" +"kosai.shizuoka.jp\0steigen.no\0homeip.net\0" +"chuo.chiba.jp\0" +"tambov.ru\0" +"j\xc3\xb8lster.no\0" +"omi.niigata.jp\0" +"mil\0lib.ak.us\0" +"muika.niigata.jp\0info.nr\0" +"berlevag.no\0" +"indiana.museum\0" +"jewish.museum\0" "dr\xc3\xb8""bak.no\0" -"com.bo\0isla.pr\0" -"com.br\0" -"com.bs\0ustka.pl\0kuban.ru\0" -"press.aero\0" -"vs.it\0" -"meloy.no\0" -"*.il\0ulm.museum\0" -"com.by\0com.ci\0genoa.it\0" -"com.bz\0sn.cn\0" -"lib.or.us\0" -"santafe.museum\0org.ws\0" +"government.aero\0" +"ltd.gi\0" +"cc.ar.us\0" +"gon.pk\0" +"marumori.miyagi.jp\0" +"gateway.museum\0" +"fujimino.saitama.jp\0m.se\0" +"takanezawa.tochigi.jp\0vads\xc3\xb8.no\0dontexist.org\0" +"info.la\0belau.pw\0" +"ibaraki.ibaraki.jp\0po.gov.pl\0" +"even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0loab\xc3\xa1t.no\0" +"coal.museum\0" +"karikatur.museum\0" +"miyazaki.miyazaki.jp\0ketrzyn.pl\0k12.sd.us\0" +"fukuyama.hiroshima.jp\0lib.oh.us\0" +"hamaroy.no\0" +"nishinoshima.shimane.jp\0samara.ru\0" +"ikeda.fukui.jp\0" +"mel\xc3\xb8y.no\0chukotka.ru\0" +"port.fr\0" +"us.org\0" +"kumagaya.saitama.jp\0" +"*.sapporo.jp\0" +"westfalen.museum\0" +"yahiko.niigata.jp\0" +"ichinomiya.aichi.jp\0naruto.tokushima.jp\0" +"tmp.br\0bt.it\0" +"donna.no\0khabarovsk.ru\0" +"saikai.nagasaki.jp\0" +"ato.br\0sex.hu\0daigo.ibaraki.jp\0" +"izumiotsu.osaka.jp\0" +"\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0" +"davvesiida.no\0" +"gyeonggi.kr\0" +"coloradoplateau.museum\0olecko.pl\0" +"ha.cn\0" +"forlicesena.it\0" +"taka.hyogo.jp\0kita.kyoto.jp\0" +"cc.mn.us\0" +"mutsu.aomori.jp\0" +"shimotsuma.ibaraki.jp\0rybnik.pl\0" +"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0" +"livorno.it\0pu.it\0verona.it\0" +"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0" +"sveio.no\0" +"kurate.fukuoka.jp\0" +"natuurwetenschappen.museum\0" +"ca.us\0" +"bryansk.ru\0" +"s.bg\0seoul.kr\0" +"watarai.mie.jp\0muenchen.museum\0" +"iyo.ehime.jp\0" +"starnberg.museum\0tydal.no\0" +"info.ki\0" +"fet.no\0finn\xc3\xb8y.no\0" +"kagoshima.kagoshima.jp\0" +"naturalsciences.museum\0" +"artsandcrafts.museum\0" +"sakurai.nara.jp\0" +"carrara-massa.it\0" +"shirakawa.fukushima.jp\0" +"mitsuke.niigata.jp\0museet.museum\0is-a-photographer.com\0" +"shioya.tochigi.jp\0" +"randaberg.no\0" +"ojiya.niigata.jp\0" +"ltd.lk\0pr.us\0k12.ks.us\0" +"osaka.jp\0lib.hi.us\0" +"horonobe.hokkaido.jp\0" +"kragero.no\0" +"kawaguchi.saitama.jp\0" +"hara.nagano.jp\0itabashi.tokyo.jp\0" +"fl\xc3\xa5.no\0" +"otsuki.kochi.jp\0leangaviika.no\0pors\xc3\xa1\xc5\x8bgu.no\0" +"savannahga.museum\0" +"volkenkunde.museum\0" +"cc.id.us\0" +"kashima.kumamoto.jp\0swinoujscie.pl\0" +"prof.pr\0" +"ab.ca\0is-a-democrat.com\0" +"press.museum\0" +"uk.com\0" +"bajddar.no\0" +"medecin.km\0" +"iki.nagasaki.jp\0shirahama.wakayama.jp\0" +"ip6.arpa\0nm.us\0" +"lib.fl.us\0" +"yanagawa.fukuoka.jp\0donetsk.ua\0" +"s\xc3\xb8r-aurdal.no\0" +"qh.cn\0mill.museum\0" +"naka.ibaraki.jp\0" +"kamitonda.wakayama.jp\0" +"mosreg.ru\0" +"gorizia.it\0kushima.miyazaki.jp\0berlin.museum\0" +"ns.ca\0shiga.jp\0" +"cheltenham.museum\0" +"kawachinagano.osaka.jp\0fujieda.shizuoka.jp\0nakhodka.ru\0k12.ga.us\0" +"magnitka.ru\0" +"uki.kumamoto.jp\0wroc.pl\0" +"stange.no\0stuff-4-sale.org\0" +"tsuruga.fukui.jp\0nagasu.kumamoto.jp\0" +"biella.it\0buyshouses.net\0is-a-guru.com\0" +"vevelstad.no\0" +"nyuzen.toyama.jp\0" +"bjugn.no\0" +"motosu.gifu.jp\0" +"usdecorativearts.museum\0" +"anthro.museum\0" +"sex.pl\0" +"americanantiques.museum\0rennes\xc3\xb8y.no\0" +"arezzo.it\0hakuba.nagano.jp\0" +"jamison.museum\0is-a-painter.com\0mypets.ws\0" +"ln.cn\0" +"hiji.oita.jp\0" +"air.museum\0" +"palana.ru\0" +"toki.gifu.jp\0sakata.yamagata.jp\0p.se\0" +"vb.it\0funahashi.toyama.jp\0" +"hino.tottori.jp\0" +"logistics.aero\0ohda.shimane.jp\0" +"amli.no\0" +"yatsuka.shimane.jp\0" +"chichibu.saitama.jp\0" +"sciences.museum\0" +"wa.edu.au\0" +"ouchi.saga.jp\0" +"pittsburgh.museum\0gloppen.no\0" +"kamigori.hyogo.jp\0" +"valer.ostfold.no\0is-a-soxfan.org\0" +"net\0halden.no\0dyndns-work.com\0" +"oita.jp\0hinode.tokyo.jp\0sa.com\0" +"leikanger.no\0" +"stord.no\0" +"sarufutsu.hokkaido.jp\0alstahaug.no\0k12.al.us\0" +"shinanomachi.nagano.jp\0edogawa.tokyo.jp\0k12.pr.us\0" +"hakodate.hokkaido.jp\0" +"tobishima.aichi.jp\0" +"ogasawara.tokyo.jp\0stjordal.no\0" +"aarborte.no\0" +"xj.cn\0" +"kyotanabe.kyoto.jp\0" +"williamsburg.museum\0" +"nabari.mie.jp\0namerikawa.toyama.jp\0rana.no\0" +"gwangju.kr\0" +"agdenes.no\0" +"hitachiota.ibaraki.jp\0ha.no\0tynset.no\0" +"k12.ok.us\0" +"v.bg\0eco.br\0algard.no\0" +"khmelnytskyi.ua\0" +"nagano.jp\0" +"jus.br\0" +"tanohata.iwate.jp\0" +"hakusan.ishikawa.jp\0" +"detroit.museum\0" +"szex.hu\0" +"asahikawa.hokkaido.jp\0nov.ru\0" +"fhsk.se\0" +"voronezh.ru\0" +"date.fukushima.jp\0" +"textile.museum\0" +"toyosato.shiga.jp\0" +"mytis.ru\0" +"valley.museum\0" +"mazury.pl\0" +"imari.saga.jp\0" +"insurance.aero\0tomiya.miyagi.jp\0" +"siena.it\0" +"novara.it\0" +"ichihara.chiba.jp\0" +"tochigi.jp\0" +"b\xc3\xa5tsfjord.no\0doesntexist.org\0" +"is-a-personaltrainer.com\0" +"uryu.hokkaido.jp\0interactive.museum\0" +"!songfest.om\0" +"mihara.hiroshima.jp\0" +"field.museum\0adygeya.ru\0" +"yasuda.kochi.jp\0" +"yokote.akita.jp\0dyndns-mail.com\0" +"salzburg.museum\0" +"is-very-bad.org\0worse-than.tv\0" +"sn\xc3\xa5""ase.no\0" +"indian.museum\0" +"anan.nagano.jp\0vagan.no\0" +"baghdad.museum\0" +"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0" +"simple-url.com\0" +"of.by\0" +"shiogama.miyagi.jp\0" +"huissier-justice.fr\0" +"shika.ishikawa.jp\0" +"from-fl.com\0" +"drammen.no\0fam.pk\0" +"contemporaryart.museum\0" +"bio.br\0handa.aichi.jp\0ikeda.nagano.jp\0is-saved.org\0" +"inzai.chiba.jp\0soka.saitama.jp\0" +"s\xc3\xb8rfold.no\0sellsyourhome.org\0" +"louvre.museum\0" +"yanaizu.fukushima.jp\0" +"kiyosu.aichi.jp\0" +"ichikawa.chiba.jp\0kawanishi.hyogo.jp\0sakawa.kochi.jp\0" +"konyvelo.hu\0lindesnes.no\0" +"!promocion.ar\0lom.no\0" +"k12.ec\0" +"tree.museum\0" +"s.se\0" +"ve.it\0juif.museum\0flatanger.no\0" +"kobierzyce.pl\0" +"chino.nagano.jp\0" +"kristiansand.no\0norddal.no\0" +"b\xc3\xb8.nordland.no\0" +"kirov.ru\0" +"tomobe.ibaraki.jp\0" +"jl.cn\0frosinone.it\0" +"toyooka.hyogo.jp\0" +"tsuiki.fukuoka.jp\0hitra.no\0" +"bz.it\0yotsukaido.chiba.jp\0" +"sp.it\0" +"ariake.saga.jp\0scrapping.cc\0" +"iwanai.hokkaido.jp\0" +"erotica.hu\0sumoto.kumamoto.jp\0glogow.pl\0" +"lib.mi.us\0" +"tateyama.chiba.jp\0semine.miyagi.jp\0vestre-toten.no\0" +"dellogliastra.it\0sm.ua\0" +"brussel.museum\0" +"hasami.nagasaki.jp\0sells-for-u.com\0" +"anan.tokushima.jp\0" +"barreau.bj\0" +"cc.mt.us\0cc.nd.us\0" +"l\xc3\xb8renskog.no\0" +"trolley.museum\0" +"okuma.fukushima.jp\0" +"hirara.okinawa.jp\0kaminoyama.yamagata.jp\0k12.oh.us\0" +"y.bg\0" +"miyazaki.jp\0" +"repbody.aero\0" +"sannohe.aomori.jp\0shimizu.hokkaido.jp\0" +"judygarland.museum\0gotdns.com\0" +"toyota.aichi.jp\0oketo.hokkaido.jp\0zao.miyagi.jp\0" +"ohtawara.tochigi.jp\0" +"workinggroup.aero\0" +"matsukawa.nagano.jp\0" +"mugi.tokushima.jp\0karate.museum\0" +"bjerkreim.no\0" +"miyagi.jp\0" +"!city.kobe.jp\0aquarium.museum\0" +"k12.la.us\0" +"pharmaciens.km\0de.com\0" +"!omantel.om\0" +"zhytomyr.ua\0" +"kawara.fukuoka.jp\0raholt.no\0" +"medecin.fr\0saiki.oita.jp\0v\xc3\xa1rgg\xc3\xa1t.no\0" +"kotoura.tottori.jp\0moskenes.no\0vennesla.no\0" +"rishirifuji.hokkaido.jp\0" +"cuneo.it\0" +"takamatsu.kagawa.jp\0malatvuopmi.no\0pomorskie.pl\0" +"otsuchi.iwate.jp\0" +"spb.ru\0" +"recreation.aero\0misaki.okayama.jp\0k12.in.us\0ham-radio-op.net\0" +"freiburg.museum\0" +"journal.aero\0fot.br\0" +"asahi.yamagata.jp\0" +"ah.cn\0saotome.st\0" +"delaware.museum\0" +"tondabayashi.osaka.jp\0" +"!uba.ar\0notaires.km\0" +"nord-aurdal.no\0" +"furubira.hokkaido.jp\0kazan.ru\0" +"shisui.chiba.jp\0town.museum\0" +"inatsuki.fukuoka.jp\0yuu.yamaguchi.jp\0" +"munakata.fukuoka.jp\0" +"matsuyama.ehime.jp\0" +"traniandriabarletta.it\0toyama.toyama.jp\0grandrapids.museum\0lenvik.no\0" +"toyota.yamaguchi.jp\0" +"niigata.jp\0yamatsuri.fukushima.jp\0batsfjord.no\0" +"ravenna.it\0zama.kanagawa.jp\0" +"is-a-landscaper.com\0is-gone.com\0" +"doomdns.org\0" +"shinjo.yamagata.jp\0hawaii.museum\0" +"trento.it\0taiki.mie.jp\0" +"royrvik.no\0" +"palermo.it\0" +"arts.museum\0newjersey.museum\0" +"scienceandhistory.museum\0" +"sunagawa.hokkaido.jp\0tabuse.yamaguchi.jp\0chuo.yamanashi.jp\0" +"*.sch.uk\0" +"southwest.museum\0of.no\0k12.fl.us\0" +"md.ci\0" +"haboro.hokkaido.jp\0iwanuma.miyagi.jp\0adachi.tokyo.jp\0" +"harstad.no\0" +"kunneppu.hokkaido.jp\0" +"tachikawa.tokyo.jp\0" +"agrigento.it\0murata.miyagi.jp\0" +"macerata.it\0b\xc3\xa1id\xc3\xa1r.no\0" +"kurogi.fukuoka.jp\0" +"misato.miyagi.jp\0americanart.museum\0" +"sanagochi.tokushima.jp\0" +"nanyo.yamagata.jp\0" +"otaru.hokkaido.jp\0" +"bremanger.no\0nordkapp.no\0" +"kawagoe.saitama.jp\0" +"sodegaura.chiba.jp\0creation.museum\0romskog.no\0" +"hiratsuka.kanagawa.jp\0" +"muroto.kochi.jp\0" +"miki.hyogo.jp\0" +"g\xc3\xa1ls\xc3\xa1.no\0isa-geek.org\0" +"eastcoast.museum\0shell.museum\0" +"salerno.it\0shinyoshitomi.fukuoka.jp\0is-a-libertarian.com\0" +"ss.it\0" +"fuefuki.yamanashi.jp\0" +"voss.no\0dnepropetrovsk.ua\0" +"lib.md.us\0" +"ggf.br\0" +"nara.nara.jp\0" +"gz.cn\0kakamigahara.gifu.jp\0!teledata.mz\0" +"!gobiernoelectronico.ar\0katano.osaka.jp\0" +"jp.net\0" +"ethnology.museum\0" +"krym.ua\0" +"e164.arpa\0fie.ee\0" +"preservation.museum\0" +"como.it\0ina.saitama.jp\0" +"tempio-olbia.it\0kokubunji.tokyo.jp\0" +"k12.ny.us\0" +"\xc3\xa5""fjord.no\0" +"kamo.kyoto.jp\0is-very-sweet.org\0" +"kuroiso.tochigi.jp\0" +"nagaoka.niigata.jp\0" +"kl\xc3\xa6""bu.no\0" +"vossevangen.no\0" +"casino.hu\0" +"stuttgart.museum\0" +"tamamura.gunma.jp\0" +"malopolska.pl\0" +"is-a-student.com\0" +"naka.hiroshima.jp\0higashichichibu.saitama.jp\0" +"mykolaiv.ua\0!mod.uk\0" +"lt.it\0" +"honjo.saitama.jp\0" +"manchester.museum\0bedzin.pl\0" +"sandiego.museum\0" +"sakuho.nagano.jp\0" +"nv.us\0is-a-liberal.com\0" +"2.bg\0nature.museum\0" +"za.net\0" +"!city.nagoya.jp\0ris\xc3\xb8r.no\0" +"sanda.hyogo.jp\0" +"satsumasendai.kagoshima.jp\0kizu.kyoto.jp\0is-a-cubicle-slave.com\0" +"yamagata.yamagata.jp\0" +"\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0" +"k12.vi\0" +"svalbard.no\0" +"koganei.tokyo.jp\0" +"cci.fr\0inami.toyama.jp\0" +"misconfused.org\0" +"int.az\0" }; +static const quint16 tldChunkCount = 2; +static const quint32 tldChunks[] = {65521, 75539}; + QT_END_NAMESPACE #endif // QURLTLD_P_H -- cgit v1.2.3 From 3798b129c032dbd2ac1ccab071ad3ad4ebc2edf3 Mon Sep 17 00:00:00 2001 From: Erik van Pienbroek Date: Wed, 6 Feb 2013 22:08:40 +0100 Subject: Try harder to locate external OpenSSL libraries on win32 When OpenSSL is built using MSVC then the library names are named ssleay32.dll and libeay32. However, when OpenSSL is built with GCC then different library names are used like libssl-10.dll and libcrypto-10.dll (depending on the version of OpenSSL used) Change-Id: Icb79a5f82d2a511752bfc904f53a58423ce4b86b Reviewed-by: Thiago Macieira Reviewed-by: Peter Hartmann Reviewed-by: Richard J. Moore --- src/network/ssl/qsslsocket_openssl_symbols.cpp | 32 ++++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp index 31cfa2d00a..e880a2452f 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols.cpp +++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp @@ -447,28 +447,46 @@ static QStringList findAllLibCrypto() # endif #ifdef Q_OS_WIN -static QPair loadOpenSslWin32() +static bool tryToLoadOpenSslWin32Library(QLatin1String ssleay32LibName, QLatin1String libeay32LibName, QPair &pair) { - QPair pair; pair.first = 0; pair.second = 0; - QSystemLibrary *ssleay32 = new QSystemLibrary(QLatin1String("ssleay32")); + QSystemLibrary *ssleay32 = new QSystemLibrary(ssleay32LibName); if (!ssleay32->load(false)) { - // Cannot find ssleay32.dll delete ssleay32; - return pair; + return FALSE; } - QSystemLibrary *libeay32 = new QSystemLibrary(QLatin1String("libeay32")); + QSystemLibrary *libeay32 = new QSystemLibrary(libeay32LibName); if (!libeay32->load(false)) { delete ssleay32; delete libeay32; - return pair; + return FALSE; } pair.first = ssleay32; pair.second = libeay32; + return TRUE; +} + +static QPair loadOpenSslWin32() +{ + QPair pair; + pair.first = 0; + pair.second = 0; + + // When OpenSSL is built using MSVC then the libraries are named 'ssleay32.dll' and 'libeay32'dll'. + // When OpenSSL is built using GCC then different library names are used (depending on the OpenSSL version) + // The oldest version of a GCC-based OpenSSL which can be detected by the code below is 0.9.8g (released in 2007) + if (!tryToLoadOpenSslWin32Library(QLatin1String("ssleay32"), QLatin1String("libeay32"), pair)) { + if (!tryToLoadOpenSslWin32Library(QLatin1String("libssl-10"), QLatin1String("libcrypto-10"), pair)) { + if (!tryToLoadOpenSslWin32Library(QLatin1String("libssl-8"), QLatin1String("libcrypto-8"), pair)) { + tryToLoadOpenSslWin32Library(QLatin1String("libssl-7"), QLatin1String("libcrypto-7"), pair); + } + } + } + return pair; } #else -- cgit v1.2.3 From d1acaf2b1c60f276dfbe4ed33eb3b6800d99fcbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Thu, 7 Feb 2013 12:59:34 +0100 Subject: Fixed QOpenGLFunctions feature/extension detection to check GL version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the GL version is new enough the extension string won't contain features that have been standardized. So far we only check for FBOs. Change-Id: Ib29826f378b394894885717c062872581bd5c9f5 Reviewed-by: Tor Arne Vestbø Reviewed-by: Gunnar Sletta Reviewed-by: Sean Harmer --- src/gui/opengl/qopenglfunctions.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglfunctions.cpp b/src/gui/opengl/qopenglfunctions.cpp index ee5855d866..3737df7497 100644 --- a/src/gui/opengl/qopenglfunctions.cpp +++ b/src/gui/opengl/qopenglfunctions.cpp @@ -289,7 +289,7 @@ static int qt_gl_resolve_features() return features; #else int features = 0; - //QOpenGLFormat::OpenGLVersionFlags versions = QOpenGLFormat::openGLVersionFlags(); + QSurfaceFormat format = QOpenGLContext::currentContext()->format(); QOpenGLExtensionMatcher extensions; // Recognize features by extension name. @@ -327,6 +327,10 @@ static int qt_gl_resolve_features() QOpenGLFunctions::StencilSeparate | QOpenGLFunctions::BlendEquationSeparate | QOpenGLFunctions::NPOTTextures; + + if (format.majorVersion() >= 3) + features |= QOpenGLFunctions::Framebuffers; + return features; #endif } @@ -349,10 +353,13 @@ static int qt_gl_resolve_extensions() extensions |= QOpenGLExtensions::BGRATextureFormat; #else + QSurfaceFormat format = QOpenGLContext::currentContext()->format(); extensions |= QOpenGLExtensions::ElementIndexUint | QOpenGLExtensions::MapBuffer; // Recognize features by extension name. - if (extensionMatcher.match("GL_ARB_framebuffer_object")) { + if (format.majorVersion() >= 3 + || extensionMatcher.match("GL_ARB_framebuffer_object")) + { extensions |= QOpenGLExtensions::FramebufferMultisample | QOpenGLExtensions::FramebufferBlit | QOpenGLExtensions::PackedDepthStencil; -- cgit v1.2.3 From 20bde28448583eecb1e37b9492eb4dc73b1409fe Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Sun, 3 Feb 2013 11:33:26 +0000 Subject: Add support for SHA3 to QCryptographicHash. This commit adds SHA3 support to QCryptographicHash. Two implementations are provided, one optimised for 32 bit and one for 64 bits. The code has been written to make it easy to add further implementations, for example ones using NEON instructions on ARM. Change-Id: I3be9c45bbd4fcc2771d697e7f7ae74e48a831e8f Reviewed-by: Thiago Macieira Reviewed-by: Lars Knoll --- src/3rdparty/sha3/KeccakF-1600-interface.h | 24 +++--- src/3rdparty/sha3/KeccakF-1600-opt32.c | 70 ++++++++--------- src/3rdparty/sha3/KeccakF-1600-opt64.c | 48 ++++++------ src/3rdparty/sha3/KeccakNISTInterface.c | 18 ++--- src/3rdparty/sha3/KeccakNISTInterface.h | 8 +- src/3rdparty/sha3/KeccakSponge.c | 10 +-- src/3rdparty/sha3/KeccakSponge.h | 6 +- src/corelib/tools/qcryptographichash.cpp | 97 +++++++++++++++++++++++- src/corelib/tools/qcryptographichash.h | 7 +- src/corelib/tools/qmessageauthenticationcode.cpp | 8 ++ src/corelib/tools/tools.pri | 3 +- 11 files changed, 203 insertions(+), 96 deletions(-) (limited to 'src') diff --git a/src/3rdparty/sha3/KeccakF-1600-interface.h b/src/3rdparty/sha3/KeccakF-1600-interface.h index 22185a4ac3..ce2710eeb2 100755 --- a/src/3rdparty/sha3/KeccakF-1600-interface.h +++ b/src/3rdparty/sha3/KeccakF-1600-interface.h @@ -16,31 +16,31 @@ http://creativecommons.org/publicdomain/zero/1.0/ #include "KeccakF-1600-int-set.h" -void KeccakInitialize( void ); -void KeccakInitializeState(unsigned char *state); -void KeccakPermutation(unsigned char *state); +static void KeccakInitialize( void ); +static void KeccakInitializeState(unsigned char *state); +static void KeccakPermutation(unsigned char *state); #ifdef ProvideFast576 -void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data); +static void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data); #endif #ifdef ProvideFast832 -void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data); +static void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data); #endif #ifdef ProvideFast1024 -void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data); +static void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data); #endif #ifdef ProvideFast1088 -void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data); +static void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data); #endif #ifdef ProvideFast1152 -void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data); +static void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data); #endif #ifdef ProvideFast1344 -void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data); +static void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data); #endif -void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int laneCount); +static void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int laneCount); #ifdef ProvideFast1024 -void KeccakExtract1024bits(const unsigned char *state, unsigned char *data); +static void KeccakExtract1024bits(const unsigned char *state, unsigned char *data); #endif -void KeccakExtract(const unsigned char *state, unsigned char *data, unsigned int laneCount); +static void KeccakExtract(const unsigned char *state, unsigned char *data, unsigned int laneCount); #endif diff --git a/src/3rdparty/sha3/KeccakF-1600-opt32.c b/src/3rdparty/sha3/KeccakF-1600-opt32.c index aded3a951b..b1b442c7e0 100755 --- a/src/3rdparty/sha3/KeccakF-1600-opt32.c +++ b/src/3rdparty/sha3/KeccakF-1600-opt32.c @@ -26,7 +26,7 @@ int interleaveTablesBuilt = 0; UINT16 interleaveTable[65536]; UINT16 deinterleaveTable[65536]; -void buildInterleaveTables() +static void buildInterleaveTables() { UINT32 i, j; UINT16 x; @@ -70,7 +70,7 @@ void buildInterleaveTables() #endif // Endianness -void xor8bytesIntoInterleavedWords(UINT32 *even, UINT32 *odd, const UINT8* source) +static void xor8bytesIntoInterleavedWords(UINT32 *even, UINT32 *odd, const UINT8* source) { UINT16 i0, i1, i2, i3; @@ -87,7 +87,7 @@ void xor8bytesIntoInterleavedWords(UINT32 *even, UINT32 *odd, const UINT8* sourc xor8bytesIntoInterleavedWords(state+i*2, state+i*2+1, input+i*8); \ } -void setInterleavedWordsInto8bytes(UINT8* dest, UINT32 even, UINT32 odd) +static void setInterleavedWordsInto8bytes(UINT8* dest, UINT32 even, UINT32 odd) { UINT16 d0, d1, d2, d3; @@ -138,7 +138,7 @@ void setInterleavedWordsInto8bytes(UINT8* dest, UINT32 even, UINT32 odd) #else // (PLATFORM_BYTE_ORDER == IS_BIG_ENDIAN) // Credit: Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 -UINT64 toInterleaving(UINT64 x) +static UINT64 toInterleaving(UINT64 x) { UINT64 t; @@ -151,7 +151,7 @@ UINT64 toInterleaving(UINT64 x) return x; } -void xor8bytesIntoInterleavedWords(UINT32* evenAndOdd, const UINT8* source) +static void xor8bytesIntoInterleavedWords(UINT32* evenAndOdd, const UINT8* source) { // This can be optimized UINT64 sourceWord = @@ -178,7 +178,7 @@ void xor8bytesIntoInterleavedWords(UINT32* evenAndOdd, const UINT8* source) #endif // Endianness // Credit: Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 -UINT64 fromInterleaving(UINT64 x) +static UINT64 fromInterleaving(UINT64 x) { UINT64 t; @@ -191,7 +191,7 @@ UINT64 fromInterleaving(UINT64 x) return x; } -void setInterleavedWordsInto8bytes(UINT8* dest, UINT32* evenAndOdd) +static void setInterleavedWordsInto8bytes(UINT8* dest, UINT32* evenAndOdd) { #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) ((UINT64*)dest)[0] = fromInterleaving(*(UINT64*)evenAndOdd); @@ -240,19 +240,19 @@ void setInterleavedWordsInto8bytes(UINT8* dest, UINT32* evenAndOdd) #error "Only unrolling 2 is supported by schedule 3." #endif -void KeccakPermutationOnWords(UINT32 *state) +static void KeccakPermutationOnWords(UINT32 *state) { rounds } -void KeccakPermutationOnWordsAfterXoring(UINT32 *state, const UINT8 *input, unsigned int laneCount) +static void KeccakPermutationOnWordsAfterXoring(UINT32 *state, const UINT8 *input, unsigned int laneCount) { xorLanesIntoState(laneCount, state, input) rounds } #ifdef ProvideFast576 -void KeccakPermutationOnWordsAfterXoring576bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring576bits(UINT32 *state, const UINT8 *input) { xorLanesIntoState(9, state, input) rounds @@ -260,7 +260,7 @@ void KeccakPermutationOnWordsAfterXoring576bits(UINT32 *state, const UINT8 *inpu #endif #ifdef ProvideFast832 -void KeccakPermutationOnWordsAfterXoring832bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring832bits(UINT32 *state, const UINT8 *input) { xorLanesIntoState(13, state, input) rounds @@ -268,7 +268,7 @@ void KeccakPermutationOnWordsAfterXoring832bits(UINT32 *state, const UINT8 *inpu #endif #ifdef ProvideFast1024 -void KeccakPermutationOnWordsAfterXoring1024bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring1024bits(UINT32 *state, const UINT8 *input) { xorLanesIntoState(16, state, input) rounds @@ -276,7 +276,7 @@ void KeccakPermutationOnWordsAfterXoring1024bits(UINT32 *state, const UINT8 *inp #endif #ifdef ProvideFast1088 -void KeccakPermutationOnWordsAfterXoring1088bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring1088bits(UINT32 *state, const UINT8 *input) { xorLanesIntoState(17, state, input) rounds @@ -284,7 +284,7 @@ void KeccakPermutationOnWordsAfterXoring1088bits(UINT32 *state, const UINT8 *inp #endif #ifdef ProvideFast1152 -void KeccakPermutationOnWordsAfterXoring1152bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring1152bits(UINT32 *state, const UINT8 *input) { xorLanesIntoState(18, state, input) rounds @@ -292,7 +292,7 @@ void KeccakPermutationOnWordsAfterXoring1152bits(UINT32 *state, const UINT8 *inp #endif #ifdef ProvideFast1344 -void KeccakPermutationOnWordsAfterXoring1344bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring1344bits(UINT32 *state, const UINT8 *input) { xorLanesIntoState(21, state, input) rounds @@ -301,7 +301,7 @@ void KeccakPermutationOnWordsAfterXoring1344bits(UINT32 *state, const UINT8 *inp #else // (Schedule != 3) -void KeccakPermutationOnWords(UINT32 *state) +static void KeccakPermutationOnWords(UINT32 *state) { declareABCDE #if (Unrolling != 24) @@ -312,7 +312,7 @@ void KeccakPermutationOnWords(UINT32 *state) rounds } -void KeccakPermutationOnWordsAfterXoring(UINT32 *state, const UINT8 *input, unsigned int laneCount) +static void KeccakPermutationOnWordsAfterXoring(UINT32 *state, const UINT8 *input, unsigned int laneCount) { declareABCDE unsigned int i; @@ -323,7 +323,7 @@ void KeccakPermutationOnWordsAfterXoring(UINT32 *state, const UINT8 *input, unsi } #ifdef ProvideFast576 -void KeccakPermutationOnWordsAfterXoring576bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring576bits(UINT32 *state, const UINT8 *input) { declareABCDE unsigned int i; @@ -335,7 +335,7 @@ void KeccakPermutationOnWordsAfterXoring576bits(UINT32 *state, const UINT8 *inpu #endif #ifdef ProvideFast832 -void KeccakPermutationOnWordsAfterXoring832bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring832bits(UINT32 *state, const UINT8 *input) { declareABCDE unsigned int i; @@ -347,7 +347,7 @@ void KeccakPermutationOnWordsAfterXoring832bits(UINT32 *state, const UINT8 *inpu #endif #ifdef ProvideFast1024 -void KeccakPermutationOnWordsAfterXoring1024bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring1024bits(UINT32 *state, const UINT8 *input) { declareABCDE unsigned int i; @@ -359,7 +359,7 @@ void KeccakPermutationOnWordsAfterXoring1024bits(UINT32 *state, const UINT8 *inp #endif #ifdef ProvideFast1088 -void KeccakPermutationOnWordsAfterXoring1088bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring1088bits(UINT32 *state, const UINT8 *input) { declareABCDE unsigned int i; @@ -371,7 +371,7 @@ void KeccakPermutationOnWordsAfterXoring1088bits(UINT32 *state, const UINT8 *inp #endif #ifdef ProvideFast1152 -void KeccakPermutationOnWordsAfterXoring1152bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring1152bits(UINT32 *state, const UINT8 *input) { declareABCDE unsigned int i; @@ -383,7 +383,7 @@ void KeccakPermutationOnWordsAfterXoring1152bits(UINT32 *state, const UINT8 *inp #endif #ifdef ProvideFast1344 -void KeccakPermutationOnWordsAfterXoring1344bits(UINT32 *state, const UINT8 *input) +static void KeccakPermutationOnWordsAfterXoring1344bits(UINT32 *state, const UINT8 *input) { declareABCDE unsigned int i; @@ -396,14 +396,14 @@ void KeccakPermutationOnWordsAfterXoring1344bits(UINT32 *state, const UINT8 *inp #endif -void KeccakInitialize() +static void KeccakInitialize() { #ifdef UseInterleaveTables buildInterleaveTables(); #endif } -void KeccakInitializeState(unsigned char *state) +static void KeccakInitializeState(unsigned char *state) { memset(state, 0, 200); #ifdef UseBebigokimisa @@ -422,61 +422,61 @@ void KeccakInitializeState(unsigned char *state) #endif } -void KeccakPermutation(unsigned char *state) +static void KeccakPermutation(unsigned char *state) { // We assume the state is always stored as interleaved 32-bit words KeccakPermutationOnWords((UINT32*)state); } #ifdef ProvideFast576 -void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data) { KeccakPermutationOnWordsAfterXoring576bits((UINT32*)state, data); } #endif #ifdef ProvideFast832 -void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data) { KeccakPermutationOnWordsAfterXoring832bits((UINT32*)state, data); } #endif #ifdef ProvideFast1024 -void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data) { KeccakPermutationOnWordsAfterXoring1024bits((UINT32*)state, data); } #endif #ifdef ProvideFast1088 -void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data) { KeccakPermutationOnWordsAfterXoring1088bits((UINT32*)state, data); } #endif #ifdef ProvideFast1152 -void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data) { KeccakPermutationOnWordsAfterXoring1152bits((UINT32*)state, data); } #endif #ifdef ProvideFast1344 -void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data) { KeccakPermutationOnWordsAfterXoring1344bits((UINT32*)state, data); } #endif -void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int laneCount) +static void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int laneCount) { KeccakPermutationOnWordsAfterXoring((UINT32*)state, data, laneCount); } #ifdef ProvideFast1024 -void KeccakExtract1024bits(const unsigned char *state, unsigned char *data) +static void KeccakExtract1024bits(const unsigned char *state, unsigned char *data) { extractLanes(16, state, data) #ifdef UseBebigokimisa @@ -492,7 +492,7 @@ void KeccakExtract1024bits(const unsigned char *state, unsigned char *data) } #endif -void KeccakExtract(const unsigned char *state, unsigned char *data, unsigned int laneCount) +static void KeccakExtract(const unsigned char *state, unsigned char *data, unsigned int laneCount) { extractLanes(laneCount, state, data) #ifdef UseBebigokimisa diff --git a/src/3rdparty/sha3/KeccakF-1600-opt64.c b/src/3rdparty/sha3/KeccakF-1600-opt64.c index 9349f0366a..0432f1ab18 100755 --- a/src/3rdparty/sha3/KeccakF-1600-opt64.c +++ b/src/3rdparty/sha3/KeccakF-1600-opt64.c @@ -174,7 +174,7 @@ ALIGN const UINT64 rot_39_41[2] = {39, 41}; #include "KeccakF-1600-unrolling.macros" -void KeccakPermutationOnWords(UINT64 *state) +static void KeccakPermutationOnWords(UINT64 *state) { declareABCDE #if (Unrolling != 24) @@ -188,7 +188,7 @@ void KeccakPermutationOnWords(UINT64 *state) #endif } -void KeccakPermutationOnWordsAfterXoring(UINT64 *state, const UINT64 *input, unsigned int laneCount) +static void KeccakPermutationOnWordsAfterXoring(UINT64 *state, const UINT64 *input, unsigned int laneCount) { declareABCDE #if (Unrolling != 24) @@ -206,7 +206,7 @@ void KeccakPermutationOnWordsAfterXoring(UINT64 *state, const UINT64 *input, uns } #ifdef ProvideFast576 -void KeccakPermutationOnWordsAfterXoring576bits(UINT64 *state, const UINT64 *input) +static void KeccakPermutationOnWordsAfterXoring576bits(UINT64 *state, const UINT64 *input) { declareABCDE #if (Unrolling != 24) @@ -222,7 +222,7 @@ void KeccakPermutationOnWordsAfterXoring576bits(UINT64 *state, const UINT64 *inp #endif #ifdef ProvideFast832 -void KeccakPermutationOnWordsAfterXoring832bits(UINT64 *state, const UINT64 *input) +static void KeccakPermutationOnWordsAfterXoring832bits(UINT64 *state, const UINT64 *input) { declareABCDE #if (Unrolling != 24) @@ -238,7 +238,7 @@ void KeccakPermutationOnWordsAfterXoring832bits(UINT64 *state, const UINT64 *inp #endif #ifdef ProvideFast1024 -void KeccakPermutationOnWordsAfterXoring1024bits(UINT64 *state, const UINT64 *input) +static void KeccakPermutationOnWordsAfterXoring1024bits(UINT64 *state, const UINT64 *input) { declareABCDE #if (Unrolling != 24) @@ -254,7 +254,7 @@ void KeccakPermutationOnWordsAfterXoring1024bits(UINT64 *state, const UINT64 *in #endif #ifdef ProvideFast1088 -void KeccakPermutationOnWordsAfterXoring1088bits(UINT64 *state, const UINT64 *input) +static void KeccakPermutationOnWordsAfterXoring1088bits(UINT64 *state, const UINT64 *input) { declareABCDE #if (Unrolling != 24) @@ -270,7 +270,7 @@ void KeccakPermutationOnWordsAfterXoring1088bits(UINT64 *state, const UINT64 *in #endif #ifdef ProvideFast1152 -void KeccakPermutationOnWordsAfterXoring1152bits(UINT64 *state, const UINT64 *input) +static void KeccakPermutationOnWordsAfterXoring1152bits(UINT64 *state, const UINT64 *input) { declareABCDE #if (Unrolling != 24) @@ -286,7 +286,7 @@ void KeccakPermutationOnWordsAfterXoring1152bits(UINT64 *state, const UINT64 *in #endif #ifdef ProvideFast1344 -void KeccakPermutationOnWordsAfterXoring1344bits(UINT64 *state, const UINT64 *input) +static void KeccakPermutationOnWordsAfterXoring1344bits(UINT64 *state, const UINT64 *input) { declareABCDE #if (Unrolling != 24) @@ -301,11 +301,11 @@ void KeccakPermutationOnWordsAfterXoring1344bits(UINT64 *state, const UINT64 *in } #endif -void KeccakInitialize() +static void KeccakInitialize() { } -void KeccakInitializeState(unsigned char *state) +static void KeccakInitializeState(unsigned char *state) { memset(state, 0, 200); #ifdef UseBebigokimisa @@ -318,13 +318,14 @@ void KeccakInitializeState(unsigned char *state) #endif } -void KeccakPermutation(unsigned char *state) +static void KeccakPermutation(unsigned char *state) { // We assume the state is always stored as words KeccakPermutationOnWords((UINT64*)state); } -void fromBytesToWord(UINT64 *word, const UINT8 *bytes) +#if 0 // Unused in the Qt configuration +static void fromBytesToWord(UINT64 *word, const UINT8 *bytes) { unsigned int i; @@ -332,9 +333,10 @@ void fromBytesToWord(UINT64 *word, const UINT8 *bytes) for(i=0; i<(64/8); i++) *word |= (UINT64)(bytes[i]) << (8*i); } +#endif #ifdef ProvideFast576 -void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data) { #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) KeccakPermutationOnWordsAfterXoring576bits((UINT64*)state, (const UINT64*)data); @@ -350,7 +352,7 @@ void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data) #endif #ifdef ProvideFast832 -void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data) { #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) KeccakPermutationOnWordsAfterXoring832bits((UINT64*)state, (const UINT64*)data); @@ -366,7 +368,7 @@ void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data) #endif #ifdef ProvideFast1024 -void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data) { #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) KeccakPermutationOnWordsAfterXoring1024bits((UINT64*)state, (const UINT64*)data); @@ -382,7 +384,7 @@ void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data) #endif #ifdef ProvideFast1088 -void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data) { #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) KeccakPermutationOnWordsAfterXoring1088bits((UINT64*)state, (const UINT64*)data); @@ -398,7 +400,7 @@ void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data) #endif #ifdef ProvideFast1152 -void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data) { #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) KeccakPermutationOnWordsAfterXoring1152bits((UINT64*)state, (const UINT64*)data); @@ -414,7 +416,7 @@ void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data) #endif #ifdef ProvideFast1344 -void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data) +static void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data) { #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) KeccakPermutationOnWordsAfterXoring1344bits((UINT64*)state, (const UINT64*)data); @@ -429,7 +431,7 @@ void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data) } #endif -void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int laneCount) +static void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int laneCount) { #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) KeccakPermutationOnWordsAfterXoring((UINT64*)state, (const UINT64*)data, laneCount); @@ -443,16 +445,18 @@ void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int #endif } -void fromWordToBytes(UINT8 *bytes, const UINT64 word) +#if 0 // Unused in the Qt configuration +static void fromWordToBytes(UINT8 *bytes, const UINT64 word) { unsigned int i; for(i=0; i<(64/8); i++) bytes[i] = (word >> (8*i)) & 0xFF; } +#endif #ifdef ProvideFast1024 -void KeccakExtract1024bits(const unsigned char *state, unsigned char *data) +static void KeccakExtract1024bits(const unsigned char *state, unsigned char *data) { #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) memcpy(data, state, 128); @@ -471,7 +475,7 @@ void KeccakExtract1024bits(const unsigned char *state, unsigned char *data) } #endif -void KeccakExtract(const unsigned char *state, unsigned char *data, unsigned int laneCount) +static void KeccakExtract(const unsigned char *state, unsigned char *data, unsigned int laneCount) { #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) memcpy(data, state, laneCount*8); diff --git a/src/3rdparty/sha3/KeccakNISTInterface.c b/src/3rdparty/sha3/KeccakNISTInterface.c index 5d92c74239..33e6e0d28b 100755 --- a/src/3rdparty/sha3/KeccakNISTInterface.c +++ b/src/3rdparty/sha3/KeccakNISTInterface.c @@ -12,10 +12,10 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ #include -#include "KeccakNISTInterface.h" +//#include "KeccakNISTInterface.h" #include "KeccakF-1600-interface.h" -HashReturn Init(hashState *state, int hashbitlen) +static HashReturn Init(hashState *state, int hashbitlen) { switch(hashbitlen) { case 0: // Default parameters, arbitrary length output @@ -40,29 +40,29 @@ HashReturn Init(hashState *state, int hashbitlen) return SUCCESS; } -HashReturn Update(hashState *state, const BitSequence *data, DataLength databitlen) +static HashReturn Update(hashState *state, const BitSequence *data, DataLength databitlen) { if ((databitlen % 8) == 0) - return Absorb((spongeState*)state, data, databitlen); + return (HashReturn) Absorb((spongeState*)state, data, databitlen); else { - HashReturn ret = Absorb((spongeState*)state, data, databitlen - (databitlen % 8)); + HashReturn ret = (HashReturn) Absorb((spongeState*)state, data, databitlen - (databitlen % 8)); if (ret == SUCCESS) { unsigned char lastByte; // Align the last partial byte to the least significant bits lastByte = data[databitlen/8] >> (8 - (databitlen % 8)); - return Absorb((spongeState*)state, &lastByte, databitlen % 8); + return (HashReturn) Absorb((spongeState*)state, &lastByte, databitlen % 8); } else return ret; } } -HashReturn Final(hashState *state, BitSequence *hashval) +static HashReturn Final(hashState *state, BitSequence *hashval) { - return Squeeze(state, hashval, state->fixedOutputLength); + return (HashReturn) Squeeze(state, hashval, state->fixedOutputLength); } -HashReturn Hash(int hashbitlen, const BitSequence *data, DataLength databitlen, BitSequence *hashval) +static HashReturn Hash(int hashbitlen, const BitSequence *data, DataLength databitlen, BitSequence *hashval) { hashState state; HashReturn result; diff --git a/src/3rdparty/sha3/KeccakNISTInterface.h b/src/3rdparty/sha3/KeccakNISTInterface.h index c6987d420b..cd85f24aa7 100755 --- a/src/3rdparty/sha3/KeccakNISTInterface.h +++ b/src/3rdparty/sha3/KeccakNISTInterface.h @@ -32,7 +32,7 @@ typedef spongeState hashState; * @pre The value of hashbitlen must be one of 0, 224, 256, 384 and 512. * @return SUCCESS if successful, BAD_HASHLEN if the value of hashbitlen is incorrect. */ -HashReturn Init(hashState *state, int hashbitlen); +static HashReturn Init(hashState *state, int hashbitlen); /** * Function to give input data for the sponge function to absorb. * @param state Pointer to the state of the sponge function initialized by Init(). @@ -43,7 +43,7 @@ HashReturn Init(hashState *state, int hashbitlen); * @pre In the previous call to Absorb(), databitLen was a multiple of 8. * @return SUCCESS if successful, FAIL otherwise. */ -HashReturn Update(hashState *state, const BitSequence *data, DataLength databitlen); +static HashReturn Update(hashState *state, const BitSequence *data, DataLength databitlen); /** * Function to squeeze output data from the sponge function. * If @a hashbitlen was not 0 in the call to Init(), the number of output bits is equal to @a hashbitlen. @@ -52,7 +52,7 @@ HashReturn Update(hashState *state, const BitSequence *data, DataLength databitl * @param hashval Pointer to the buffer where to store the output data. * @return SUCCESS if successful, FAIL otherwise. */ -HashReturn Final(hashState *state, BitSequence *hashval); +static HashReturn Final(hashState *state, BitSequence *hashval); /** * Function to compute a hash using the Keccak[r, c] sponge function. * The rate r and capacity c values are determined from @a hashbitlen. @@ -65,6 +65,6 @@ HashReturn Final(hashState *state, BitSequence *hashval); * @pre The value of hashbitlen must be one of 224, 256, 384 and 512. * @return SUCCESS if successful, BAD_HASHLEN if the value of hashbitlen is incorrect. */ -HashReturn Hash(int hashbitlen, const BitSequence *data, DataLength databitlen, BitSequence *hashval); +static HashReturn Hash(int hashbitlen, const BitSequence *data, DataLength databitlen, BitSequence *hashval); #endif diff --git a/src/3rdparty/sha3/KeccakSponge.c b/src/3rdparty/sha3/KeccakSponge.c index 5939ba4177..6f3da95dbb 100755 --- a/src/3rdparty/sha3/KeccakSponge.c +++ b/src/3rdparty/sha3/KeccakSponge.c @@ -18,7 +18,7 @@ http://creativecommons.org/publicdomain/zero/1.0/ #include "displayIntermediateValues.h" #endif -int InitSponge(spongeState *state, unsigned int rate, unsigned int capacity) +static int InitSponge(spongeState *state, unsigned int rate, unsigned int capacity) { if (rate+capacity != 1600) return 1; @@ -37,7 +37,7 @@ int InitSponge(spongeState *state, unsigned int rate, unsigned int capacity) return 0; } -void AbsorbQueue(spongeState *state) +static void AbsorbQueue(spongeState *state) { // state->bitsInQueue is assumed to be equal to state->rate #ifdef KeccakReference @@ -77,7 +77,7 @@ void AbsorbQueue(spongeState *state) state->bitsInQueue = 0; } -int Absorb(spongeState *state, const unsigned char *data, unsigned long long databitlen) +static int Absorb(spongeState *state, const unsigned char *data, unsigned long long databitlen) { unsigned long long i, j, wholeBlocks; unsigned int partialBlock, partialByte; @@ -191,7 +191,7 @@ int Absorb(spongeState *state, const unsigned char *data, unsigned long long dat return 0; } -void PadAndSwitchToSqueezingPhase(spongeState *state) +static void PadAndSwitchToSqueezingPhase(spongeState *state) { // Note: the bits are numbered from 0=LSB to 7=MSB if (state->bitsInQueue + 1 == state->rate) { @@ -226,7 +226,7 @@ void PadAndSwitchToSqueezingPhase(spongeState *state) state->squeezing = 1; } -int Squeeze(spongeState *state, unsigned char *output, unsigned long long outputLength) +static int Squeeze(spongeState *state, unsigned char *output, unsigned long long outputLength) { unsigned long long i; unsigned int partialBlock; diff --git a/src/3rdparty/sha3/KeccakSponge.h b/src/3rdparty/sha3/KeccakSponge.h index df3d7971f8..a545cacb30 100755 --- a/src/3rdparty/sha3/KeccakSponge.h +++ b/src/3rdparty/sha3/KeccakSponge.h @@ -47,7 +47,7 @@ ALIGN typedef struct spongeStateStruct { * @pre One must have r+c=1600 and the rate a multiple of 64 bits in this implementation. * @return Zero if successful, 1 otherwise. */ -int InitSponge(spongeState *state, unsigned int rate, unsigned int capacity); +static int InitSponge(spongeState *state, unsigned int rate, unsigned int capacity); /** * Function to give input data for the sponge function to absorb. * @param state Pointer to the state of the sponge function initialized by InitSponge(). @@ -60,7 +60,7 @@ int InitSponge(spongeState *state, unsigned int rate, unsigned int capacity); * i.e., Squeeze() must not have been called before. * @return Zero if successful, 1 otherwise. */ -int Absorb(spongeState *state, const unsigned char *data, unsigned long long databitlen); +static int Absorb(spongeState *state, const unsigned char *data, unsigned long long databitlen); /** * Function to squeeze output data from the sponge function. * If the sponge function was in the absorbing phase, this function @@ -71,6 +71,6 @@ int Absorb(spongeState *state, const unsigned char *data, unsigned long long dat * It must be a multiple of 8. * @return Zero if successful, 1 otherwise. */ -int Squeeze(spongeState *state, unsigned char *output, unsigned long long outputLength); +static int Squeeze(spongeState *state, unsigned char *output, unsigned long long outputLength); #endif diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp index 3f17fe15aa..6704f14eb1 100644 --- a/src/corelib/tools/qcryptographichash.cpp +++ b/src/corelib/tools/qcryptographichash.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Richard J. Moore . ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -47,6 +48,41 @@ #include "../../3rdparty/md4/md4.cpp" #include "../../3rdparty/sha1/sha1.cpp" +typedef unsigned char BitSequence; +typedef unsigned long long DataLength; +typedef enum { SUCCESS = 0, FAIL = 1, BAD_HASHLEN = 2 } HashReturn; + +#include "../../3rdparty/sha3/KeccakSponge.c" +typedef spongeState hashState; + +#include "../../3rdparty/sha3/KeccakNISTInterface.c" + +/* + This lets us choose between SHA3 implementations at build time. + */ +typedef spongeState SHA3Context; +typedef HashReturn (SHA3Init)(hashState *state, int hashbitlen); +typedef HashReturn (SHA3Update)(hashState *state, const BitSequence *data, DataLength databitlen); +typedef HashReturn (SHA3Final)(hashState *state, BitSequence *hashval); + +#if QT_POINTER_SIZE == 8 // 64 bit version + +#include "../../3rdparty/sha3/KeccakF-1600-opt64.c" + +static SHA3Init * const sha3Init = Init; +static SHA3Update * const sha3Update = Update; +static SHA3Final * const sha3Final = Final; + +#else // 32 bit optimised fallback + +#include "../../3rdparty/sha3/KeccakF-1600-opt32.c" + +static SHA3Init * const sha3Init = Init; +static SHA3Update * const sha3Update = Update; +static SHA3Final * const sha3Final = Final; + +#endif + /* These #defines replace the typedefs needed by the RFC6234 code. Normally the typedefs would come from from stdint.h, but since this header is not @@ -115,6 +151,7 @@ public: SHA256Context sha256Context; SHA384Context sha384Context; SHA512Context sha512Context; + SHA3Context sha3Context; }; QByteArray result; }; @@ -141,10 +178,14 @@ public: \value Md4 Generate an MD4 hash sum \value Md5 Generate an MD5 hash sum \value Sha1 Generate an SHA-1 hash sum - \value Sha224 Generate an SHA-224 hash sum. Introduced in Qt 5.0 - \value Sha256 Generate an SHA-256 hash sum. Introduced in Qt 5.0 - \value Sha384 Generate an SHA-384 hash sum. Introduced in Qt 5.0 - \value Sha512 Generate an SHA-512 hash sum. Introduced in Qt 5.0 + \value Sha224 Generate an SHA-224 hash sum (SHA-2). Introduced in Qt 5.0 + \value Sha256 Generate an SHA-256 hash sum (SHA-2). Introduced in Qt 5.0 + \value Sha384 Generate an SHA-384 hash sum (SHA-2). Introduced in Qt 5.0 + \value Sha512 Generate an SHA-512 hash sum (SHA-2). Introduced in Qt 5.0 + \value Sha3_224 Generate an SHA3-224 hash sum. Introduced in Qt 5.1 + \value Sha3_256 Generate an SHA3-256 hash sum. Introduced in Qt 5.1 + \value Sha3_384 Generate an SHA3-384 hash sum. Introduced in Qt 5.1 + \value Sha3_512 Generate an SHA3-512 hash sum. Introduced in Qt 5.1 */ /*! @@ -192,6 +233,18 @@ void QCryptographicHash::reset() case Sha512: SHA512Reset(&d->sha512Context); break; + case Sha3_224: + sha3Init(&d->sha3Context, 224); + break; + case Sha3_256: + sha3Init(&d->sha3Context, 256); + break; + case Sha3_384: + sha3Init(&d->sha3Context, 384); + break; + case Sha3_512: + sha3Init(&d->sha3Context, 512); + break; } d->result.clear(); } @@ -224,6 +277,18 @@ void QCryptographicHash::addData(const char *data, int length) case Sha512: SHA512Input(&d->sha512Context, reinterpret_cast(data), length); break; + case Sha3_224: + sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); + break; + case Sha3_256: + sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); + break; + case Sha3_384: + sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); + break; + case Sha3_512: + sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); + break; } d->result.clear(); } @@ -313,6 +378,30 @@ QByteArray QCryptographicHash::result() const SHA512Result(©, reinterpret_cast(d->result.data())); break; } + case Sha3_224: { + SHA3Context copy = d->sha3Context; + d->result.resize(224/8); + sha3Final(©, reinterpret_cast(d->result.data())); + break; + } + case Sha3_256: { + SHA3Context copy = d->sha3Context; + d->result.resize(256/8); + sha3Final(©, reinterpret_cast(d->result.data())); + break; + } + case Sha3_384: { + SHA3Context copy = d->sha3Context; + d->result.resize(384/8); + sha3Final(©, reinterpret_cast(d->result.data())); + break; + } + case Sha3_512: { + SHA3Context copy = d->sha3Context; + d->result.resize(512/8); + sha3Final(©, reinterpret_cast(d->result.data())); + break; + } } return d->result; } diff --git a/src/corelib/tools/qcryptographichash.h b/src/corelib/tools/qcryptographichash.h index 847ba9c3f7..d4e75c4667 100644 --- a/src/corelib/tools/qcryptographichash.h +++ b/src/corelib/tools/qcryptographichash.h @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Richard J. Moore . ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -60,7 +61,11 @@ public: Sha224, Sha256, Sha384, - Sha512 + Sha512, + Sha3_224, + Sha3_256, + Sha3_384, + Sha3_512 }; explicit QCryptographicHash(Algorithm method); diff --git a/src/corelib/tools/qmessageauthenticationcode.cpp b/src/corelib/tools/qmessageauthenticationcode.cpp index 3950f15502..becaaaa704 100644 --- a/src/corelib/tools/qmessageauthenticationcode.cpp +++ b/src/corelib/tools/qmessageauthenticationcode.cpp @@ -81,6 +81,14 @@ static int qt_hash_block_size(QCryptographicHash::Algorithm method) return SHA384_Message_Block_Size; case QCryptographicHash::Sha512: return SHA512_Message_Block_Size; + case QCryptographicHash::Sha3_224: + return 144; + case QCryptographicHash::Sha3_256: + return 136; + case QCryptographicHash::Sha3_384: + return 104; + case QCryptographicHash::Sha3_512: + return 72; } return 0; } diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index bed71c6d25..9b80b7c4fe 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -148,7 +148,8 @@ SOURCES += ../3rdparty/harfbuzz/src/harfbuzz-buffer.c \ HEADERS += tools/qharfbuzz_p.h INCLUDEPATH += ../3rdparty/md5 \ - ../3rdparty/md4 + ../3rdparty/md4 \ + ../3rdparty/sha3 # Note: libm should be present by default becaue this is C++ !macx-icc:!vxworks:unix:LIBS_PRIVATE += -lm -- cgit v1.2.3 From 137906da8e745a96c64c8120d25ff8845d82fcda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Mon, 3 Dec 2012 21:49:54 +0100 Subject: QGraphicsView - remove not needed storeMouseEvent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updateRubberBand is only called from mouseMoveEvent. The event is not changed. At the end of the event we call d->mouseMoveEventHandler which calls storeMouseEvent. There is no need to call it twice. Beside that this patch also changes the argument from QMouseEvent* to const QMouseEvent*. The only reason it needed to be const was the call to storeMouseEvent. Change-Id: I01148a6a8d36e782c4d95a90e36435e20b1681e1 Reviewed-by: Andreas Aardal Hanssen Reviewed-by: Samuel Rødal --- src/widgets/graphicsview/qgraphicsview.cpp | 3 +-- src/widgets/graphicsview/qgraphicsview_p.h | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp index 22ec829507..dca84f3f1b 100644 --- a/src/widgets/graphicsview/qgraphicsview.cpp +++ b/src/widgets/graphicsview/qgraphicsview.cpp @@ -706,11 +706,10 @@ QRegion QGraphicsViewPrivate::rubberBandRegion(const QWidget *widget, const QRec return tmp; } -void QGraphicsViewPrivate::updateRubberBand(QMouseEvent *event) +void QGraphicsViewPrivate::updateRubberBand(const QMouseEvent *event) { Q_Q(QGraphicsView); if (dragMode == QGraphicsView::RubberBandDrag && sceneInteractionAllowed) { - storeMouseEvent(event); if (rubberBanding) { // Check for enough drag distance if ((mousePressViewPoint - event->pos()).manhattanLength() diff --git a/src/widgets/graphicsview/qgraphicsview_p.h b/src/widgets/graphicsview/qgraphicsview_p.h index 9f0e3e3b24..d8654ff10f 100644 --- a/src/widgets/graphicsview/qgraphicsview_p.h +++ b/src/widgets/graphicsview/qgraphicsview_p.h @@ -138,7 +138,7 @@ public: #ifndef QT_NO_RUBBERBAND QRect rubberBandRect; QRegion rubberBandRegion(const QWidget *widget, const QRect &rect) const; - void updateRubberBand(QMouseEvent *event); + void updateRubberBand(const QMouseEvent *event); bool rubberBanding; Qt::ItemSelectionMode rubberBandSelectionMode; #endif -- cgit v1.2.3 From 98a286cbdecd54e758c7e3ab60fd6e8856b15da0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 30 Jan 2013 16:17:35 +0100 Subject: Fix segfault when setting a device-pixel-ratio on a null-QPixmap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: If3680766a50d5cf78889822d740c9472123191a7 Reviewed-by: Tor Arne Vestbø --- src/gui/image/qpixmap.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index 852025117b..ed477e767b 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -678,6 +678,9 @@ qreal QPixmap::devicePixelRatio() const */ void QPixmap::setDevicePixelRatio(qreal scaleFactor) { + if (isNull()) + return; + detach(); data->setDevicePixelRatio(scaleFactor); } -- cgit v1.2.3 From 6230873a658d19e2d8672b67fe35b24fe9466214 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Mon, 11 Feb 2013 10:30:08 +0100 Subject: Fix initialize variables Change-Id: Iaebd03bebf38cddf84f163703e2820925b69c3d9 Reviewed-by: David Faure (KDE) --- src/tools/qdoc/qmlcodeparser.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/tools/qdoc/qmlcodeparser.cpp b/src/tools/qdoc/qmlcodeparser.cpp index 02ab4b07fb..c86982eb95 100644 --- a/src/tools/qdoc/qmlcodeparser.cpp +++ b/src/tools/qdoc/qmlcodeparser.cpp @@ -86,6 +86,8 @@ QT_BEGIN_NAMESPACE Constructs the QML code parser. */ QmlCodeParser::QmlCodeParser() + : lexer( 0 ), + parser( 0 ) { } -- cgit v1.2.3 From c080f1f98a955be6cc43183e588a176c4fb305f3 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Mon, 11 Feb 2013 10:41:12 +0100 Subject: Remove unused variable Change-Id: I3cef189a668f73c8599958b2c15bf140bd86d091 Reviewed-by: David Faure --- src/tools/uic/customwidgetsinfo.h | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/tools/uic/customwidgetsinfo.h b/src/tools/uic/customwidgetsinfo.h index 5e6405807d..d4ac02aba9 100644 --- a/src/tools/uic/customwidgetsinfo.h +++ b/src/tools/uic/customwidgetsinfo.h @@ -83,7 +83,6 @@ public: private: typedef QMap NameCustomWidgetMap; NameCustomWidgetMap m_customWidgets; - bool m_scriptsActivated; }; QT_END_NAMESPACE -- cgit v1.2.3 From c4b88b0540edb8acb70b5eff7468004f950b54c6 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Fri, 8 Feb 2013 10:04:30 +0200 Subject: Automatically hide the SIP Change-Id: I4d63a883941842aed9a9c3806479d7aeeebb9f56 Reviewed-by: J-P Nurmi Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/widgets/kernel/qwidget.cpp | 4 ++++ src/widgets/widgets/qlineedit.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 31f6af5dce..9112e48869 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -8567,6 +8567,10 @@ void QWidget::focusOutEvent(QFocusEvent *) { if (focusPolicy() != Qt::NoFocus || !isWindow()) update(); + + // automatically hide the SIP + if (qApp->autoSipEnabled() && testAttribute(Qt::WA_InputMethodEnabled)) + qApp->inputMethod()->hide(); } /*! diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 869570b0e3..5187968ddf 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -1758,7 +1758,7 @@ void QLineEdit::focusOutEvent(QFocusEvent *e) QObject::disconnect(d->control->completer(), 0, this, 0); } #endif - update(); + QWidget::focusOutEvent(e); } /*!\reimp -- cgit v1.2.3 From 78d4c949a4556255303cb3fc2ce0d91900167f43 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Tue, 5 Feb 2013 20:12:34 +0200 Subject: Also copy checkable property to platform item Add missing property copy statement. Change-Id: Ic7cae46becd412194a490d0fe501ce6ebe2737a3 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/widgets/widgets/qmenu.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 12b926e6de..117d56ff18 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -2840,7 +2840,7 @@ QMenu::timerEvent(QTimerEvent *e) } } -void copyActionToPlatformItem(const QAction *action, QPlatformMenuItem* item) +static void copyActionToPlatformItem(const QAction *action, QPlatformMenuItem* item) { item->setText(action->text()); item->setIsSeparator(action->isSeparator()); @@ -2848,6 +2848,7 @@ void copyActionToPlatformItem(const QAction *action, QPlatformMenuItem* item) item->setIcon(action->icon()); item->setVisible(action->isVisible()); item->setShortcut(action->shortcut()); + item->setCheckable(action->isCheckable()); item->setChecked(action->isChecked()); item->setFont(action->font()); item->setRole((QPlatformMenuItem::MenuRole) action->menuRole()); -- cgit v1.2.3 From 83e6d1fe6006ad8e3cf37d5ca412aedae5aab9a4 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Tue, 1 Jan 2013 01:33:42 +0100 Subject: Add support for getting the paper names available for the printer Task-number: QTBUG-27714 Change-Id: I9bc6f1188f262e43f581add058d7895e1b5bd9e3 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/plugins/platforms/cocoa/qcocoaprintersupport.h | 1 + .../platforms/cocoa/qcocoaprintersupport.mm | 31 +++++++++++++++++++++ .../printsupport/cups/qcupsprintersupport.cpp | 5 ++++ .../printsupport/cups/qcupsprintersupport_p.h | 1 + .../windows/qwindowsprintersupport.cpp | 5 ++++ .../printsupport/windows/qwindowsprintersupport.h | 1 + src/printsupport/kernel/qcups.cpp | 21 ++++++++++++++ src/printsupport/kernel/qcups_p.h | 1 + .../kernel/qplatformprintersupport.cpp | 5 ++++ src/printsupport/kernel/qplatformprintersupport.h | 2 +- src/printsupport/kernel/qprintengine_win.cpp | 32 ++++++++++++++++++++++ src/printsupport/kernel/qprintengine_win_p.h | 1 + src/printsupport/kernel/qprinterinfo.cpp | 19 +++++++++++++ src/printsupport/kernel/qprinterinfo.h | 3 +- src/printsupport/kernel/qprinterinfo_p.h | 6 +++- 15 files changed, 131 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoaprintersupport.h b/src/plugins/platforms/cocoa/qcocoaprintersupport.h index 040b687c4e..83cf1ffada 100644 --- a/src/plugins/platforms/cocoa/qcocoaprintersupport.h +++ b/src/plugins/platforms/cocoa/qcocoaprintersupport.h @@ -55,6 +55,7 @@ public: QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode) Q_DECL_OVERRIDE; QPaintEngine *createPaintEngine(QPrintEngine *, QPrinter::PrinterMode printerMode) Q_DECL_OVERRIDE; QList supportedPaperSizes(const QPrinterInfo &) const Q_DECL_OVERRIDE; + QList > supportedSizesWithNames(const QPrinterInfo &) const Q_DECL_OVERRIDE; QList availablePrinters() Q_DECL_OVERRIDE; QPrinterInfo printerInfo(const QString &printerName) Q_DECL_OVERRIDE; diff --git a/src/plugins/platforms/cocoa/qcocoaprintersupport.mm b/src/plugins/platforms/cocoa/qcocoaprintersupport.mm index a48db02949..cfa23b7a30 100644 --- a/src/plugins/platforms/cocoa/qcocoaprintersupport.mm +++ b/src/plugins/platforms/cocoa/qcocoaprintersupport.mm @@ -138,3 +138,34 @@ QPrinterInfo QCocoaPrinterSupport::printerInfoFromPMPrinter(const PMPrinter &pri return createPrinterInfo(name, description, location, makeAndModel, isDefault, 0); } + +QList > QCocoaPrinterSupport::supportedSizesWithNames(const QPrinterInfo &printerInfo) const +{ + QList > returnValue; + if (printerInfo.isNull()) + return returnValue; + + PMPrinter printer = PMPrinterCreateFromPrinterID(QCFString::toCFStringRef(printerInfo.printerName())); + if (!printer) + return returnValue; + + CFArrayRef array; + if (PMPrinterGetPaperList(printer, &array) != noErr) { + PMRelease(printer); + return returnValue; + } + + int count = CFArrayGetCount(array); + for (int i = 0; i < count; ++i) { + PMPaper paper = static_cast(const_cast(CFArrayGetValueAtIndex(array, i))); + double width, height; + if (PMPaperGetWidth(paper, &width) == noErr && PMPaperGetHeight(paper, &height) == noErr) { + static const double OnePointInMillimeters = 1.0 / 72.0 * 25.4; + QCFString paperName; + if (PMPaperCreateLocalizedName(paper, printer, &paperName) == noErr) + returnValue.append(qMakePair(QString(paperName), QSizeF(width * OnePointInMillimeters, height * OnePointInMillimeters))); + } + } + PMRelease(printer); + return returnValue; +} diff --git a/src/plugins/printsupport/cups/qcupsprintersupport.cpp b/src/plugins/printsupport/cups/qcupsprintersupport.cpp index c2e9bd445f..f41d4f5047 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport.cpp +++ b/src/plugins/printsupport/cups/qcupsprintersupport.cpp @@ -86,6 +86,11 @@ QList QCupsPrinterSupport::supportedPaperSizes(const QPrint return QCUPSSupport::getCupsPrinterPaperSizes(printerIndex(printerInfo)); } +QList > QCupsPrinterSupport::supportedSizesWithNames(const QPrinterInfo &printerInfo) const +{ + return QCUPSSupport::getCupsPrinterPaperSizesWithNames(printerIndex(printerInfo)); +} + void QCupsPrinterSupport::loadCups() { cupsGetDests = (CupsGetDests) m_cups.resolve("cupsGetDests"); diff --git a/src/plugins/printsupport/cups/qcupsprintersupport_p.h b/src/plugins/printsupport/cups/qcupsprintersupport_p.h index d3f0ff5d90..e9fe24203e 100644 --- a/src/plugins/printsupport/cups/qcupsprintersupport_p.h +++ b/src/plugins/printsupport/cups/qcupsprintersupport_p.h @@ -67,6 +67,7 @@ public: virtual QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode); virtual QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode); virtual QList supportedPaperSizes(const QPrinterInfo &) const; + virtual QList > supportedSizesWithNames(const QPrinterInfo &) const; virtual QString printerOption(const QPrinterInfo &printer, const QString &key) const; virtual PrinterOptions printerOptions(const QPrinterInfo &printer) const; diff --git a/src/plugins/printsupport/windows/qwindowsprintersupport.cpp b/src/plugins/printsupport/windows/qwindowsprintersupport.cpp index 469dbdb34e..36e7a3fb8e 100644 --- a/src/plugins/printsupport/windows/qwindowsprintersupport.cpp +++ b/src/plugins/printsupport/windows/qwindowsprintersupport.cpp @@ -93,4 +93,9 @@ QList QWindowsPrinterSupport::supportedPaperSizes(const QPr return QWin32PrintEngine::supportedPaperSizes(printerInfo); } +QList >QWindowsPrinterSupport::supportedSizesWithNames(const QPrinterInfo &printerInfo) const +{ + return QWin32PrintEngine::supportedSizesWithNames(printerInfo); +} + QT_END_NAMESPACE diff --git a/src/plugins/printsupport/windows/qwindowsprintersupport.h b/src/plugins/printsupport/windows/qwindowsprintersupport.h index 3550c3f50c..1d5a4f3da4 100644 --- a/src/plugins/printsupport/windows/qwindowsprintersupport.h +++ b/src/plugins/printsupport/windows/qwindowsprintersupport.h @@ -57,6 +57,7 @@ public: virtual QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode); virtual QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode); virtual QList supportedPaperSizes(const QPrinterInfo &) const; + virtual QList >supportedSizesWithNames(const QPrinterInfo &printerInfo) const; }; QT_END_NAMESPACE diff --git a/src/printsupport/kernel/qcups.cpp b/src/printsupport/kernel/qcups.cpp index 30de3d301c..47447b21a1 100644 --- a/src/printsupport/kernel/qcups.cpp +++ b/src/printsupport/kernel/qcups.cpp @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +extern double qt_multiplierForUnit(QPrinter::Unit unit, int resolution); + typedef int (*CupsGetDests)(cups_dest_t **dests); typedef void (*CupsFreeDests)(int num_dests, cups_dest_t *dests); typedef const char* (*CupsGetPPD)(const char *printer); @@ -500,6 +502,25 @@ QList QCUPSSupport::getCupsPrinterPaperSizes(int cupsPrinte return result; } +QList > QCUPSSupport::getCupsPrinterPaperSizesWithNames(int cupsPrinterIndex) +{ + QList > result; + if (!QCUPSSupport::isAvailable() || cupsPrinterIndex < 0) + return result; + // Find paper sizes from CUPS. + QCUPSSupport cups; + cups.setCurrentPrinter(cupsPrinterIndex); + if (const ppd_option_t* size = cups.pageSizes()) { + for (int j = 0; j < size->num_choices; ++j) { + double multiplier = qt_multiplierForUnit(QPrinter::Millimeter, 0); // resolution is not needed here + QSize sz = cups.paperRect(size->choices[j].choice).size(); + result.append(qMakePair(QString(size->choices[j].text), QSizeF(sz.width() / multiplier, sz.height() / multiplier))); + } + } + return result; +} + + QT_END_NAMESPACE #endif // QT_NO_CUPS diff --git a/src/printsupport/kernel/qcups_p.h b/src/printsupport/kernel/qcups_p.h index 67a8955d93..0828f582a3 100644 --- a/src/printsupport/kernel/qcups_p.h +++ b/src/printsupport/kernel/qcups_p.h @@ -121,6 +121,7 @@ public: static QList availableUnixPrinters(); static QList getCupsPrinterPaperSizes(int cupsPrinterIndex); + static QList > getCupsPrinterPaperSizesWithNames(int cupsPrinterIndex); private: void collectMarkedOptions(QStringList& list, const ppd_group_t* group = 0) const; diff --git a/src/printsupport/kernel/qplatformprintersupport.cpp b/src/printsupport/kernel/qplatformprintersupport.cpp index f20ac5d177..4d80e55ab6 100644 --- a/src/printsupport/kernel/qplatformprintersupport.cpp +++ b/src/printsupport/kernel/qplatformprintersupport.cpp @@ -82,6 +82,11 @@ QList QPlatformPrinterSupport::supportedPaperSizes(const QP return QList(); } +QList > QPlatformPrinterSupport::supportedSizesWithNames(const QPrinterInfo &) const +{ + return QList >(); +} + QList QPlatformPrinterSupport::availablePrinters() { return m_printers; diff --git a/src/printsupport/kernel/qplatformprintersupport.h b/src/printsupport/kernel/qplatformprintersupport.h index 5cb3b805fd..c4ffcffd1e 100644 --- a/src/printsupport/kernel/qplatformprintersupport.h +++ b/src/printsupport/kernel/qplatformprintersupport.h @@ -72,7 +72,7 @@ public: virtual QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode); virtual QPaintEngine *createPaintEngine(QPrintEngine *, QPrinter::PrinterMode printerMode); virtual QList supportedPaperSizes(const QPrinterInfo &) const; - + virtual QList > supportedSizesWithNames(const QPrinterInfo &printerInfo) const; virtual QList availablePrinters(); virtual QPrinterInfo defaultPrinter(); virtual QPrinterInfo printerInfo(const QString &printerName); diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp index 97453f2e0e..f5690c12f3 100644 --- a/src/printsupport/kernel/qprintengine_win.cpp +++ b/src/printsupport/kernel/qprintengine_win.cpp @@ -1596,6 +1596,38 @@ QList QWin32PrintEngine::supportedPaperSizes(const QPrinter return returnList; } +QList > QWin32PrintEngine::supportedSizesWithNames(const QPrinterInfo &printerInfo) +{ + QList > paperSizes; + if (printerInfo.isNull()) + return paperSizes; + DWORD size = DeviceCapabilities(reinterpret_cast(printerInfo.printerName().utf16()), + NULL, DC_PAPERNAMES, NULL, NULL); + if ((int)size != -1) { + wchar_t *papers = new wchar_t[size*64]; + size = DeviceCapabilities(reinterpret_cast(printerInfo.printerName().utf16()), + NULL, DC_PAPERNAMES, papers, NULL); + DWORD size2 = DeviceCapabilities(reinterpret_cast(printerInfo.printerName().utf16()), + NULL, DC_PAPERSIZE, NULL, NULL); + if ((int)size2 != -1) { + POINT *points = new POINT[size2*sizeof(POINT)]; + + size2 = DeviceCapabilities(reinterpret_cast(printerInfo.printerName().utf16()), + NULL, DC_PAPERSIZE, (wchar_t *)points, NULL); + wchar_t copyOfPaper[65]; + for (int i=0;i<(int)size;i++) { + wcscpy_s(copyOfPaper, 64, papers + (i * 64)); + copyOfPaper[64] = '\0'; + QString str = QString::fromWCharArray(copyOfPaper); + paperSizes << qMakePair(str, QSizeF(points[i].x / 10, points[i].y / 10)); + } + delete [] points; + } + delete [] papers; + } + return paperSizes; +} + void QWin32PrintEngine::queryDefaultPrinter(QString &name, QString &program, QString &port) { /* Read the default printer name, driver and port with the intuitive function diff --git a/src/printsupport/kernel/qprintengine_win_p.h b/src/printsupport/kernel/qprintengine_win_p.h index 5197918710..ffeebb0704 100644 --- a/src/printsupport/kernel/qprintengine_win_p.h +++ b/src/printsupport/kernel/qprintengine_win_p.h @@ -104,6 +104,7 @@ public: void releaseDC(HDC) const; static QList supportedPaperSizes(const QPrinterInfo &printerInfo); + static QList > supportedSizesWithNames(const QPrinterInfo &printerInfo); static void queryDefaultPrinter(QString &name, QString &program, QString &port); private: diff --git a/src/printsupport/kernel/qprinterinfo.cpp b/src/printsupport/kernel/qprinterinfo.cpp index 32ed4fa5af..f863b23e34 100644 --- a/src/printsupport/kernel/qprinterinfo.cpp +++ b/src/printsupport/kernel/qprinterinfo.cpp @@ -222,6 +222,25 @@ QList QPrinterInfo::supportedPaperSizes() const return d->paperSizes; } +/*! + Returns a list of all the paper names supported by the driver with the + corresponding size in millimeters. + + Not all printer drivers support this query, so the list may be empty. + + \since 5.1 +*/ + +QList > QPrinterInfo::supportedSizesWithNames() const +{ + Q_D(const QPrinterInfo); + if (!isNull() && !d->hasPaperNames) { + d->paperNames = QPlatformPrinterSupportPlugin::get()->supportedSizesWithNames(*this); + d->hasPaperNames = true; + } + return d->paperNames; +} + QList QPrinterInfo::availablePrinters() { QPlatformPrinterSupport *ps = QPlatformPrinterSupportPlugin::get(); diff --git a/src/printsupport/kernel/qprinterinfo.h b/src/printsupport/kernel/qprinterinfo.h index b831898632..0dc19c1da7 100644 --- a/src/printsupport/kernel/qprinterinfo.h +++ b/src/printsupport/kernel/qprinterinfo.h @@ -43,7 +43,7 @@ #define QPRINTERINFO_H #include - +#include #include QT_BEGIN_NAMESPACE @@ -71,6 +71,7 @@ public: bool isDefault() const; QList supportedPaperSizes() const; + QList > supportedSizesWithNames() const; static QList availablePrinters(); static QPrinterInfo defaultPrinter(); diff --git a/src/printsupport/kernel/qprinterinfo_p.h b/src/printsupport/kernel/qprinterinfo_p.h index 97f4fd8a56..d4bb08f1f5 100644 --- a/src/printsupport/kernel/qprinterinfo_p.h +++ b/src/printsupport/kernel/qprinterinfo_p.h @@ -58,6 +58,7 @@ #ifndef QT_NO_PRINTER #include "QtCore/qlist.h" +#include "QtCore/qpair.h" QT_BEGIN_NAMESPACE @@ -65,7 +66,8 @@ class QPrinterInfoPrivate { public: QPrinterInfoPrivate(const QString& name = QString()) : - name(name), isDefault(false), index(-1), hasPaperSizes(false) + name(name), isDefault(false), index(-1), hasPaperSizes(false), + hasPaperNames(false) {} ~QPrinterInfoPrivate() {} @@ -81,6 +83,8 @@ public: mutable bool hasPaperSizes; mutable QList paperSizes; + mutable bool hasPaperNames; + mutable QList > paperNames; }; -- cgit v1.2.3 From c21ed8ca1f03c82731abf01fc66e4c2f2e4c2a50 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 10 Feb 2013 14:51:43 +0100 Subject: Remove dead code from QPointer. The compilers checked here are not supported in Qt 5. Additionally, the QSharedPointer implementation has similar operators without such guards, so in reality these compilers may not have worked with Qt 4.6+ either. Change-Id: I208f3cde7c689770ae15245a555e3a58b749a8a3 Reviewed-by: Olivier Goffart Reviewed-by: Thiago Macieira --- src/corelib/kernel/qpointer.h | 40 ---------------------------------------- 1 file changed, 40 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qpointer.h b/src/corelib/kernel/qpointer.h index e84900e3b1..385bc2814b 100644 --- a/src/corelib/kernel/qpointer.h +++ b/src/corelib/kernel/qpointer.h @@ -103,8 +103,6 @@ public: }; template Q_DECLARE_TYPEINFO_BODY(QPointer, Q_MOVABLE_TYPE); -#if (!defined(Q_CC_SUN) || (__SUNPRO_CC >= 0x580)) // ambiguity between const T * and T * - template inline bool operator==(const T *o, const QPointer &p) { return o == p.operator->(); } @@ -113,18 +111,6 @@ template inline bool operator==(const QPointer &p, const T *o) { return p.operator->() == o; } -#else - -template -inline bool operator==(const void *o, const QPointer &p) -{ return o == p.operator->(); } - -template -inline bool operator==(const QPointer &p, const void *o) -{ return p.operator->() == o; } - -#endif - template inline bool operator==(T *o, const QPointer &p) { return o == p.operator->(); } @@ -137,9 +123,6 @@ template inline bool operator==(const QPointer &p1, const QPointer &p2) { return p1.operator->() == p2.operator->(); } - -#if (!defined(Q_CC_SUN) || (__SUNPRO_CC >= 0x580)) // ambiguity between const T * and T * - template inline bool operator!=(const T *o, const QPointer &p) { return o != p.operator->(); } @@ -148,18 +131,6 @@ template inline bool operator!= (const QPointer &p, const T *o) { return p.operator->() != o; } -#else - -template -inline bool operator!= (const void *o, const QPointer &p) -{ return o != p.operator->(); } - -template -inline bool operator!= (const QPointer &p, const void *o) -{ return p.operator->() != o; } - -#endif - template inline bool operator!=(T *o, const QPointer &p) { return o != p.operator->(); } @@ -172,17 +143,6 @@ template inline bool operator!= (const QPointer &p1, const QPointer &p2) { return p1.operator->() != p2.operator->() ; } -// Make MSVC < 1400 (2005) handle "if (NULL == p)" syntax -#if defined(Q_CC_MSVC) && (_MSC_VER < 1400) -template -inline bool operator== (int i, const QPointer &p) -{ Q_ASSERT(i == 0); return !i && p.isNull(); } - -template -inline bool operator!= (int i, const QPointer &p) -{ Q_ASSERT(i == 0); return !i && !p.isNull(); } -#endif - template QPointer qPointerFromVariant(const QVariant &variant) -- cgit v1.2.3 From 34a3f2cd442ff1396e508f7a8890b968f1bb3179 Mon Sep 17 00:00:00 2001 From: Jon Severinsson Date: Fri, 26 Oct 2012 08:41:27 +0200 Subject: Allow QtTest's QCOMPARE to work with mixed q(u)int32 and q(u)int64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I491edcae84c149775cf3640626ccff8cbf0d69fe Reviewed-by: Jon Severinsson Reviewed-by: Andreas Aardal Hanssen Reviewed-by: Jędrzej Nowacki Reviewed-by: Lars Knoll Reviewed-by: Jason McDonald Reviewed-by: Stephen Kelly --- src/testlib/qtest.h | 42 ++++++++++++++++++++++++++++++++++++++++++ src/testlib/qtestcase.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 66 insertions(+) (limited to 'src') diff --git a/src/testlib/qtest.h b/src/testlib/qtest.h index 82e961d61b..d15e432bd5 100644 --- a/src/testlib/qtest.h +++ b/src/testlib/qtest.h @@ -232,6 +232,48 @@ inline bool qCompare(QFlags const &t1, int const &t2, const char *actual, con return qCompare(int(t1), t2, actual, expected, file, line); } +template<> +inline bool qCompare(qint64 const &t1, qint32 const &t2, const char *actual, + const char *expected, const char *file, int line) +{ + return qCompare(t1, static_cast(t2), actual, expected, file, line); +} + +template<> +inline bool qCompare(qint64 const &t1, quint32 const &t2, const char *actual, + const char *expected, const char *file, int line) +{ + return qCompare(t1, static_cast(t2), actual, expected, file, line); +} + +template<> +inline bool qCompare(quint64 const &t1, quint32 const &t2, const char *actual, + const char *expected, const char *file, int line) +{ + return qCompare(t1, static_cast(t2), actual, expected, file, line); +} + +template<> +inline bool qCompare(qint32 const &t1, qint64 const &t2, const char *actual, + const char *expected, const char *file, int line) +{ + return qCompare(static_cast(t1), t2, actual, expected, file, line); +} + +template<> +inline bool qCompare(quint32 const &t1, qint64 const &t2, const char *actual, + const char *expected, const char *file, int line) +{ + return qCompare(static_cast(t1), t2, actual, expected, file, line); +} + +template<> +inline bool qCompare(quint32 const &t1, quint64 const &t2, const char *actual, + const char *expected, const char *file, int line) +{ + return qCompare(static_cast(t1), t2, actual, expected, file, line); +} + } QT_END_NAMESPACE diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index d83b05f05e..91da10fd94 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -2696,6 +2696,30 @@ bool QTest::compare_string_helper(const char *t1, const char *t2, const char *ac \internal */ +/*! \fn bool QTest::qCompare(qint64 const &t1, qint32 const &t2, const char *actual, const char *expected, const char *file, int line) + \internal +*/ + +/*! \fn bool QTest::qCompare(qint64 const &t1, quint32 const &t2, const char *actual, const char *expected, const char *file, int line) + \internal +*/ + +/*! \fn bool QTest::qCompare(quint64 const &t1, quint32 const &t2, const char *actual, const char *expected, const char *file, int line) + \internal +*/ + +/*! \fn bool QTest::qCompare(qint32 const &t1, qint64 const &t2, const char *actual, const char *expected, const char *file, int line) + \internal +*/ + +/*! \fn bool QTest::qCompare(quint32 const &t1, qint64 const &t2, const char *actual, const char *expected, const char *file, int line) + \internal +*/ + +/*! \fn bool QTest::qCompare(quint32 const &t1, quint64 const &t2, const char *actual, const char *expected, const char *file, int line) + \internal +*/ + /*! \fn bool QTest::qCompare(bool const &t1, int const &t2, const char *actual, const char *expected, const char *file, int line) \internal */ -- cgit v1.2.3 From d57e9b35c94ae6075db0688b954624cb6f32ec51 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Fri, 8 Feb 2013 17:12:02 +0100 Subject: QPA Cocoa Menu: Make sure mouse button state is clean after popup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Calling popUpMenuPositioningItem:atLocation:inView: will swallow any mouse up/released event, if we popup on mouse down/pressed. Since we cache the button state in QNSView, the safest way seems to be to clear this button state. Another option would be to send Cocoa mouse up events for each mouse button, but we prefer to keep things simple. Change-Id: I7f3f369c45e9f5ed9d2ab693bffd8be4a4596ae6 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoamenu.mm | 17 +++++------------ src/plugins/platforms/cocoa/qnsview.h | 2 ++ src/plugins/platforms/cocoa/qnsview.mm | 5 +++++ 3 files changed, 12 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm index ff3aeaeb11..a92f4e875c 100644 --- a/src/plugins/platforms/cocoa/qcocoamenu.mm +++ b/src/plugins/platforms/cocoa/qcocoamenu.mm @@ -48,6 +48,7 @@ #include "qcocoaapplication.h" #include "qcocoamenuloader.h" #include "qcocoawindow.h" +#import "qnsview.h" static inline QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *getMenuLoader() { @@ -313,18 +314,10 @@ void QCocoaMenu::showPopup(const QWindow *parentWindow, QPoint pos, const QPlatf NSPoint nsPos = NSMakePoint(pos.x(), pos.y()); [m_nativeMenu popUpMenuPositioningItem:nsItem atLocation:nsPos inView:view]; - // The call above blocks and swallows the mouse release event, so we send a - // synthetic one to bring back any QQuickMouseArea back to a more normal state. - NSEvent *releaseEvent = [NSEvent mouseEventWithType:NSLeftMouseUp - location:nsPos - modifierFlags:0 - timestamp:0 - windowNumber:view.window.windowNumber - context:[NSGraphicsContext currentContext] - eventNumber:0 - clickCount:0 - pressure:1.0]; - [view.window sendEvent:releaseEvent]; + // The call above blocks, and also swallows any mouse release event, + // so we need to clear any mouse button that triggered the menu popup. + if ([view isKindOfClass:[QNSView class]]) + [(QNSView *)view resetMouseButtons]; } QPlatformMenuItem *QCocoaMenu::menuItemAt(int position) const diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h index 8bccc2cf33..eec0cfe5f6 100644 --- a/src/plugins/platforms/cocoa/qnsview.h +++ b/src/plugins/platforms/cocoa/qnsview.h @@ -84,6 +84,8 @@ QT_END_NAMESPACE - (BOOL)acceptsFirstResponder; - (BOOL)becomeFirstResponder; +- (void)resetMouseButtons; + - (void)handleMouseEvent:(NSEvent *)theEvent; - (void)mouseDown:(NSEvent *)theEvent; - (void)mouseDragged:(NSEvent *)theEvent; diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 5d39dd2d9c..82fde6221d 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -398,6 +398,11 @@ static QTouchDevice *touchDevice = 0; } } +- (void)resetMouseButtons +{ + m_buttons = Qt::NoButton; +} + - (void)handleMouseEvent:(NSEvent *)theEvent { QPoint qtWindowPoint, qtScreenPoint; -- cgit v1.2.3 From 28d526db74c50977215133159e565e7c15fd18e3 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Thu, 7 Feb 2013 17:02:48 +0100 Subject: BB10 systemProxyForQuery: query system proxy also for non-URL requests ... like e.g. in QAbstractSocket::connectToHost(). We can set the scheme on the query URL based on well-known ports; even if the port is not well-known, we can just query the URL anyhow and let the netstatus API resolve the right proxy for us. In addition, return early for local schemes like "file" and "qrc". Task-number: QTBUG-29425 Change-Id: I900f1ecbac6dd380bb8a77470b39de2c07aa7f6e Reviewed-by: Andrey Leonov Reviewed-by: Rafael Roquetto --- src/network/kernel/qnetworkproxy.cpp | 2 +- src/network/kernel/qnetworkproxy_blackberry.cpp | 30 ++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp index 242855eaba..931c52eab0 100644 --- a/src/network/kernel/qnetworkproxy.cpp +++ b/src/network/kernel/qnetworkproxy.cpp @@ -1562,7 +1562,7 @@ void QNetworkProxyFactory::setApplicationProxyFactory(QNetworkProxyFactory *fact \li On Windows platforms, this function may take several seconds to execute depending on the configuration of the user's system. - \li On BlackBerry, only UrlRequest queries are supported. SOCKS is + \li On BlackBerry, only UrlRequest and TcpSocket queries are supported. SOCKS is not supported. The proxy credentials are only retrieved for the default configuration. \endlist diff --git a/src/network/kernel/qnetworkproxy_blackberry.cpp b/src/network/kernel/qnetworkproxy_blackberry.cpp index 2743b90404..c0f5c43a78 100644 --- a/src/network/kernel/qnetworkproxy_blackberry.cpp +++ b/src/network/kernel/qnetworkproxy_blackberry.cpp @@ -63,14 +63,36 @@ QT_BEGIN_NAMESPACE QList QNetworkProxyFactory::systemProxyForQuery(const QNetworkProxyQuery &query) { - QNetworkProxy proxy; + if (query.url().scheme() == QLatin1String("file") + || query.url().scheme() == QLatin1String("qrc")) + return QList() << QNetworkProxy(QNetworkProxy::NoProxy); - if (query.queryType() != QNetworkProxyQuery::UrlRequest) { + if (query.queryType() != QNetworkProxyQuery::UrlRequest + && query.queryType() != QNetworkProxyQuery::TcpSocket) { qWarning("Unsupported query type: %d", query.queryType()); return QList() << QNetworkProxy(QNetworkProxy::NoProxy); } - QUrl url = query.url(); + QUrl url; + if (query.queryType() == QNetworkProxyQuery::UrlRequest) { + url = query.url(); + } else if (query.queryType() == QNetworkProxyQuery::TcpSocket + && !query.peerHostName().isEmpty()) { + url.setHost(query.peerHostName()); + switch (query.peerPort()) { + case 443: + url.setScheme(QStringLiteral("https")); + break; + case 21: + url.setScheme(QStringLiteral("ftp")); + break; + default: + // for unknown ports, we just pretend we are dealing + // with a HTTP URL, otherwise we will not get a proxy + // from the netstatus API + url.setScheme(QStringLiteral("http")); + } + } if (!url.isValid()) { qWarning("Invalid URL: %s", qPrintable(url.toString())); @@ -112,6 +134,8 @@ QList QNetworkProxyFactory::systemProxyForQuery(const QNetworkPro return QList() << QNetworkProxy(QNetworkProxy::NoProxy); } + QNetworkProxy proxy; + QString protocol = query.protocolTag(); if (protocol.startsWith(QLatin1String("http"), Qt::CaseInsensitive)) { // http, https proxy.setType((QNetworkProxy::HttpProxy)); -- cgit v1.2.3 From f9f0f4aea5f0b66d7dcf0f402e5ccf3053c3957c Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 29 Dec 2011 20:04:23 -0200 Subject: Rename the Q_STATIC_INLINE_FUNCTION macro to Q_ALWAYS_INLINE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit That's what the macro did anyway, except it had an extra "static" keyword. This allows us now to use Q_ALWAYS_INLINE in non-static contexts, if we wanted to (e.g., certain template cases). Change-Id: I899d359f46234e93d1912ef9125080dc84e15c93 Reviewed-by: Samuel Rødal --- src/gui/painting/qdrawhelper_p.h | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h index eda2fc9242..7bd31d0ef5 100644 --- a/src/gui/painting/qdrawhelper_p.h +++ b/src/gui/painting/qdrawhelper_p.h @@ -70,15 +70,15 @@ QT_BEGIN_NAMESPACE #if defined(Q_CC_RVCT) // RVCT doesn't like static template functions # define Q_STATIC_TEMPLATE_FUNCTION -# define Q_STATIC_INLINE_FUNCTION static __forceinline +# define Q_ALWAYS_INLINE __forceinline # define Q_DECL_RESTRICT #elif defined(Q_CC_GNU) -# define Q_STATIC_TEMPLATE_FUNCTION static __attribute__((always_inline)) -# define Q_STATIC_INLINE_FUNCTION static inline __attribute__((always_inline)) +# define Q_STATIC_TEMPLATE_FUNCTION static +# define Q_ALWAYS_INLINE inline __attribute__((always_inline)) # define Q_DECL_RESTRICT __restrict__ #else # define Q_STATIC_TEMPLATE_FUNCTION static -# define Q_STATIC_INLINE_FUNCTION static inline +# define Q_ALWAYS_INLINE inline # define Q_DECL_RESTRICT #endif @@ -562,7 +562,7 @@ public: # pragma push # pragma arm #endif -Q_STATIC_INLINE_FUNCTION uint INTERPOLATE_PIXEL_255(uint x, uint a, uint y, uint b) { +static Q_ALWAYS_INLINE uint INTERPOLATE_PIXEL_255(uint x, uint a, uint y, uint b) { uint t = (x & 0xff00ff) * a + (y & 0xff00ff) * b; t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8; t &= 0xff00ff; @@ -579,7 +579,7 @@ Q_STATIC_INLINE_FUNCTION uint INTERPOLATE_PIXEL_255(uint x, uint a, uint y, uint #if QT_POINTER_SIZE == 8 // 64-bit versions -Q_STATIC_INLINE_FUNCTION uint INTERPOLATE_PIXEL_256(uint x, uint a, uint y, uint b) { +static Q_ALWAYS_INLINE uint INTERPOLATE_PIXEL_256(uint x, uint a, uint y, uint b) { quint64 t = (((quint64(x)) | ((quint64(x)) << 24)) & 0x00ff00ff00ff00ff) * a; t += (((quint64(y)) | ((quint64(y)) << 24)) & 0x00ff00ff00ff00ff) * b; t >>= 8; @@ -587,14 +587,14 @@ Q_STATIC_INLINE_FUNCTION uint INTERPOLATE_PIXEL_256(uint x, uint a, uint y, uint return (uint(t)) | (uint(t >> 24)); } -Q_STATIC_INLINE_FUNCTION uint BYTE_MUL(uint x, uint a) { +static Q_ALWAYS_INLINE uint BYTE_MUL(uint x, uint a) { quint64 t = (((quint64(x)) | ((quint64(x)) << 24)) & 0x00ff00ff00ff00ff) * a; t = (t + ((t >> 8) & 0xff00ff00ff00ff) + 0x80008000800080) >> 8; t &= 0x00ff00ff00ff00ff; return (uint(t)) | (uint(t >> 24)); } -Q_STATIC_INLINE_FUNCTION uint PREMUL(uint x) { +static Q_ALWAYS_INLINE uint PREMUL(uint x) { uint a = x >> 24; quint64 t = (((quint64(x)) | ((quint64(x)) << 24)) & 0x00ff00ff00ff00ff) * a; t = (t + ((t >> 8) & 0xff00ff00ff00ff) + 0x80008000800080) >> 8; @@ -604,7 +604,7 @@ Q_STATIC_INLINE_FUNCTION uint PREMUL(uint x) { #else // 32-bit versions -Q_STATIC_INLINE_FUNCTION uint INTERPOLATE_PIXEL_256(uint x, uint a, uint y, uint b) { +static Q_ALWAYS_INLINE uint INTERPOLATE_PIXEL_256(uint x, uint a, uint y, uint b) { uint t = (x & 0xff00ff) * a + (y & 0xff00ff) * b; t >>= 8; t &= 0xff00ff; @@ -619,7 +619,7 @@ Q_STATIC_INLINE_FUNCTION uint INTERPOLATE_PIXEL_256(uint x, uint a, uint y, uint # pragma push # pragma arm #endif -Q_STATIC_INLINE_FUNCTION uint BYTE_MUL(uint x, uint a) { +static Q_ALWAYS_INLINE uint BYTE_MUL(uint x, uint a) { uint t = (x & 0xff00ff) * a; t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8; t &= 0xff00ff; @@ -634,7 +634,7 @@ Q_STATIC_INLINE_FUNCTION uint BYTE_MUL(uint x, uint a) { # pragma pop #endif -Q_STATIC_INLINE_FUNCTION uint PREMUL(uint x) { +static Q_ALWAYS_INLINE uint PREMUL(uint x) { uint a = x >> 24; uint t = (x & 0xff00ff) * a; t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8; @@ -649,14 +649,14 @@ Q_STATIC_INLINE_FUNCTION uint PREMUL(uint x) { #endif -Q_STATIC_INLINE_FUNCTION uint BYTE_MUL_RGB16(uint x, uint a) { +static Q_ALWAYS_INLINE uint BYTE_MUL_RGB16(uint x, uint a) { a += 1; uint t = (((x & 0x07e0)*a) >> 8) & 0x07e0; t |= (((x & 0xf81f)*(a>>2)) >> 6) & 0xf81f; return t; } -Q_STATIC_INLINE_FUNCTION uint BYTE_MUL_RGB16_32(uint x, uint a) { +static Q_ALWAYS_INLINE uint BYTE_MUL_RGB16_32(uint x, uint a) { uint t = (((x & 0xf81f07e0) >> 5)*a) & 0xf81f07e0; t |= (((x & 0x07e0f81f)*a) >> 5) & 0x07e0f81f; return t; @@ -794,7 +794,7 @@ do { \ # pragma push # pragma arm #endif -Q_STATIC_INLINE_FUNCTION int qt_div_255(int x) { return (x + (x>>8) + 0x80) >> 8; } +static Q_ALWAYS_INLINE int qt_div_255(int x) { return (x + (x>>8) + 0x80) >> 8; } #if defined(Q_CC_RVCT) # pragma pop #endif -- cgit v1.2.3 From 2d98bd48e5145b798dceb254ee57d3c975bcf6b9 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 29 Dec 2011 20:05:04 -0200 Subject: Add Q_DECL_RESTRICT and Q_ALWAYS_INLINE for MSVC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I598463e5990e91a5a049d1f9f7a4aa80930c0904 Reviewed-by: Samuel Rødal --- src/gui/painting/qdrawhelper_p.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h index 7bd31d0ef5..f958538aa6 100644 --- a/src/gui/painting/qdrawhelper_p.h +++ b/src/gui/painting/qdrawhelper_p.h @@ -76,6 +76,10 @@ QT_BEGIN_NAMESPACE # define Q_STATIC_TEMPLATE_FUNCTION static # define Q_ALWAYS_INLINE inline __attribute__((always_inline)) # define Q_DECL_RESTRICT __restrict__ +#elif defined(Q_CC_MSVC) +# define Q_STATIC_TEMPLATE_FUNCTION static +# define Q_ALWAYS_INLINE __forceinline +# define Q_DECL_RESTRICT __restrict #else # define Q_STATIC_TEMPLATE_FUNCTION static # define Q_ALWAYS_INLINE inline -- cgit v1.2.3 From 7abc1a6a828eb36d26901d4ea5ecf8b4514f3cd7 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Jan 2013 21:28:22 -0800 Subject: Simplify a function to fix a warning reported by ICC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ICC thinks that the return statement is missing: src/plugins/accessible/widgets/itemviews.cpp(867): error #1011: missing return statement at end of non-void function "QAccessibleTableHeaderCell::parent" Clearly it's wrong, but the function is overly complex for no good reason. So just simplify it instead. Change-Id: Ic63029df18b4712d9864a4dc66b6751b2d4574b7 Reviewed-by: Jan Arve Sæther Reviewed-by: Frederik Gladhorn --- src/plugins/accessible/widgets/itemviews.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp index 71f47a7b56..17764a3c2e 100644 --- a/src/plugins/accessible/widgets/itemviews.cpp +++ b/src/plugins/accessible/widgets/itemviews.cpp @@ -1046,14 +1046,11 @@ bool QAccessibleTableHeaderCell::isValid() const QAccessibleInterface *QAccessibleTableHeaderCell::parent() const { - if (false) { #ifndef QT_NO_TREEVIEW - } else if (qobject_cast(view)) { + if (qobject_cast(view)) return new QAccessibleTree(view); #endif - } else { - return new QAccessibleTable(view); - } + return new QAccessibleTable(view); } QAccessibleInterface *QAccessibleTableHeaderCell::child(int) const -- cgit v1.2.3 From 86115848b55faa747adf8bb39a213b3cec7673c4 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Thu, 7 Feb 2013 10:24:01 +0100 Subject: Correctly detect HTML 5 charset attribute in QTextCodec::codecForHtml() QTextCodec::codecForHtml currently fails to detect the charset for this HTML: Test This patch makes the detection of charsets more flexible, allowing for the use of the HTML 5 charset attribute as well more terminator characters ("'", and ">"). I also added a *_data function for the unit tests. Task-number: QTBUG-5451 Change-Id: I69fe4a04582f0d845cbbe9140a86a950fb7dc861 Reviewed-by: Olivier Goffart Reviewed-by: Denis Dzyubenko --- src/corelib/codecs/qtextcodec.cpp | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp index 0e671518ef..511817677c 100644 --- a/src/corelib/codecs/qtextcodec.cpp +++ b/src/corelib/codecs/qtextcodec.cpp @@ -1043,28 +1043,30 @@ QString QTextDecoder::toUnicode(const QByteArray &ba) QTextCodec *QTextCodec::codecForHtml(const QByteArray &ba, QTextCodec *defaultCodec) { // determine charset - int pos; - QTextCodec *c = 0; - - c = QTextCodec::codecForUtfText(ba, c); + QTextCodec *c = QTextCodec::codecForUtfText(ba, 0); if (!c) { QByteArray header = ba.left(512).toLower(); - if ((pos = header.indexOf("http-equiv=")) != -1) { - if ((pos = header.lastIndexOf("meta ", pos)) != -1) { - pos = header.indexOf("charset=", pos) + int(strlen("charset=")); - if (pos != -1) { - int pos2 = header.indexOf('\"', pos+1); - QByteArray cs = header.mid(pos, pos2-pos); - // qDebug("found charset: %s", cs.data()); - c = QTextCodec::codecForName(cs); + int pos = header.indexOf("meta "); + if (pos != -1) { + pos = header.indexOf("charset=", pos); + if (pos != -1) { + pos += qstrlen("charset="); + + int pos2 = pos; + // The attribute can be closed with either """, "'", ">" or "/", + // none of which are valid charset characters. + while (++pos2 < header.size()) { + char ch = header.at(pos2); + if (ch == '\"' || ch == '\'' || ch == '>') { + c = QTextCodec::codecForName(header.mid(pos, pos2 - pos)); + return c ? c : defaultCodec; + } } } } } - if (!c) - c = defaultCodec; - return c; + return defaultCodec; } /*! -- cgit v1.2.3 From 4aa86461ebdc9e949ba5ca4b3c41deeb87536475 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Mon, 4 Feb 2013 17:08:24 +0100 Subject: Ensure QDateTime can handle QDate's full range of julian dates. Currently, using QDate::maxJd() in tests will fail. This patch changes some ints to qint64s to prevent overflows where necessary. Change-Id: I61ebf8f233411a7544689fd5bfa9c3abee54e933 Reviewed-by: Thiago Macieira --- src/corelib/tools/qdatetime.cpp | 10 +++++----- src/corelib/tools/qdatetime_p.h | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 5d1f8e7855..83db1c3cc9 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -2404,9 +2404,9 @@ uint QDateTime::toTime_t() const (Qt::UTC). On systems that do not support time zones this function will behave as if local time were Qt::UTC. - Note that there are possible values for \a msecs that lie outside the - valid range of QDateTime, both negative and positive. The behavior of - this function is undefined for those values. + Note that passing the minimum of \c qint64 + (\c{std::numeric_limits::min()}) to \a msecs will result in + undefined behavior. \sa toMSecsSinceEpoch(), setTime_t() */ @@ -4010,7 +4010,7 @@ static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time) time = QTime(); return QDateTimePrivate::LocalUnknown; } else { - int deltaDays = fakeDate.daysTo(date); + qint64 deltaDays = fakeDate.daysTo(date); date = QDate(brokenDown->tm_year + 1900, brokenDown->tm_mon + 1, brokenDown->tm_mday); time = QTime(brokenDown->tm_hour, brokenDown->tm_min, brokenDown->tm_sec, time.msec()); date = date.addDays(deltaDays); @@ -4078,7 +4078,7 @@ static void localToUtc(QDate &date, QTime &time, int isdst) date = QDate(1970, 1, 1); time = QTime(); } else { - int deltaDays = fakeDate.daysTo(date); + qint64 deltaDays = fakeDate.daysTo(date); date = QDate(brokenDown->tm_year + 1900, brokenDown->tm_mon + 1, brokenDown->tm_mday); time = QTime(brokenDown->tm_hour, brokenDown->tm_min, brokenDown->tm_sec, time.msec()); date = date.addDays(deltaDays); diff --git a/src/corelib/tools/qdatetime_p.h b/src/corelib/tools/qdatetime_p.h index 4f61e34bf9..c70571d509 100644 --- a/src/corelib/tools/qdatetime_p.h +++ b/src/corelib/tools/qdatetime_p.h @@ -101,6 +101,9 @@ public: void getUTC(QDate &outDate, QTime &outTime) const; static QDateTime addMSecs(const QDateTime &dt, qint64 msecs); static void addMSecs(QDate &utcDate, QTime &utcTime, qint64 msecs); + + static inline qint64 minJd() { return QDate::minJd(); } + static inline qint64 maxJd() { return QDate::maxJd(); } }; #ifndef QT_BOOTSTRAPPED -- cgit v1.2.3 From 1f5b10281fc275761a8a213fdba2edf2ccc7f17a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 12 Feb 2013 08:26:17 +0100 Subject: Document the QPainter::HighQualityAntialiasing render hint as obsolete. It was only used in the now removed OpenGL 1.x paint engine. Change-Id: I2237172de700bfd31ca25279fbed21d601785962 Reviewed-by: Gunnar Sletta --- src/gui/painting/qpainter.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index d95d55acd0..b59a0850e8 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -1155,9 +1155,6 @@ void QPainterPrivate::updateState(QPainterState *newState) should antialias text if possible, and the \l {RenderHint}{QPainter::SmoothPixmapTransform} indicates that the engine should use a smooth pixmap transformation algorithm. - \l {RenderHint}{HighQualityAntialiasing} is an OpenGL-specific rendering hint - indicating that the engine should use fragment programs and offscreen - rendering for antialiasing. The renderHints() function returns a flag that specifies the rendering hints that are set for this painter. Use the @@ -1409,9 +1406,8 @@ void QPainterPrivate::updateState(QPainterState *newState) a smooth pixmap transformation algorithm (such as bilinear) rather than nearest neighbor. - \value HighQualityAntialiasing An OpenGL-specific rendering hint - indicating that the engine should use fragment programs and offscreen - rendering for antialiasing. + \value HighQualityAntialiasing This value is obsolete and will be ignored, + use the Antialiasing render hint instead. \value NonCosmeticDefaultPen This value is obsolete, the default for QPen is now non-cosmetic. -- cgit v1.2.3 From 8840ad56a3afb185b4e0b9158130d6e265161f4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Mon, 11 Feb 2013 16:11:27 +0200 Subject: Use stub function rand_r for VxWorks DKM mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vxworks DKM mode does not have rand_r function, use function implementation from qfunctions_vxworks.h/cpp instead. Change-Id: I8f23c3453ab9f31280eb90f66dd83d7a64ee98c9 Reviewed-by: Samuel Rødal --- src/corelib/kernel/qfunctions_vxworks.cpp | 2 ++ src/corelib/kernel/qfunctions_vxworks.h | 2 ++ 2 files changed, 4 insertions(+) (limited to 'src') diff --git a/src/corelib/kernel/qfunctions_vxworks.cpp b/src/corelib/kernel/qfunctions_vxworks.cpp index 8d25ad6a8d..e1abecb9d6 100644 --- a/src/corelib/kernel/qfunctions_vxworks.cpp +++ b/src/corelib/kernel/qfunctions_vxworks.cpp @@ -76,10 +76,12 @@ void *lfind(const void* key, const void* base, size_t* elements, size_t size, // no rand_r(), but rand() // NOTE: this implementation is wrong for multi threaded applications, // but there is no way to get it right on VxWorks (in kernel mode) +#if defined(_WRS_KERNEL) int rand_r(unsigned int * /*seedp*/) { return rand(); } +#endif // no usleep() support int usleep(unsigned int usec) diff --git a/src/corelib/kernel/qfunctions_vxworks.h b/src/corelib/kernel/qfunctions_vxworks.h index d12a302c8d..02c599f490 100644 --- a/src/corelib/kernel/qfunctions_vxworks.h +++ b/src/corelib/kernel/qfunctions_vxworks.h @@ -134,7 +134,9 @@ void *lfind(const void* key, const void* base, size_t* elements, size_t size, // no rand_r(), but rand() // NOTE: this implementation is wrong for multi threaded applications, // but there is no way to get it right on VxWorks (in kernel mode) +#if defined(_WRS_KERNEL) int rand_r(unsigned int * /*seedp*/); +#endif // no usleep() support int usleep(unsigned int); -- cgit v1.2.3 From 8d2679673e6268f826abe6d4ef1734e9d69edab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Mon, 11 Feb 2013 16:40:10 +0200 Subject: Remove overlapping variable names defined in VxWorks headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VxWorks has defined variables with same name as in Qt's headers. Remove these undefines because that has already done in file src/corelib/kernel/qfunctions_vxworks.h. See related change f7bd8652caab2f53ced739ce90c640924d4962dc. Change-Id: I994ac9d00ca223b9fa955dfcba8ad6c8dcbd0549 Reviewed-by: Samuel Rødal --- src/corelib/io/qresource.cpp | 9 --------- src/gui/painting/qbrush.h | 9 --------- src/gui/painting/qtextureglyphcache_p.h | 4 ---- src/gui/painting/qtransform.h | 4 ---- 4 files changed, 26 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp index 0ce3ce3611..7dfc9b977c 100644 --- a/src/corelib/io/qresource.cpp +++ b/src/corelib/io/qresource.cpp @@ -62,15 +62,6 @@ //#define DEBUG_RESOURCE_MATCH -#if defined(Q_OS_VXWORKS) -# if defined(m_data) -# undef m_data -# endif -# if defined(m_len) -# undef m_len -# endif -#endif - QT_BEGIN_NAMESPACE diff --git a/src/gui/painting/qbrush.h b/src/gui/painting/qbrush.h index 6a89db6a52..4d8c97e255 100644 --- a/src/gui/painting/qbrush.h +++ b/src/gui/painting/qbrush.h @@ -52,15 +52,6 @@ #include #include -#if defined(Q_OS_VXWORKS) -# if defined(m_data) -# undef m_data -# endif -# if defined(m_type) -# undef m_type -# endif -#endif - QT_BEGIN_NAMESPACE diff --git a/src/gui/painting/qtextureglyphcache_p.h b/src/gui/painting/qtextureglyphcache_p.h index d0fe7ab8cb..d93f57ad80 100644 --- a/src/gui/painting/qtextureglyphcache_p.h +++ b/src/gui/painting/qtextureglyphcache_p.h @@ -60,10 +60,6 @@ #include -#if defined(Q_OS_VXWORKS) && defined(m_type) -# undef m_type -#endif - #ifndef QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH #define QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH 256 #endif diff --git a/src/gui/painting/qtransform.h b/src/gui/painting/qtransform.h index 22fc82bb58..060362f63e 100644 --- a/src/gui/painting/qtransform.h +++ b/src/gui/painting/qtransform.h @@ -50,10 +50,6 @@ #include #include -#if defined(Q_OS_VXWORKS) && defined(m_type) -# undef m_type -#endif - QT_BEGIN_NAMESPACE -- cgit v1.2.3 From 686dcce5fb2eef4adebfc2a247e96574ec062473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Wed, 5 Dec 2012 19:55:27 +0100 Subject: Make QGraphicsViewPrivate::updateRubberBand more readable This patch changes QGraphicsViewPrivate::updateRubberBand to return at once in case some of the first conditions (which were needed to do something with the rubberband) are not true. The indentation after these ifs is fixed, and there are a few style fixes, but beside the first 2 ifs, there are only white-space and new-line changes. Change-Id: I7e2edb7bfd334b35ee8ab246f733d854bff7e0f7 Reviewed-by: Andreas Aardal Hanssen Reviewed-by: Andy Shaw --- src/widgets/graphicsview/qgraphicsview.cpp | 77 ++++++++++++++---------------- 1 file changed, 36 insertions(+), 41 deletions(-) (limited to 'src') diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp index dca84f3f1b..9c04a3c193 100644 --- a/src/widgets/graphicsview/qgraphicsview.cpp +++ b/src/widgets/graphicsview/qgraphicsview.cpp @@ -709,52 +709,47 @@ QRegion QGraphicsViewPrivate::rubberBandRegion(const QWidget *widget, const QRec void QGraphicsViewPrivate::updateRubberBand(const QMouseEvent *event) { Q_Q(QGraphicsView); - if (dragMode == QGraphicsView::RubberBandDrag && sceneInteractionAllowed) { - if (rubberBanding) { - // Check for enough drag distance - if ((mousePressViewPoint - event->pos()).manhattanLength() - < QApplication::startDragDistance()) { - return; - } + if (dragMode != QGraphicsView::RubberBandDrag || !sceneInteractionAllowed || !rubberBanding) + return; + // Check for enough drag distance + if ((mousePressViewPoint - event->pos()).manhattanLength() < QApplication::startDragDistance()) + return; - // Update old rubberband - if (viewportUpdateMode != QGraphicsView::NoViewportUpdate && !rubberBandRect.isEmpty()) { - if (viewportUpdateMode != QGraphicsView::FullViewportUpdate) - q->viewport()->update(rubberBandRegion(q->viewport(), rubberBandRect)); - else - updateAll(); - } + // Update old rubberband + if (viewportUpdateMode != QGraphicsView::NoViewportUpdate && !rubberBandRect.isEmpty()) { + if (viewportUpdateMode != QGraphicsView::FullViewportUpdate) + q->viewport()->update(rubberBandRegion(q->viewport(), rubberBandRect)); + else + updateAll(); + } - // Stop rubber banding if the user has let go of all buttons (even - // if we didn't get the release events). - if (!event->buttons()) { - rubberBanding = false; - rubberBandRect = QRect(); - return; - } + // Stop rubber banding if the user has let go of all buttons (even + // if we didn't get the release events). + if (!event->buttons()) { + rubberBanding = false; + rubberBandRect = QRect(); + return; + } - // Update rubberband position - const QPoint mp = q->mapFromScene(mousePressScenePoint); - const QPoint ep = event->pos(); - rubberBandRect = QRect(qMin(mp.x(), ep.x()), qMin(mp.y(), ep.y()), - qAbs(mp.x() - ep.x()) + 1, qAbs(mp.y() - ep.y()) + 1); + // Update rubberband position + const QPoint mp = q->mapFromScene(mousePressScenePoint); + const QPoint ep = event->pos(); + rubberBandRect = QRect(qMin(mp.x(), ep.x()), qMin(mp.y(), ep.y()), + qAbs(mp.x() - ep.x()) + 1, qAbs(mp.y() - ep.y()) + 1); - // Update new rubberband - if (viewportUpdateMode != QGraphicsView::NoViewportUpdate){ - if (viewportUpdateMode != QGraphicsView::FullViewportUpdate) - q->viewport()->update(rubberBandRegion(q->viewport(), rubberBandRect)); - else - updateAll(); - } - // Set the new selection area - QPainterPath selectionArea; - selectionArea.addPolygon(mapToScene(rubberBandRect)); - selectionArea.closeSubpath(); - if (scene) - scene->setSelectionArea(selectionArea, rubberBandSelectionMode, - q->viewportTransform()); - } + // Update new rubberband + if (viewportUpdateMode != QGraphicsView::NoViewportUpdate) { + if (viewportUpdateMode != QGraphicsView::FullViewportUpdate) + q->viewport()->update(rubberBandRegion(q->viewport(), rubberBandRect)); + else + updateAll(); } + // Set the new selection area + QPainterPath selectionArea; + selectionArea.addPolygon(mapToScene(rubberBandRect)); + selectionArea.closeSubpath(); + if (scene) + scene->setSelectionArea(selectionArea, rubberBandSelectionMode, q->viewportTransform()); } #endif -- cgit v1.2.3 From fe6add818e2ab11fba3d9df12c29dfb29c65b2af Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Mon, 4 Feb 2013 17:03:38 +0100 Subject: Enablers in fbconvenience for Android port Additions to make the convenience classes work for the Qt for Android port. Change-Id: I25ba0faf93c7e09ab04a3fa0784e04631e5ab036 Reviewed-by: Gunnar Sletta --- src/platformsupport/fbconvenience/qfbscreen.cpp | 51 ++++++++++++++++++++----- src/platformsupport/fbconvenience/qfbscreen_p.h | 6 +++ src/platformsupport/fbconvenience/qfbwindow.cpp | 3 +- src/platformsupport/fbconvenience/qfbwindow_p.h | 2 +- 4 files changed, 51 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/platformsupport/fbconvenience/qfbscreen.cpp b/src/platformsupport/fbconvenience/qfbscreen.cpp index efabf6e2a8..5200177fdd 100644 --- a/src/platformsupport/fbconvenience/qfbscreen.cpp +++ b/src/platformsupport/fbconvenience/qfbscreen.cpp @@ -45,6 +45,7 @@ #include "qfbbackingstore_p.h" #include +#include QT_BEGIN_NAMESPACE @@ -72,6 +73,9 @@ void QFbScreen::addWindow(QFbWindow *window) mWindowStack.prepend(window); invalidateRectCache(); setDirty(window->geometry()); + QWindow *w = topWindow(); + QWindowSystemInterface::handleWindowActivated(w); + topWindowChanged(w); } void QFbScreen::removeWindow(QFbWindow *window) @@ -79,6 +83,9 @@ void QFbScreen::removeWindow(QFbWindow *window) mWindowStack.removeOne(window); invalidateRectCache(); setDirty(window->geometry()); + QWindow *w = topWindow(); + QWindowSystemInterface::handleWindowActivated(w); + topWindowChanged(w); } void QFbScreen::raise(QFbWindow *window) @@ -89,6 +96,9 @@ void QFbScreen::raise(QFbWindow *window) mWindowStack.move(index, 0); invalidateRectCache(); setDirty(window->geometry()); + QWindow *w = topWindow(); + QWindowSystemInterface::handleWindowActivated(w); + topWindowChanged(w); } void QFbScreen::lower(QFbWindow *window) @@ -99,20 +109,25 @@ void QFbScreen::lower(QFbWindow *window) mWindowStack.move(index, mWindowStack.size() - 1); invalidateRectCache(); setDirty(window->geometry()); + QWindow *w = topWindow(); + QWindowSystemInterface::handleWindowActivated(w); + topWindowChanged(w); +} + +QWindow *QFbScreen::topWindow() +{ + foreach (QFbWindow *fbw, mWindowStack) + if (fbw->window()->type() == Qt::Window || fbw->window()->type() == Qt::Dialog) + return fbw->window(); + return 0; } QWindow *QFbScreen::topLevelAt(const QPoint & p) const { - Q_UNUSED(p); -#if 0 - for (int i = 0; i < mWindowStack.size(); i++) { - if (mWindowStack[i]->geometry().contains(p, false) && - mWindowStack[i]->visible() && - !mWindowStack[i]->widget()->isMinimized()) { - return mWindowStack[i]->widget(); - } + foreach (QFbWindow *fbw, mWindowStack) { + if (fbw->geometry().contains(p, false) && fbw->window()->isVisible()) + return fbw->window(); } -#endif return 0; } @@ -126,6 +141,24 @@ void QFbScreen::setDirty(const QRect &rect) } } +void QFbScreen::setPhysicalSize(const QSize &size) +{ + mPhysicalSize = size; +} + +void QFbScreen::setGeometry(const QRect &rect) +{ + delete mCompositePainter; + mCompositePainter = 0; + delete mScreenImage; + mGeometry = rect; + mScreenImage = new QImage(mGeometry.size(), mFormat); + invalidateRectCache(); + QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), geometry()); + QWindowSystemInterface::handleScreenAvailableGeometryChange(QPlatformScreen::screen(), availableGeometry()); + resizeMaximizedWindows(); +} + void QFbScreen::generateRects() { mCachedRects.clear(); diff --git a/src/platformsupport/fbconvenience/qfbscreen_p.h b/src/platformsupport/fbconvenience/qfbscreen_p.h index 00e3f9bef4..00847922c5 100644 --- a/src/platformsupport/fbconvenience/qfbscreen_p.h +++ b/src/platformsupport/fbconvenience/qfbscreen_p.h @@ -64,6 +64,7 @@ public: virtual QImage::Format format() const { return mFormat; } virtual QSizeF physicalSize() const { return mPhysicalSize; } + QWindow *topWindow(); virtual QWindow *topLevelAt(const QPoint & p) const; // compositor api @@ -71,7 +72,12 @@ public: virtual void removeWindow(QFbWindow *window); virtual void raise(QFbWindow *window); virtual void lower(QFbWindow *window); + virtual void topWindowChanged(QWindow *){} + +public slots: virtual void setDirty(const QRect &rect); + void setPhysicalSize(const QSize &size); + void setGeometry(const QRect &rect); protected slots: virtual QRegion doRedraw(); diff --git a/src/platformsupport/fbconvenience/qfbwindow.cpp b/src/platformsupport/fbconvenience/qfbwindow.cpp index e052907c79..246f50b4a9 100644 --- a/src/platformsupport/fbconvenience/qfbwindow.cpp +++ b/src/platformsupport/fbconvenience/qfbwindow.cpp @@ -43,6 +43,7 @@ #include "qfbscreen_p.h" #include +#include QT_BEGIN_NAMESPACE @@ -71,7 +72,7 @@ void QFbWindow::setGeometry(const QRect &rect) mOldGeometry = geometry(); platformScreen()->invalidateRectCache(); - //### QWindowSystemInterface::handleGeometryChange(window(), rect); + QWindowSystemInterface::handleGeometryChange(window(), rect); QPlatformWindow::setGeometry(rect); } diff --git a/src/platformsupport/fbconvenience/qfbwindow_p.h b/src/platformsupport/fbconvenience/qfbwindow_p.h index 8c7d5c6b7a..25e2afca14 100644 --- a/src/platformsupport/fbconvenience/qfbwindow_p.h +++ b/src/platformsupport/fbconvenience/qfbwindow_p.h @@ -58,7 +58,7 @@ public: virtual void raise(); virtual void lower(); - void setGeometry(const QRect &rect); + virtual void setGeometry(const QRect &rect); virtual void setWindowFlags(Qt::WindowFlags type); virtual Qt::WindowFlags windowFlags() const; -- cgit v1.2.3 From 23b11e792cd0bd91afc026b103f55d450cc20fe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Fri, 8 Feb 2013 10:49:52 +0100 Subject: Added QWindow::Visibility convenience API to QWindow. This finally makes it possible to make windows fullscreen etc from QML by doing "visibility: Window.FullScreen". I don't see any reason from not having the API at the QWindow-level instead of at the QQuickWindow-level since this way it can benefit other use cases too. Change-Id: If27344306eb563bc2ccd83296a46b1f2862e2db1 Reviewed-by: Friedemann Kleint Reviewed-by: Gunnar Sletta --- src/gui/kernel/qwindow.cpp | 120 +++++++++++++++++++++++++++++++++++++++++++++ src/gui/kernel/qwindow.h | 15 ++++++ src/gui/kernel/qwindow_p.h | 4 ++ 3 files changed, 139 insertions(+) (limited to 'src') diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index db6afe1faa..bf3eb67778 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -115,6 +115,9 @@ QT_BEGIN_NAMESPACE windowing systems that do not make this information visible to the application, isExposed() will simply return the same value as isVisible(). + QWindow::Visibility queried through visibility() is a convenience API + combining the functions of visible() and windowState(). + \section1 Rendering There are two Qt APIs that can be used to render content into a window, @@ -215,6 +218,120 @@ QWindow::~QWindow() destroy(); } +/*! + \enum QWindow::Visibility + \since 5.1 + + This enum describes what part of the screen the window occupies or should + occupy. + + \value Windowed The window occupies part of the screen, but not necessarily + the entire screen. This state will occur only on windowing systems which + support showing multiple windows simultaneously. In this state it is + possible for the user to move and resize the window manually, if + WindowFlags permit it and if it is supported by the windowing system. + + \value Minimized The window is reduced to an entry or icon on the task bar, + dock, task list or desktop, depending on how the windowing system handles + minimized windows. + + \value Maximized The window occupies one entire screen, and the titlebar is + still visible. On most windowing systems this is the state achieved by + clicking the maximize button on the toolbar. + + \value FullScreen The window occupies one entire screen, is not resizable, + and there is no titlebar. On some platforms which do not support showing + multiple simultaneous windows, this can be the usual visibility when the + window is not hidden. + + \value AutomaticVisibility This means to give the window a default visible + state, which might be fullscreen or windowed depending on the platform. + It can be given as a parameter to setVisibility but will never be + read back from the visibility accessor. + + \value Hidden The window is not visible in any way, however it may remember + a latent visibility which can be restored by setting AutomaticVisibility. +*/ + +/*! + \property QWindow::visibility + \brief the screen-occupation state of the window + \since 5.1 + + Visibility is whether the window should appear in the windowing system as + normal, minimized, maximized, fullscreen or hidden. + + To set the visibility to AutomaticVisibility means to give the window + a default visible state, which might be fullscreen or windowed depending on + the platform. + When reading the visibility property you will always get the actual state, + never AutomaticVisibility. +*/ +QWindow::Visibility QWindow::visibility() const +{ + Q_D(const QWindow); + return d->visibility; +} + +void QWindow::setVisibility(Visibility v) +{ + switch (v) { + case Hidden: + hide(); + break; + case AutomaticVisibility: + show(); + break; + case Windowed: + showNormal(); + break; + case Minimized: + showMinimized(); + break; + case Maximized: + showMaximized(); + break; + case FullScreen: + showFullScreen(); + break; + default: + Q_ASSERT(false); + break; + } +} + +void QWindowPrivate::updateVisibility() +{ + Q_Q(QWindow); + + QWindow::Visibility old = visibility; + + if (visible) { + switch (windowState) { + case Qt::WindowMinimized: + visibility = QWindow::Minimized; + break; + case Qt::WindowMaximized: + visibility = QWindow::Maximized; + break; + case Qt::WindowFullScreen: + visibility = QWindow::FullScreen; + break; + case Qt::WindowNoState: + visibility = QWindow::Windowed; + break; + default: + Q_ASSERT(false); + break; + } + } else { + visibility = QWindow::Hidden; + } + + if (visibility != old) + emit q->visibilityChanged(visibility); +} + /*! Sets the \a surfaceType of the window. @@ -264,6 +381,7 @@ void QWindow::setVisible(bool visible) return; d->visible = visible; emit visibleChanged(visible); + d->updateVisibility(); if (!d->platformWindow) create(); @@ -808,6 +926,7 @@ void QWindow::setWindowState(Qt::WindowState state) d->platformWindow->setWindowState(state); d->windowState = state; emit windowStateChanged(d->windowState); + d->updateVisibility(); } /*! @@ -1724,6 +1843,7 @@ bool QWindow::event(QEvent *ev) case QEvent::WindowStateChange: { Q_D(QWindow); emit windowStateChanged(d->windowState); + d->updateVisibility(); break; } diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index e304fd4c4f..4b8f0ca3e7 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -91,6 +91,8 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface Q_OBJECT Q_DECLARE_PRIVATE(QWindow) + Q_ENUMS(Visibility) + // All properties which are declared here are inherited by QQuickWindow and therefore available in QML. // So please think carefully about what it does to the QML namespace if you add any new ones, // particularly the possible meanings these names might have in any specializations of Window. @@ -109,10 +111,19 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface Q_PROPERTY(int maximumWidth READ maximumWidth WRITE setMaximumWidth NOTIFY maximumWidthChanged) Q_PROPERTY(int maximumHeight READ maximumHeight WRITE setMaximumHeight NOTIFY maximumHeightChanged) Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged) + Q_PROPERTY(Visibility visibility READ visibility WRITE setVisibility NOTIFY visibilityChanged) Q_PROPERTY(Qt::ScreenOrientation contentOrientation READ contentOrientation WRITE reportContentOrientationChange NOTIFY contentOrientationChanged) Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged) public: + enum Visibility { + Hidden = 0, + AutomaticVisibility, + Windowed, + Minimized, + Maximized, + FullScreen + }; explicit QWindow(QScreen *screen = 0); explicit QWindow(QWindow *parent); @@ -123,6 +134,9 @@ public: bool isVisible() const; + Visibility visibility() const; + void setVisibility(Visibility v); + void create(); WId winId() const; @@ -284,6 +298,7 @@ Q_SIGNALS: void maximumHeightChanged(int arg); void visibleChanged(bool arg); + void visibilityChanged(QWindow::Visibility visibility); void contentOrientationChanged(Qt::ScreenOrientation orientation); void focusObjectChanged(QObject *object); diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h index a5c26e380e..bcbface370 100644 --- a/src/gui/kernel/qwindow_p.h +++ b/src/gui/kernel/qwindow_p.h @@ -83,6 +83,7 @@ public: , visible(false) , exposed(false) , windowState(Qt::WindowNoState) + , visibility(QWindow::Hidden) , resizeEventPending(true) , receivedExpose(false) , positionPolicy(WindowFrameExclusive) @@ -122,6 +123,8 @@ public: virtual QWindow *eventReceiver() { Q_Q(QWindow); return q; } + void updateVisibility(); + QWindow::SurfaceType surfaceType; Qt::WindowFlags windowFlags; QWindow *parentWindow; @@ -134,6 +137,7 @@ public: QIcon windowIcon; QRect geometry; Qt::WindowState windowState; + QWindow::Visibility visibility; bool resizeEventPending; bool receivedExpose; PositionPolicy positionPolicy; -- cgit v1.2.3 From 183e04a43996f7c4734ab97f20da6ba852dce918 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 11 Feb 2013 13:49:42 +0100 Subject: Don't use the fallback list to decide if the CoreText font db was populated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In some situation (such as iOS currently) we may end up with an empty fallback list, and we don't want to re-populate the font database on every call to fallbacksForFamily(). We do not guard populateFontDatabase(), since it's called both initially and every time the font database has been invalidated. Change-Id: Ief1342c40f75e5d393e054e9a20bc94bc357d482 Reviewed-by: Tor Arne Vestbø --- src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index 6035aa6755..f6dfea31dc 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -381,8 +381,12 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFo Q_UNUSED(family); Q_UNUSED(style); Q_UNUSED(script); - if (fallbackLists.isEmpty()) + + static bool didPopulateFallbackList = false; + if (!didPopulateFallbackList) { const_cast(this)->populateFontDatabase(); + didPopulateFallbackList = true; + } return fallbackLists[styleHint]; } -- cgit v1.2.3 From 74f9664f950e9ea4f385cd70f822e10d7be1aca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 11 Feb 2013 17:31:12 +0100 Subject: Use CTFontCopyDefaultCascadeListForLanguages for font fallback if available On Mac OS 10.8 and iOS 6.0 we can use CTFontCopyDefaultCascadeListForLanguages to get the list of fallback fonts, which is preferable to reading the plist file from the filesystem. The latter doesn't work (is not allowed) on iOS in any case, so for iOS < 6.0 we use a static list of fallback fonts. Change-Id: Ibb5e1b4dedd6bfb936f66b53a20f7ced83536ed7 Reviewed-by: Richard Moe Gustavsen Reviewed-by: Eskil Abrahamsen Blomfeldt --- .../fontdatabases/mac/qcoretextfontdatabase.mm | 194 ++++++++++++++------- .../fontdatabases/mac/qcoretextfontdatabase_p.h | 3 +- 2 files changed, 129 insertions(+), 68 deletions(-) (limited to 'src') diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index f6dfea31dc..4a4c396828 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -91,22 +91,6 @@ static const char *languageForWritingSystem[] = { }; enum { LanguageCount = sizeof(languageForWritingSystem) / sizeof(const char *) }; -QFont::StyleHint styleHintFromNSString(NSString *style) -{ - if ([style isEqual: @"sans-serif"]) - return QFont::SansSerif; - else if ([style isEqual: @"monospace"]) - return QFont::Monospace; - else if ([style isEqual: @"cursive"]) - return QFont::Cursive; - else if ([style isEqual: @"serif"]) - return QFont::Serif; - else if ([style isEqual: @"fantasy"]) - return QFont::Fantasy; - else // if ([style isEqual: @"default"]) - return QFont::AnyStyle; -} - static NSInteger languageMapSort(id obj1, id obj2, void *context) { NSArray *map1 = (NSArray *) obj1; @@ -188,27 +172,6 @@ QCoreTextFontDatabase::~QCoreTextFontDatabase() { } -static QString familyNameFromPostScriptName(QHash &psNameToFamily, - NSString *psName) -{ - QString name = QCFString::toQString(psName); - if (psNameToFamily.contains(name)) - return psNameToFamily[name]; - else { - // Some of the font name in DefaultFontFallbacks.plist are hidden fonts like AquaHiraKaku, - // their family name begins with a dot, like ".AquaHiraKaku" or ".Apple Symbols Fallback", - // the only way (I've found) to get it are actually creating a CTFont with them. We only - // need to do it once though. - QCFType font = CTFontCreateWithName((CFStringRef) psName, 12.0, NULL); - if (font) { - QCFString family = CTFontCopyFamilyName(font); - psNameToFamily[name] = family; - return family; - } - return name; - } -} - void QCoreTextFontDatabase::populateFontDatabase() { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -223,7 +186,6 @@ void QCoreTextFontDatabase::populateFontDatabase() QString foundryName = QLatin1String("CoreText"); const int numFonts = CFArrayGetCount(fonts); - QHash psNameToFamily; for (int i = 0; i < numFonts; ++i) { CTFontDescriptorRef font = (CTFontDescriptorRef) CFArrayGetValueAtIndex(fonts, i); QCFString familyName = (CFStringRef) CTFontDescriptorCopyLocalizedAttribute(font, kCTFontFamilyNameAttribute, NULL); @@ -289,35 +251,14 @@ void QCoreTextFontDatabase::populateFontDatabase() QPlatformFontDatabase::registerFont(familyName, styleName, foundryName, weight, style, stretch, true /* antialiased */, true /* scalable */, pixelSize, fixedPitch, writingSystems, (void *) font); + + // We need to map back and forth between PostScript-names and family-names for fallback list construction CFStringRef psName = (CFStringRef) CTFontDescriptorCopyAttribute(font, kCTFontNameAttribute); - // we need PostScript Name to family name mapping for fallback list construction psNameToFamily[QCFString::toQString((NSString *) psName)] = familyName; + familyNameToPsName[familyName] = QCFString::toQString((NSString *) psName); CFRelease(psName); } - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSArray *languages = [defaults stringArrayForKey: @"AppleLanguages"]; - - NSDictionary *fallbackDict = [NSDictionary dictionaryWithContentsOfFile: @"/System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreText.framework/Resources/DefaultFontFallbacks.plist"]; - - for (NSString *style in [fallbackDict allKeys]) { - NSArray *list = [fallbackDict valueForKey: style]; - QFont::StyleHint styleHint = styleHintFromNSString(style); - QStringList fallbackList; - for (id item in list) { - // sort the array based on system language preferences - if ([item isKindOfClass: [NSArray class]]) { - NSArray *langs = [(NSArray *) item sortedArrayUsingFunction: languageMapSort - context: languages]; - for (NSArray *map in langs) - fallbackList.append(familyNameFromPostScriptName(psNameToFamily, [map objectAtIndex: 1])); - } - else if ([item isKindOfClass: [NSString class]]) - fallbackList.append(familyNameFromPostScriptName(psNameToFamily, item)); - } - fallbackLists[styleHint] = fallbackList; - } - [pool release]; } @@ -376,18 +317,137 @@ QFontEngine *QCoreTextFontDatabase::fontEngine(const QByteArray &fontData, qreal return fontEngine; } +QFont::StyleHint styleHintFromNSString(NSString *style) +{ + if ([style isEqual: @"sans-serif"]) + return QFont::SansSerif; + else if ([style isEqual: @"monospace"]) + return QFont::Monospace; + else if ([style isEqual: @"cursive"]) + return QFont::Cursive; + else if ([style isEqual: @"serif"]) + return QFont::Serif; + else if ([style isEqual: @"fantasy"]) + return QFont::Fantasy; + else // if ([style isEqual: @"default"]) + return QFont::AnyStyle; +} + +static QString familyNameFromPostScriptName(QHash &psNameToFamily, + NSString *psName) +{ + QString name = QCFString::toQString(psName); + if (psNameToFamily.contains(name)) + return psNameToFamily[name]; + else { + // Some of the font name in DefaultFontFallbacks.plist are hidden fonts like AquaHiraKaku, + // their family name begins with a dot, like ".AquaHiraKaku" or ".Apple Symbols Fallback", + // the only way (I've found) to get it are actually creating a CTFont with them. We only + // need to do it once though. + QCFType font = CTFontCreateWithName((CFStringRef) psName, 12.0, NULL); + if (font) { + QCFString family = CTFontCopyFamilyName(font); + psNameToFamily[name] = family; + return family; + } + return name; + } +} + QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) const { - Q_UNUSED(family); Q_UNUSED(style); Q_UNUSED(script); - static bool didPopulateFallbackList = false; - if (!didPopulateFallbackList) { + static QHash fallbackLists; + +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 || __IPHONE_OS_VERSION_MAX_ALLOWED >= 60000 + // CTFontCopyDefaultCascadeListForLanguages is available in the SDK + #if (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 1080) \ + || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 60000) + // But we have to feature check at runtime + if (&CTFontCopyDefaultCascadeListForLanguages) + #endif + { + if (fallbackLists.contains(family)) + return fallbackLists.value(family); + + if (!familyNameToPsName.contains(family)) + const_cast(this)->populateFontDatabase(); + + QCFType font = CTFontCreateWithName(QCFString(familyNameToPsName[family]), 12.0, NULL); + if (font) { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSArray *languages = [defaults stringArrayForKey: @"AppleLanguages"]; + + QCFType cascadeList = (CFArrayRef) CTFontCopyDefaultCascadeListForLanguages(font, (CFArrayRef) languages); + if (cascadeList) { + QStringList fallbackList; + const int numCascades = CFArrayGetCount(cascadeList); + for (int i = 0; i < numCascades; ++i) { + CTFontDescriptorRef fontFallback = (CTFontDescriptorRef) CFArrayGetValueAtIndex(cascadeList, i); + QCFString fallbackFamilyName = (CFStringRef) CTFontDescriptorCopyLocalizedAttribute(fontFallback, kCTFontFamilyNameAttribute, NULL); + fallbackList.append(QCFString::toQString(fallbackFamilyName)); + } + fallbackLists[family] = fallbackList; + } + } + + if (fallbackLists.contains(family)) + return fallbackLists.value(family); + } +#endif + + // We were not able to find a fallback for the specific family, + // so we fall back to the stylehint. + + static const QString styleLookupKey = QString::fromLatin1(".QFontStyleHint_%1"); + + static bool didPopulateStyleFallbacks = false; + if (!didPopulateStyleFallbacks) { +#if !defined(Q_OS_IOS) + // Ensure we have the psNameToFamily mapping set up const_cast(this)->populateFontDatabase(); - didPopulateFallbackList = true; + + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSArray *languages = [defaults stringArrayForKey: @"AppleLanguages"]; + + NSDictionary *fallbackDict = [NSDictionary dictionaryWithContentsOfFile: @"/System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreText.framework/Resources/DefaultFontFallbacks.plist"]; + + for (NSString *style in [fallbackDict allKeys]) { + NSArray *list = [fallbackDict valueForKey: style]; + QFont::StyleHint fallbackStyleHint = styleHintFromNSString(style); + QStringList fallbackList; + for (id item in list) { + // sort the array based on system language preferences + if ([item isKindOfClass: [NSArray class]]) { + NSArray *langs = [(NSArray *) item sortedArrayUsingFunction: languageMapSort + context: languages]; + for (NSArray *map in langs) + fallbackList.append(familyNameFromPostScriptName(psNameToFamily, [map objectAtIndex: 1])); + } + else if ([item isKindOfClass: [NSString class]]) + fallbackList.append(familyNameFromPostScriptName(psNameToFamily, item)); + } + fallbackLists[styleLookupKey.arg(fallbackStyleHint)] = fallbackList; + } +#else + QStringList staticFallbackList; + staticFallbackList << QString::fromLatin1("Helvetica,Apple Color Emoji,Geeza Pro,Arial Hebrew,Thonburi,Kailasa" + "Hiragino Kaku Gothic ProN,.Heiti J,Apple SD Gothic Neo,.Heiti K,Heiti SC,Heiti TC" + "Bangla Sangam MN,Devanagari Sangam MN,Gujarati Sangam MN,Gurmukhi MN,Kannada Sangam MN" + "Malayalam Sangam MN,Oriya Sangam MN,Sinhala Sangam MN,Tamil Sangam MN,Telugu Sangam MN" + "Euphemia UCAS,.PhoneFallback").split(QLatin1String(",")); + + for (int i = QFont::Helvetica; i <= QFont::Fantasy; ++i) + fallbackLists[styleLookupKey.arg(i)] = staticFallbackList; +#endif + + didPopulateStyleFallbacks = true; } - return fallbackLists[styleHint]; + + Q_ASSERT(!fallbackLists.isEmpty()); + return fallbackLists[styleLookupKey.arg(styleHint)]; } #ifndef Q_OS_IOS diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h index e4d45ab57a..5b9b8e2329 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h @@ -64,7 +64,8 @@ public: private: mutable QString defaultFontName; - QHash fallbackLists; + mutable QHash psNameToFamily; + mutable QHash familyNameToPsName; }; QT_END_NAMESPACE -- cgit v1.2.3 From 8f00f2020b37388ab309fdf39e85a3b3c9814e1d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 11 Feb 2013 18:05:52 -0800 Subject: Leave some Qt 6 remarks for QStringRef QStringRef could have been trivial. The destructor is empty, the copy constructor copies exactly the members and has an empty body and all the members are POD. Both functions should be removed or defaulted in Qt 6. When the destructor is defaulted, we can make the constructor constexpr. We can't do that now because QStringRef is exported and some nasty compilers (MSVC) like to export all functions, even inline ones, and then call them without emitting a local copy. Change-Id: Ie7509fd1a3f737a6c9156ea078d13bb347fc6be0 Reviewed-by: Olivier Goffart --- src/corelib/tools/qstring.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 1e45da060c..9cde603c0b 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -1173,13 +1173,17 @@ class Q_CORE_EXPORT QStringRef { int m_position; int m_size; public: + // ### Qt 6: make this constructor constexpr, after the destructor is made trivial inline QStringRef():m_string(0), m_position(0), m_size(0){} inline QStringRef(const QString *string, int position, int size); inline QStringRef(const QString *string); + + // ### Qt 6: remove this copy constructor, the implicit one is fine inline QStringRef(const QStringRef &other) :m_string(other.m_string), m_position(other.m_position), m_size(other.m_size) {} + // ### Qt 6: remove this destructor, the implicit one is fine inline ~QStringRef(){} inline const QString *string() const { return m_string; } inline int position() const { return m_position; } -- cgit v1.2.3 From a317ee0a6fa76d1166f6da8593d39eaf7afce83c Mon Sep 17 00:00:00 2001 From: Caroline Chao Date: Tue, 5 Feb 2013 13:04:01 +0100 Subject: Fix sizeHint for QAbstractSpinBox The current size hint is not correct and the text is truncated when using prefix/suffix. Update QCommonStyle::sizeFromContents() to get the button and frame widths into account for the QSpinBox width. Update sizeFromContents() in the different styles to be consistent with the change in QCommonStyle. Update minimumSizeHint(), calculate it using the prefix and data range. The SpinBox can shrunk over the suffix if any. Task-number: QTBUG-28863 Change-Id: Ia742232edf8b11d0283e8136c2818928f8755103 Reviewed-by: J-P Nurmi --- src/widgets/styles/qcommonstyle.cpp | 10 +++++++++ src/widgets/styles/qgtkstyle.cpp | 2 +- src/widgets/styles/qmacstyle_mac.mm | 5 +++-- src/widgets/styles/qwindowsstyle.cpp | 1 - src/widgets/widgets/qabstractspinbox.cpp | 38 +++++++++++++++++--------------- src/widgets/widgets/qdatetimeedit.cpp | 16 +++----------- src/widgets/widgets/qspinbox.cpp | 1 + 7 files changed, 38 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 969e31d881..1a41b6dbaa 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -4808,6 +4808,16 @@ QSize QCommonStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, } break; #endif // QT_NO_ITEMVIEWS +#ifndef QT_NO_SPINBOX + case CT_SpinBox: + if (const QStyleOptionSpinBox *vopt = qstyleoption_cast(opt)) { + // Add button + frame widths + int buttonWidth = 20; + int fw = vopt->frame ? proxy()->pixelMetric(PM_SpinBoxFrameWidth, vopt, widget) : 0; + sz += QSize(buttonWidth + 2*fw, 2*fw); + } + break; +#endif case CT_ScrollBar: case CT_MenuBar: case CT_Menu: diff --git a/src/widgets/styles/qgtkstyle.cpp b/src/widgets/styles/qgtkstyle.cpp index da9c13b97f..52c1e2376c 100644 --- a/src/widgets/styles/qgtkstyle.cpp +++ b/src/widgets/styles/qgtkstyle.cpp @@ -3910,7 +3910,7 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, break; case CT_SpinBox: // QSpinBox does some nasty things that depends on CT_LineEdit - newSize = size + QSize(0, -d->gtk_widget_get_style(d->gtkWidget("GtkSpinButton"))->ythickness * 2); + newSize = newSize + QSize(0, -d->gtk_widget_get_style(d->gtkWidget("GtkSpinButton"))->ythickness * 2); break; case CT_RadioButton: case CT_CheckBox: diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index dddeb97f32..a58f6e710b 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -5985,10 +5985,11 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, switch (ct) { case QStyle::CT_SpinBox: - // hack to work around horrible sizeHint() code in QAbstractSpinBox + // hack to work around horrible sizeHint() code in QAbstractSpinBox + sz = QCommonStyle::sizeFromContents(ct, opt, csz, widget); sz.setHeight(sz.height() - 3); break; - case QStyle::CT_TabWidget: + case QStyle::CT_TabWidget: // the size between the pane and the "contentsRect" (+4,+4) // (the "contentsRect" is on the inside of the pane) sz = QCommonStyle::sizeFromContents(ct, opt, csz, widget); diff --git a/src/widgets/styles/qwindowsstyle.cpp b/src/widgets/styles/qwindowsstyle.cpp index 2b48096a7b..e288b1854d 100644 --- a/src/widgets/styles/qwindowsstyle.cpp +++ b/src/widgets/styles/qwindowsstyle.cpp @@ -2358,7 +2358,6 @@ QSize QWindowsStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, sz += QSize(QWindowsStylePrivate::windowsItemHMargin * 4, QWindowsStylePrivate::windowsItemVMargin * 2); break; #endif - // Otherwise, fall through case CT_ToolButton: if (qstyleoption_cast(opt)) return sz += QSize(7, 6); diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp index 14d22c458b..c2b04ce461 100644 --- a/src/widgets/widgets/qabstractspinbox.cpp +++ b/src/widgets/widgets/qabstractspinbox.cpp @@ -825,14 +825,13 @@ QSize QAbstractSpinBox::sizeHint() const ensurePolished(); const QFontMetrics fm(fontMetrics()); - int h = d->edit->sizeHint().height() + 4; + int h = d->edit->sizeHint().height(); int w = 0; QString s; - s = d->prefix + d->textFromValue(d->minimum) + d->suffix + QLatin1Char(' '); - s.truncate(18); + QString fixedContent = d->prefix + d->suffix + QLatin1Char(' '); + s = d->textFromValue(d->minimum) + fixedContent; w = qMax(w, fm.width(s)); - s = d->prefix + d->textFromValue(d->maximum) + d->suffix + QLatin1Char(' '); - s.truncate(18); + s = d->textFromValue(d->maximum) + fixedContent; w = qMax(w, fm.width(s)); if (d->specialValueText.size()) { s = d->specialValueText; @@ -857,27 +856,29 @@ QSize QAbstractSpinBox::minimumSizeHint() const { Q_D(const QAbstractSpinBox); if (d->cachedMinimumSizeHint.isEmpty()) { + //Use the prefix and range to calculate the minimumSizeHint ensurePolished(); const QFontMetrics fm(fontMetrics()); int h = d->edit->minimumSizeHint().height(); - int w = fm.width(QLatin1String("1000")); + int w = 0; + + QString s; + QString fixedContent = d->prefix + QLatin1Char(' '); + s = d->textFromValue(d->minimum) + fixedContent; + w = qMax(w, fm.width(s)); + s = d->textFromValue(d->maximum) + fixedContent; + w = qMax(w, fm.width(s)); + + if (d->specialValueText.size()) { + s = d->specialValueText; + w = qMax(w, fm.width(s)); + } w += 2; // cursor blinking space QStyleOptionSpinBox opt; initStyleOption(&opt); QSize hint(w, h); - QSize extra(35, 6); - opt.rect.setSize(hint + extra); - extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt, - QStyle::SC_SpinBoxEditField, this).size(); - // get closer to final result by repeating the calculation - opt.rect.setSize(hint + extra); - extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt, - QStyle::SC_SpinBoxEditField, this).size(); - hint += extra; - - opt.rect = rect(); d->cachedMinimumSizeHint = style()->sizeFromContents(QStyle::CT_SpinBox, &opt, hint, this) .expandedTo(QApplication::globalStrut()); @@ -1724,7 +1725,8 @@ void QAbstractSpinBoxPrivate::setRange(const QVariant &min, const QVariant &max) clearCache(); minimum = min; maximum = (variantCompare(min, max) < 0 ? max : min); - cachedSizeHint = QSize(); // minimumSizeHint doesn't care about min/max + cachedSizeHint = QSize(); + cachedMinimumSizeHint = QSize(); // minimumSizeHint cares about min/max reset(); if (!(bound(value) == value)) { diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp index fb64850923..7ee2bf64fb 100644 --- a/src/widgets/widgets/qdatetimeedit.cpp +++ b/src/widgets/widgets/qdatetimeedit.cpp @@ -981,9 +981,9 @@ QSize QDateTimeEdit::sizeHint() const int h = d->edit->sizeHint().height(); int w = 0; QString s; - s = d->textFromValue(d->minimum) + QLatin1String(" "); + s = d->textFromValue(d->minimum) + QLatin1Char(' '); w = qMax(w, fm.width(s)); - s = d->textFromValue(d->maximum) + QLatin1String(" "); + s = d->textFromValue(d->maximum) + QLatin1Char(' '); w = qMax(w, fm.width(s)); if (d->specialValueText.size()) { s = d->specialValueText; @@ -1000,19 +1000,8 @@ QSize QDateTimeEdit::sizeHint() const } else #endif { - QSize extra(35, 6); QStyleOptionSpinBox opt; initStyleOption(&opt); - opt.rect.setSize(hint + extra); - extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt, - QStyle::SC_SpinBoxEditField, this).size(); - // get closer to final result by repeating the calculation - opt.rect.setSize(hint + extra); - extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt, - QStyle::SC_SpinBoxEditField, this).size(); - hint += extra; - - opt.rect = rect(); d->cachedSizeHint = style()->sizeFromContents(QStyle::CT_SpinBox, &opt, hint, this) .expandedTo(QApplication::globalStrut()); } @@ -1023,6 +1012,7 @@ QSize QDateTimeEdit::sizeHint() const return d->cachedSizeHint; } + /*! \reimp */ diff --git a/src/widgets/widgets/qspinbox.cpp b/src/widgets/widgets/qspinbox.cpp index e61c1c877a..b51bf4c078 100644 --- a/src/widgets/widgets/qspinbox.cpp +++ b/src/widgets/widgets/qspinbox.cpp @@ -268,6 +268,7 @@ void QSpinBox::setPrefix(const QString &prefix) d->updateEdit(); d->cachedSizeHint = QSize(); + d->cachedMinimumSizeHint = QSize(); // minimumSizeHint cares about the prefix updateGeometry(); } -- cgit v1.2.3 From bcd04af4e8c6bbd4aba19369ac718df78cf88e9c Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 30 Jan 2013 22:38:48 +0000 Subject: QRegularExpression: don't use study data when getting the pattern info Information about the pattern (number of capturing groups, newline settings, etc.) are grabbed when the pattern is compiled the first time. Studying (=> optimizing) is always done later, after a certain amount of usages. In case this ever changes, add an assert. Besides, we're not grabbing any info that require studying the pattern first. Change-Id: Ica15fa21f7bf13213288d7090d3396a89900078e Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 510b7112af..706856c70b 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -979,12 +979,13 @@ void QRegularExpressionPrivate::compilePattern() void QRegularExpressionPrivate::getPatternInfo() { Q_ASSERT(compiledPattern); + Q_ASSERT(studyData == 0); pcre16_fullinfo(compiledPattern, 0, PCRE_INFO_CAPTURECOUNT, &capturingCount); // detect the settings for the newline unsigned long int patternNewlineSetting; - pcre16_fullinfo(compiledPattern, studyData, PCRE_INFO_OPTIONS, &patternNewlineSetting); + pcre16_fullinfo(compiledPattern, 0, PCRE_INFO_OPTIONS, &patternNewlineSetting); patternNewlineSetting &= PCRE_NEWLINE_CR | PCRE_NEWLINE_LF | PCRE_NEWLINE_CRLF | PCRE_NEWLINE_ANY | PCRE_NEWLINE_ANYCRLF; if (patternNewlineSetting == 0) { -- cgit v1.2.3 From d57731b0d7ac78c2adc9f7a58a52b3c782e15d20 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 30 Jan 2013 23:19:08 +0000 Subject: QRegularExpression: print a warning if (?J) is used in a pattern (?J) inside a pattern string can be used to allow or disallow duplicated capturing group names in the pattern string itself. Although PCRE supports duplicated names, in Qt we don't yet. Change-Id: I21cd0c41273cd7ef42870ced3a0fad6ba7035cbc Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 706856c70b..9f29c1b576 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1013,6 +1013,14 @@ void QRegularExpressionPrivate::getPatternInfo() usingCrLfNewlines = (patternNewlineSetting == PCRE_NEWLINE_CRLF) || (patternNewlineSetting == PCRE_NEWLINE_ANY) || (patternNewlineSetting == PCRE_NEWLINE_ANYCRLF); + + int hasJOptionChanged; + pcre16_fullinfo(compiledPattern, 0, PCRE_INFO_JCHANGED, &hasJOptionChanged); + if (hasJOptionChanged) { + qWarning("QRegularExpressionPrivate::getPatternInfo(): the pattern '%s'\n" + " is using the (?J) option; duplicate capturing group names are not supported by Qt", + qPrintable(pattern)); + } } -- cgit v1.2.3 From ad0a4eaf8dede47a971eaa1a2b3b3bd3debbcf6c Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 7 Feb 2013 16:49:04 +0000 Subject: Improve QRegularExpression captureCount / namedCaptureGroups docs We need to clarify what's the status of the implicit capturing group #0 in both of this methods. The former doesn't include it, while the latter does for convenience/consistency in the way we count the capturing groups. (Note that this last behavior is actually autotested.) Change-Id: I2170842c2a6dffa34fa56389ceead61a92c07cd1 Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 9f29c1b576..19b492a505 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1496,6 +1496,8 @@ void QRegularExpression::setPatternOptions(PatternOptions options) Returns the number of capturing groups inside the pattern string, or -1 if the regular expression is not valid. + \note The implicit capturing group 0 is \e{not} included in the returned number. + \sa isValid() */ int QRegularExpression::captureCount() const @@ -1508,10 +1510,27 @@ int QRegularExpression::captureCount() const /*! \since 5.1 - Returns a list of captureCount() elements, containing the names of the named - capturing groups in the pattern string. The list is sorted such that the - i-th element of the list is the name of the i-th capturing group, if it has - a name, or an empty string if the capturing group is unnamed. + Returns a list of captureCount() + 1 elements, containing the names of the + named capturing groups in the pattern string. The list is sorted such that + the element of the list at position \c{i} is the name of the \c{i}-th + capturing group, if it has a name, or an empty string if that capturing + group is unnamed. + + For instance, given the regular expression + + \code + (?\d\d)-(?\d\d)-(?\d\d\d\d) (\w+) (?\w+) + \endcode + + namedCaptureGroups() will return the following list: + + \code + ("", "day", "month", "year", "", "name") + \endcode + + which corresponds to the fact that the capturing group #0 (corresponding to + the whole match) has no name, the capturing group #1 has name "day", the + capturing group #2 has name "month", etc. If the regular expression is not valid, returns an empty list. -- cgit v1.2.3 From adb0cfc24c17f35067cb9aa58c2fae1392872091 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Jan 2013 19:33:27 -0800 Subject: Add Q_DECL_UNUSED, marking functions or variables unused It's similar to Q_UNUSED, but this is to be added in the declaration Change-Id: I2f664129fb1f34f7913ef371d45c2c0fec958174 Reviewed-by: Thiago Macieira --- src/corelib/global/qcompilerdetection.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h index d062ea0d15..a4af8b8899 100644 --- a/src/corelib/global/qcompilerdetection.h +++ b/src/corelib/global/qcompilerdetection.h @@ -179,6 +179,7 @@ # define Q_TYPEOF(expr) __typeof__(expr) # define Q_DECL_DEPRECATED __attribute__ ((__deprecated__)) # define Q_DECL_ALIGN(n) __attribute__((__aligned__(n))) +# define Q_DECL_UNUSED __attribute__((__unused__)) # define Q_LIKELY(expr) __builtin_expect(!!(expr), true) # define Q_UNLIKELY(expr) __builtin_expect(!!(expr), false) # define Q_NORETURN __attribute__((__noreturn__)) @@ -816,6 +817,9 @@ #ifndef Q_DECL_HIDDEN # define Q_DECL_HIDDEN #endif +#ifndef Q_DECL_UNUSED +# define Q_DECL_UNUSED +#endif #ifndef Q_FUNC_INFO # if defined(Q_OS_SOLARIS) || defined(Q_CC_XLC) # define Q_FUNC_INFO __FILE__ "(line number unavailable)" -- cgit v1.2.3 From d52b5d37e2849369b1e9ab2d32e9290e22db0ef4 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Jan 2013 20:16:39 -0800 Subject: Add Q_DECL_UNUSED to a function only used in Q_ASSERT Change-Id: I18697037db742d38874c8a95df12c189ccc51068 Reviewed-by: Frederik Gladhorn Reviewed-by: Lorn Potter --- src/dbus/qdbusintegrator.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index 90f011de54..b6611c7517 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -1848,7 +1848,8 @@ void QDBusConnectionPrivate::waitForFinished(QDBusPendingCallPrivate *pcall) } } -static inline bool waitingForFinishedIsSet(QDBusPendingCallPrivate *call) +// this function is called only in a Q_ASSERT +static inline Q_DECL_UNUSED bool waitingForFinishedIsSet(QDBusPendingCallPrivate *call) { const QMutexLocker locker(&call->mutex); return call->waitingForFinished; -- cgit v1.2.3 From 9253509f3eebdcfc9669dd15caf9c7ec01f15dc7 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Jan 2013 20:17:16 -0800 Subject: Mark public non-member non-static variables as Q_DECL_UNUSED This avoids warnings in compilers that check for unused variables. They can't tell that the the variable came from a header. Change-Id: I1ea5e5bbc76d676fbb561bdc8ae6543e758de90e Reviewed-by: Andreas Aardal Hanssen Reviewed-by: Gunnar Sletta Reviewed-by: Lars Knoll --- src/gui/painting/qrgb.h | 3 ++- src/widgets/kernel/qlayoutitem.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/painting/qrgb.h b/src/gui/painting/qrgb.h index 834ebec5a9..d7a01840e8 100644 --- a/src/gui/painting/qrgb.h +++ b/src/gui/painting/qrgb.h @@ -49,7 +49,8 @@ QT_BEGIN_NAMESPACE typedef unsigned int QRgb; // RGB triplet -const QRgb RGB_MASK = 0x00ffffff; // masks RGB values +// non-namespaced Qt global variable +const Q_DECL_UNUSED QRgb RGB_MASK = 0x00ffffff; // masks RGB values inline int qRed(QRgb rgb) // get red part of RGB { return ((rgb >> 16) & 0xff); } diff --git a/src/widgets/kernel/qlayoutitem.h b/src/widgets/kernel/qlayoutitem.h index 3dfd5b0eb2..808cc9ff5d 100644 --- a/src/widgets/kernel/qlayoutitem.h +++ b/src/widgets/kernel/qlayoutitem.h @@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE -static const int QLAYOUTSIZE_MAX = INT_MAX/256/16; +static const Q_DECL_UNUSED int QLAYOUTSIZE_MAX = INT_MAX/256/16; class QLayout; class QLayoutItem; -- cgit v1.2.3 From a65157e5b7a2a1c2f018507f9d45f5b311cd387c Mon Sep 17 00:00:00 2001 From: Jian Liang Date: Wed, 6 Feb 2013 12:38:24 +0800 Subject: replay mouse press event after a popup widget has been closed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If a popup widget(e.g. a popup menu) has been closed due to a mouse press event, the mouse press event will be consumed by the popup widget and the widget under the mouse pointer can't receive the event. This will lead to confusing behavior such as a push button under the mouse pointer is not been push down. This patch replay the mouse press event if a popup widget has been closed. Change-Id: Id493583dfea9e64ab2964e28d559122c43bbc2a6 Reviewed-by: Friedemann Kleint Reviewed-by: Gunnar Sletta Reviewed-by: Samuel Rødal --- src/widgets/kernel/qwidgetwindow.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src') diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index 50b61beb05..d7b9d8c5fb 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -352,6 +352,21 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event) && qt_replay_popup_mouse_event) { if (m_widget->windowType() != Qt::Popup) qt_button_down = 0; + if (event->type() == QEvent::MouseButtonPress) { + // the popup disappeared, replay the mouse press event + QWidget *w = QApplication::widgetAt(event->globalPos()); + if (w && !QApplicationPrivate::isBlockedByModal(w)) { + QWindow *win = w->windowHandle(); + if (!win) + win = w->nativeParentWidget()->windowHandle(); + if (win && win->geometry().contains(event->globalPos())) { + const QPoint localPos = win->mapFromGlobal(event->globalPos()); + QMouseEvent e(QEvent::MouseButtonPress, localPos, localPos, event->globalPos(), event->button(), event->buttons(), event->modifiers()); + e.setTimestamp(event->timestamp()); + QApplication::sendSpontaneousEvent(win, &e); + } + } + } qt_replay_popup_mouse_event = false; #ifndef QT_NO_CONTEXTMENU } else if (event->type() == QEvent::MouseButtonPress -- cgit v1.2.3 From d1ee7189553e13337b198fe4ba66d79fb7a7f41d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 11 Feb 2013 18:16:49 +0100 Subject: Add support for color glyphs (Emoji) on Mac OS X and iOS A new glyph type is added to the glyph caches for ARGB bitmap glyphs, and the raster and OpenGL paint engines have been modified to support this glyph type for drawCachedGlyphs(). The CoreText font engine implements support for these glyphs through the CTFontDrawGlyphs API, since CGContextShowGlyphsWithAdvances does not handle color glyphs. Change-Id: Idad9ce75a911cae130d65aebe59142772a16fc12 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/opengl/qopenglpaintengine.cpp | 40 +++++++++---- src/gui/opengl/qopenglpaintengine_p.h | 3 +- src/gui/opengl/qopengltextureglyphcache.cpp | 44 +++++++++------ src/gui/painting/qpaintengine_raster.cpp | 14 ++++- src/gui/painting/qpaintengineex.cpp | 3 + src/gui/painting/qtextureglyphcache.cpp | 7 ++- src/gui/text/qfontengine.cpp | 7 +++ src/gui/text/qfontengine_p.h | 4 +- .../fontdatabases/mac/qfontengine_coretext.mm | 65 ++++++++++++++-------- .../fontdatabases/mac/qfontengine_coretext_p.h | 1 + 10 files changed, 133 insertions(+), 55 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp index d248d2b8e5..555c47f265 100644 --- a/src/gui/opengl/qopenglpaintengine.cpp +++ b/src/gui/opengl/qopenglpaintengine.cpp @@ -624,7 +624,7 @@ void QOpenGL2PaintEngineExPrivate::transferMode(EngineMode newMode) if (newMode == mode) return; - if (mode == TextDrawingMode || mode == ImageDrawingMode || mode == ImageArrayDrawingMode) { + if (mode != BrushDrawingMode) { lastTextureUsed = GLuint(-1); } @@ -639,10 +639,12 @@ void QOpenGL2PaintEngineExPrivate::transferMode(EngineMode newMode) setVertexAttributePointer(QT_TEXTURE_COORDS_ATTR, staticTextureCoordinateArray); } - if (newMode == ImageArrayDrawingMode) { + if (newMode == ImageArrayDrawingMode || newMode == ImageOpacityArrayDrawingMode) { setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, (GLfloat*)vertexCoordinateArray.data()); setVertexAttributePointer(QT_TEXTURE_COORDS_ATTR, (GLfloat*)textureCoordinateArray.data()); - setVertexAttributePointer(QT_OPACITY_ATTR, (GLfloat*)opacityArray.data()); + + if (newMode == ImageOpacityArrayDrawingMode) + setVertexAttributePointer(QT_OPACITY_ATTR, (GLfloat*)opacityArray.data()); } // This needs to change when we implement high-quality anti-aliasing... @@ -1085,7 +1087,7 @@ bool QOpenGL2PaintEngineExPrivate::prepareForCachedGlyphDraw(const QFontEngineGl bool QOpenGL2PaintEngineExPrivate::prepareForDraw(bool srcPixelsAreOpaque) { - if (brushTextureDirty && mode != ImageDrawingMode && mode != ImageArrayDrawingMode) + if (brushTextureDirty && (mode == TextDrawingMode || mode == BrushDrawingMode)) updateBrushTexture(); if (compositionModeDirty) @@ -1105,12 +1107,12 @@ bool QOpenGL2PaintEngineExPrivate::prepareForDraw(bool srcPixelsAreOpaque) } QOpenGLEngineShaderManager::OpacityMode opacityMode; - if (mode == ImageArrayDrawingMode) { + if (mode == ImageOpacityArrayDrawingMode) { opacityMode = QOpenGLEngineShaderManager::AttributeOpacity; } else { opacityMode = stateHasOpacity ? QOpenGLEngineShaderManager::UniformOpacity : QOpenGLEngineShaderManager::NoOpacity; - if (stateHasOpacity && (mode != ImageDrawingMode)) { + if (stateHasOpacity && (mode != ImageDrawingMode && mode != ImageArrayDrawingMode)) { // Using a brush bool brushIsPattern = (currentBrush.style() >= Qt::Dense1Pattern) && (currentBrush.style() <= Qt::DiagCrossPattern); @@ -1130,7 +1132,7 @@ bool QOpenGL2PaintEngineExPrivate::prepareForDraw(bool srcPixelsAreOpaque) matrixUniformDirty = true; } - if (brushUniformsDirty && mode != ImageDrawingMode && mode != ImageArrayDrawingMode) + if (brushUniformsDirty && (mode == TextDrawingMode || mode == BrushDrawingMode)) updateBrushUniforms(); if (opacityMode == QOpenGLEngineShaderManager::UniformOpacity && opacityUniformDirty) { @@ -1602,7 +1604,10 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type if (cache->width() == 0 || cache->height() == 0) return; - transferMode(TextDrawingMode); + if (glyphType == QFontEngineGlyphCache::Raster_ARGB) + transferMode(ImageArrayDrawingMode); + else + transferMode(TextDrawingMode); int margin = fe->glyphMargin(glyphType); @@ -1698,8 +1703,10 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type #endif } - setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, (GLfloat*)vertexCoordinates->data()); - setVertexAttributePointer(QT_TEXTURE_COORDS_ATTR, (GLfloat*)textureCoordinates->data()); + if (glyphType != QFontEngineGlyphCache::Raster_ARGB || recreateVertexArrays) { + setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, (GLfloat*)vertexCoordinates->data()); + setVertexAttributePointer(QT_TEXTURE_COORDS_ATTR, (GLfloat*)textureCoordinates->data()); + } if (!snapToPixelGrid) { snapToPixelGrid = true; @@ -1782,6 +1789,11 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glBlendFunc(GL_ONE, GL_ONE); } compositionModeDirty = true; + } else if (glyphType == QFontEngineGlyphCache::Raster_ARGB) { + currentBrush = noBrush; + shaderManager->setSrcPixelType(QOpenGLEngineShaderManager::ImageSrc); + if (prepareForCachedGlyphDraw(*cache)) + shaderManager->currentProgram()->setUniformValue(location(QOpenGLEngineShaderManager::ImageTexture), QT_IMAGE_TEXTURE_UNIT); } else { // Greyscale/mono glyphs @@ -1792,7 +1804,11 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type QOpenGLTextureGlyphCache::FilterMode filterMode = (s->matrix.type() > QTransform::TxTranslate)?QOpenGLTextureGlyphCache::Linear:QOpenGLTextureGlyphCache::Nearest; if (lastMaskTextureUsed != cache->texture() || cache->filterMode() != filterMode) { - funcs.glActiveTexture(GL_TEXTURE0 + QT_MASK_TEXTURE_UNIT); + if (glyphType == QFontEngineGlyphCache::Raster_ARGB) + funcs.glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); + else + funcs.glActiveTexture(GL_TEXTURE0 + QT_MASK_TEXTURE_UNIT); + if (lastMaskTextureUsed != cache->texture()) { glBindTexture(GL_TEXTURE_2D, cache->texture()); lastMaskTextureUsed = cache->texture(); @@ -1908,7 +1924,7 @@ void QOpenGL2PaintEngineExPrivate::drawPixmapFragments(const QPainter::PixmapFra funcs.glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); GLuint id = QOpenGLTextureCache::cacheForContext(ctx)->bindTexture(ctx, pixmap); - transferMode(ImageArrayDrawingMode); + transferMode(ImageOpacityArrayDrawingMode); bool isBitmap = pixmap.isQBitmap(); bool isOpaque = !isBitmap && (!pixmap.hasAlpha() || (hints & QPainter::OpaqueHint)) && allOpaque; diff --git a/src/gui/opengl/qopenglpaintengine_p.h b/src/gui/opengl/qopenglpaintengine_p.h index 9c54eae3b3..d51f0e5256 100644 --- a/src/gui/opengl/qopenglpaintengine_p.h +++ b/src/gui/opengl/qopenglpaintengine_p.h @@ -70,7 +70,8 @@ enum EngineMode { ImageDrawingMode, TextDrawingMode, BrushDrawingMode, - ImageArrayDrawingMode + ImageArrayDrawingMode, + ImageOpacityArrayDrawingMode }; QT_BEGIN_NAMESPACE diff --git a/src/gui/opengl/qopengltextureglyphcache.cpp b/src/gui/opengl/qopengltextureglyphcache.cpp index b751629117..83f407575e 100644 --- a/src/gui/opengl/qopengltextureglyphcache.cpp +++ b/src/gui/opengl/qopengltextureglyphcache.cpp @@ -120,7 +120,7 @@ void QOpenGLTextureGlyphCache::createTextureData(int width, int height) m_textureResource->m_width = width; m_textureResource->m_height = height; - if (m_type == QFontEngineGlyphCache::Raster_RGBMask) { + if (m_type == QFontEngineGlyphCache::Raster_RGBMask || m_type == QFontEngineGlyphCache::Raster_ARGB) { QVarLengthArray data(width * height * 4); for (int i = 0; i < data.size(); ++i) data[i] = 0; @@ -314,30 +314,40 @@ void QOpenGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph, QFixed for (int x = 0; x < maskWidth; ++x) src[x] = -src[x]; // convert 0 and 1 into 0 and 255 } - } else if (mask.format() == QImage::Format_RGB32) { - // Make the alpha component equal to the average of the RGB values. - // This is needed when drawing sub-pixel antialiased text on translucent targets. - for (int y = 0; y < maskHeight; ++y) { - quint32 *src = (quint32 *) mask.scanLine(y); - for (int x = 0; x < maskWidth; ++x) { - uchar r = src[x] >> 16; - uchar g = src[x] >> 8; - uchar b = src[x]; - quint32 avg = (quint32(r) + quint32(g) + quint32(b) + 1) / 3; // "+1" for rounding. + } else if (mask.depth() == 32) { + if (mask.format() == QImage::Format_RGB32 + // We need to make the alpha component equal to the average of the RGB values. + // This is needed when drawing sub-pixel antialiased text on translucent targets. +#if defined(QT_OPENGL_ES_2) + || !hasBGRA // We need to reverse the bytes +#endif + ) { + for (int y = 0; y < maskHeight; ++y) { + quint32 *src = (quint32 *) mask.scanLine(y); + for (int x = 0; x < maskWidth; ++x) { + uchar r = src[x] >> 16; + uchar g = src[x] >> 8; + uchar b = src[x]; + quint32 avg; + if (mask.format() == QImage::Format_RGB32) + avg = (quint32(r) + quint32(g) + quint32(b) + 1) / 3; // "+1" for rounding. + else // Format_ARGB_Premultiplied + avg = src[x] >> 24; #if defined(QT_OPENGL_ES_2) - if (!hasBGRA) { - // Reverse bytes to match GL_RGBA - src[x] = (avg << 24) | (quint32(r) << 0) | (quint32(g) << 8) | (quint32(b) << 16); - } else + if (!hasBGRA) { + // Reverse bytes to match GL_RGBA + src[x] = (avg << 24) | (quint32(r) << 0) | (quint32(g) << 8) | (quint32(b) << 16); + } else #endif - src[x] = (src[x] & 0x00ffffff) | (avg << 24); + src[x] = (src[x] & 0x00ffffff) | (avg << 24); + } } } } glBindTexture(GL_TEXTURE_2D, m_textureResource->m_texture); - if (mask.format() == QImage::Format_RGB32) { + if (mask.depth() == 32) { #if defined(QT_OPENGL_ES_2) glTexSubImage2D(GL_TEXTURE_2D, 0, c.x, c.y, maskWidth, maskHeight, hasBGRA ? GL_BGRA_EXT : GL_RGBA, GL_UNSIGNED_BYTE, mask.bits()); #else diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index b9202e1612..fd867ebde6 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -2857,7 +2857,19 @@ bool QRasterPaintEngine::drawCachedGlyphs(int numGlyphs, const glyph_t *glyphs, // x, y, // positions[i].x.toInt(), positions[i].y.toInt()); - alphaPenBlt(bits + ((c.x << leftShift) >> rightShift) + c.y * bpl, bpl, depth, x, y, c.w, c.h); + const uchar *glyphBits = bits + ((c.x << leftShift) >> rightShift) + c.y * bpl; + + if (glyphType == QFontEngineGlyphCache::Raster_ARGB) { + // The current state transform has already been applied to the positions, + // so we prevent drawImage() from re-applying the transform by clearing + // the state for the duration of the call. + QTransform originalTransform = s->matrix; + s->matrix = QTransform(); + drawImage(QPoint(x, y), QImage(glyphBits, c.w, c.h, bpl, image.format())); + s->matrix = originalTransform; + } else { + alphaPenBlt(glyphBits, bpl, depth, x, y, c.w, c.h); + } } } return true; diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp index 5ca6075423..6e72b5db7f 100644 --- a/src/gui/painting/qpaintengineex.cpp +++ b/src/gui/painting/qpaintengineex.cpp @@ -1088,6 +1088,9 @@ bool QPaintEngineEx::requiresPretransformedGlyphPositions(QFontEngine *, const Q bool QPaintEngineEx::shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &m) const { + if (fontEngine->glyphFormat == QFontEngineGlyphCache::Raster_ARGB) + return true; + qreal pixelSize = fontEngine->fontDef.pixelSize; return (pixelSize * pixelSize * qAbs(m.determinant())) < QT_MAX_CACHED_GLYPH_SIZE * QT_MAX_CACHED_GLYPH_SIZE; diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp index 2ffdc9cd59..8769aeaba9 100644 --- a/src/gui/painting/qtextureglyphcache.cpp +++ b/src/gui/painting/qtextureglyphcache.cpp @@ -129,6 +129,7 @@ bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const switch (m_type) { case Raster_A8: format = QFontEngine::Format_A8; break; case Raster_RGBMask: format = QFontEngine::Format_A32; break; + case Raster_ARGB: format = QFontEngine::Format_ARGB; break; default: format = QFontEngine::Format_Mono; break; } @@ -275,6 +276,8 @@ QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g, QFixed subPixelPosition { if (m_type == QFontEngineGlyphCache::Raster_RGBMask) return m_current_fontengine->alphaRGBMapForGlyph(g, subPixelPosition, m_transform); + else if (m_type == QFontEngineGlyphCache::Raster_ARGB) + return m_current_fontengine->bitmapForGlyph(g, subPixelPosition, m_transform); return m_current_fontengine->alphaMapForGlyph(g, subPixelPosition, m_transform); } @@ -306,6 +309,7 @@ void QImageTextureGlyphCache::createTextureData(int width, int height) m_image = QImage(width, height, QImage::Format_RGB32); break; case QFontEngineGlyphCache::Raster_ARGB: + m_image = QImage(width, height, QImage::Format_ARGB32_Premultiplied); break; } } @@ -322,7 +326,8 @@ void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g, QFixed subP } #endif - if (m_type == QFontEngineGlyphCache::Raster_RGBMask) { + if (m_type == QFontEngineGlyphCache::Raster_RGBMask + || m_type == QFontEngineGlyphCache::Raster_ARGB) { QImage ref(m_image.bits() + (c.x * 4 + c.y * m_image.bytesPerLine()), qMax(mask.width(), c.w), qMax(mask.height(), c.h), m_image.bytesPerLine(), m_image.format()); diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index b320dc0e66..1a7f2b7b4d 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -649,6 +649,13 @@ QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition return rgbMask; } +QImage QFontEngine::bitmapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform&) +{ + Q_UNUSED(subPixelPosition); + + return QImage(); +} + QFixed QFontEngine::subPixelPositionForX(QFixed x) const { if (m_subPixelPositionCount <= 1 || !supportsSubPixelPositions()) diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h index 854f6fbbb6..a373c3d5f1 100644 --- a/src/gui/text/qfontengine_p.h +++ b/src/gui/text/qfontengine_p.h @@ -112,7 +112,8 @@ public: Format_Render = Format_None, Format_Mono, Format_A8, - Format_A32 + Format_A32, + Format_ARGB }; enum ShaperFlag { @@ -191,6 +192,7 @@ public: virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t); virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t); virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t); + virtual QImage bitmapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t); virtual QImage *lockedAlphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition, GlyphFormat neededFormat, const QTransform &t = QTransform(), diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm index 70416bc2dd..078b639fa8 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm @@ -158,7 +158,7 @@ void QCoreTextFontEngine::init() synthesisFlags = 0; CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(ctfont); -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 +#if defined(Q_OS_IOS) || MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 if (supportsColorGlyphs() && (traits & kCTFontColorGlyphsTrait)) glyphFormat = QFontEngineGlyphCache::Raster_ARGB; else @@ -457,7 +457,9 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition br.y = QFixed::fromReal(br.y.toReal() * vscale); } - QImage im(qAbs(qRound(br.width))+2, qAbs(qRound(br.height))+2, QImage::Format_RGB32); + bool isColorGlyph = glyphFormat == QFontEngineGlyphCache::Raster_ARGB; + QImage::Format format = isColorGlyph ? QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32; + QImage im(qAbs(qRound(br.width)) + 2, qAbs(qRound(br.height)) + 2, format); im.fill(0); #ifndef Q_OS_IOS @@ -465,7 +467,7 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition #else CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); #endif - uint cgflags = kCGImageAlphaNoneSkipFirst; + uint cgflags = isColorGlyph ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst; #ifdef kCGBitmapByteOrder32Host //only needed because CGImage.h added symbols in the minor version cgflags |= kCGBitmapByteOrder32Host; #endif @@ -476,38 +478,49 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition CGContextSetShouldAntialias(ctx, (aa || fontDef.pointSize > antialiasingThreshold) && !(fontDef.styleStrategy & QFont::NoAntialias)); CGContextSetShouldSmoothFonts(ctx, aa); - CGAffineTransform oldTextMatrix = CGContextGetTextMatrix(ctx); - CGAffineTransform cgMatrix = CGAffineTransformIdentity; - CGAffineTransformConcat(cgMatrix, oldTextMatrix); + CGAffineTransform cgMatrix = CGAffineTransformIdentity; if (synthesisFlags & QFontEngine::SynthesizedItalic) cgMatrix = CGAffineTransformConcat(cgMatrix, CGAffineTransformMake(1, 0, SYNTHETIC_ITALIC_SKEW, 1, 0, 0)); - cgMatrix = CGAffineTransformConcat(cgMatrix, transform); + if (!isColorGlyph) // CTFontDrawGlyphs incorporates the font's matrix already + cgMatrix = CGAffineTransformConcat(cgMatrix, transform); + if (m.isScaling()) cgMatrix = CGAffineTransformConcat(cgMatrix, CGAffineTransformMakeScale(m.m11(), m.m22())); - CGContextSetTextMatrix(ctx, cgMatrix); - CGContextSetRGBFillColor(ctx, 1, 1, 1, 1); - CGContextSetTextDrawingMode(ctx, kCGTextFill); - - CGContextSetFont(ctx, cgFont); - + CGGlyph cgGlyph = glyph; qreal pos_x = -br.x.truncate() + subPixelPosition.toReal(); qreal pos_y = im.height() + br.y.toReal(); - CGContextSetTextPosition(ctx, pos_x, pos_y); - CGSize advance; - advance.width = 0; - advance.height = 0; - CGGlyph cgGlyph = glyph; - CGContextShowGlyphsWithAdvances(ctx, &cgGlyph, &advance, 1); + if (!isColorGlyph) { + CGContextSetTextMatrix(ctx, cgMatrix); + CGContextSetRGBFillColor(ctx, 1, 1, 1, 1); + CGContextSetTextDrawingMode(ctx, kCGTextFill); + CGContextSetFont(ctx, cgFont); + CGContextSetTextPosition(ctx, pos_x, pos_y); - if (synthesisFlags & QFontEngine::SynthesizedBold) { - CGContextSetTextPosition(ctx, pos_x + 0.5 * lineThickness().toReal(), pos_y); - CGContextShowGlyphsWithAdvances(ctx, &cgGlyph, &advance, 1); + CGContextShowGlyphsWithAdvances(ctx, &cgGlyph, &CGSizeZero, 1); + + if (synthesisFlags & QFontEngine::SynthesizedBold) { + CGContextSetTextPosition(ctx, pos_x + 0.5 * lineThickness().toReal(), pos_y); + CGContextShowGlyphsWithAdvances(ctx, &cgGlyph, &CGSizeZero, 1); + } + } +#if defined(Q_OS_IOS) || MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 + else if (supportsColorGlyphs()) { + // CGContextSetTextMatrix does not work with color glyphs, so we use + // the CTM instead. This means we must translate the CTM as well, to + // set the glyph position, instead of using CGContextSetTextPosition. + CGContextTranslateCTM(ctx, pos_x, pos_y); + CGContextConcatCTM(ctx, cgMatrix); + + // CGContextShowGlyphsWithAdvances does not support the 'sbix' color-bitmap + // glyphs in the Apple Color Emoji font, so we use CTFontDrawGlyphs instead. + CTFontDrawGlyphs(ctfont, &cgGlyph, &CGPointZero, 1, ctx); } +#endif CGContextRelease(ctx); CGColorSpaceRelease(colorspace); @@ -556,6 +569,14 @@ QImage QCoreTextFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPo return im; } +QImage QCoreTextFontEngine::bitmapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &t) +{ + if (t.type() > QTransform::TxScale) + return QFontEngine::bitmapForGlyph(glyph, subPixelPosition, t); + + return imageForGlyph(glyph, subPixelPosition, true, t); +} + void QCoreTextFontEngine::recalcAdvances(QGlyphLayout *glyphs, QFontEngine::ShaperFlags flags) const { int i, numGlyphs = glyphs->numGlyphs; diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h index e7fec4be14..7c8f28aabd 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h @@ -98,6 +98,7 @@ public: virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition); virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &t); virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t); + virtual QImage bitmapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t); virtual qreal minRightBearing() const; virtual qreal minLeftBearing() const; virtual QFixed emSquareSize() const; -- cgit v1.2.3 From d0da1f533c3839cc9dec6bc727b2733da139e2d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 13 Feb 2013 11:45:12 +0100 Subject: QMetaMethod is needed in qtreeview.cpp even without accessibility. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I195c4d591a1908e17ad45338d6b9a19b8948b804 Reviewed-by: Jędrzej Nowacki Reviewed-by: Stephen Kelly Reviewed-by: Thorbjørn Lund Martsum --- src/widgets/itemviews/qtreeview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index 2e9148e590..be42c8dac0 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -52,10 +52,10 @@ #include #include #include +#include #ifndef QT_NO_ACCESSIBILITY #include #include -#include #endif #include -- cgit v1.2.3 From 310235593f5ddf6cb0003edcb7ceaa59f3797788 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Wed, 13 Feb 2013 11:42:10 +0100 Subject: Fix build with old MinGW Change-Id: I9d7c40c146bb3d14cd1dccab10a70b28722c7c27 Reviewed-by: Friedemann Kleint --- src/plugins/platforms/windows/qtwindows_additional.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/windows/qtwindows_additional.h b/src/plugins/platforms/windows/qtwindows_additional.h index 8d59fbd7c6..3b2e9787a2 100644 --- a/src/plugins/platforms/windows/qtwindows_additional.h +++ b/src/plugins/platforms/windows/qtwindows_additional.h @@ -126,6 +126,10 @@ typedef struct tagUPDATELAYEREDWINDOWINFO { // IME. #define IMR_CONFIRMRECONVERTSTRING 0x0005 +#ifndef MAPVK_VK_TO_CHAR +# define MAPVK_VK_TO_CHAR 2 +#endif + #endif // if defined(Q_CC_MINGW) /* Touch is supported from Windows 7 onwards and data structures -- cgit v1.2.3 From 60cde0bd1496c528153d21769dfbcb2b0a9ffc91 Mon Sep 17 00:00:00 2001 From: Jonas Gastal Date: Sat, 9 Feb 2013 22:52:08 -0200 Subject: Fix undefined reference to XSetTransientForHint. Change-Id: If137fbfd566fdd2950f012013031d74e84b16d00 Reviewed-by: J-P Nurmi --- src/plugins/platformthemes/gtk2/gtk2.pro | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/plugins/platformthemes/gtk2/gtk2.pro b/src/plugins/platformthemes/gtk2/gtk2.pro index f22753e96f..bb02192f91 100644 --- a/src/plugins/platformthemes/gtk2/gtk2.pro +++ b/src/plugins/platformthemes/gtk2/gtk2.pro @@ -6,6 +6,7 @@ load(qt_plugin) QT += core-private gui-private platformsupport-private +CONFIG += X11 QMAKE_CXXFLAGS += $$QT_CFLAGS_QGTK2 LIBS += $$QT_LIBS_QGTK2 -- cgit v1.2.3 From cc7239da8d1ab95e68e12a64df3ca3051419cb34 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 10 Feb 2013 10:57:43 +0100 Subject: Make it possible to use QPointer This is possible with QWeakPointer, so allow it for migrating code too. In the process, replace the QPointerBase with a member variable for simplicity. The functionality of the QPointerBase is replaced by a TypeSelector template. Change-Id: I3b4c77bdeda2b863cc33e84a3da8a25bae928c8c Reviewed-by: Thiago Macieira Reviewed-by: Olivier Goffart --- src/corelib/kernel/qpointer.h | 56 +++++++++++++-------------------- src/corelib/tools/qsharedpointer_impl.h | 2 +- 2 files changed, 23 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qpointer.h b/src/corelib/kernel/qpointer.h index 385bc2814b..230b6b66eb 100644 --- a/src/corelib/kernel/qpointer.h +++ b/src/corelib/kernel/qpointer.h @@ -50,56 +50,44 @@ QT_BEGIN_NAMESPACE class QVariant; -class QPointerBase -{ - QWeakPointer wp; - -protected: - inline QPointerBase() : wp() { } - inline QPointerBase(QObject *p) : wp(p, true) { } - // compiler-generated copy/move ctor/assignment operators are fine! (even though public) - inline ~QPointerBase() { } - - inline QObject* data() const - { return wp.data(); } - - inline void assign(QObject *p) - { wp.assign(p); } - - inline bool isNull() const - { return wp.isNull(); } - - inline void clear() - { wp.clear(); } -}; - template -class QPointer : private QPointerBase +class QPointer { + template + struct TypeSelector + { + typedef QObject Type; + }; + template + struct TypeSelector + { + typedef const QObject Type; + }; + typedef typename TypeSelector::Type QObjectType; + QWeakPointer wp; public: inline QPointer() { } - inline QPointer(T *p) : QPointerBase(p) { } + inline QPointer(T *p) : wp(p, true) { } // compiler-generated copy/move ctor/assignment operators are fine! inline ~QPointer() { } inline QPointer &operator=(T* p) - { QPointerBase::assign(p); return *this; } + { wp.assign(static_cast(p)); return *this; } inline T* data() const - { return static_cast(QPointerBase::data()); } + { return static_cast( wp.data()); } inline T* operator->() const { return data(); } inline T& operator*() const { return *data(); } inline operator T*() const { return data(); } -#ifdef Q_QDOC - inline bool isNull() const; - inline void clear(); -#else - using QPointerBase::isNull; - using QPointerBase::clear; -#endif + + inline bool isNull() const + { return wp.isNull(); } + + inline void clear() + { wp.clear(); } }; template Q_DECLARE_TYPEINFO_BODY(QPointer, Q_MOVABLE_TYPE); diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h index f6ef7cd55d..3121bcdf40 100644 --- a/src/corelib/tools/qsharedpointer_impl.h +++ b/src/corelib/tools/qsharedpointer_impl.h @@ -639,7 +639,7 @@ private: public: #else template friend class QSharedPointer; - friend class QPointerBase; + template friend class QPointer; #endif template -- cgit v1.2.3 From c8a8ca305994cdf048e0236c31da71bb29a58151 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 24 Jan 2013 20:18:05 +0100 Subject: remove QMAKE_TARGET_* overrides there is no reason why testlib in particular should have them, while every other module uses the standard strings. Change-Id: I9b9e45957dfccbf02939c326dcebf06133098ede Reviewed-by: Joerg Bornemann Reviewed-by: Oswald Buddenhagen --- src/testlib/testlib.pro | 6 ------ 1 file changed, 6 deletions(-) (limited to 'src') diff --git a/src/testlib/testlib.pro b/src/testlib/testlib.pro index 6b74f23454..8c6972f6a3 100644 --- a/src/testlib/testlib.pro +++ b/src/testlib/testlib.pro @@ -74,9 +74,3 @@ mac { } load(qt_module) - -QMAKE_TARGET_PRODUCT = QTestLib -QMAKE_TARGET_DESCRIPTION = Qt \ - Unit \ - Testing \ - Library -- cgit v1.2.3 From 4804f09c661d29b559a8fc239263f48ac1ce17ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 13 Feb 2013 15:55:53 +0100 Subject: Don't assume CTFontCopyDefaultCascadeListForLanguages is available on 10.8 It's listed in the 10.8 SDK as CT_AVAILABLE_STARTING( __MAC_10_8, __IPHONE_6_0), but not in the release notes for 10.8: http://developer.apple.com/library/mac/#releasenotes/General/APIDiffsMacOSX10_8/CoreText.html The iPhoneOS 6.0 SDK lists it as CT_AVAILABLE_STARTING( __MAC_NA, __IPHONE_6_0), which matches the release notes, and some 10.8 systems in the wild apparently do not have this function declaration in the system headers, so for now we'll be conservative and not assume it's available. Change-Id: Idbadda58ea95bfca75458d77cb2799c49fba013a Reviewed-by: Jens Bache-Wiig --- src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index 4a4c396828..cf094078cb 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -361,10 +361,9 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFo static QHash fallbackLists; -#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 || __IPHONE_OS_VERSION_MAX_ALLOWED >= 60000 +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 60000 // CTFontCopyDefaultCascadeListForLanguages is available in the SDK - #if (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 1080) \ - || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 60000) + #if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 60000) // But we have to feature check at runtime if (&CTFontCopyDefaultCascadeListForLanguages) #endif -- cgit v1.2.3 From 8b06b4136fdf3b20c96389434b737eec00f174ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sat, 3 Nov 2012 16:14:40 +0100 Subject: Zero-initialize paint-device in minimal EGL platform plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ic6b39825cf349f8ad8a56b1fb5dd3855f8675519 Reviewed-by: Morten Johan Sørvig Reviewed-by: Samuel Rødal Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/minimalegl/qminimaleglbackingstore.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/plugins/platforms/minimalegl/qminimaleglbackingstore.cpp b/src/plugins/platforms/minimalegl/qminimaleglbackingstore.cpp index da89100359..cb245f2e5c 100644 --- a/src/plugins/platforms/minimalegl/qminimaleglbackingstore.cpp +++ b/src/plugins/platforms/minimalegl/qminimaleglbackingstore.cpp @@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE QMinimalEglBackingStore::QMinimalEglBackingStore(QWindow *window) : QPlatformBackingStore(window) , m_context(new QOpenGLContext) + , m_device(0) { m_context->setFormat(window->requestedFormat()); m_context->setScreen(window->screen()); -- cgit v1.2.3 From 603e1882736f77102cebec67729aca8464de958c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 13 Feb 2013 14:30:26 +0100 Subject: Manually add Emoji font to fallback list on Mac OS It's not part of the fallback list we read from the plist file. Change-Id: Ieaf306d4cd51a6bb6e6f41048876d3e674a4b99b Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index cf094078cb..aec32e1bca 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -395,6 +395,8 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFo if (fallbackLists.contains(family)) return fallbackLists.value(family); } +#else + Q_UNUSED(family); #endif // We were not able to find a fallback for the specific family, @@ -428,6 +430,10 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFo else if ([item isKindOfClass: [NSString class]]) fallbackList.append(familyNameFromPostScriptName(psNameToFamily, item)); } + + if (QCoreTextFontEngine::supportsColorGlyphs()) + fallbackList.append(QLatin1String("Apple Color Emoji")); + fallbackLists[styleLookupKey.arg(fallbackStyleHint)] = fallbackList; } #else -- cgit v1.2.3 From 8ec2c0a70e387689d555876875a75391b9cf4e44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Thu, 14 Feb 2013 09:43:22 +0100 Subject: Revert "Provide better error if min (or max) is defined in QDateTime" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit d0804ff2dd3d289a0f0c58aa30c4334e66ea9be0. The commit breaks JSC which is used by QtWebKit, QtScript and indirectly by QtQuick1, which blocks integration stable->dev. JSC should be fixed upstream, but until then we need to revert the change. Change-Id: I3f7b8be08b68181e08422d2cb00d7cd70a7fc07f Reviewed-by: Simon Hausmann Reviewed-by: Thorbjørn Lund Martsum Reviewed-by: Frederik Gladhorn --- src/corelib/tools/qdatetime.h | 3 --- 1 file changed, 3 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qdatetime.h b/src/corelib/tools/qdatetime.h index d1d7f5792e..d1cc10c877 100644 --- a/src/corelib/tools/qdatetime.h +++ b/src/corelib/tools/qdatetime.h @@ -118,9 +118,6 @@ QT_DEPRECATED inline bool setYMD(int y, int m, int d) inline qint64 toJulianDay() const { return jd; } private: -#if defined(min) || defined(max) -#error min or max defined, cannot continue. If this is caused by an #include of windows.h, NOMINMAX can be defined. -#endif static inline qint64 nullJd() { return std::numeric_limits::min(); } static inline qint64 minJd() { return Q_INT64_C(-784350574879); } static inline qint64 maxJd() { return Q_INT64_C( 784354017364); } -- cgit v1.2.3 From b26c9da89220a26227353d67cfe6c25ec6ddc0ee Mon Sep 17 00:00:00 2001 From: Keith Gardner Date: Sat, 2 Feb 2013 13:08:15 -0600 Subject: QLocalePrivate: Generalized numberToCLocale. Modified QLocalPrivate::numberToCLocale to take a const QChar * and an integer instead of a QString. This allows for passing QStrings and QStringRefs into the same function. Updated the QLocalePrivate::stringToDouble, QLocalePrivate::stringToLongLong, and QLocalePrivate::stringToUnsLongLong to use this new function signature. Change-Id: Ifee5dfcd9b743e1d3b9123a65007c89e8ed93e83 Reviewed-by: Oswald Buddenhagen Reviewed-by: Lars Knoll --- src/corelib/tools/qlocale.cpp | 30 ++++++++++++++++++++++++------ src/corelib/tools/qlocale_p.h | 2 +- 2 files changed, 25 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index 39257158a4..6c35f45cdb 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -2892,12 +2892,12 @@ QString QLocalePrivate::unsLongLongToString(const QChar zero, const QChar group, number. We can't detect junk here, since we don't even know the base of the number. */ -bool QLocalePrivate::numberToCLocale(const QString &num, +bool QLocalePrivate::numberToCLocale(const QChar *str, int len, GroupSeparatorMode group_sep_mode, CharBuff *result) const { - const QChar *uc = num.unicode(); - int l = num.length(); + const QChar *uc = str; + int l = len; int idx = 0; // Skip whitespace @@ -3043,7 +3043,13 @@ double QLocalePrivate::stringToDouble(const QString &number, bool *ok, GroupSeparatorMode group_sep_mode) const { CharBuff buff; - if (!numberToCLocale(group().unicode() == 0xa0 ? number.trimmed() : number, + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + QString trimmedNumber; + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), group_sep_mode, &buff)) { if (ok != 0) *ok = false; @@ -3056,7 +3062,13 @@ qlonglong QLocalePrivate::stringToLongLong(const QString &number, int base, bool *ok, GroupSeparatorMode group_sep_mode) const { CharBuff buff; - if (!numberToCLocale(group().unicode() == 0xa0 ? number.trimmed() : number, + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + QString trimmedNumber; + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), group_sep_mode, &buff)) { if (ok != 0) *ok = false; @@ -3070,7 +3082,13 @@ qulonglong QLocalePrivate::stringToUnsLongLong(const QString &number, int base, bool *ok, GroupSeparatorMode group_sep_mode) const { CharBuff buff; - if (!numberToCLocale(group().unicode() == 0xa0 ? number.trimmed() : number, + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + QString trimmedNumber; + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), group_sep_mode, &buff)) { if (ok != 0) *ok = false; diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h index 3746cd56e6..5389fd2384 100644 --- a/src/corelib/tools/qlocale_p.h +++ b/src/corelib/tools/qlocale_p.h @@ -317,7 +317,7 @@ public: static quint64 bytearrayToUnsLongLong(const char *num, int base, bool *ok); typedef QVarLengthArray CharBuff; - bool numberToCLocale(const QString &num, + bool numberToCLocale(const QChar *str, int len, GroupSeparatorMode group_sep_mode, CharBuff *result) const; inline char digitToCLocale(QChar c) const; -- cgit v1.2.3 From 8de8800de1523d8ed170076fc1cab15f44ec1806 Mon Sep 17 00:00:00 2001 From: Christoph Schleifenbaum Date: Wed, 13 Feb 2013 17:21:48 +0100 Subject: Cocoa: QSystemTrayIcon showing native messages on Mountain Lion. This patch enables usage of the new NSUserNotificationCenter as part of Mountain Lion. On earlier versions, or if compiled on earlier versions, Growl will be used, if installed. Change-Id: I676f9c63aa3c1ada19d36b6310ae90915be63011 Reviewed-by: Jake Petroules Reviewed-by: Richard J. Moore --- .../platforms/cocoa/qcocoasystemtrayicon.mm | 47 +++++++++++++++++++++- src/widgets/util/qsystemtrayicon.cpp | 2 +- 2 files changed, 47 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm index e092db8172..99f533b33a 100755 --- a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm +++ b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm @@ -93,7 +93,11 @@ QT_USE_NAMESPACE @class QT_MANGLE_NAMESPACE(QNSMenu); @class QT_MANGLE_NAMESPACE(QNSImageView); -@interface QT_MANGLE_NAMESPACE(QNSStatusItem) : NSObject { +@interface QT_MANGLE_NAMESPACE(QNSStatusItem) : NSObject +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 + +#endif + { @public QCocoaSystemTrayIcon *systray; NSStatusItem *item; @@ -108,6 +112,11 @@ QT_USE_NAMESPACE -(QRectF)geometry; - (void)triggerSelector:(id)sender button:(Qt::MouseButton)mouseButton; - (void)doubleClickSelector:(id)sender; + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 +- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification; +- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification; +#endif @end @interface QT_MANGLE_NAMESPACE(QNSImageView) : NSImageView { @@ -132,9 +141,19 @@ class QSystemTrayIconSys public: QSystemTrayIconSys(QCocoaSystemTrayIcon *sys) { item = [[QT_MANGLE_NAMESPACE(QNSStatusItem) alloc] initWithSysTray:sys]; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 + if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_8) { + [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:item]; + } +#endif } ~QSystemTrayIconSys() { [[[item item] view] setHidden: YES]; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 + if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_8) { + [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:nil]; + } +#endif [item release]; } QT_MANGLE_NAMESPACE(QNSStatusItem) *item; @@ -223,6 +242,18 @@ void QCocoaSystemTrayIcon::showMessage(const QString &title, const QString &mess if (!m_sys) return; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 + if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_8) { + NSUserNotification *notification = [[NSUserNotification alloc] init]; + notification.title = [NSString stringWithUTF8String:title.toUtf8().data()]; + notification.informativeText = [NSString stringWithUTF8String:message.toUtf8().data()]; + + [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification]; + + return; + } +#endif + #ifdef QT_MAC_SYSTEMTRAY_USE_GROWL // Make sure that we have Growl installed on the machine we are running on. QCFType cfurl; @@ -439,6 +470,20 @@ QT_END_NAMESPACE emit systray->activated(QPlatformSystemTrayIcon::DoubleClick); } +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 +- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification { + Q_UNUSED(center); + Q_UNUSED(notification); + return YES; +} + +- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification { + Q_UNUSED(center); + Q_UNUSED(notification); + emit systray->messageClicked(); +} +#endif + @end class QSystemTrayIconQMenu : public QPlatformMenu diff --git a/src/widgets/util/qsystemtrayicon.cpp b/src/widgets/util/qsystemtrayicon.cpp index a5d3aedf76..48bba9701c 100644 --- a/src/widgets/util/qsystemtrayicon.cpp +++ b/src/widgets/util/qsystemtrayicon.cpp @@ -81,7 +81,7 @@ QT_BEGIN_NAMESPACE tray specification, including recent versions of KDE and GNOME. \li All supported versions of Mac OS X. Note that the Growl notification system must be installed for - QSystemTrayIcon::showMessage() to display messages. + QSystemTrayIcon::showMessage() to display messages on Mac OS X prior to 10.8 (Mountain Lion). \endlist To check whether a system tray is present on the user's desktop, -- cgit v1.2.3 From 159f42222d06acd9a7ea9b25167e52060d47ab4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 6 Feb 2013 22:36:27 +0100 Subject: Remove duplicated code for handling OpenGL extensions in QtOpenGL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now re-use QOpenGLExtensions/Functions from QtGui in the same way as QtGui uses these classes. There is still some duplicated logic in qglfunctions.cpp, but this code now at least uses the shared QOpenGLExtensionMatcher class. Change-Id: Ie04008c43d430ae805e6ec1c45e7e363deeb3b8f Reviewed-by: Tor Arne Vestbø --- src/gui/opengl/qopengl_p.h | 2 +- .../gl2paintengineex/qpaintengineex_opengl2.cpp | 69 +-- .../gl2paintengineex/qpaintengineex_opengl2_p.h | 7 +- .../gl2paintengineex/qtextureglyphcache_gl.cpp | 21 +- .../gl2paintengineex/qtextureglyphcache_gl_p.h | 7 +- src/opengl/opengl.pro | 2 - src/opengl/qgl.cpp | 284 +++------- src/opengl/qgl.h | 1 - src/opengl/qgl_p.h | 78 +-- src/opengl/qglbuffer.cpp | 44 +- src/opengl/qglextensions.cpp | 414 --------------- src/opengl/qglextensions_p.h | 587 --------------------- src/opengl/qglframebufferobject.cpp | 149 +++--- src/opengl/qglframebufferobject_p.h | 2 + src/opengl/qglfunctions.cpp | 7 +- src/opengl/qglshaderprogram.cpp | 299 +++++------ 16 files changed, 366 insertions(+), 1607 deletions(-) delete mode 100644 src/opengl/qglextensions.cpp delete mode 100644 src/opengl/qglextensions_p.h (limited to 'src') diff --git a/src/gui/opengl/qopengl_p.h b/src/gui/opengl/qopengl_p.h index 777791e32b..3cf636751a 100644 --- a/src/gui/opengl/qopengl_p.h +++ b/src/gui/opengl/qopengl_p.h @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE -class QOpenGLExtensionMatcher +class Q_GUI_EXPORT QOpenGLExtensionMatcher { public: QOpenGLExtensionMatcher(); diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index fff1834499..27073e80be 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -112,7 +112,7 @@ QGL2PaintEngineExPrivate::~QGL2PaintEngineExPrivate() } if (elementIndicesVBOId != 0) { - glDeleteBuffers(1, &elementIndicesVBOId); + funcs.glDeleteBuffers(1, &elementIndicesVBOId); elementIndicesVBOId = 0; } } @@ -199,7 +199,7 @@ void QGL2PaintEngineExPrivate::updateBrushTexture() // Get the image data for the pattern QImage texImage = qt_imageForBrush(style, false); - glActiveTexture(GL_TEXTURE0 + QT_BRUSH_TEXTURE_UNIT); + funcs.glActiveTexture(GL_TEXTURE0 + QT_BRUSH_TEXTURE_UNIT); ctx->d_func()->bindTexture(texImage, GL_TEXTURE_2D, GL_RGBA, QGLContext::InternalBindOption); updateTextureFilter(GL_TEXTURE_2D, GL_REPEAT, q->state()->renderHints & QPainter::SmoothPixmapTransform); } @@ -212,7 +212,7 @@ void QGL2PaintEngineExPrivate::updateBrushTexture() // for opacity to the cache. GLuint texId = QGL2GradientCache::cacheForContext(ctx)->getBuffer(*g, 1.0); - glActiveTexture(GL_TEXTURE0 + QT_BRUSH_TEXTURE_UNIT); + funcs.glActiveTexture(GL_TEXTURE0 + QT_BRUSH_TEXTURE_UNIT); glBindTexture(GL_TEXTURE_2D, texId); if (g->spread() == QGradient::RepeatSpread || g->type() == QGradient::ConicalGradient) @@ -229,7 +229,7 @@ void QGL2PaintEngineExPrivate::updateBrushTexture() if (currentBrushPixmap.width() > max_texture_size || currentBrushPixmap.height() > max_texture_size) currentBrushPixmap = currentBrushPixmap.scaled(max_texture_size, max_texture_size, Qt::KeepAspectRatio); - glActiveTexture(GL_TEXTURE0 + QT_BRUSH_TEXTURE_UNIT); + funcs.glActiveTexture(GL_TEXTURE0 + QT_BRUSH_TEXTURE_UNIT); QGLTexture *tex = ctx->d_func()->bindTexture(currentBrushPixmap, GL_TEXTURE_2D, GL_RGBA, QGLContext::InternalBindOption | QGLContext::CanFlipNativePixmapBindOption); @@ -426,9 +426,9 @@ void QGL2PaintEngineExPrivate::updateMatrix() // Set the PMV matrix attribute. As we use an attributes rather than uniforms, we only // need to do this once for every matrix change and persists across all shader programs. - glVertexAttrib3fv(QT_PMV_MATRIX_1_ATTR, pmvMatrix[0]); - glVertexAttrib3fv(QT_PMV_MATRIX_2_ATTR, pmvMatrix[1]); - glVertexAttrib3fv(QT_PMV_MATRIX_3_ATTR, pmvMatrix[2]); + funcs.glVertexAttrib3fv(QT_PMV_MATRIX_1_ATTR, pmvMatrix[0]); + funcs.glVertexAttrib3fv(QT_PMV_MATRIX_2_ATTR, pmvMatrix[1]); + funcs.glVertexAttrib3fv(QT_PMV_MATRIX_3_ATTR, pmvMatrix[2]); dasher.setInvScale(inverseScale); stroker.setInvScale(inverseScale); @@ -538,12 +538,11 @@ void QGL2PaintEngineEx::beginNativePainting() d->nativePaintingActive = true; - QGLContext *ctx = d->ctx; - glUseProgram(0); + d->funcs.glUseProgram(0); // Disable all the vertex attribute arrays: for (int i = 0; i < QT_GL_VERTEX_ARRAY_TRACKED_COUNT; ++i) - glDisableVertexAttribArray(i); + d->funcs.glDisableVertexAttribArray(i); #ifndef QT_OPENGL_ES_2 const QGLFormat &fmt = d->device->format(); @@ -572,8 +571,6 @@ void QGL2PaintEngineEx::beginNativePainting() glMatrixMode(GL_MODELVIEW); glLoadMatrixf(&mv_matrix[0][0]); } -#else - Q_UNUSED(ctx); #endif d->lastTextureUsed = GLuint(-1); @@ -588,13 +585,13 @@ void QGL2PaintEngineEx::beginNativePainting() void QGL2PaintEngineExPrivate::resetGLState() { glDisable(GL_BLEND); - glActiveTexture(GL_TEXTURE0); + funcs.glActiveTexture(GL_TEXTURE0); glDisable(GL_STENCIL_TEST); glDisable(GL_DEPTH_TEST); glDisable(GL_SCISSOR_TEST); glDepthMask(true); glDepthFunc(GL_LESS); - glClearDepth(1); + funcs.glClearDepthf(1); glStencilMask(0xff); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); glStencilFunc(GL_ALWAYS, 0, 0xff); @@ -604,7 +601,7 @@ void QGL2PaintEngineExPrivate::resetGLState() #ifndef QT_OPENGL_ES_2 // gl_Color, corresponding to vertex attribute 3, may have been changed float color[] = { 1.0f, 1.0f, 1.0f, 1.0f }; - glVertexAttrib4fv(3, color); + funcs.glVertexAttrib4fv(3, color); #endif } @@ -733,7 +730,7 @@ void QGL2PaintEngineExPrivate::fill(const QVectorPath& path) qreal scaleFactor = cache->iscale / inverseScale; if (scaleFactor < 0.5 || scaleFactor > 2.0) { #ifdef QT_OPENGL_CACHE_AS_VBOS - glDeleteBuffers(1, &cache->vbo); + funcs.glDeleteBuffers(1, &cache->vbo); cache->vbo = 0; Q_ASSERT(cache->ibo == 0); #else @@ -760,9 +757,9 @@ void QGL2PaintEngineExPrivate::fill(const QVectorPath& path) cache->primitiveType = GL_TRIANGLE_FAN; cache->iscale = inverseScale; #ifdef QT_OPENGL_CACHE_AS_VBOS - glGenBuffers(1, &cache->vbo); - glBindBuffer(GL_ARRAY_BUFFER, cache->vbo); - glBufferData(GL_ARRAY_BUFFER, floatSizeInBytes, vertexCoordinateArray.data(), GL_STATIC_DRAW); + funcs.glGenBuffers(1, &cache->vbo); + funcs.glBindBuffer(GL_ARRAY_BUFFER, cache->vbo); + funcs.glBufferData(GL_ARRAY_BUFFER, floatSizeInBytes, vertexCoordinateArray.data(), GL_STATIC_DRAW); cache->ibo = 0; #else cache->vertices = (float *) malloc(floatSizeInBytes); @@ -773,7 +770,7 @@ void QGL2PaintEngineExPrivate::fill(const QVectorPath& path) prepareForDraw(currentBrush.isOpaque()); #ifdef QT_OPENGL_CACHE_AS_VBOS - glBindBuffer(GL_ARRAY_BUFFER, cache->vbo); + funcs.glBindBuffer(GL_ARRAY_BUFFER, cache->vbo); setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, 0); #else setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, cache->vertices); @@ -999,9 +996,9 @@ void QGL2PaintEngineExPrivate::fillStencilWithVertexArray(const float *data, } // Inc. for front-facing triangle - glStencilOpSeparate(GL_FRONT, GL_KEEP, GL_INCR_WRAP, GL_INCR_WRAP); + funcs.glStencilOpSeparate(GL_FRONT, GL_KEEP, GL_INCR_WRAP, GL_INCR_WRAP); // Dec. for back-facing "holes" - glStencilOpSeparate(GL_BACK, GL_KEEP, GL_DECR_WRAP, GL_DECR_WRAP); + funcs.glStencilOpSeparate(GL_BACK, GL_KEEP, GL_DECR_WRAP, GL_DECR_WRAP); glStencilMask(~GL_STENCIL_HIGH_BIT); drawVertexArrays(data, stops, stopCount, GL_TRIANGLE_FAN); @@ -1389,7 +1386,7 @@ void QGL2PaintEngineEx::drawPixmap(const QRectF& dest, const QPixmap & pixmap, c bindOptions |= QGLContext::TemporarilyCachedBindOption; #endif - glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); + d->funcs.glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); QGLTexture *texture = ctx->d_func()->bindTexture(pixmap, GL_TEXTURE_2D, GL_RGBA, bindOptions); @@ -1431,7 +1428,7 @@ void QGL2PaintEngineEx::drawImage(const QRectF& dest, const QImage& image, const ensureActive(); d->transferMode(ImageDrawingMode); - glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); + d->funcs.glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); QGLContext::BindOptions bindOptions = QGLContext::InternalBindOption; #ifdef QGL_USE_TEXTURE_POOL @@ -1491,10 +1488,7 @@ bool QGL2PaintEngineEx::drawTexture(const QRectF &dest, GLuint textureId, const ensureActive(); d->transferMode(ImageDrawingMode); -#ifndef QT_OPENGL_ES_2 - QGLContext *ctx = d->ctx; -#endif - glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); + d->funcs.glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); glBindTexture(GL_TEXTURE_2D, textureId); QGLRect srcRect(src.left(), src.bottom(), src.right(), src.top()); @@ -1778,7 +1772,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp glEnable(GL_BLEND); glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_SRC_COLOR); - glBlendColor(c.redF(), c.greenF(), c.blueF(), c.alphaF()); + funcs.glBlendColor(c.redF(), c.greenF(), c.blueF(), c.alphaF()); } else { // Other brush styles need two passes. @@ -1795,7 +1789,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp glEnable(GL_BLEND); glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); - glActiveTexture(GL_TEXTURE0 + QT_MASK_TEXTURE_UNIT); + funcs.glActiveTexture(GL_TEXTURE0 + QT_MASK_TEXTURE_UNIT); glBindTexture(GL_TEXTURE_2D, cache->texture()); updateTextureFilter(GL_TEXTURE_2D, GL_REPEAT, false); @@ -1830,7 +1824,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp QGLTextureGlyphCache::FilterMode filterMode = (s->matrix.type() > QTransform::TxTranslate)?QGLTextureGlyphCache::Linear:QGLTextureGlyphCache::Nearest; if (lastMaskTextureUsed != cache->texture() || cache->filterMode() != filterMode) { - glActiveTexture(GL_TEXTURE0 + QT_MASK_TEXTURE_UNIT); + funcs.glActiveTexture(GL_TEXTURE0 + QT_MASK_TEXTURE_UNIT); if (lastMaskTextureUsed != cache->texture()) { glBindTexture(GL_TEXTURE_2D, cache->texture()); lastMaskTextureUsed = cache->texture(); @@ -1937,7 +1931,7 @@ void QGL2PaintEngineExPrivate::drawPixmapFragments(const QPainter::PixmapFragmen allOpaque &= (opacity >= 0.99f); } - glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); + funcs.glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); QGLTexture *texture = ctx->d_func()->bindTexture(pixmap, GL_TEXTURE_2D, GL_RGBA, QGLContext::InternalBindOption | QGLContext::CanFlipNativePixmapBindOption); @@ -2010,14 +2004,7 @@ bool QGL2PaintEngineEx::begin(QPaintDevice *pdev) // go after beginPaint: d->device->beginPaint(); -#if !defined(QT_OPENGL_ES_2) - bool success = qt_resolve_version_2_0_functions(d->ctx) - && qt_resolve_buffer_extensions(d->ctx) - && (!QGLFramebufferObject::hasOpenGLFramebufferObjects() - || qt_resolve_framebufferobject_extensions(d->ctx)); - Q_ASSERT(success); - Q_UNUSED(success); -#endif + d->funcs.initializeOpenGLFunctions(); d->shaderManager = new QGLEngineShaderManager(d->ctx); @@ -2051,7 +2038,7 @@ bool QGL2PaintEngineEx::end() Q_D(QGL2PaintEngineEx); QGLContext *ctx = d->ctx; - glUseProgram(0); + d->funcs.glUseProgram(0); d->transferMode(BrushDrawingMode); d->device->endPaint(); diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h index 401a3824c5..b0517fd083 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h @@ -62,6 +62,7 @@ #include #include #include +#include enum EngineMode { ImageDrawingMode, @@ -256,6 +257,8 @@ public: EngineMode mode; QFontEngineGlyphCache::Type glyphCacheType; + QOpenGLExtensions funcs; + // Dirty flags bool matrixDirty; // Implies matrix uniforms are also dirty bool compositionModeDirty; @@ -317,9 +320,9 @@ void QGL2PaintEngineExPrivate::setVertexAttributePointer(unsigned int arrayIndex vertexAttribPointers[arrayIndex] = pointer; if (arrayIndex == QT_OPACITY_ATTR) - glVertexAttribPointer(arrayIndex, 1, GL_FLOAT, GL_FALSE, 0, pointer); + funcs.glVertexAttribPointer(arrayIndex, 1, GL_FLOAT, GL_FALSE, 0, pointer); else - glVertexAttribPointer(arrayIndex, 2, GL_FLOAT, GL_FALSE, 0, pointer); + funcs.glVertexAttribPointer(arrayIndex, 2, GL_FLOAT, GL_FALSE, 0, pointer); } QT_END_NAMESPACE diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp index 045979e7ce..59401fe1e9 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp @@ -41,6 +41,7 @@ #include "qtextureglyphcache_gl_p.h" #include "qpaintengineex_opengl2_p.h" +#include "qglfunctions.h" #include "private/qglengineshadersource_p.h" QT_BEGIN_NAMESPACE @@ -167,10 +168,12 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height) return; } + QOpenGLFunctions *funcs = ctx->contextHandle()->functions(); + // ### the QTextureGlyphCache API needs to be reworked to allow // ### resizeTextureData to fail - glBindFramebuffer(GL_FRAMEBUFFER, m_textureResource->m_fbo); + funcs->glBindFramebuffer(GL_FRAMEBUFFER, m_textureResource->m_fbo); GLuint tmp_texture; glGenTextures(1, &tmp_texture); @@ -183,10 +186,10 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); m_filterMode = Nearest; glBindTexture(GL_TEXTURE_2D, 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, - GL_TEXTURE_2D, tmp_texture, 0); + funcs->glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_TEXTURE_2D, tmp_texture, 0); - glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); + funcs->glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); glBindTexture(GL_TEXTURE_2D, oldTexture); if (pex != 0) @@ -232,8 +235,8 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height) m_blitProgram->link(); } - glVertexAttribPointer(QT_VERTEX_COORDS_ATTR, 2, GL_FLOAT, GL_FALSE, 0, m_vertexCoordinateArray); - glVertexAttribPointer(QT_TEXTURE_COORDS_ATTR, 2, GL_FLOAT, GL_FALSE, 0, m_textureCoordinateArray); + funcs->glVertexAttribPointer(QT_VERTEX_COORDS_ATTR, 2, GL_FLOAT, GL_FALSE, 0, m_vertexCoordinateArray); + funcs->glVertexAttribPointer(QT_TEXTURE_COORDS_ATTR, 2, GL_FLOAT, GL_FALSE, 0, m_textureCoordinateArray); m_blitProgram->bind(); m_blitProgram->enableAttributeArray(int(QT_VERTEX_COORDS_ATTR)); @@ -258,12 +261,12 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height) glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, oldWidth, oldHeight); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, - GL_RENDERBUFFER, 0); + funcs->glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_RENDERBUFFER, 0); glDeleteTextures(1, &tmp_texture); glDeleteTextures(1, &oldTexture); - glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_ptr->current_fbo); + funcs->glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_ptr->current_fbo); if (pex != 0) { glViewport(0, 0, pex->width, pex->height); diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h index 16a7aacf20..8f43a906c0 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h @@ -57,6 +57,7 @@ #include #include #include +#include // #define QT_GL_TEXTURE_GLYPH_CACHE_DEBUG @@ -73,7 +74,7 @@ struct QGLGlyphTexture : public QOpenGLSharedResource , m_height(0) { if (ctx && QGLFramebufferObject::hasOpenGLFramebufferObjects() && !ctx->d_ptr->workaround_brokenFBOReadBack) - glGenFramebuffers(1, &m_fbo); + ctx->contextHandle()->functions()->glGenFramebuffers(1, &m_fbo); #ifdef QT_GL_TEXTURE_GLYPH_CACHE_DEBUG qDebug(" -> QGLGlyphTexture() %p for context %p.", this, ctx); @@ -88,8 +89,8 @@ struct QGLGlyphTexture : public QOpenGLSharedResource #else Q_UNUSED(ctx); #endif - if (m_fbo) - glDeleteFramebuffers(1, &m_fbo); + if (ctx && m_fbo) + ctx->contextHandle()->functions()->glDeleteFramebuffers(1, &m_fbo); if (m_width || m_height) glDeleteTextures(1, &m_texture); } diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro index 64b33b8c97..4d9208d983 100644 --- a/src/opengl/opengl.pro +++ b/src/opengl/opengl.pro @@ -23,7 +23,6 @@ HEADERS += qgl.h \ qglpixelbuffer_p.h \ qglframebufferobject.h \ qglframebufferobject_p.h \ - qglextensions_p.h \ qglpaintdevice_p.h \ qglbuffer.h \ qtopenglglobal.h @@ -33,7 +32,6 @@ SOURCES += qgl.cpp \ qglfunctions.cpp \ qglpixelbuffer.cpp \ qglframebufferobject.cpp \ - qglextensions.cpp \ qglpaintdevice.cpp \ qglbuffer.cpp \ diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 402fdfa33f..f9ed294cca 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -59,6 +59,7 @@ #include #include +#include #include #include @@ -73,7 +74,52 @@ QT_BEGIN_NAMESPACE -QGLExtensionFuncs QGLContextPrivate::qt_extensionFuncs; +class QGLDefaultExtensions +{ +public: + QGLDefaultExtensions() : extensions(0) { + QGLTemporaryContext tempContext; + Q_ASSERT(QOpenGLContext::currentContext()); + QOpenGLExtensions *ext = qgl_extensions(); + Q_ASSERT(ext); + extensions = ext->openGLExtensions(); + features = ext->openGLFeatures(); + } + + QOpenGLFunctions::OpenGLFeatures features; + QOpenGLExtensions::OpenGLExtensions extensions; +}; + +Q_GLOBAL_STATIC(QGLDefaultExtensions, qtDefaultExtensions) + +bool qgl_hasFeature(QOpenGLFunctions::OpenGLFeature feature) +{ + if (QOpenGLContext::currentContext()) + return QOpenGLContext::currentContext()->functions()->hasOpenGLFeature(feature); + return qtDefaultExtensions()->features & feature; +} + +bool qgl_hasExtension(QOpenGLExtensions::OpenGLExtension extension) +{ + if (QOpenGLContext::currentContext()) + return qgl_extensions()->hasOpenGLExtension(extension); + return qtDefaultExtensions()->extensions & extension; +} + +QOpenGLExtensions::OpenGLExtensions extensions; +/* + Returns the GL extensions for the current QOpenGLContext. If there is no + current QOpenGLContext, a default context will be created and the extensions + for that context will be returned instead. +*/ +QOpenGLExtensions* qgl_extensions() +{ + if (QOpenGLContext *context = QOpenGLContext::currentContext()) + return static_cast(context->functions()); + + Q_ASSERT(false); + return 0; +} struct QGLThreadContext { ~QGLThreadContext() { @@ -1567,8 +1613,6 @@ void QGLContextPrivate::init(QPaintDevice *dev, const QGLFormat &format) max_texture_size = -1; version_flags_cached = false; version_flags = QGLFormat::OpenGL_Version_None; - extension_flags_cached = false; - extension_flags = 0; current_fbo = 0; default_fbo = 0; active_engine = 0; @@ -1956,30 +2000,32 @@ void QGLContextPrivate::cleanup() #define ctx q_ptr void QGLContextPrivate::setVertexAttribArrayEnabled(int arrayIndex, bool enabled) { + Q_Q(QGLContext); Q_ASSERT(arrayIndex < QT_GL_VERTEX_ARRAY_TRACKED_COUNT); #ifdef glEnableVertexAttribArray Q_ASSERT(glEnableVertexAttribArray); #endif if (vertexAttributeArraysEnabledState[arrayIndex] && !enabled) - glDisableVertexAttribArray(arrayIndex); + q->functions()->glDisableVertexAttribArray(arrayIndex); if (!vertexAttributeArraysEnabledState[arrayIndex] && enabled) - glEnableVertexAttribArray(arrayIndex); + q->functions()->glEnableVertexAttribArray(arrayIndex); vertexAttributeArraysEnabledState[arrayIndex] = enabled; } void QGLContextPrivate::syncGlState() { + Q_Q(QGLContext); #ifdef glEnableVertexAttribArray Q_ASSERT(glEnableVertexAttribArray); #endif for (int i = 0; i < QT_GL_VERTEX_ARRAY_TRACKED_COUNT; ++i) { if (vertexAttributeArraysEnabledState[i]) - glEnableVertexAttribArray(i); + q->functions()->glEnableVertexAttribArray(i); else - glDisableVertexAttribArray(i); + q->functions()->glDisableVertexAttribArray(i); } } @@ -2129,11 +2175,6 @@ static void convertToGLFormatHelper(QImage &dst, const QImage &img, GLenum textu } } -QGLExtensionFuncs& QGLContextPrivate::extensionFuncs(const QGLContext *) -{ - return qt_extensionFuncs; -} - /*! \internal */ QGLTexture *QGLContextPrivate::bindTexture(const QImage &image, GLenum target, GLint format, QGLContext::BindOptions options) @@ -2221,7 +2262,7 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G QImage img = image; - if (!(QGLExtensions::glExtensions() & QGLExtensions::NPOTTextures) + if (!qgl_extensions()->hasOpenGLFeature(QOpenGLFunctions::NPOTTextures) && !(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0) && (target == GL_TEXTURE_2D && (tx_w != image.width() || tx_h != image.height()))) { @@ -2243,7 +2284,7 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G bool genMipmap = false; #endif if (glFormat.directRendering() - && (QGLExtensions::glExtensions() & QGLExtensions::GenerateMipmap) + && (qgl_extensions()->hasOpenGLExtension(QOpenGLExtensions::GenerateMipmap)) && target == GL_TEXTURE_2D && (options & QGLContext::MipmapBindOption)) { @@ -2267,7 +2308,7 @@ QGLTexture* QGLContextPrivate::bindTexture(const QImage &image, GLenum target, G bool premul = options & QGLContext::PremultipliedAlphaBindOption; GLenum externalFormat; GLuint pixel_type; - if (QGLExtensions::glExtensions() & QGLExtensions::BGRATextureFormat) { + if (qgl_extensions()->hasOpenGLExtension(QOpenGLExtensions::BGRATextureFormat)) { externalFormat = GL_BGRA; if (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_1_2) pixel_type = GL_UNSIGNED_INT_8_8_8_8_REV; @@ -4651,192 +4692,6 @@ QPaintEngine *QGLWidget::paintEngine() const return qt_qgl_paint_engine(); } -typedef const GLubyte * (QGLF_APIENTRYP qt_glGetStringi)(GLenum, GLuint); - -#ifndef GL_NUM_EXTENSIONS -#define GL_NUM_EXTENSIONS 0x821D -#endif - -QGLExtensionMatcher::QGLExtensionMatcher(const char *str) -{ - init(str); -} - -QGLExtensionMatcher::QGLExtensionMatcher() -{ - const char *extensionStr = reinterpret_cast(glGetString(GL_EXTENSIONS)); - - if (extensionStr) { - init(extensionStr); - } else { - // clear error state - while (glGetError()) {} - - const QGLContext *ctx = QGLContext::currentContext(); - if (ctx) { - qt_glGetStringi glGetStringi = (qt_glGetStringi)ctx->getProcAddress(QLatin1String("glGetStringi")); - - GLint numExtensions; - glGetIntegerv(GL_NUM_EXTENSIONS, &numExtensions); - - for (int i = 0; i < numExtensions; ++i) { - const char *str = reinterpret_cast(glGetStringi(GL_EXTENSIONS, i)); - - m_offsets << m_extensions.size(); - - while (*str != 0) - m_extensions.append(*str++); - m_extensions.append(' '); - } - } - } -} - -void QGLExtensionMatcher::init(const char *str) -{ - m_extensions = str; - - // make sure extension string ends with a space - if (!m_extensions.endsWith(' ')) - m_extensions.append(' '); - - int index = 0; - int next = 0; - while ((next = m_extensions.indexOf(' ', index)) >= 0) { - m_offsets << index; - index = next + 1; - } -} - -// ####TODO Properly #ifdef this class to use #define symbols actually defined -// by OpenGL/ES includes -#ifndef GL_FRAMEBUFFER_SRGB_CAPABLE_EXT -#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA -#endif - -/* - Returns the GL extensions for the current context. -*/ -QGLExtensions::Extensions QGLExtensions::currentContextExtensions() -{ - QGLExtensionMatcher extensions; - Extensions glExtensions; - - if (extensions.match("GL_ARB_texture_rectangle")) - glExtensions |= TextureRectangle; - if (extensions.match("GL_ARB_multisample")) - glExtensions |= SampleBuffers; - if (extensions.match("GL_SGIS_generate_mipmap")) - glExtensions |= GenerateMipmap; - if (extensions.match("GL_ARB_texture_compression")) - glExtensions |= TextureCompression; - if (extensions.match("GL_EXT_texture_compression_s3tc")) - glExtensions |= DDSTextureCompression; - if (extensions.match("GL_OES_compressed_ETC1_RGB8_texture")) - glExtensions |= ETC1TextureCompression; - if (extensions.match("GL_IMG_texture_compression_pvrtc")) - glExtensions |= PVRTCTextureCompression; - if (extensions.match("GL_ARB_fragment_program")) - glExtensions |= FragmentProgram; - if (extensions.match("GL_ARB_fragment_shader")) - glExtensions |= FragmentShader; - if (extensions.match("GL_ARB_shader_objects")) - glExtensions |= FragmentShader; - if (extensions.match("GL_ARB_texture_mirrored_repeat")) - glExtensions |= MirroredRepeat; - if (extensions.match("GL_EXT_framebuffer_object")) - glExtensions |= FramebufferObject; - if (extensions.match("GL_EXT_stencil_two_side")) - glExtensions |= StencilTwoSide; - if (extensions.match("GL_EXT_stencil_wrap")) - glExtensions |= StencilWrap; - if (extensions.match("GL_EXT_packed_depth_stencil")) - glExtensions |= PackedDepthStencil; - if (extensions.match("GL_NV_float_buffer")) - glExtensions |= NVFloatBuffer; - if (extensions.match("GL_ARB_pixel_buffer_object")) - glExtensions |= PixelBufferObject; - if (extensions.match("GL_IMG_texture_format_BGRA8888")) - glExtensions |= BGRATextureFormat; -#if defined(QT_OPENGL_ES_2) - glExtensions |= FramebufferObject; - glExtensions |= GenerateMipmap; - glExtensions |= FragmentShader; -#endif -#if defined(QT_OPENGL_ES) - if (extensions.match("GL_OES_packed_depth_stencil")) - glExtensions |= PackedDepthStencil; - if (extensions.match("GL_OES_element_index_uint")) - glExtensions |= ElementIndexUint; - if (extensions.match("GL_OES_depth24")) - glExtensions |= Depth24; -#else - glExtensions |= ElementIndexUint; -#endif - if (extensions.match("GL_ARB_framebuffer_object")) { - // ARB_framebuffer_object also includes EXT_framebuffer_blit. - glExtensions |= FramebufferObject; - glExtensions |= FramebufferBlit; - } - - if (extensions.match("GL_EXT_framebuffer_blit")) - glExtensions |= FramebufferBlit; - - if (extensions.match("GL_ARB_texture_non_power_of_two")) - glExtensions |= NPOTTextures; - - if (extensions.match("GL_EXT_bgra")) - glExtensions |= BGRATextureFormat; - -#if !defined(QT_OPENGL_ES) - { - GLboolean srgbCapableFramebuffers = false; - glGetBooleanv(GL_FRAMEBUFFER_SRGB_CAPABLE_EXT, &srgbCapableFramebuffers); - if (srgbCapableFramebuffers) - glExtensions |= SRGBFrameBuffer; - } -#endif - - return glExtensions; -} - - -class QGLDefaultExtensions -{ -public: - QGLDefaultExtensions() { - QGLTemporaryContext tempContext; - extensions = QGLExtensions::currentContextExtensions(); - } - - QGLExtensions::Extensions extensions; -}; - -Q_GLOBAL_STATIC(QGLDefaultExtensions, qtDefaultExtensions) - -/* - Returns the GL extensions for the current QGLContext. If there is no - current QGLContext, a default context will be created and the extensions - for that context will be returned instead. -*/ -QGLExtensions::Extensions QGLExtensions::glExtensions() -{ - Extensions extensionFlags = 0; - QGLContext *currentCtx = const_cast(QGLContext::currentContext()); - - if (currentCtx && currentCtx->d_func()->extension_flags_cached) - return currentCtx->d_func()->extension_flags; - - if (!currentCtx) { - extensionFlags = qtDefaultExtensions()->extensions; - } else { - extensionFlags = currentContextExtensions(); - currentCtx->d_func()->extension_flags_cached = true; - currentCtx->d_func()->extension_flags = extensionFlags; - } - return extensionFlags; -} - /* This is the shared initialization for all platforms. Called from QGLWidgetPrivate::init() */ @@ -5023,21 +4878,6 @@ QSize QGLTexture::bindCompressedTexture // systems such as x86 and ARM at the moment. return QSize(); } -#if !defined(QT_OPENGL_ES) - if (!glCompressedTexImage2D) { - if (!(QGLExtensions::glExtensions() & QGLExtensions::TextureCompression)) { - qWarning("QGLContext::bindTexture(): The GL implementation does " - "not support texture compression extensions."); - return QSize(); - } - glCompressedTexImage2D = (_glCompressedTexImage2DARB) ctx->getProcAddress(QLatin1String("glCompressedTexImage2DARB")); - if (!glCompressedTexImage2D) { - qWarning("QGLContext::bindTexture(): could not resolve " - "glCompressedTexImage2DARB."); - return QSize(); - } - } -#endif if (!format) { // Auto-detect the format from the header. if (len >= 4 && !qstrncmp(buf, "DDS ", 4)) @@ -5064,7 +4904,7 @@ QSize QGLTexture::bindCompressedTextureDDS(const char *buf, int len) return QSize(); // Bail out if the necessary extension is not present. - if (!(QGLExtensions::glExtensions() & QGLExtensions::DDSTextureCompression)) { + if (!qgl_extensions()->hasOpenGLExtension(QOpenGLExtensions::DDSTextureCompression)) { qWarning("QGLContext::bindTexture(): DDS texture compression is not supported."); return QSize(); } @@ -5116,7 +4956,7 @@ QSize QGLTexture::bindCompressedTextureDDS(const char *buf, int len) size = ((w+3)/4) * ((h+3)/4) * blockSize; if (size > available) break; - glCompressedTexImage2D(GL_TEXTURE_2D, i, format, w, h, 0, + qgl_extensions()->glCompressedTexImage2D(GL_TEXTURE_2D, i, format, w, h, 0, size, pixels + offset); offset += size; available -= size; @@ -5174,14 +5014,12 @@ QSize QGLTexture::bindCompressedTexturePVR(const char *buf, int len) // Bail out if the necessary extension is not present. if (textureFormat == GL_ETC1_RGB8_OES) { - if (!(QGLExtensions::glExtensions() & - QGLExtensions::ETC1TextureCompression)) { + if (!qgl_extensions()->hasOpenGLExtension(QOpenGLExtensions::ETC1TextureCompression)) { qWarning("QGLContext::bindTexture(): ETC1 texture compression is not supported."); return QSize(); } } else { - if (!(QGLExtensions::glExtensions() & - QGLExtensions::PVRTCTextureCompression)) { + if (!qgl_extensions()->hasOpenGLExtension(QOpenGLExtensions::PVRTCTextureCompression)) { qWarning("QGLContext::bindTexture(): PVRTC texture compression is not supported."); return QSize(); } @@ -5227,7 +5065,7 @@ QSize QGLTexture::bindCompressedTexturePVR(const char *buf, int len) pvrHeader->bitsPerPixel) / 8; if (size > bufferSize) break; - glCompressedTexImage2D(GL_TEXTURE_2D, GLint(level), textureFormat, + qgl_extensions()->glCompressedTexImage2D(GL_TEXTURE_2D, GLint(level), textureFormat, GLsizei(width), GLsizei(height), 0, GLsizei(size), buffer); width /= 2; diff --git a/src/opengl/qgl.h b/src/opengl/qgl.h index 7624a13d97..fa9037abae 100644 --- a/src/opengl/qgl.h +++ b/src/opengl/qgl.h @@ -368,7 +368,6 @@ private: friend struct QGLGlyphTexture; friend class QGLContextGroup; friend class QGLPixmapBlurFilter; - friend class QGLExtensions; friend class QGLTexture; friend QGLFormat::OpenGLVersionFlags QGLFormat::openGLVersionFlags(); friend class QGLFramebufferObject; diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index 0791fe5110..9a58beb3d7 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -62,17 +62,18 @@ #include "QtCore/qatomic.h" #include "QtWidgets/private/qwidget_p.h" #include "QtGui/private/qopenglcontext_p.h" +#include "QtGui/private/qopenglextensions_p.h" #include "qcache.h" #include "qglpaintdevice_p.h" #include -#include QT_BEGIN_NAMESPACE class QGLContext; class QGLOverlayWidget; class QPixmap; +class QOpenGLExtensions; class QGLFormatPrivate { @@ -162,7 +163,6 @@ class QGLContextGroup public: ~QGLContextGroup(); - QGLExtensionFuncs &extensionFuncs() {return m_extensionFuncs;} const QGLContext *context() const {return m_context;} bool isSharing() const { return m_shares.size() >= 2; } QList shares() const { return m_shares; } @@ -173,7 +173,6 @@ public: private: QGLContextGroup(const QGLContext *context); - QGLExtensionFuncs m_extensionFuncs; const QGLContext *m_context; // context group's representative QList m_shares; QAtomicInt m_refs; @@ -187,39 +186,6 @@ private: // "ctx" is destroyed. Returns null if nothing is sharing with ctx. const QGLContext *qt_gl_transfer_context(const QGLContext *); -// GL extension definitions -class QGLExtensions { -public: - enum Extension { - TextureRectangle = 0x00000001, - SampleBuffers = 0x00000002, - GenerateMipmap = 0x00000004, - TextureCompression = 0x00000008, - FragmentProgram = 0x00000010, - MirroredRepeat = 0x00000020, - FramebufferObject = 0x00000040, - StencilTwoSide = 0x00000080, - StencilWrap = 0x00000100, - PackedDepthStencil = 0x00000200, - NVFloatBuffer = 0x00000400, - PixelBufferObject = 0x00000800, - FramebufferBlit = 0x00001000, - NPOTTextures = 0x00002000, - BGRATextureFormat = 0x00004000, - DDSTextureCompression = 0x00008000, - ETC1TextureCompression = 0x00010000, - PVRTCTextureCompression = 0x00020000, - FragmentShader = 0x00040000, - ElementIndexUint = 0x00080000, - Depth24 = 0x00100000, - SRGBFrameBuffer = 0x00200000 - }; - Q_DECLARE_FLAGS(Extensions, Extension) - - static Extensions glExtensions(); - static Extensions currentContextExtensions(); -}; - /* QGLTemporaryContext - the main objective of this class is to have a way of creating a GL context and making it current, without going via QGLWidget @@ -288,7 +254,6 @@ public: uint crWin : 1; uint internal_context : 1; uint version_flags_cached : 1; - uint extension_flags_cached : 1; // workarounds for driver/hw bugs on different platforms uint workaround_needsFullClearOnEveryFrame : 1; @@ -306,7 +271,6 @@ public: QColor transpColor; QGLContext *q_ptr; QGLFormat::OpenGLVersionFlags version_flags; - QGLExtensions::Extensions extension_flags; QGLContextGroup *group; GLint max_texture_size; @@ -322,14 +286,9 @@ public: static inline QGLContextGroup *contextGroup(const QGLContext *ctx) { return ctx->d_ptr->group; } - static Q_OPENGL_EXPORT QGLExtensionFuncs qt_extensionFuncs; - static Q_OPENGL_EXPORT QGLExtensionFuncs& extensionFuncs(const QGLContext *); - static void setCurrentContext(QGLContext *context); }; -Q_DECLARE_OPERATORS_FOR_FLAGS(QGLExtensions::Extensions) - // Temporarily make a context current if not already current or // shared with the current contex. The previous context is made // current when the object goes out of scope. @@ -510,6 +469,10 @@ QGLTexture* QGLTextureCache::getTexture(QGLContext *ctx, qint64 key) Q_OPENGL_EXPORT extern QPaintEngine* qt_qgl_paint_engine(); +QOpenGLExtensions* qgl_extensions(); +bool qgl_hasFeature(QOpenGLFunctions::OpenGLFeature feature); +bool qgl_hasExtension(QOpenGLExtensions::OpenGLExtension extension); + // Put a guard around a GL object identifier and its context. // When the context goes away, a shared context will be used // in its place. If there are no more shared contexts, then @@ -574,35 +537,6 @@ QGLSharedResourceGuardBase *createSharedResourceGuard(QGLContext *context, GLuin return new QGLSharedResourceGuard(context, id, cleanupFunc); } -class QGLExtensionMatcher -{ -public: - QGLExtensionMatcher(const char *str); - QGLExtensionMatcher(); - - bool match(const char *str) const { - int str_length = qstrlen(str); - - Q_ASSERT(str); - Q_ASSERT(str_length > 0); - Q_ASSERT(str[str_length-1] != ' '); - - for (int i = 0; i < m_offsets.size(); ++i) { - const char *extension = m_extensions.constData() + m_offsets.at(i); - if (qstrncmp(extension, str, str_length) == 0 && extension[str_length] == ' ') - return true; - } - return false; - } - -private: - void init(const char *str); - - QByteArray m_extensions; - QVector m_offsets; -}; - - // this is a class that wraps a QThreadStorage object for storing // thread local instances of the GL 1 and GL 2 paint engines diff --git a/src/opengl/qglbuffer.cpp b/src/opengl/qglbuffer.cpp index 425e8cff09..e10bc010c5 100644 --- a/src/opengl/qglbuffer.cpp +++ b/src/opengl/qglbuffer.cpp @@ -41,7 +41,7 @@ #include #include -#include +#include #include #include "qglbuffer.h" @@ -139,7 +139,8 @@ public: type(t), guard(0), usagePattern(QGLBuffer::StaticDraw), - actualUsagePattern(QGLBuffer::StaticDraw) + actualUsagePattern(QGLBuffer::StaticDraw), + funcs(0) { } @@ -148,6 +149,7 @@ public: QGLSharedResourceGuardBase *guard; QGLBuffer::UsagePattern usagePattern; QGLBuffer::UsagePattern actualUsagePattern; + QOpenGLExtensions *funcs; }; /*! @@ -259,8 +261,8 @@ void QGLBuffer::setUsagePattern(QGLBuffer::UsagePattern value) namespace { void freeBufferFunc(QGLContext *ctx, GLuint id) { - Q_UNUSED(ctx); - glDeleteBuffers(1, &id); + Q_ASSERT(ctx); + ctx->contextHandle()->functions()->glDeleteBuffers(1, &id); } } @@ -284,10 +286,13 @@ bool QGLBuffer::create() return true; QGLContext *ctx = const_cast(QGLContext::currentContext()); if (ctx) { - if (!qt_resolve_buffer_extensions(ctx)) + delete d->funcs; + d->funcs = new QOpenGLExtensions(ctx->contextHandle()); + if (!d->funcs->hasOpenGLFeature(QOpenGLFunctions::Buffers)) return false; + GLuint bufferId = 0; - glGenBuffers(1, &bufferId); + d->funcs->glGenBuffers(1, &bufferId); if (bufferId) { if (d->guard) d->guard->free(); @@ -340,10 +345,10 @@ bool QGLBuffer::read(int offset, void *data, int count) { #if !defined(QT_OPENGL_ES) Q_D(QGLBuffer); - if (!glGetBufferSubData || !d->guard->id()) + if (!d->funcs->hasOpenGLFeature(QOpenGLFunctions::Buffers) || !d->guard->id()) return false; while (glGetError() != GL_NO_ERROR) ; // Clear error state. - glGetBufferSubData(d->type, offset, count, data); + d->funcs->glGetBufferSubData(d->type, offset, count, data); return glGetError() == GL_NO_ERROR; #else Q_UNUSED(offset); @@ -371,7 +376,7 @@ void QGLBuffer::write(int offset, const void *data, int count) #endif Q_D(QGLBuffer); if (d->guard && d->guard->id()) - glBufferSubData(d->type, offset, count, data); + d->funcs->glBufferSubData(d->type, offset, count, data); } /*! @@ -391,7 +396,7 @@ void QGLBuffer::allocate(const void *data, int count) #endif Q_D(QGLBuffer); if (d->guard && d->guard->id()) - glBufferData(d->type, count, data, d->actualUsagePattern); + d->funcs->glBufferData(d->type, count, data, d->actualUsagePattern); } /*! @@ -433,7 +438,7 @@ bool QGLBuffer::bind() #endif return false; } - glBindBuffer(d->type, bufferId); + d->funcs->glBindBuffer(d->type, bufferId); return true; } else { return false; @@ -457,7 +462,7 @@ void QGLBuffer::release() #endif Q_D(const QGLBuffer); if (d->guard && d->guard->id()) - glBindBuffer(d->type, 0); + d->funcs->glBindBuffer(d->type, 0); } #undef ctx @@ -477,9 +482,8 @@ void QGLBuffer::release() */ void QGLBuffer::release(QGLBuffer::Type type) { - const QGLContext *ctx = QGLContext::currentContext(); - if (ctx && qt_resolve_buffer_extensions(const_cast(ctx))) - glBindBuffer(GLenum(type), 0); + if (QOpenGLContext *ctx = QOpenGLContext::currentContext()) + ctx->functions()->glBindBuffer(GLenum(type), 0); } #define ctx QGLContext::currentContext() @@ -515,7 +519,7 @@ int QGLBuffer::size() const if (!d->guard || !d->guard->id()) return -1; GLint value = -1; - glGetBufferParameteriv(d->type, GL_BUFFER_SIZE, &value); + d->funcs->glGetBufferParameteriv(d->type, GL_BUFFER_SIZE, &value); return value; } @@ -542,9 +546,7 @@ void *QGLBuffer::map(QGLBuffer::Access access) #endif if (!d->guard || !d->guard->id()) return 0; - if (!glMapBufferARB) - return 0; - return glMapBufferARB(d->type, access); + return d->funcs->glMapBuffer(d->type, access); } /*! @@ -569,9 +571,7 @@ bool QGLBuffer::unmap() #endif if (!d->guard || !d->guard->id()) return false; - if (!glUnmapBufferARB) - return false; - return glUnmapBufferARB(d->type) == GL_TRUE; + return d->funcs->glUnmapBuffer(d->type) == GL_TRUE; } QT_END_NAMESPACE diff --git a/src/opengl/qglextensions.cpp b/src/opengl/qglextensions.cpp deleted file mode 100644 index 32304ca3bb..0000000000 --- a/src/opengl/qglextensions.cpp +++ /dev/null @@ -1,414 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtOpenGL module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qgl_p.h" -#include - -QT_BEGIN_NAMESPACE - -static QFunctionPointer qt_gl_getProcAddress_search - (QGLContext *ctx, const char *name1, const char *name2, - const char *name3, const char *name4) -{ - QFunctionPointer addr = ctx->getProcAddress(QLatin1String(name1)); - if (addr) - return addr; - - addr = ctx->getProcAddress(QLatin1String(name2)); - if (addr) - return addr; - - addr = ctx->getProcAddress(QLatin1String(name3)); - if (addr) - return addr; - - if (name4) - return ctx->getProcAddress(QLatin1String(name4)); - - return 0; -} - -// Search for an extension function starting with the most likely -// function suffix first, and then trying the other variations. -#if defined(QT_OPENGL_ES) -#define qt_gl_getProcAddress(ctx,name) \ - qt_gl_getProcAddress_search((ctx), name, name "OES", name "EXT", name "ARB") -#define qt_gl_getProcAddressEXT(ctx,name) \ - qt_gl_getProcAddress_search((ctx), name "OES", name, name "EXT", name "ARB") -#define qt_gl_getProcAddressARB(ctx,name) \ - qt_gl_getProcAddress_search((ctx), name "OES", name, name "ARB", name "EXT") -#define qt_gl_getProcAddressOES(ctx,name) \ - qt_gl_getProcAddress_search((ctx), name "OES", name, name "EXT", name "ARB") -#else -#define qt_gl_getProcAddress(ctx,name) \ - qt_gl_getProcAddress_search((ctx), name, name "ARB", name "EXT", 0) -#define qt_gl_getProcAddressEXT(ctx,name) \ - qt_gl_getProcAddress_search((ctx), name "EXT", name, name "ARB", 0) -#define qt_gl_getProcAddressARB(ctx,name) \ - qt_gl_getProcAddress_search((ctx), name "ARB", name, name "EXT", 0) -#define qt_gl_getProcAddressOES(ctx,name) \ - qt_gl_getProcAddress_search((ctx), name "OES", name, name "EXT", name "ARB") -#endif - -bool qt_resolve_framebufferobject_extensions(QGLContext *ctx) -{ -#if defined(QT_OPENGL_ES_2) - static bool have_resolved = false; - if (have_resolved) - return true; - have_resolved = true; -#else - if (glIsRenderbuffer != 0) - return true; -#endif - - if (ctx == 0) { - qWarning("QGLFramebufferObject: Unable to resolve framebuffer object extensions -" - " make sure there is a current context when creating the framebuffer object."); - return false; - } - - - glBlitFramebufferEXT = (_glBlitFramebufferEXT) qt_gl_getProcAddressEXT(ctx, "glBlitFramebuffer"); - glRenderbufferStorageMultisampleEXT = - (_glRenderbufferStorageMultisampleEXT) qt_gl_getProcAddressEXT(ctx, "glRenderbufferStorageMultisample"); - -#if !defined(QT_OPENGL_ES_2) - glIsRenderbuffer = (_glIsRenderbuffer) qt_gl_getProcAddressEXT(ctx, "glIsRenderbuffer"); - if (!glIsRenderbuffer) - return false; // Not much point searching for anything else. - glBindRenderbuffer = (_glBindRenderbuffer) qt_gl_getProcAddressEXT(ctx, "glBindRenderbuffer"); - glDeleteRenderbuffers = (_glDeleteRenderbuffers) qt_gl_getProcAddressEXT(ctx, "glDeleteRenderbuffers"); - glGenRenderbuffers = (_glGenRenderbuffers) qt_gl_getProcAddressEXT(ctx, "glGenRenderbuffers"); - glRenderbufferStorage = (_glRenderbufferStorage) qt_gl_getProcAddressEXT(ctx, "glRenderbufferStorage"); - glGetRenderbufferParameteriv = - (_glGetRenderbufferParameteriv) qt_gl_getProcAddressEXT(ctx, "glGetRenderbufferParameteriv"); - glIsFramebuffer = (_glIsFramebuffer) qt_gl_getProcAddressEXT(ctx, "glIsFramebuffer"); - glBindFramebuffer = (_glBindFramebuffer) qt_gl_getProcAddressEXT(ctx, "glBindFramebuffer"); - glDeleteFramebuffers = (_glDeleteFramebuffers) qt_gl_getProcAddressEXT(ctx, "glDeleteFramebuffers"); - glGenFramebuffers = (_glGenFramebuffers) qt_gl_getProcAddressEXT(ctx, "glGenFramebuffers"); - glCheckFramebufferStatus = (_glCheckFramebufferStatus) qt_gl_getProcAddressEXT(ctx, "glCheckFramebufferStatus"); - glFramebufferTexture2D = (_glFramebufferTexture2D) qt_gl_getProcAddressEXT(ctx, "glFramebufferTexture2D"); - glFramebufferRenderbuffer = (_glFramebufferRenderbuffer) qt_gl_getProcAddressEXT(ctx, "glFramebufferRenderbuffer"); - glGetFramebufferAttachmentParameteriv = - (_glGetFramebufferAttachmentParameteriv) qt_gl_getProcAddressEXT(ctx, "glGetFramebufferAttachmentParameteriv"); - glGenerateMipmap = (_glGenerateMipmap) qt_gl_getProcAddressEXT(ctx, "glGenerateMipmap"); - - return glIsRenderbuffer != 0; -#else - return true; -#endif -} - -#if !defined(QT_OPENGL_ES_2) -bool qt_resolve_version_1_3_functions(QGLContext *ctx) -{ - if (glMultiTexCoord4f != 0) - return true; - - QGLContext cx(QGLFormat::defaultFormat()); - glMultiTexCoord4f = (_glMultiTexCoord4f) ctx->getProcAddress(QLatin1String("glMultiTexCoord4f")); - - glActiveTexture = (_glActiveTexture) ctx->getProcAddress(QLatin1String("glActiveTexture")); - return glMultiTexCoord4f && glActiveTexture; -} -#endif - -#if !defined(QT_OPENGL_ES_2) -bool qt_resolve_stencil_face_extension(QGLContext *ctx) -{ - if (glActiveStencilFaceEXT != 0) - return true; - - QGLContext cx(QGLFormat::defaultFormat()); - glActiveStencilFaceEXT = (_glActiveStencilFaceEXT) ctx->getProcAddress(QLatin1String("glActiveStencilFaceEXT")); - - return glActiveStencilFaceEXT; -} -#endif - - -#if !defined(QT_OPENGL_ES_2) -bool qt_resolve_frag_program_extensions(QGLContext *ctx) -{ - if (glProgramStringARB != 0) - return true; - - // ARB_fragment_program - glProgramStringARB = (_glProgramStringARB) ctx->getProcAddress(QLatin1String("glProgramStringARB")); - glBindProgramARB = (_glBindProgramARB) ctx->getProcAddress(QLatin1String("glBindProgramARB")); - glDeleteProgramsARB = (_glDeleteProgramsARB) ctx->getProcAddress(QLatin1String("glDeleteProgramsARB")); - glGenProgramsARB = (_glGenProgramsARB) ctx->getProcAddress(QLatin1String("glGenProgramsARB")); - glProgramLocalParameter4fvARB = (_glProgramLocalParameter4fvARB) ctx->getProcAddress(QLatin1String("glProgramLocalParameter4fvARB")); - - return glProgramStringARB - && glBindProgramARB - && glDeleteProgramsARB - && glGenProgramsARB - && glProgramLocalParameter4fvARB; -} -#endif - - -bool qt_resolve_buffer_extensions(QGLContext *ctx) -{ -#if defined(QGL_RESOLVE_BUFFER_FUNCS) - if (glBindBuffer && glDeleteBuffers && glGenBuffers && glBufferData - && glBufferSubData && glGetBufferParameteriv) - return true; -#endif - -#if defined(QGL_RESOLVE_BUFFER_FUNCS) - glBindBuffer = (_glBindBuffer) qt_gl_getProcAddressARB(ctx, "glBindBuffer"); - glDeleteBuffers = (_glDeleteBuffers) qt_gl_getProcAddressARB(ctx, "glDeleteBuffers"); - glGenBuffers = (_glGenBuffers) qt_gl_getProcAddressARB(ctx, "glGenBuffers"); - glBufferData = (_glBufferData) qt_gl_getProcAddressARB(ctx, "glBufferData"); - glBufferSubData = (_glBufferSubData) qt_gl_getProcAddressARB(ctx, "glBufferSubData"); - glGetBufferSubData = (_glGetBufferSubData) qt_gl_getProcAddressARB(ctx, "glGetBufferSubData"); - glGetBufferParameteriv = (_glGetBufferParameteriv) qt_gl_getProcAddressARB(ctx, "glGetBufferParameteriv"); -#endif - glMapBufferARB = (_glMapBufferARB) qt_gl_getProcAddressARB(ctx, "glMapBuffer"); - glUnmapBufferARB = (_glUnmapBufferARB) qt_gl_getProcAddressARB(ctx, "glUnmapBuffer"); - -#if defined(QGL_RESOLVE_BUFFER_FUNCS) - return glBindBuffer - && glDeleteBuffers - && glGenBuffers - && glBufferData - && glBufferSubData - && glGetBufferParameteriv; - // glGetBufferSubData() is optional -#else - return true; -#endif -} - -bool qt_resolve_glsl_extensions(QGLContext *ctx) -{ - -#if defined(QT_OPENGL_ES_2) - // The GLSL shader functions are always present in OpenGL/ES 2.0. - // The only exceptions are glGetProgramBinaryOES and glProgramBinaryOES. - if (!QGLContextPrivate::extensionFuncs(ctx).qt_glslResolved) { - glGetProgramBinaryOES = (_glGetProgramBinaryOES) ctx->getProcAddress(QLatin1String("glGetProgramBinaryOES")); - glProgramBinaryOES = (_glProgramBinaryOES) ctx->getProcAddress(QLatin1String("glProgramBinaryOES")); - QGLContextPrivate::extensionFuncs(ctx).qt_glslResolved = true; - } - return true; -#else - if (glCreateShader) - return true; - - // Geometry shaders are optional... - glProgramParameteriEXT = (_glProgramParameteriEXT) ctx->getProcAddress(QLatin1String("glProgramParameteriEXT")); - glFramebufferTextureEXT = (_glFramebufferTextureEXT) ctx->getProcAddress(QLatin1String("glFramebufferTextureEXT")); - glFramebufferTextureLayerEXT = (_glFramebufferTextureLayerEXT) ctx->getProcAddress(QLatin1String("glFramebufferTextureLayerEXT")); - glFramebufferTextureFaceEXT = (_glFramebufferTextureFaceEXT) ctx->getProcAddress(QLatin1String("glFramebufferTextureFaceEXT")); - - // Must at least have the FragmentShader extension to continue. - if (!(QGLExtensions::glExtensions() & QGLExtensions::FragmentShader)) - return false; - - glCreateShader = (_glCreateShader) ctx->getProcAddress(QLatin1String("glCreateShader")); - if (glCreateShader) { - glShaderSource = (_glShaderSource) ctx->getProcAddress(QLatin1String("glShaderSource")); - glShaderBinary = (_glShaderBinary) ctx->getProcAddress(QLatin1String("glShaderBinary")); - glCompileShader = (_glCompileShader) ctx->getProcAddress(QLatin1String("glCompileShader")); - glDeleteShader = (_glDeleteShader) ctx->getProcAddress(QLatin1String("glDeleteShader")); - glIsShader = (_glIsShader) ctx->getProcAddress(QLatin1String("glIsShader")); - - glCreateProgram = (_glCreateProgram) ctx->getProcAddress(QLatin1String("glCreateProgram")); - glAttachShader = (_glAttachShader) ctx->getProcAddress(QLatin1String("glAttachShader")); - glDetachShader = (_glDetachShader) ctx->getProcAddress(QLatin1String("glDetachShader")); - glLinkProgram = (_glLinkProgram) ctx->getProcAddress(QLatin1String("glLinkProgram")); - glUseProgram = (_glUseProgram) ctx->getProcAddress(QLatin1String("glUseProgram")); - glDeleteProgram = (_glDeleteProgram) ctx->getProcAddress(QLatin1String("glDeleteProgram")); - glIsProgram = (_glIsProgram) ctx->getProcAddress(QLatin1String("glIsProgram")); - - glGetShaderInfoLog = (_glGetShaderInfoLog) ctx->getProcAddress(QLatin1String("glGetShaderInfoLog")); - glGetShaderiv = (_glGetShaderiv) ctx->getProcAddress(QLatin1String("glGetShaderiv")); - glGetShaderSource = (_glGetShaderSource) ctx->getProcAddress(QLatin1String("glGetShaderSource")); - glGetProgramiv = (_glGetProgramiv) ctx->getProcAddress(QLatin1String("glGetProgramiv")); - glGetProgramInfoLog = (_glGetProgramInfoLog) ctx->getProcAddress(QLatin1String("glGetProgramInfoLog")); - - glGetUniformLocation = (_glGetUniformLocation) ctx->getProcAddress(QLatin1String("glGetUniformLocation")); - glUniform4fv = (_glUniform4fv) ctx->getProcAddress(QLatin1String("glUniform4fv")); - glUniform3fv = (_glUniform3fv) ctx->getProcAddress(QLatin1String("glUniform3fv")); - glUniform2fv = (_glUniform2fv) ctx->getProcAddress(QLatin1String("glUniform2fv")); - glUniform1fv = (_glUniform1fv) ctx->getProcAddress(QLatin1String("glUniform1fv")); - glUniform1i = (_glUniform1i) ctx->getProcAddress(QLatin1String("glUniform1i")); - glUniform1iv = (_glUniform1iv) ctx->getProcAddress(QLatin1String("glUniform1iv")); - glUniformMatrix2fv = (_glUniformMatrix2fv) ctx->getProcAddress(QLatin1String("glUniformMatrix2fv")); - glUniformMatrix3fv = (_glUniformMatrix3fv) ctx->getProcAddress(QLatin1String("glUniformMatrix3fv")); - glUniformMatrix4fv = (_glUniformMatrix4fv) ctx->getProcAddress(QLatin1String("glUniformMatrix4fv")); - glUniformMatrix2x3fv = (_glUniformMatrix2x3fv) ctx->getProcAddress(QLatin1String("glUniformMatrix2x3fv")); - glUniformMatrix2x4fv = (_glUniformMatrix2x4fv) ctx->getProcAddress(QLatin1String("glUniformMatrix2x4fv")); - glUniformMatrix3x2fv = (_glUniformMatrix3x2fv) ctx->getProcAddress(QLatin1String("glUniformMatrix3x2fv")); - glUniformMatrix3x4fv = (_glUniformMatrix3x4fv) ctx->getProcAddress(QLatin1String("glUniformMatrix3x4fv")); - glUniformMatrix4x2fv = (_glUniformMatrix4x2fv) ctx->getProcAddress(QLatin1String("glUniformMatrix4x2fv")); - glUniformMatrix4x3fv = (_glUniformMatrix4x3fv) ctx->getProcAddress(QLatin1String("glUniformMatrix4x3fv")); - - glBindAttribLocation = (_glBindAttribLocation) ctx->getProcAddress(QLatin1String("glBindAttribLocation")); - glGetAttribLocation = (_glGetAttribLocation) ctx->getProcAddress(QLatin1String("glGetAttribLocation")); - glVertexAttrib1fv = (_glVertexAttrib1fv) ctx->getProcAddress(QLatin1String("glVertexAttrib1fv")); - glVertexAttrib2fv = (_glVertexAttrib2fv) ctx->getProcAddress(QLatin1String("glVertexAttrib2fv")); - glVertexAttrib3fv = (_glVertexAttrib3fv) ctx->getProcAddress(QLatin1String("glVertexAttrib3fv")); - glVertexAttrib4fv = (_glVertexAttrib4fv) ctx->getProcAddress(QLatin1String("glVertexAttrib4fv")); - glVertexAttribPointer = (_glVertexAttribPointer) ctx->getProcAddress(QLatin1String("glVertexAttribPointer")); - glDisableVertexAttribArray = (_glDisableVertexAttribArray) ctx->getProcAddress(QLatin1String("glDisableVertexAttribArray")); - glEnableVertexAttribArray = (_glEnableVertexAttribArray) ctx->getProcAddress(QLatin1String("glEnableVertexAttribArray")); - - } else { - // We may not have the standard shader functions, but we might - // have the older ARB functions instead. - glCreateShader = (_glCreateShader) ctx->getProcAddress(QLatin1String("glCreateShaderObjectARB")); - glShaderSource = (_glShaderSource) ctx->getProcAddress(QLatin1String("glShaderSourceARB")); - glShaderBinary = (_glShaderBinary) ctx->getProcAddress(QLatin1String("glShaderBinaryARB")); - glCompileShader = (_glCompileShader) ctx->getProcAddress(QLatin1String("glCompileShaderARB")); - glDeleteShader = (_glDeleteShader) ctx->getProcAddress(QLatin1String("glDeleteObjectARB")); - glIsShader = 0; - - glCreateProgram = (_glCreateProgram) ctx->getProcAddress(QLatin1String("glCreateProgramObjectARB")); - glAttachShader = (_glAttachShader) ctx->getProcAddress(QLatin1String("glAttachObjectARB")); - glDetachShader = (_glDetachShader) ctx->getProcAddress(QLatin1String("glDetachObjectARB")); - glLinkProgram = (_glLinkProgram) ctx->getProcAddress(QLatin1String("glLinkProgramARB")); - glUseProgram = (_glUseProgram) ctx->getProcAddress(QLatin1String("glUseProgramObjectARB")); - glDeleteProgram = (_glDeleteProgram) ctx->getProcAddress(QLatin1String("glDeleteObjectARB")); - glIsProgram = 0; - - glGetShaderInfoLog = (_glGetShaderInfoLog) ctx->getProcAddress(QLatin1String("glGetInfoLogARB")); - glGetShaderiv = (_glGetShaderiv) ctx->getProcAddress(QLatin1String("glGetObjectParameterivARB")); - glGetShaderSource = (_glGetShaderSource) ctx->getProcAddress(QLatin1String("glGetShaderSourceARB")); - glGetProgramiv = (_glGetProgramiv) ctx->getProcAddress(QLatin1String("glGetObjectParameterivARB")); - glGetProgramInfoLog = (_glGetProgramInfoLog) ctx->getProcAddress(QLatin1String("glGetInfoLogARB")); - - glGetUniformLocation = (_glGetUniformLocation) ctx->getProcAddress(QLatin1String("glGetUniformLocationARB")); - glUniform4fv = (_glUniform4fv) ctx->getProcAddress(QLatin1String("glUniform4fvARB")); - glUniform3fv = (_glUniform3fv) ctx->getProcAddress(QLatin1String("glUniform3fvARB")); - glUniform2fv = (_glUniform2fv) ctx->getProcAddress(QLatin1String("glUniform2fvARB")); - glUniform1fv = (_glUniform1fv) ctx->getProcAddress(QLatin1String("glUniform1fvARB")); - glUniform1i = (_glUniform1i) ctx->getProcAddress(QLatin1String("glUniform1iARB")); - glUniform1iv = (_glUniform1iv) ctx->getProcAddress(QLatin1String("glUniform1ivARB")); - glUniformMatrix2fv = (_glUniformMatrix2fv) ctx->getProcAddress(QLatin1String("glUniformMatrix2fvARB")); - glUniformMatrix3fv = (_glUniformMatrix3fv) ctx->getProcAddress(QLatin1String("glUniformMatrix3fvARB")); - glUniformMatrix4fv = (_glUniformMatrix4fv) ctx->getProcAddress(QLatin1String("glUniformMatrix4fvARB")); - glUniformMatrix2x3fv = (_glUniformMatrix2x3fv) ctx->getProcAddress(QLatin1String("glUniformMatrix2x3fvARB")); - glUniformMatrix2x4fv = (_glUniformMatrix2x4fv) ctx->getProcAddress(QLatin1String("glUniformMatrix2x4fvARB")); - glUniformMatrix3x2fv = (_glUniformMatrix3x2fv) ctx->getProcAddress(QLatin1String("glUniformMatrix3x2fvARB")); - glUniformMatrix3x4fv = (_glUniformMatrix3x4fv) ctx->getProcAddress(QLatin1String("glUniformMatrix3x4fvARB")); - glUniformMatrix4x2fv = (_glUniformMatrix4x2fv) ctx->getProcAddress(QLatin1String("glUniformMatrix4x2fvARB")); - glUniformMatrix4x3fv = (_glUniformMatrix4x3fv) ctx->getProcAddress(QLatin1String("glUniformMatrix4x3fvARB")); - - glBindAttribLocation = (_glBindAttribLocation) ctx->getProcAddress(QLatin1String("glBindAttribLocationARB")); - glGetAttribLocation = (_glGetAttribLocation) ctx->getProcAddress(QLatin1String("glGetAttribLocationARB")); - glVertexAttrib1fv = (_glVertexAttrib1fv) ctx->getProcAddress(QLatin1String("glVertexAttrib1fvARB")); - glVertexAttrib2fv = (_glVertexAttrib2fv) ctx->getProcAddress(QLatin1String("glVertexAttrib2fvARB")); - glVertexAttrib3fv = (_glVertexAttrib3fv) ctx->getProcAddress(QLatin1String("glVertexAttrib3fvARB")); - glVertexAttrib4fv = (_glVertexAttrib4fv) ctx->getProcAddress(QLatin1String("glVertexAttrib4fvARB")); - glVertexAttribPointer = (_glVertexAttribPointer) ctx->getProcAddress(QLatin1String("glVertexAttribPointerARB")); - glDisableVertexAttribArray = (_glDisableVertexAttribArray) ctx->getProcAddress(QLatin1String("glDisableVertexAttribArrayARB")); - glEnableVertexAttribArray = (_glEnableVertexAttribArray) ctx->getProcAddress(QLatin1String("glEnableVertexAttribArrayARB")); - } - - // Note: glShaderBinary(), glIsShader(), glIsProgram(), and - // glUniformMatrixNxMfv() are optional, but all other functions - // are required. - - return glCreateShader && - glShaderSource && - glCompileShader && - glDeleteProgram && - glCreateProgram && - glAttachShader && - glDetachShader && - glLinkProgram && - glUseProgram && - glGetShaderInfoLog && - glGetShaderiv && - glGetShaderSource && - glGetProgramiv && - glGetProgramInfoLog && - glGetUniformLocation && - glUniform1fv && - glUniform2fv && - glUniform3fv && - glUniform4fv && - glUniform1i && - glUniform1iv && - glUniformMatrix2fv && - glUniformMatrix3fv && - glUniformMatrix4fv && - glBindAttribLocation && - glGetAttribLocation && - glVertexAttrib1fv && - glVertexAttrib2fv && - glVertexAttrib3fv && - glVertexAttrib4fv && - glVertexAttribPointer && - glDisableVertexAttribArray && - glEnableVertexAttribArray; -#endif -} - -#if !defined(QT_OPENGL_ES_2) -bool qt_resolve_version_2_0_functions(QGLContext *ctx) -{ - bool gl2supported = true; - if (!qt_resolve_glsl_extensions(ctx)) - gl2supported = false; - - if (!qt_resolve_version_1_3_functions(ctx)) - gl2supported = false; - - if (glStencilOpSeparate) - return gl2supported; - - glBlendColor = (_glBlendColor) ctx->getProcAddress(QLatin1String("glBlendColor")); - glStencilOpSeparate = (_glStencilOpSeparate) ctx->getProcAddress(QLatin1String("glStencilOpSeparate")); - if (!glBlendColor || !glStencilOpSeparate) - gl2supported = false; - - return gl2supported; -} -#endif - - -QT_END_NAMESPACE diff --git a/src/opengl/qglextensions_p.h b/src/opengl/qglextensions_p.h deleted file mode 100644 index 2e4ceaf4b9..0000000000 --- a/src/opengl/qglextensions_p.h +++ /dev/null @@ -1,587 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtOpenGL module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QGL_EXTENSIONS_P_H -#define QGL_EXTENSIONS_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of the Qt OpenGL classes. This header file may change from -// version to version without notice, or even be removed. -// -// We mean it. -// - -// extension prototypes -# ifndef APIENTRYP -# ifdef APIENTRY -# define APIENTRYP APIENTRY * -# else -# define APIENTRY -# define APIENTRYP * -# endif -# endif - -#include - -#ifndef GL_ARB_vertex_buffer_object -typedef ptrdiff_t GLintptrARB; -typedef ptrdiff_t GLsizeiptrARB; -#endif - -#ifndef GL_VERSION_2_0 -typedef char GLchar; -#endif - -// ARB_vertex_buffer_object -typedef void (APIENTRY *_glBindBuffer) (GLenum, GLuint); -typedef void (APIENTRY *_glDeleteBuffers) (GLsizei, const GLuint *); -typedef void (APIENTRY *_glGenBuffers) (GLsizei, GLuint *); -typedef void (APIENTRY *_glBufferData) (GLenum, GLsizeiptrARB, const GLvoid *, GLenum); -typedef void (APIENTRY *_glBufferSubData) (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *); -typedef void (APIENTRY *_glGetBufferSubData) (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *); -typedef void (APIENTRY *_glGetBufferParameteriv) (GLenum, GLenum, GLint *); -typedef GLvoid* (APIENTRY *_glMapBufferARB) (GLenum, GLenum); -typedef GLboolean (APIENTRY *_glUnmapBufferARB) (GLenum); -// We can call the buffer functions directly in OpenGL/ES 1.1 or higher, -// but all other platforms need to resolve the extensions. -#if defined(QT_OPENGL_ES) -#if defined(GL_OES_VERSION_1_0) && !defined(GL_OES_VERSION_1_1) -#define QGL_RESOLVE_BUFFER_FUNCS 1 -#endif -#else -#define QGL_RESOLVE_BUFFER_FUNCS 1 -#endif - -// ARB_fragment_program -typedef void (APIENTRY *_glProgramStringARB) (GLenum, GLenum, GLsizei, const GLvoid *); -typedef void (APIENTRY *_glBindProgramARB) (GLenum, GLuint); -typedef void (APIENTRY *_glDeleteProgramsARB) (GLsizei, const GLuint *); -typedef void (APIENTRY *_glGenProgramsARB) (GLsizei, GLuint *); -typedef void (APIENTRY *_glProgramLocalParameter4fvARB) (GLenum, GLuint, const GLfloat *); - -// GLSL -typedef GLuint (APIENTRY *_glCreateShader) (GLenum); -typedef void (APIENTRY *_glShaderSource) (GLuint, GLsizei, const char **, const GLint *); -typedef void (APIENTRY *_glShaderBinary) (GLint, const GLuint*, GLenum, const void*, GLint); -typedef void (APIENTRY *_glCompileShader) (GLuint); -typedef void (APIENTRY *_glDeleteShader) (GLuint); -typedef GLboolean (APIENTRY *_glIsShader) (GLuint); - -typedef GLuint (APIENTRY *_glCreateProgram) (); -typedef void (APIENTRY *_glAttachShader) (GLuint, GLuint); -typedef void (APIENTRY *_glDetachShader) (GLuint, GLuint); -typedef void (APIENTRY *_glLinkProgram) (GLuint); -typedef void (APIENTRY *_glUseProgram) (GLuint); -typedef void (APIENTRY *_glDeleteProgram) (GLuint); -typedef GLboolean (APIENTRY *_glIsProgram) (GLuint); - -typedef void (APIENTRY *_glGetShaderInfoLog) (GLuint, GLsizei, GLsizei *, char *); -typedef void (APIENTRY *_glGetShaderiv) (GLuint, GLenum, GLint *); -typedef void (APIENTRY *_glGetShaderSource) (GLuint, GLsizei, GLsizei *, char *); -typedef void (APIENTRY *_glGetProgramiv) (GLuint, GLenum, GLint *); -typedef void (APIENTRY *_glGetProgramInfoLog) (GLuint, GLsizei, GLsizei *, char *); - -typedef GLuint (APIENTRY *_glGetUniformLocation) (GLuint, const char*); -typedef void (APIENTRY *_glUniform4fv) (GLint, GLsizei, const GLfloat *); -typedef void (APIENTRY *_glUniform3fv) (GLint, GLsizei, const GLfloat *); -typedef void (APIENTRY *_glUniform2fv) (GLint, GLsizei, const GLfloat *); -typedef void (APIENTRY *_glUniform1fv) (GLint, GLsizei, const GLfloat *); -typedef void (APIENTRY *_glUniform1i) (GLint, GLint); -typedef void (APIENTRY *_glUniform1iv) (GLint, GLsizei, const GLint *); -typedef void (APIENTRY *_glUniformMatrix2fv) (GLint, GLsizei, GLboolean, const GLfloat *); -typedef void (APIENTRY *_glUniformMatrix3fv) (GLint, GLsizei, GLboolean, const GLfloat *); -typedef void (APIENTRY *_glUniformMatrix4fv) (GLint, GLsizei, GLboolean, const GLfloat *); -typedef void (APIENTRY *_glUniformMatrix2x3fv) (GLint, GLsizei, GLboolean, const GLfloat *); -typedef void (APIENTRY *_glUniformMatrix2x4fv) (GLint, GLsizei, GLboolean, const GLfloat *); -typedef void (APIENTRY *_glUniformMatrix3x2fv) (GLint, GLsizei, GLboolean, const GLfloat *); -typedef void (APIENTRY *_glUniformMatrix3x4fv) (GLint, GLsizei, GLboolean, const GLfloat *); -typedef void (APIENTRY *_glUniformMatrix4x2fv) (GLint, GLsizei, GLboolean, const GLfloat *); -typedef void (APIENTRY *_glUniformMatrix4x3fv) (GLint, GLsizei, GLboolean, const GLfloat *); - -typedef void (APIENTRY *_glBindAttribLocation) (GLuint, GLuint, const char *); -typedef GLint (APIENTRY *_glGetAttribLocation) (GLuint, const char *); -typedef void (APIENTRY *_glVertexAttrib1fv) (GLuint, const GLfloat *); -typedef void (APIENTRY *_glVertexAttrib2fv) (GLuint, const GLfloat *); -typedef void (APIENTRY *_glVertexAttrib3fv) (GLuint, const GLfloat *); -typedef void (APIENTRY *_glVertexAttrib4fv) (GLuint, const GLfloat *); -typedef void (APIENTRY *_glVertexAttribPointer) (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); -typedef void (APIENTRY *_glDisableVertexAttribArray) (GLuint); -typedef void (APIENTRY *_glEnableVertexAttribArray) (GLuint); - -typedef void (APIENTRY *_glGetProgramBinaryOES) (GLuint, GLsizei, GLsizei *, GLenum *, void *); -typedef void (APIENTRY *_glProgramBinaryOES) (GLuint, GLenum, const void *, GLint); - - -typedef void (APIENTRY *_glMultiTexCoord4f) (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); -typedef void (APIENTRY *_glActiveStencilFaceEXT) (GLenum ); - -// Needed for GL2 engine: -typedef void (APIENTRY *_glStencilOpSeparate) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (APIENTRY *_glActiveTexture) (GLenum); -typedef void (APIENTRY *_glBlendColor) (GLclampf, GLclampf, GLclampf, GLclampf); - - -// EXT_GL_framebuffer_object -typedef GLboolean (APIENTRY *_glIsRenderbuffer) (GLuint renderbuffer); -typedef void (APIENTRY *_glBindRenderbuffer) (GLenum target, GLuint renderbuffer); -typedef void (APIENTRY *_glDeleteRenderbuffers) (GLsizei n, const GLuint *renderbuffers); -typedef void (APIENTRY *_glGenRenderbuffers) (GLsizei n, GLuint *renderbuffers); -typedef void (APIENTRY *_glRenderbufferStorage) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRY *_glGetRenderbufferParameteriv) (GLenum target, GLenum pname, GLint *params); -typedef GLboolean (APIENTRY *_glIsFramebuffer) (GLuint framebuffer); -typedef void (APIENTRY *_glBindFramebuffer) (GLenum target, GLuint framebuffer); -typedef void (APIENTRY *_glDeleteFramebuffers) (GLsizei n, const GLuint *framebuffers); -typedef void (APIENTRY *_glGenFramebuffers) (GLsizei n, GLuint *framebuffers); -typedef GLenum (APIENTRY *_glCheckFramebufferStatus) (GLenum target); -typedef void (APIENTRY *_glFramebufferTexture2D) (GLenum target, GLenum attachment, GLenum textarget, - GLuint texture, GLint level); -typedef void (APIENTRY *_glFramebufferRenderbuffer) (GLenum target, GLenum attachment, GLenum renderbuffertarget, - GLuint renderbuffer); -typedef void (APIENTRY *_glGetFramebufferAttachmentParameteriv) (GLenum target, GLenum attachment, GLenum pname, - GLint *params); -typedef void (APIENTRY *_glGenerateMipmap) (GLenum target); - -// EXT_GL_framebuffer_blit -typedef void (APIENTRY *_glBlitFramebufferEXT) (int srcX0, int srcY0, int srcX1, int srcY1, - int dstX0, int dstY0, int dstX1, int dstY1, - GLbitfield mask, GLenum filter); - -// EXT_GL_framebuffer_multisample -typedef void (APIENTRY *_glRenderbufferStorageMultisampleEXT) (GLenum target, GLsizei samples, - GLenum internalformat, GLsizei width, GLsizei height); - -// GL_EXT_geometry_shader4 -typedef void (APIENTRY *_glProgramParameteriEXT)(GLuint program, GLenum pname, GLint value); -typedef void (APIENTRY *_glFramebufferTextureEXT)(GLenum target, GLenum attachment, - GLuint texture, GLint level); -typedef void (APIENTRY *_glFramebufferTextureLayerEXT)(GLenum target, GLenum attachment, - GLuint texture, GLint level, GLint layer); -typedef void (APIENTRY *_glFramebufferTextureFaceEXT)(GLenum target, GLenum attachment, - GLuint texture, GLint level, GLenum face); - -// ARB_texture_compression -typedef void (APIENTRY *_glCompressedTexImage2DARB) (GLenum, GLint, GLenum, GLsizei, - GLsizei, GLint, GLsizei, const GLvoid *); -QT_BEGIN_NAMESPACE - -struct QGLExtensionFuncs -{ - QGLExtensionFuncs() { -#if !defined(QT_OPENGL_ES_2) - qt_glProgramStringARB = 0; - qt_glBindProgramARB = 0; - qt_glDeleteProgramsARB = 0; - qt_glGenProgramsARB = 0; - qt_glProgramLocalParameter4fvARB = 0; - - // GLSL - qt_glCreateShader = 0; - qt_glShaderSource = 0; - qt_glShaderBinary = 0; - qt_glCompileShader = 0; - qt_glDeleteShader = 0; - qt_glIsShader = 0; - - qt_glCreateProgram = 0; - qt_glAttachShader = 0; - qt_glDetachShader = 0; - qt_glLinkProgram = 0; - qt_glUseProgram = 0; - qt_glDeleteProgram = 0; - qt_glIsProgram = 0; - - qt_glGetShaderInfoLog = 0; - qt_glGetShaderiv = 0; - qt_glGetShaderSource = 0; - qt_glGetProgramiv = 0; - qt_glGetProgramInfoLog = 0; - - qt_glGetUniformLocation = 0; - qt_glUniform4fv = 0; - qt_glUniform3fv = 0; - qt_glUniform2fv = 0; - qt_glUniform1fv = 0; - qt_glUniform1i = 0; - qt_glUniform1iv = 0; - qt_glUniformMatrix2fv = 0; - qt_glUniformMatrix3fv = 0; - qt_glUniformMatrix4fv = 0; - qt_glUniformMatrix2x3fv = 0; - qt_glUniformMatrix2x4fv = 0; - qt_glUniformMatrix3x2fv = 0; - qt_glUniformMatrix3x4fv = 0; - qt_glUniformMatrix4x2fv = 0; - qt_glUniformMatrix4x3fv = 0; - - qt_glBindAttribLocation = 0; - qt_glGetAttribLocation = 0; - qt_glVertexAttrib1fv = 0; - qt_glVertexAttrib2fv = 0; - qt_glVertexAttrib3fv = 0; - qt_glVertexAttrib4fv = 0; - qt_glVertexAttribPointer = 0; - qt_glDisableVertexAttribArray = 0; - qt_glEnableVertexAttribArray = 0; - - // Extras for GL2 engine: - qt_glActiveTexture = 0; - qt_glStencilOpSeparate = 0; - qt_glBlendColor = 0; - - qt_glActiveStencilFaceEXT = 0; - qt_glMultiTexCoord4f = 0; -#else - qt_glslResolved = false; - - qt_glGetProgramBinaryOES = 0; - qt_glProgramBinaryOES = 0; -#endif - - // FBOs -#if !defined(QT_OPENGL_ES_2) - qt_glIsRenderbuffer = 0; - qt_glBindRenderbuffer = 0; - qt_glDeleteRenderbuffers = 0; - qt_glGenRenderbuffers = 0; - qt_glRenderbufferStorage = 0; - qt_glGetRenderbufferParameteriv = 0; - qt_glIsFramebuffer = 0; - qt_glBindFramebuffer = 0; - qt_glDeleteFramebuffers = 0; - qt_glGenFramebuffers = 0; - qt_glCheckFramebufferStatus = 0; - qt_glFramebufferTexture2D = 0; - qt_glFramebufferRenderbuffer = 0; - qt_glGetFramebufferAttachmentParameteriv = 0; - qt_glGenerateMipmap = 0; -#endif - qt_glBlitFramebufferEXT = 0; - qt_glRenderbufferStorageMultisampleEXT = 0; - - // Buffer objects: -#if defined(QGL_RESOLVE_BUFFER_FUNCS) - qt_glBindBuffer = 0; - qt_glDeleteBuffers = 0; - qt_glGenBuffers = 0; - qt_glBufferData = 0; - qt_glBufferSubData = 0; - qt_glGetBufferSubData = 0; - qt_glGetBufferParameteriv = 0; -#endif - qt_glMapBufferARB = 0; - qt_glUnmapBufferARB = 0; - - qt_glProgramParameteriEXT = 0; - qt_glFramebufferTextureEXT = 0; - qt_glFramebufferTextureLayerEXT = 0; - qt_glFramebufferTextureFaceEXT = 0; -#if !defined(QT_OPENGL_ES) - // Texture compression - qt_glCompressedTexImage2DARB = 0; -#endif - } - - -#if !defined(QT_OPENGL_ES_2) - _glProgramStringARB qt_glProgramStringARB; - _glBindProgramARB qt_glBindProgramARB; - _glDeleteProgramsARB qt_glDeleteProgramsARB; - _glGenProgramsARB qt_glGenProgramsARB; - _glProgramLocalParameter4fvARB qt_glProgramLocalParameter4fvARB; - - // GLSL definitions - _glCreateShader qt_glCreateShader; - _glShaderSource qt_glShaderSource; - _glShaderBinary qt_glShaderBinary; - _glCompileShader qt_glCompileShader; - _glDeleteShader qt_glDeleteShader; - _glIsShader qt_glIsShader; - - _glCreateProgram qt_glCreateProgram; - _glAttachShader qt_glAttachShader; - _glDetachShader qt_glDetachShader; - _glLinkProgram qt_glLinkProgram; - _glUseProgram qt_glUseProgram; - _glDeleteProgram qt_glDeleteProgram; - _glIsProgram qt_glIsProgram; - - _glGetShaderInfoLog qt_glGetShaderInfoLog; - _glGetShaderiv qt_glGetShaderiv; - _glGetShaderSource qt_glGetShaderSource; - _glGetProgramiv qt_glGetProgramiv; - _glGetProgramInfoLog qt_glGetProgramInfoLog; - - _glGetUniformLocation qt_glGetUniformLocation; - _glUniform4fv qt_glUniform4fv; - _glUniform3fv qt_glUniform3fv; - _glUniform2fv qt_glUniform2fv; - _glUniform1fv qt_glUniform1fv; - _glUniform1i qt_glUniform1i; - _glUniform1iv qt_glUniform1iv; - _glUniformMatrix2fv qt_glUniformMatrix2fv; - _glUniformMatrix3fv qt_glUniformMatrix3fv; - _glUniformMatrix4fv qt_glUniformMatrix4fv; - _glUniformMatrix2x3fv qt_glUniformMatrix2x3fv; - _glUniformMatrix2x4fv qt_glUniformMatrix2x4fv; - _glUniformMatrix3x2fv qt_glUniformMatrix3x2fv; - _glUniformMatrix3x4fv qt_glUniformMatrix3x4fv; - _glUniformMatrix4x2fv qt_glUniformMatrix4x2fv; - _glUniformMatrix4x3fv qt_glUniformMatrix4x3fv; - - _glBindAttribLocation qt_glBindAttribLocation; - _glGetAttribLocation qt_glGetAttribLocation; - _glVertexAttrib1fv qt_glVertexAttrib1fv; - _glVertexAttrib2fv qt_glVertexAttrib2fv; - _glVertexAttrib3fv qt_glVertexAttrib3fv; - _glVertexAttrib4fv qt_glVertexAttrib4fv; - _glVertexAttribPointer qt_glVertexAttribPointer; - _glDisableVertexAttribArray qt_glDisableVertexAttribArray; - _glEnableVertexAttribArray qt_glEnableVertexAttribArray; - -#else - bool qt_glslResolved; - - _glGetProgramBinaryOES qt_glGetProgramBinaryOES; - _glProgramBinaryOES qt_glProgramBinaryOES; -#endif - - _glActiveStencilFaceEXT qt_glActiveStencilFaceEXT; - _glMultiTexCoord4f qt_glMultiTexCoord4f; - -#if !defined(QT_OPENGL_ES_2) - // Extras needed for GL2 engine: - _glActiveTexture qt_glActiveTexture; - _glStencilOpSeparate qt_glStencilOpSeparate; - _glBlendColor qt_glBlendColor; - -#endif - - // FBOs -#if !defined(QT_OPENGL_ES_2) - _glIsRenderbuffer qt_glIsRenderbuffer; - _glBindRenderbuffer qt_glBindRenderbuffer; - _glDeleteRenderbuffers qt_glDeleteRenderbuffers; - _glGenRenderbuffers qt_glGenRenderbuffers; - _glRenderbufferStorage qt_glRenderbufferStorage; - _glGetRenderbufferParameteriv qt_glGetRenderbufferParameteriv; - _glIsFramebuffer qt_glIsFramebuffer; - _glBindFramebuffer qt_glBindFramebuffer; - _glDeleteFramebuffers qt_glDeleteFramebuffers; - _glGenFramebuffers qt_glGenFramebuffers; - _glCheckFramebufferStatus qt_glCheckFramebufferStatus; - _glFramebufferTexture2D qt_glFramebufferTexture2D; - _glFramebufferRenderbuffer qt_glFramebufferRenderbuffer; - _glGetFramebufferAttachmentParameteriv qt_glGetFramebufferAttachmentParameteriv; - _glGenerateMipmap qt_glGenerateMipmap; -#endif - _glBlitFramebufferEXT qt_glBlitFramebufferEXT; - _glRenderbufferStorageMultisampleEXT qt_glRenderbufferStorageMultisampleEXT; - - // Buffer objects -#if defined(QGL_RESOLVE_BUFFER_FUNCS) - _glBindBuffer qt_glBindBuffer; - _glDeleteBuffers qt_glDeleteBuffers; - _glGenBuffers qt_glGenBuffers; - _glBufferData qt_glBufferData; - _glBufferSubData qt_glBufferSubData; - _glGetBufferSubData qt_glGetBufferSubData; - _glGetBufferParameteriv qt_glGetBufferParameteriv; -#endif - _glMapBufferARB qt_glMapBufferARB; - _glUnmapBufferARB qt_glUnmapBufferARB; - - // Geometry shaders... - _glProgramParameteriEXT qt_glProgramParameteriEXT; - _glFramebufferTextureEXT qt_glFramebufferTextureEXT; - _glFramebufferTextureLayerEXT qt_glFramebufferTextureLayerEXT; - _glFramebufferTextureFaceEXT qt_glFramebufferTextureFaceEXT; -#if !defined(QT_OPENGL_ES) - // Texture compression - _glCompressedTexImage2DARB qt_glCompressedTexImage2DARB; -#endif -}; - - -#if !defined(QT_OPENGL_ES_2) -#define glProgramStringARB QGLContextPrivate::extensionFuncs(ctx).qt_glProgramStringARB -#define glBindProgramARB QGLContextPrivate::extensionFuncs(ctx).qt_glBindProgramARB -#define glDeleteProgramsARB QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteProgramsARB -#define glGenProgramsARB QGLContextPrivate::extensionFuncs(ctx).qt_glGenProgramsARB -#define glProgramLocalParameter4fvARB QGLContextPrivate::extensionFuncs(ctx).qt_glProgramLocalParameter4fvARB - -#define glActiveStencilFaceEXT QGLContextPrivate::extensionFuncs(ctx).qt_glActiveStencilFaceEXT - -#define glMultiTexCoord4f QGLContextPrivate::extensionFuncs(ctx).qt_glMultiTexCoord4f - -#define glActiveTexture QGLContextPrivate::extensionFuncs(ctx).qt_glActiveTexture -#endif // !defined(QT_OPENGL_ES_2) - - -// FBOs -#if !defined(QT_OPENGL_ES_2) -#define glIsRenderbuffer QGLContextPrivate::extensionFuncs(ctx).qt_glIsRenderbuffer -#define glBindRenderbuffer QGLContextPrivate::extensionFuncs(ctx).qt_glBindRenderbuffer -#define glDeleteRenderbuffers QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteRenderbuffers -#define glGenRenderbuffers QGLContextPrivate::extensionFuncs(ctx).qt_glGenRenderbuffers -#define glRenderbufferStorage QGLContextPrivate::extensionFuncs(ctx).qt_glRenderbufferStorage -#define glGetRenderbufferParameteriv QGLContextPrivate::extensionFuncs(ctx).qt_glGetRenderbufferParameteriv -#define glIsFramebuffer QGLContextPrivate::extensionFuncs(ctx).qt_glIsFramebuffer -#define glBindFramebuffer QGLContextPrivate::extensionFuncs(ctx).qt_glBindFramebuffer -#define glDeleteFramebuffers QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteFramebuffers -#define glGenFramebuffers QGLContextPrivate::extensionFuncs(ctx).qt_glGenFramebuffers -#define glCheckFramebufferStatus QGLContextPrivate::extensionFuncs(ctx).qt_glCheckFramebufferStatus -#define glFramebufferTexture2D QGLContextPrivate::extensionFuncs(ctx).qt_glFramebufferTexture2D -#define glFramebufferRenderbuffer QGLContextPrivate::extensionFuncs(ctx).qt_glFramebufferRenderbuffer -#define glGetFramebufferAttachmentParameteriv QGLContextPrivate::extensionFuncs(ctx).qt_glGetFramebufferAttachmentParameteriv -#define glGenerateMipmap QGLContextPrivate::extensionFuncs(ctx).qt_glGenerateMipmap -#endif // QT_OPENGL_ES_2 -#define glBlitFramebufferEXT QGLContextPrivate::extensionFuncs(ctx).qt_glBlitFramebufferEXT -#define glRenderbufferStorageMultisampleEXT QGLContextPrivate::extensionFuncs(ctx).qt_glRenderbufferStorageMultisampleEXT - - -// Buffer objects -#if defined(QGL_RESOLVE_BUFFER_FUNCS) -#define glBindBuffer QGLContextPrivate::extensionFuncs(ctx).qt_glBindBuffer -#define glDeleteBuffers QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteBuffers -#define glGenBuffers QGLContextPrivate::extensionFuncs(ctx).qt_glGenBuffers -#define glBufferData QGLContextPrivate::extensionFuncs(ctx).qt_glBufferData -#define glBufferSubData QGLContextPrivate::extensionFuncs(ctx).qt_glBufferSubData -#define glGetBufferSubData QGLContextPrivate::extensionFuncs(ctx).qt_glGetBufferSubData -#define glGetBufferParameteriv QGLContextPrivate::extensionFuncs(ctx).qt_glGetBufferParameteriv -#endif -#define glMapBufferARB QGLContextPrivate::extensionFuncs(ctx).qt_glMapBufferARB -#define glUnmapBufferARB QGLContextPrivate::extensionFuncs(ctx).qt_glUnmapBufferARB - - -// GLSL -#if !defined(QT_OPENGL_ES_2) - -#define glCreateShader QGLContextPrivate::extensionFuncs(ctx).qt_glCreateShader -#define glShaderSource QGLContextPrivate::extensionFuncs(ctx).qt_glShaderSource -#define glShaderBinary QGLContextPrivate::extensionFuncs(ctx).qt_glShaderBinary -#define glCompileShader QGLContextPrivate::extensionFuncs(ctx).qt_glCompileShader -#define glDeleteShader QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteShader -#define glIsShader QGLContextPrivate::extensionFuncs(ctx).qt_glIsShader - -#define glCreateProgram QGLContextPrivate::extensionFuncs(ctx).qt_glCreateProgram -#define glAttachShader QGLContextPrivate::extensionFuncs(ctx).qt_glAttachShader -#define glDetachShader QGLContextPrivate::extensionFuncs(ctx).qt_glDetachShader -#define glLinkProgram QGLContextPrivate::extensionFuncs(ctx).qt_glLinkProgram -#define glUseProgram QGLContextPrivate::extensionFuncs(ctx).qt_glUseProgram -#define glDeleteProgram QGLContextPrivate::extensionFuncs(ctx).qt_glDeleteProgram -#define glIsProgram QGLContextPrivate::extensionFuncs(ctx).qt_glIsProgram - -#define glGetShaderInfoLog QGLContextPrivate::extensionFuncs(ctx).qt_glGetShaderInfoLog -#define glGetShaderiv QGLContextPrivate::extensionFuncs(ctx).qt_glGetShaderiv -#define glGetShaderSource QGLContextPrivate::extensionFuncs(ctx).qt_glGetShaderSource -#define glGetProgramiv QGLContextPrivate::extensionFuncs(ctx).qt_glGetProgramiv -#define glGetProgramInfoLog QGLContextPrivate::extensionFuncs(ctx).qt_glGetProgramInfoLog - -#define glGetUniformLocation QGLContextPrivate::extensionFuncs(ctx).qt_glGetUniformLocation -#define glUniform4fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniform4fv -#define glUniform3fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniform3fv -#define glUniform2fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniform2fv -#define glUniform1fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniform1fv -#define glUniform1i QGLContextPrivate::extensionFuncs(ctx).qt_glUniform1i -#define glUniform1iv QGLContextPrivate::extensionFuncs(ctx).qt_glUniform1iv -#define glUniformMatrix2fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix2fv -#define glUniformMatrix3fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix3fv -#define glUniformMatrix4fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix4fv -#define glUniformMatrix2x3fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix2x3fv -#define glUniformMatrix2x4fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix2x4fv -#define glUniformMatrix3x2fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix3x2fv -#define glUniformMatrix3x4fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix3x4fv -#define glUniformMatrix4x2fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix4x2fv -#define glUniformMatrix4x3fv QGLContextPrivate::extensionFuncs(ctx).qt_glUniformMatrix4x3fv - -#define glBindAttribLocation QGLContextPrivate::extensionFuncs(ctx).qt_glBindAttribLocation -#define glGetAttribLocation QGLContextPrivate::extensionFuncs(ctx).qt_glGetAttribLocation -#define glVertexAttrib1fv QGLContextPrivate::extensionFuncs(ctx).qt_glVertexAttrib1fv -#define glVertexAttrib2fv QGLContextPrivate::extensionFuncs(ctx).qt_glVertexAttrib2fv -#define glVertexAttrib3fv QGLContextPrivate::extensionFuncs(ctx).qt_glVertexAttrib3fv -#define glVertexAttrib4fv QGLContextPrivate::extensionFuncs(ctx).qt_glVertexAttrib4fv -#define glVertexAttribPointer QGLContextPrivate::extensionFuncs(ctx).qt_glVertexAttribPointer -#define glDisableVertexAttribArray QGLContextPrivate::extensionFuncs(ctx).qt_glDisableVertexAttribArray -#define glEnableVertexAttribArray QGLContextPrivate::extensionFuncs(ctx).qt_glEnableVertexAttribArray - -#else // QT_OPENGL_ES_2 - -#define glGetProgramBinaryOES QGLContextPrivate::extensionFuncs(ctx).qt_glGetProgramBinaryOES -#define glProgramBinaryOES QGLContextPrivate::extensionFuncs(ctx).qt_glProgramBinaryOES - -#endif // QT_OPENGL_ES_2 - - -#if !defined(QT_OPENGL_ES_2) -#define glStencilOpSeparate QGLContextPrivate::extensionFuncs(ctx).qt_glStencilOpSeparate -#define glBlendColor QGLContextPrivate::extensionFuncs(ctx).qt_glBlendColor -#endif - -#if defined(QT_OPENGL_ES_2) -#define glClearDepth glClearDepthf -#endif - -#define glProgramParameteriEXT QGLContextPrivate::extensionFuncs(ctx).qt_glProgramParameteriEXT -#define glFramebufferTextureEXT QGLContextPrivate::extensionFuncs(ctx).qt_glFramebufferTextureEXT -#define glFramebufferTextureLayerEXT QGLContextPrivate::extensionFuncs(ctx).qt_glFramebufferTextureLayerEXT -#define glFramebufferTextureFaceEXT QGLContextPrivate::extensionFuncs(ctx).qt_glFramebufferTextureFaceEXT - -#if !defined(QT_OPENGL_ES) -#define glCompressedTexImage2D QGLContextPrivate::extensionFuncs(ctx).qt_glCompressedTexImage2DARB -#endif - -extern bool qt_resolve_framebufferobject_extensions(QGLContext *ctx); -bool qt_resolve_buffer_extensions(QGLContext *ctx); - -bool qt_resolve_version_1_3_functions(QGLContext *ctx); -bool qt_resolve_version_2_0_functions(QGLContext *ctx); -bool qt_resolve_stencil_face_extension(QGLContext *ctx); -bool qt_resolve_frag_program_extensions(QGLContext *ctx); - -bool qt_resolve_glsl_extensions(QGLContext *ctx); - -QT_END_NAMESPACE - -#endif // QGL_EXTENSIONS_P_H diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp index ee932d1ab9..8400db1f5e 100644 --- a/src/opengl/qglframebufferobject.cpp +++ b/src/opengl/qglframebufferobject.cpp @@ -389,7 +389,7 @@ bool QGLFramebufferObjectPrivate::checkFramebufferStatus() const QGL_FUNCP_CONTEXT; if (!ctx) return false; // Context no longer exists. - GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); + GLenum status = ctx->contextHandle()->functions()->glCheckFramebufferStatus(GL_FRAMEBUFFER); switch(status) { case GL_NO_ERROR: case GL_FRAMEBUFFER_COMPLETE: @@ -444,14 +444,14 @@ namespace { void freeFramebufferFunc(QGLContext *ctx, GLuint id) { - Q_UNUSED(ctx); - glDeleteFramebuffers(1, &id); + Q_ASSERT(ctx); + ctx->contextHandle()->functions()->glDeleteFramebuffers(1, &id); } void freeRenderbufferFunc(QGLContext *ctx, GLuint id) { - Q_UNUSED(ctx); - glDeleteRenderbuffers(1, &id); + Q_ASSERT(ctx); + ctx->contextHandle()->functions()->glDeleteRenderbuffers(1, &id); } void freeTextureFunc(QGLContext *ctx, GLuint id) @@ -468,8 +468,9 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, { QGLContext *ctx = const_cast(QGLContext::currentContext()); - bool ext_detected = (QGLExtensions::glExtensions() & QGLExtensions::FramebufferObject); - if (!ext_detected || (ext_detected && !qt_resolve_framebufferobject_extensions(ctx))) + funcs.initializeOpenGLFunctions(); + + if (!funcs.hasOpenGLFeature(QOpenGLFunctions::Framebuffers)) return; size = sz; @@ -478,8 +479,8 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, QT_RESET_GLERROR(); // reset error state GLuint fbo = 0; - glGenFramebuffers(1, &fbo); - glBindFramebuffer(GL_FRAMEBUFFER, fbo); + funcs.glGenFramebuffers(1, &fbo); + funcs.glBindFramebuffer(GL_FRAMEBUFFER, fbo); GLuint texture = 0; GLuint color_buffer = 0; @@ -509,7 +510,7 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + funcs.glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, target, texture, 0); QT_CHECK_GLERROR(); @@ -524,25 +525,25 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, samples = qBound(0, int(samples), int(maxSamples)); - glGenRenderbuffers(1, &color_buffer); - glBindRenderbuffer(GL_RENDERBUFFER, color_buffer); - if (glRenderbufferStorageMultisampleEXT && samples > 0) { - glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples, + funcs.glGenRenderbuffers(1, &color_buffer); + funcs.glBindRenderbuffer(GL_RENDERBUFFER, color_buffer); + if (funcs.hasOpenGLExtension(QOpenGLExtensions::FramebufferMultisample) && samples > 0) { + funcs.glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, internal_format, size.width(), size.height()); } else { samples = 0; - glRenderbufferStorage(GL_RENDERBUFFER, internal_format, + funcs.glRenderbufferStorage(GL_RENDERBUFFER, internal_format, size.width(), size.height()); } - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + funcs.glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, color_buffer); QT_CHECK_GLERROR(); valid = checkFramebufferStatus(); if (valid) - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_SAMPLES, &samples); + funcs.glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_SAMPLES, &samples); } // In practice, a combined depth-stencil buffer is supported by all desktop platforms, while a @@ -550,28 +551,28 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, // might not be supported while separate buffers are, according to QTBUG-12861. if (attachment == QGLFramebufferObject::CombinedDepthStencil - && (QGLExtensions::glExtensions() & QGLExtensions::PackedDepthStencil)) { + && funcs.hasOpenGLExtension(QOpenGLExtensions::PackedDepthStencil)) { // depth and stencil buffer needs another extension - glGenRenderbuffers(1, &depth_buffer); - Q_ASSERT(!glIsRenderbuffer(depth_buffer)); - glBindRenderbuffer(GL_RENDERBUFFER, depth_buffer); - Q_ASSERT(glIsRenderbuffer(depth_buffer)); - if (samples != 0 && glRenderbufferStorageMultisampleEXT) - glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples, + funcs.glGenRenderbuffers(1, &depth_buffer); + Q_ASSERT(!funcs.glIsRenderbuffer(depth_buffer)); + funcs.glBindRenderbuffer(GL_RENDERBUFFER, depth_buffer); + Q_ASSERT(funcs.glIsRenderbuffer(depth_buffer)); + if (samples != 0 && funcs.hasOpenGLExtension(QOpenGLExtensions::FramebufferMultisample)) + funcs.glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_DEPTH24_STENCIL8, size.width(), size.height()); else - glRenderbufferStorage(GL_RENDERBUFFER, + funcs.glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, size.width(), size.height()); stencil_buffer = depth_buffer; - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, + funcs.glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth_buffer); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, + funcs.glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, stencil_buffer); valid = checkFramebufferStatus(); if (!valid) { - glDeleteRenderbuffers(1, &depth_buffer); + funcs.glDeleteRenderbuffers(1, &depth_buffer); stencil_buffer = depth_buffer = 0; } } @@ -579,72 +580,72 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, if (depth_buffer == 0 && (attachment == QGLFramebufferObject::CombinedDepthStencil || (attachment == QGLFramebufferObject::Depth))) { - glGenRenderbuffers(1, &depth_buffer); - Q_ASSERT(!glIsRenderbuffer(depth_buffer)); - glBindRenderbuffer(GL_RENDERBUFFER, depth_buffer); - Q_ASSERT(glIsRenderbuffer(depth_buffer)); - if (samples != 0 && glRenderbufferStorageMultisampleEXT) { + funcs.glGenRenderbuffers(1, &depth_buffer); + Q_ASSERT(!funcs.glIsRenderbuffer(depth_buffer)); + funcs.glBindRenderbuffer(GL_RENDERBUFFER, depth_buffer); + Q_ASSERT(funcs.glIsRenderbuffer(depth_buffer)); + if (samples != 0 && funcs.hasOpenGLExtension(QOpenGLExtensions::FramebufferMultisample)) { #ifdef QT_OPENGL_ES - if (QGLExtensions::glExtensions() & QGLExtensions::Depth24) { - glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples, + if (funcs.hasOpenGLExtension(QOpenGLExtensions::Depth24)) { + funcs.glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_DEPTH_COMPONENT24_OES, size.width(), size.height()); } else { - glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples, + funcs.glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_DEPTH_COMPONENT16, size.width(), size.height()); } #else - glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples, + funcs.glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_DEPTH_COMPONENT, size.width(), size.height()); #endif } else { #ifdef QT_OPENGL_ES - if (QGLExtensions::glExtensions() & QGLExtensions::Depth24) { - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24_OES, + if (funcs.hasOpenGLExtension(QOpenGLExtensions::Depth24)) { + funcs.glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24_OES, size.width(), size.height()); } else { - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, + funcs.glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, size.width(), size.height()); } #else - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, size.width(), size.height()); + funcs.glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, size.width(), size.height()); #endif } - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, + funcs.glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth_buffer); valid = checkFramebufferStatus(); if (!valid) { - glDeleteRenderbuffers(1, &depth_buffer); + funcs.glDeleteRenderbuffers(1, &depth_buffer); depth_buffer = 0; } } if (stencil_buffer == 0 && (attachment == QGLFramebufferObject::CombinedDepthStencil)) { - glGenRenderbuffers(1, &stencil_buffer); - Q_ASSERT(!glIsRenderbuffer(stencil_buffer)); - glBindRenderbuffer(GL_RENDERBUFFER, stencil_buffer); - Q_ASSERT(glIsRenderbuffer(stencil_buffer)); - if (samples != 0 && glRenderbufferStorageMultisampleEXT) { + funcs.glGenRenderbuffers(1, &stencil_buffer); + Q_ASSERT(!funcs.glIsRenderbuffer(stencil_buffer)); + funcs.glBindRenderbuffer(GL_RENDERBUFFER, stencil_buffer); + Q_ASSERT(funcs.glIsRenderbuffer(stencil_buffer)); + if (samples != 0 && funcs.hasOpenGLExtension(QOpenGLExtensions::FramebufferMultisample)) { #ifdef QT_OPENGL_ES - glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples, + funcs.glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_STENCIL_INDEX8, size.width(), size.height()); #else - glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples, + funcs.glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_STENCIL_INDEX, size.width(), size.height()); #endif } else { #ifdef QT_OPENGL_ES - glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, + funcs.glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, size.width(), size.height()); #else - glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX, + funcs.glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX, size.width(), size.height()); #endif } - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, + funcs.glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, stencil_buffer); valid = checkFramebufferStatus(); if (!valid) { - glDeleteRenderbuffers(1, &stencil_buffer); + funcs.glDeleteRenderbuffers(1, &stencil_buffer); stencil_buffer = 0; } } @@ -660,7 +661,7 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, fbo_attachment = QGLFramebufferObject::NoAttachment; } - glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_ptr->current_fbo); + funcs.glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_ptr->current_fbo); if (valid) { fbo_guard = createSharedResourceGuard(ctx, fbo, freeFramebufferFunc); if (color_buffer) @@ -677,14 +678,14 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, } } else { if (color_buffer) - glDeleteRenderbuffers(1, &color_buffer); + funcs.glDeleteRenderbuffers(1, &color_buffer); else glDeleteTextures(1, &texture); if (depth_buffer) - glDeleteRenderbuffers(1, &depth_buffer); + funcs.glDeleteRenderbuffers(1, &depth_buffer); if (stencil_buffer && depth_buffer != stencil_buffer) - glDeleteRenderbuffers(1, &stencil_buffer); - glDeleteFramebuffers(1, &fbo); + funcs.glDeleteRenderbuffers(1, &stencil_buffer); + funcs.glDeleteFramebuffers(1, &fbo); } QT_CHECK_GLERROR(); @@ -991,7 +992,7 @@ bool QGLFramebufferObject::bind() qWarning("QGLFramebufferObject::bind() called from incompatible context"); } #endif - glBindFramebuffer(GL_FRAMEBUFFER, d->fbo()); + d->funcs.glBindFramebuffer(GL_FRAMEBUFFER, d->fbo()); d->valid = d->checkFramebufferStatus(); if (d->valid && current) current->d_ptr->current_fbo = d->fbo(); @@ -1011,6 +1012,7 @@ bool QGLFramebufferObject::release() { if (!isValid()) return false; + Q_D(QGLFramebufferObject); QGL_FUNC_CONTEXT; if (!ctx) return false; // Context no longer exists. @@ -1027,7 +1029,7 @@ bool QGLFramebufferObject::release() if (current) { current->d_ptr->current_fbo = current->d_ptr->default_fbo; - glBindFramebuffer(GL_FRAMEBUFFER, current->d_ptr->default_fbo); + d->funcs.glBindFramebuffer(GL_FRAMEBUFFER, current->d_ptr->default_fbo); } return true; @@ -1133,12 +1135,12 @@ bool QGLFramebufferObject::bindDefault() QGLContext *ctx = const_cast(QGLContext::currentContext()); if (ctx) { - bool ext_detected = (QGLExtensions::glExtensions() & QGLExtensions::FramebufferObject); - if (!ext_detected || (ext_detected && !qt_resolve_framebufferobject_extensions(ctx))) + QOpenGLFunctions functions(ctx->contextHandle()); + if (!functions.hasOpenGLFeature(QOpenGLFunctions::Framebuffers)) return false; ctx->d_ptr->current_fbo = ctx->d_ptr->default_fbo; - glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_ptr->default_fbo); + functions.glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_ptr->default_fbo); #ifdef QT_DEBUG } else { qWarning("QGLFramebufferObject::bindDefault() called without current context."); @@ -1156,7 +1158,7 @@ bool QGLFramebufferObject::bindDefault() */ bool QGLFramebufferObject::hasOpenGLFramebufferObjects() { - return (QGLExtensions::glExtensions() & QGLExtensions::FramebufferObject); + return qgl_hasFeature(QOpenGLFunctions::Framebuffers); } /*! @@ -1296,7 +1298,7 @@ bool QGLFramebufferObject::isBound() const */ bool QGLFramebufferObject::hasOpenGLFramebufferBlit() { - return (QGLExtensions::glExtensions() & QGLExtensions::FramebufferBlit); + return QOpenGLExtensions(QOpenGLContext::currentContext()).hasOpenGLExtension(QOpenGLExtensions::FramebufferBlit); } /*! @@ -1336,13 +1338,14 @@ void QGLFramebufferObject::blitFramebuffer(QGLFramebufferObject *target, const Q GLbitfield buffers, GLenum filter) { - if (!(QGLExtensions::glExtensions() & QGLExtensions::FramebufferBlit)) - return; - const QGLContext *ctx = QGLContext::currentContext(); if (!ctx || !ctx->contextHandle()) return; + QOpenGLExtensions functions(ctx->contextHandle()); + if (!functions.hasOpenGLExtension(QOpenGLExtensions::FramebufferBlit)) + return; + QSurface *surface = ctx->contextHandle()->surface(); const int height = static_cast(surface)->height(); @@ -1360,14 +1363,14 @@ void QGLFramebufferObject::blitFramebuffer(QGLFramebufferObject *target, const Q const int ty0 = th - (targetRect.top() + targetRect.height()); const int ty1 = th - targetRect.top(); - glBindFramebuffer(GL_READ_FRAMEBUFFER, source ? source->handle() : 0); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, target ? target->handle() : 0); + functions.glBindFramebuffer(GL_READ_FRAMEBUFFER, source ? source->handle() : 0); + functions.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, target ? target->handle() : 0); - glBlitFramebufferEXT(sx0, sy0, sx1, sy1, + functions.glBlitFramebuffer(sx0, sy0, sx1, sy1, tx0, ty0, tx1, ty1, buffers, filter); - glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_ptr->current_fbo); + functions.glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_ptr->current_fbo); } QT_END_NAMESPACE diff --git a/src/opengl/qglframebufferobject_p.h b/src/opengl/qglframebufferobject_p.h index 7fdf278431..64b1df5bf5 100644 --- a/src/opengl/qglframebufferobject_p.h +++ b/src/opengl/qglframebufferobject_p.h @@ -56,6 +56,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -148,6 +149,7 @@ public: QGLFramebufferObject::Attachment fbo_attachment; mutable QPaintEngine *engine; QGLFBOGLPaintDevice glDevice; + QOpenGLExtensions funcs; inline GLuint fbo() const { return fbo_guard ? fbo_guard->id() : 0; } }; diff --git a/src/opengl/qglfunctions.cpp b/src/opengl/qglfunctions.cpp index 5ec691073f..3d3bc0e947 100644 --- a/src/opengl/qglfunctions.cpp +++ b/src/opengl/qglfunctions.cpp @@ -42,6 +42,7 @@ #include "qglfunctions.h" #include "qgl_p.h" #include "QtGui/private/qopenglcontext_p.h" +#include QT_BEGIN_NAMESPACE @@ -225,7 +226,7 @@ static int qt_gl_resolve_features() QGLFunctions::CompressedTextures | QGLFunctions::Multisample | QGLFunctions::StencilSeparate; - QGLExtensionMatcher extensions; + QOpenGLExtensionMatcher extensions; if (extensions.match("GL_OES_texture_npot")) features |= QGLFunctions::NPOTTextures; if (extensions.match("GL_IMG_texture_npot")) @@ -236,7 +237,7 @@ static int qt_gl_resolve_features() QGLFunctions::Buffers | QGLFunctions::CompressedTextures | QGLFunctions::Multisample; - QGLExtensionMatcher extensions; + QOpenGLExtensionMatcher extensions; if (extensions.match("GL_OES_framebuffer_object")) features |= QGLFunctions::Framebuffers; if (extensions.match("GL_OES_blend_equation_separate")) @@ -253,7 +254,7 @@ static int qt_gl_resolve_features() #else int features = 0; QGLFormat::OpenGLVersionFlags versions = QGLFormat::openGLVersionFlags(); - QGLExtensionMatcher extensions; + QOpenGLExtensionMatcher extensions; // Recognize features by extension name. if (extensions.match("GL_ARB_multitexture")) diff --git a/src/opengl/qglshaderprogram.cpp b/src/opengl/qglshaderprogram.cpp index 537921bdc4..4859df21d6 100644 --- a/src/opengl/qglshaderprogram.cpp +++ b/src/opengl/qglshaderprogram.cpp @@ -40,7 +40,7 @@ ****************************************************************************/ #include "qglshaderprogram.h" -#include "qglextensions_p.h" +#include #include "qgl_p.h" #include #include @@ -197,10 +197,11 @@ class QGLShaderPrivate : public QObjectPrivate { Q_DECLARE_PUBLIC(QGLShader) public: - QGLShaderPrivate(const QGLContext *, QGLShader::ShaderType type) + QGLShaderPrivate(const QGLContext *ctx, QGLShader::ShaderType type) : shaderGuard(0) , shaderType(type) , compiled(false) + , glfuncs(new QOpenGLFunctions(ctx->contextHandle())) { } ~QGLShaderPrivate(); @@ -210,6 +211,8 @@ public: bool compiled; QString log; + QOpenGLFunctions *glfuncs; + bool create(); bool compile(QGLShader *q); void deleteShader(); @@ -218,8 +221,8 @@ public: namespace { void freeShaderFunc(QGLContext *ctx, GLuint id) { - Q_UNUSED(ctx); - glDeleteShader(id); + Q_ASSERT(ctx); + ctx->contextHandle()->functions()->glDeleteShader(id); } } @@ -227,6 +230,7 @@ namespace { QGLShaderPrivate::~QGLShaderPrivate() { + delete glfuncs; if (shaderGuard) shaderGuard->free(); } @@ -236,16 +240,17 @@ bool QGLShaderPrivate::create() QGLContext *context = const_cast(QGLContext::currentContext()); if (!context) return false; - if (qt_resolve_glsl_extensions(context)) { + + if (glfuncs->hasOpenGLFeature(QOpenGLFunctions::Shaders)) { GLuint shader; if (shaderType == QGLShader::Vertex) - shader = glCreateShader(GL_VERTEX_SHADER); + shader = glfuncs->glCreateShader(GL_VERTEX_SHADER); #if !defined(QT_OPENGL_ES_2) else if (shaderType == QGLShader::Geometry) - shader = glCreateShader(GL_GEOMETRY_SHADER_EXT); + shader = glfuncs->glCreateShader(GL_GEOMETRY_SHADER_EXT); #endif else - shader = glCreateShader(GL_FRAGMENT_SHADER); + shader = glfuncs->glCreateShader(GL_FRAGMENT_SHADER); if (!shader) { qWarning("%s: Could not create shader of type %d.", Q_FUNC_INFO, int(shaderType)); @@ -263,16 +268,16 @@ bool QGLShaderPrivate::compile(QGLShader *q) GLuint shader = shaderGuard ? shaderGuard->id() : 0; if (!shader) return false; - glCompileShader(shader); + glfuncs->glCompileShader(shader); GLint value = 0; - glGetShaderiv(shader, GL_COMPILE_STATUS, &value); + glfuncs->glGetShaderiv(shader, GL_COMPILE_STATUS, &value); compiled = (value != 0); value = 0; - glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &value); + glfuncs->glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &value); if (!compiled && value > 1) { char *logbuf = new char [value]; GLint len; - glGetShaderInfoLog(shader, value, &len, logbuf); + glfuncs->glGetShaderInfoLog(shader, value, &len, logbuf); log = QString::fromLatin1(logbuf); QString name = q->objectName(); @@ -434,7 +439,7 @@ bool QGLShader::compileSourceCode(const char *source) #endif src.append(source + headerLen); srclen.append(GLint(qstrlen(source + headerLen))); - glShaderSource(d->shaderGuard->id(), src.size(), src.data(), srclen.data()); + d->glfuncs->glShaderSource(d->shaderGuard->id(), src.size(), src.data(), srclen.data()); return d->compile(this); } else { return false; @@ -498,12 +503,12 @@ QByteArray QGLShader::sourceCode() const if (!shader) return QByteArray(); GLint size = 0; - glGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &size); + d->glfuncs->glGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &size); if (size <= 0) return QByteArray(); GLint len = 0; char *source = new char [size]; - glGetShaderSource(shader, size, &len, source); + d->glfuncs->glGetShaderSource(shader, size, &len, source); QByteArray src(source); delete [] source; return src; @@ -544,6 +549,32 @@ GLuint QGLShader::shaderId() const #undef ctx +class ShaderProgramOpenGLFunctions : public QOpenGLFunctions +{ +public: + ShaderProgramOpenGLFunctions() + : QOpenGLFunctions() + , glProgramParameteri(0) + { + } + + typedef void (QOPENGLF_APIENTRYP type_glProgramParameteri)(GLuint program, GLenum pname, GLint value); + + void initializeGeometryShaderFunctions() + { + QOpenGLContext *context = QOpenGLContext::currentContext(); + glProgramParameteri = (type_glProgramParameteri) + context->getProcAddress("glProgramParameteri"); + + if (!glProgramParameteri) { + glProgramParameteri = (type_glProgramParameteri) + context->getProcAddress("glProgramParameteriEXT"); + } + } + + type_glProgramParameteri glProgramParameteri; +}; + class QGLShaderProgramPrivate : public QObjectPrivate { Q_DECLARE_PUBLIC(QGLShaderProgram) @@ -556,6 +587,7 @@ public: , geometryVertexCount(64) , geometryInputType(0) , geometryOutputType(0) + , glfuncs(new ShaderProgramOpenGLFunctions) { } ~QGLShaderProgramPrivate(); @@ -573,20 +605,23 @@ public: QList shaders; QList anonShaders; + ShaderProgramOpenGLFunctions *glfuncs; + bool hasShader(QGLShader::ShaderType type) const; }; namespace { void freeProgramFunc(QGLContext *ctx, GLuint id) { - Q_UNUSED(ctx); - glDeleteProgram(id); + Q_ASSERT(ctx); + ctx->contextHandle()->functions()->glDeleteProgram(id); } } QGLShaderProgramPrivate::~QGLShaderProgramPrivate() { + delete glfuncs; if (programGuard) programGuard->free(); } @@ -644,8 +679,10 @@ bool QGLShaderProgram::init() QGLContext *context = const_cast(QGLContext::currentContext()); if (!context) return false; - if (qt_resolve_glsl_extensions(context)) { - GLuint program = glCreateProgram(); + d->glfuncs->initializeOpenGLFunctions(); + d->glfuncs->initializeGeometryShaderFunctions(); + if (d->glfuncs->hasOpenGLFeature(QOpenGLFunctions::Shaders)) { + GLuint program = d->glfuncs->glCreateProgram(); if (!program) { qWarning() << "QGLShaderProgram: could not create shader program"; return false; @@ -686,7 +723,7 @@ bool QGLShaderProgram::addShader(QGLShader *shader) qWarning("QGLShaderProgram::addShader: Program and shader are not associated with same context."); return false; } - glAttachShader(d->programGuard->id(), shader->d_func()->shaderGuard->id()); + d->glfuncs->glAttachShader(d->programGuard->id(), shader->d_func()->shaderGuard->id()); d->linked = false; // Program needs to be relinked. d->shaders.append(shader); connect(shader, SIGNAL(destroyed()), this, SLOT(shaderDestroyed())); @@ -805,7 +842,7 @@ void QGLShaderProgram::removeShader(QGLShader *shader) if (d->programGuard && d->programGuard->id() && shader && shader->d_func()->shaderGuard) { - glDetachShader(d->programGuard->id(), shader->d_func()->shaderGuard->id()); + d->glfuncs->glDetachShader(d->programGuard->id(), shader->d_func()->shaderGuard->id()); } d->linked = false; // Program needs to be relinked. if (shader) { @@ -843,7 +880,7 @@ void QGLShaderProgram::removeAllShaders() if (d->programGuard && d->programGuard->id() && shader && shader->d_func()->shaderGuard) { - glDetachShader(d->programGuard->id(), shader->d_func()->shaderGuard->id()); + d->glfuncs->glDetachShader(d->programGuard->id(), shader->d_func()->shaderGuard->id()); } } foreach (QGLShader *shader, d->anonShaders) { @@ -884,7 +921,7 @@ bool QGLShaderProgram::link() // or otherwise populated the shaders itself. Check to see if the // program is already linked and bail out if so. value = 0; - glGetProgramiv(program, GL_LINK_STATUS, &value); + d->glfuncs->glGetProgramiv(program, GL_LINK_STATUS, &value); d->linked = (value != 0); if (d->linked) return true; @@ -892,14 +929,14 @@ bool QGLShaderProgram::link() #if !defined(QT_OPENGL_ES_2) // Set up the geometry shader parameters - if (glProgramParameteriEXT) { + if (d->glfuncs->glProgramParameteri) { foreach (QGLShader *shader, d->shaders) { if (shader->shaderType() & QGLShader::Geometry) { - glProgramParameteriEXT(program, GL_GEOMETRY_INPUT_TYPE_EXT, + d->glfuncs->glProgramParameteri(program, GL_GEOMETRY_INPUT_TYPE_EXT, d->geometryInputType); - glProgramParameteriEXT(program, GL_GEOMETRY_OUTPUT_TYPE_EXT, + d->glfuncs->glProgramParameteri(program, GL_GEOMETRY_OUTPUT_TYPE_EXT, d->geometryOutputType); - glProgramParameteriEXT(program, GL_GEOMETRY_VERTICES_OUT_EXT, + d->glfuncs->glProgramParameteri(program, GL_GEOMETRY_VERTICES_OUT_EXT, d->geometryVertexCount); break; } @@ -907,17 +944,17 @@ bool QGLShaderProgram::link() } #endif - glLinkProgram(program); + d->glfuncs->glLinkProgram(program); value = 0; - glGetProgramiv(program, GL_LINK_STATUS, &value); + d->glfuncs->glGetProgramiv(program, GL_LINK_STATUS, &value); d->linked = (value != 0); value = 0; - glGetProgramiv(program, GL_INFO_LOG_LENGTH, &value); + d->glfuncs->glGetProgramiv(program, GL_INFO_LOG_LENGTH, &value); d->log = QString(); if (value > 1) { char *logbuf = new char [value]; GLint len; - glGetProgramInfoLog(program, value, &len, logbuf); + d->glfuncs->glGetProgramInfoLog(program, value, &len, logbuf); d->log = QString::fromLatin1(logbuf); QString name = objectName(); if (name.isEmpty()) @@ -976,7 +1013,7 @@ bool QGLShaderProgram::bind() return false; } #endif - glUseProgram(program); + d->glfuncs->glUseProgram(program); return true; } @@ -991,17 +1028,12 @@ bool QGLShaderProgram::bind() */ void QGLShaderProgram::release() { -#ifndef QT_NO_DEBUG Q_D(QGLShaderProgram); +#ifndef QT_NO_DEBUG if (d->programGuard && d->programGuard->group() != QOpenGLContextGroup::currentContextGroup()) qWarning("QGLShaderProgram::release: program is not valid in the current context."); #endif -#if defined(QT_OPENGL_ES_2) - glUseProgram(0); -#else - if (glUseProgram) - glUseProgram(0); -#endif + d->glfuncs->glUseProgram(0); } /*! @@ -1040,7 +1072,7 @@ void QGLShaderProgram::bindAttributeLocation(const char *name, int location) Q_D(QGLShaderProgram); if (!init() || !d->programGuard || !d->programGuard->id()) return; - glBindAttribLocation(d->programGuard->id(), location, name); + d->glfuncs->glBindAttribLocation(d->programGuard->id(), location, name); d->linked = false; // Program needs to be relinked. } @@ -1091,7 +1123,7 @@ int QGLShaderProgram::attributeLocation(const char *name) const { Q_D(const QGLShaderProgram); if (d->linked && d->programGuard && d->programGuard->id()) { - return glGetAttribLocation(d->programGuard->id(), name); + return d->glfuncs->glGetAttribLocation(d->programGuard->id(), name); } else { qWarning() << "QGLShaderProgram::attributeLocation(" << name << "): shader program is not linked"; @@ -1137,7 +1169,7 @@ void QGLShaderProgram::setAttributeValue(int location, GLfloat value) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glVertexAttrib1fv(location, &value); + d->glfuncs->glVertexAttrib1fv(location, &value); } /*! @@ -1164,7 +1196,7 @@ void QGLShaderProgram::setAttributeValue(int location, GLfloat x, GLfloat y) Q_UNUSED(d); if (location != -1) { GLfloat values[2] = {x, y}; - glVertexAttrib2fv(location, values); + d->glfuncs->glVertexAttrib2fv(location, values); } } @@ -1194,7 +1226,7 @@ void QGLShaderProgram::setAttributeValue Q_UNUSED(d); if (location != -1) { GLfloat values[3] = {x, y, z}; - glVertexAttrib3fv(location, values); + d->glfuncs->glVertexAttrib3fv(location, values); } } @@ -1225,7 +1257,7 @@ void QGLShaderProgram::setAttributeValue Q_UNUSED(d); if (location != -1) { GLfloat values[4] = {x, y, z, w}; - glVertexAttrib4fv(location, values); + d->glfuncs->glVertexAttrib4fv(location, values); } } @@ -1253,7 +1285,7 @@ void QGLShaderProgram::setAttributeValue(int location, const QVector2D& value) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glVertexAttrib2fv(location, reinterpret_cast(&value)); + d->glfuncs->glVertexAttrib2fv(location, reinterpret_cast(&value)); } /*! @@ -1278,7 +1310,7 @@ void QGLShaderProgram::setAttributeValue(int location, const QVector3D& value) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glVertexAttrib3fv(location, reinterpret_cast(&value)); + d->glfuncs->glVertexAttrib3fv(location, reinterpret_cast(&value)); } /*! @@ -1303,7 +1335,7 @@ void QGLShaderProgram::setAttributeValue(int location, const QVector4D& value) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glVertexAttrib4fv(location, reinterpret_cast(&value)); + d->glfuncs->glVertexAttrib4fv(location, reinterpret_cast(&value)); } /*! @@ -1330,7 +1362,7 @@ void QGLShaderProgram::setAttributeValue(int location, const QColor& value) if (location != -1) { GLfloat values[4] = {GLfloat(value.redF()), GLfloat(value.greenF()), GLfloat(value.blueF()), GLfloat(value.alphaF())}; - glVertexAttrib4fv(location, values); + d->glfuncs->glVertexAttrib4fv(location, values); } } @@ -1367,13 +1399,13 @@ void QGLShaderProgram::setAttributeValue if (location != -1) { while (columns-- > 0) { if (rows == 1) - glVertexAttrib1fv(location, values); + d->glfuncs->glVertexAttrib1fv(location, values); else if (rows == 2) - glVertexAttrib2fv(location, values); + d->glfuncs->glVertexAttrib2fv(location, values); else if (rows == 3) - glVertexAttrib3fv(location, values); + d->glfuncs->glVertexAttrib3fv(location, values); else - glVertexAttrib4fv(location, values); + d->glfuncs->glVertexAttrib4fv(location, values); values += rows; ++location; } @@ -1417,7 +1449,7 @@ void QGLShaderProgram::setAttributeArray Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) { - glVertexAttribPointer(location, tupleSize, GL_FLOAT, GL_FALSE, + d->glfuncs->glVertexAttribPointer(location, tupleSize, GL_FLOAT, GL_FALSE, stride, values); } } @@ -1441,7 +1473,7 @@ void QGLShaderProgram::setAttributeArray Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) { - glVertexAttribPointer(location, 2, GL_FLOAT, GL_FALSE, + d->glfuncs->glVertexAttribPointer(location, 2, GL_FLOAT, GL_FALSE, stride, values); } } @@ -1465,7 +1497,7 @@ void QGLShaderProgram::setAttributeArray Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) { - glVertexAttribPointer(location, 3, GL_FLOAT, GL_FALSE, + d->glfuncs->glVertexAttribPointer(location, 3, GL_FLOAT, GL_FALSE, stride, values); } } @@ -1489,7 +1521,7 @@ void QGLShaderProgram::setAttributeArray Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) { - glVertexAttribPointer(location, 4, GL_FLOAT, GL_FALSE, + d->glfuncs->glVertexAttribPointer(location, 4, GL_FLOAT, GL_FALSE, stride, values); } } @@ -1521,7 +1553,7 @@ void QGLShaderProgram::setAttributeArray Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) { - glVertexAttribPointer(location, tupleSize, type, GL_TRUE, + d->glfuncs->glVertexAttribPointer(location, tupleSize, type, GL_TRUE, stride, values); } } @@ -1665,7 +1697,7 @@ void QGLShaderProgram::setAttributeBuffer Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) { - glVertexAttribPointer(location, tupleSize, type, GL_TRUE, stride, + d->glfuncs->glVertexAttribPointer(location, tupleSize, type, GL_TRUE, stride, reinterpret_cast(offset)); } } @@ -1710,7 +1742,7 @@ void QGLShaderProgram::enableAttributeArray(int location) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glEnableVertexAttribArray(location); + d->glfuncs->glEnableVertexAttribArray(location); } /*! @@ -1740,7 +1772,7 @@ void QGLShaderProgram::disableAttributeArray(int location) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glDisableVertexAttribArray(location); + d->glfuncs->glDisableVertexAttribArray(location); } /*! @@ -1769,7 +1801,7 @@ int QGLShaderProgram::uniformLocation(const char *name) const Q_D(const QGLShaderProgram); Q_UNUSED(d); if (d->linked && d->programGuard && d->programGuard->id()) { - return glGetUniformLocation(d->programGuard->id(), name); + return d->glfuncs->glGetUniformLocation(d->programGuard->id(), name); } else { qWarning() << "QGLShaderProgram::uniformLocation(" << name << "): shader program is not linked"; @@ -1815,7 +1847,7 @@ void QGLShaderProgram::setUniformValue(int location, GLfloat value) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glUniform1fv(location, 1, &value); + d->glfuncs->glUniform1fv(location, 1, &value); } /*! @@ -1841,7 +1873,7 @@ void QGLShaderProgram::setUniformValue(int location, GLint value) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glUniform1i(location, value); + d->glfuncs->glUniform1i(location, value); } /*! @@ -1868,7 +1900,7 @@ void QGLShaderProgram::setUniformValue(int location, GLuint value) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glUniform1i(location, value); + d->glfuncs->glUniform1i(location, value); } /*! @@ -1896,7 +1928,7 @@ void QGLShaderProgram::setUniformValue(int location, GLfloat x, GLfloat y) Q_UNUSED(d); if (location != -1) { GLfloat values[2] = {x, y}; - glUniform2fv(location, 1, values); + d->glfuncs->glUniform2fv(location, 1, values); } } @@ -1926,7 +1958,7 @@ void QGLShaderProgram::setUniformValue Q_UNUSED(d); if (location != -1) { GLfloat values[3] = {x, y, z}; - glUniform3fv(location, 1, values); + d->glfuncs->glUniform3fv(location, 1, values); } } @@ -1957,7 +1989,7 @@ void QGLShaderProgram::setUniformValue Q_UNUSED(d); if (location != -1) { GLfloat values[4] = {x, y, z, w}; - glUniform4fv(location, 1, values); + d->glfuncs->glUniform4fv(location, 1, values); } } @@ -1985,7 +2017,7 @@ void QGLShaderProgram::setUniformValue(int location, const QVector2D& value) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glUniform2fv(location, 1, reinterpret_cast(&value)); + d->glfuncs->glUniform2fv(location, 1, reinterpret_cast(&value)); } /*! @@ -2011,7 +2043,7 @@ void QGLShaderProgram::setUniformValue(int location, const QVector3D& value) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glUniform3fv(location, 1, reinterpret_cast(&value)); + d->glfuncs->glUniform3fv(location, 1, reinterpret_cast(&value)); } /*! @@ -2037,7 +2069,7 @@ void QGLShaderProgram::setUniformValue(int location, const QVector4D& value) Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glUniform4fv(location, 1, reinterpret_cast(&value)); + d->glfuncs->glUniform4fv(location, 1, reinterpret_cast(&value)); } /*! @@ -2066,7 +2098,7 @@ void QGLShaderProgram::setUniformValue(int location, const QColor& color) if (location != -1) { GLfloat values[4] = {GLfloat(color.redF()), GLfloat(color.greenF()), GLfloat(color.blueF()), GLfloat(color.alphaF())}; - glUniform4fv(location, 1, values); + d->glfuncs->glUniform4fv(location, 1, values); } } @@ -2095,7 +2127,7 @@ void QGLShaderProgram::setUniformValue(int location, const QPoint& point) Q_UNUSED(d); if (location != -1) { GLfloat values[4] = {GLfloat(point.x()), GLfloat(point.y())}; - glUniform2fv(location, 1, values); + d->glfuncs->glUniform2fv(location, 1, values); } } @@ -2124,7 +2156,7 @@ void QGLShaderProgram::setUniformValue(int location, const QPointF& point) Q_UNUSED(d); if (location != -1) { GLfloat values[4] = {GLfloat(point.x()), GLfloat(point.y())}; - glUniform2fv(location, 1, values); + d->glfuncs->glUniform2fv(location, 1, values); } } @@ -2153,7 +2185,7 @@ void QGLShaderProgram::setUniformValue(int location, const QSize& size) Q_UNUSED(d); if (location != -1) { GLfloat values[4] = {GLfloat(size.width()), GLfloat(size.height())}; - glUniform2fv(location, 1, values); + d->glfuncs->glUniform2fv(location, 1, values); } } @@ -2182,7 +2214,7 @@ void QGLShaderProgram::setUniformValue(int location, const QSizeF& size) Q_UNUSED(d); if (location != -1) { GLfloat values[4] = {GLfloat(size.width()), GLfloat(size.height())}; - glUniform2fv(location, 1, values); + d->glfuncs->glUniform2fv(location, 1, values); } } @@ -2208,8 +2240,7 @@ void QGLShaderProgram::setUniformValue(const char *name, const QSizeF& size) void QGLShaderProgram::setUniformValue(int location, const QMatrix2x2& value) { Q_D(QGLShaderProgram); - Q_UNUSED(d); - glUniformMatrix2fv(location, 1, GL_FALSE, value.constData()); + d->glfuncs->glUniformMatrix2fv(location, 1, GL_FALSE, value.constData()); } /*! @@ -2234,8 +2265,7 @@ void QGLShaderProgram::setUniformValue(const char *name, const QMatrix2x2& value void QGLShaderProgram::setUniformValue(int location, const QMatrix2x3& value) { Q_D(QGLShaderProgram); - Q_UNUSED(d); - glUniform3fv(location, 2, value.constData()); + d->glfuncs->glUniform3fv(location, 2, value.constData()); } /*! @@ -2260,8 +2290,7 @@ void QGLShaderProgram::setUniformValue(const char *name, const QMatrix2x3& value void QGLShaderProgram::setUniformValue(int location, const QMatrix2x4& value) { Q_D(QGLShaderProgram); - Q_UNUSED(d); - glUniform4fv(location, 2, value.constData()); + d->glfuncs->glUniform4fv(location, 2, value.constData()); } /*! @@ -2286,8 +2315,7 @@ void QGLShaderProgram::setUniformValue(const char *name, const QMatrix2x4& value void QGLShaderProgram::setUniformValue(int location, const QMatrix3x2& value) { Q_D(QGLShaderProgram); - Q_UNUSED(d); - glUniform2fv(location, 3, value.constData()); + d->glfuncs->glUniform2fv(location, 3, value.constData()); } /*! @@ -2312,8 +2340,7 @@ void QGLShaderProgram::setUniformValue(const char *name, const QMatrix3x2& value void QGLShaderProgram::setUniformValue(int location, const QMatrix3x3& value) { Q_D(QGLShaderProgram); - Q_UNUSED(d); - glUniformMatrix3fv(location, 1, GL_FALSE, value.constData()); + d->glfuncs->glUniformMatrix3fv(location, 1, GL_FALSE, value.constData()); } /*! @@ -2338,8 +2365,7 @@ void QGLShaderProgram::setUniformValue(const char *name, const QMatrix3x3& value void QGLShaderProgram::setUniformValue(int location, const QMatrix3x4& value) { Q_D(QGLShaderProgram); - Q_UNUSED(d); - glUniform4fv(location, 3, value.constData()); + d->glfuncs->glUniform4fv(location, 3, value.constData()); } /*! @@ -2364,8 +2390,7 @@ void QGLShaderProgram::setUniformValue(const char *name, const QMatrix3x4& value void QGLShaderProgram::setUniformValue(int location, const QMatrix4x2& value) { Q_D(QGLShaderProgram); - Q_UNUSED(d); - glUniform2fv(location, 4, value.constData()); + d->glfuncs->glUniform2fv(location, 4, value.constData()); } /*! @@ -2390,8 +2415,7 @@ void QGLShaderProgram::setUniformValue(const char *name, const QMatrix4x2& value void QGLShaderProgram::setUniformValue(int location, const QMatrix4x3& value) { Q_D(QGLShaderProgram); - Q_UNUSED(d); - glUniform3fv(location, 4, value.constData()); + d->glfuncs->glUniform3fv(location, 4, value.constData()); } /*! @@ -2416,8 +2440,7 @@ void QGLShaderProgram::setUniformValue(const char *name, const QMatrix4x3& value void QGLShaderProgram::setUniformValue(int location, const QMatrix4x4& value) { Q_D(QGLShaderProgram); - Q_UNUSED(d); - glUniformMatrix4fv(location, 1, GL_FALSE, value.constData()); + d->glfuncs->glUniformMatrix4fv(location, 1, GL_FALSE, value.constData()); } /*! @@ -2446,9 +2469,8 @@ void QGLShaderProgram::setUniformValue(const char *name, const QMatrix4x4& value void QGLShaderProgram::setUniformValue(int location, const GLfloat value[2][2]) { Q_D(QGLShaderProgram); - Q_UNUSED(d); if (location != -1) - glUniformMatrix2fv(location, 1, GL_FALSE, value[0]); + d->glfuncs->glUniformMatrix2fv(location, 1, GL_FALSE, value[0]); } /*! @@ -2464,9 +2486,8 @@ void QGLShaderProgram::setUniformValue(int location, const GLfloat value[2][2]) void QGLShaderProgram::setUniformValue(int location, const GLfloat value[3][3]) { Q_D(QGLShaderProgram); - Q_UNUSED(d); if (location != -1) - glUniformMatrix3fv(location, 1, GL_FALSE, value[0]); + d->glfuncs->glUniformMatrix3fv(location, 1, GL_FALSE, value[0]); } /*! @@ -2481,9 +2502,8 @@ void QGLShaderProgram::setUniformValue(int location, const GLfloat value[3][3]) void QGLShaderProgram::setUniformValue(int location, const GLfloat value[4][4]) { Q_D(QGLShaderProgram); - Q_UNUSED(d); if (location != -1) - glUniformMatrix4fv(location, 1, GL_FALSE, value[0]); + d->glfuncs->glUniformMatrix4fv(location, 1, GL_FALSE, value[0]); } @@ -2541,14 +2561,13 @@ void QGLShaderProgram::setUniformValue(const char *name, const GLfloat value[4][ void QGLShaderProgram::setUniformValue(int location, const QTransform& value) { Q_D(QGLShaderProgram); - Q_UNUSED(d); if (location != -1) { GLfloat mat[3][3] = { {GLfloat(value.m11()), GLfloat(value.m12()), GLfloat(value.m13())}, {GLfloat(value.m21()), GLfloat(value.m22()), GLfloat(value.m23())}, {GLfloat(value.m31()), GLfloat(value.m32()), GLfloat(value.m33())} }; - glUniformMatrix3fv(location, 1, GL_FALSE, mat[0]); + d->glfuncs->glUniformMatrix3fv(location, 1, GL_FALSE, mat[0]); } } @@ -2576,9 +2595,8 @@ void QGLShaderProgram::setUniformValue void QGLShaderProgram::setUniformValueArray(int location, const GLint *values, int count) { Q_D(QGLShaderProgram); - Q_UNUSED(d); if (location != -1) - glUniform1iv(location, count, values); + d->glfuncs->glUniform1iv(location, count, values); } /*! @@ -2605,9 +2623,8 @@ void QGLShaderProgram::setUniformValueArray void QGLShaderProgram::setUniformValueArray(int location, const GLuint *values, int count) { Q_D(QGLShaderProgram); - Q_UNUSED(d); if (location != -1) - glUniform1iv(location, count, reinterpret_cast(values)); + d->glfuncs->glUniform1iv(location, count, reinterpret_cast(values)); } /*! @@ -2635,16 +2652,15 @@ void QGLShaderProgram::setUniformValueArray void QGLShaderProgram::setUniformValueArray(int location, const GLfloat *values, int count, int tupleSize) { Q_D(QGLShaderProgram); - Q_UNUSED(d); if (location != -1) { if (tupleSize == 1) - glUniform1fv(location, count, values); + d->glfuncs->glUniform1fv(location, count, values); else if (tupleSize == 2) - glUniform2fv(location, count, values); + d->glfuncs->glUniform2fv(location, count, values); else if (tupleSize == 3) - glUniform3fv(location, count, values); + d->glfuncs->glUniform3fv(location, count, values); else if (tupleSize == 4) - glUniform4fv(location, count, values); + d->glfuncs->glUniform4fv(location, count, values); else qWarning() << "QGLShaderProgram::setUniformValue: size" << tupleSize << "not supported"; } @@ -2674,9 +2690,8 @@ void QGLShaderProgram::setUniformValueArray void QGLShaderProgram::setUniformValueArray(int location, const QVector2D *values, int count) { Q_D(QGLShaderProgram); - Q_UNUSED(d); if (location != -1) - glUniform2fv(location, count, reinterpret_cast(values)); + d->glfuncs->glUniform2fv(location, count, reinterpret_cast(values)); } /*! @@ -2701,9 +2716,8 @@ void QGLShaderProgram::setUniformValueArray(const char *name, const QVector2D *v void QGLShaderProgram::setUniformValueArray(int location, const QVector3D *values, int count) { Q_D(QGLShaderProgram); - Q_UNUSED(d); if (location != -1) - glUniform3fv(location, count, reinterpret_cast(values)); + d->glfuncs->glUniform3fv(location, count, reinterpret_cast(values)); } /*! @@ -2730,7 +2744,7 @@ void QGLShaderProgram::setUniformValueArray(int location, const QVector4D *value Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) - glUniform4fv(location, count, reinterpret_cast(values)); + d->glfuncs->glUniform4fv(location, count, reinterpret_cast(values)); } /*! @@ -2763,32 +2777,7 @@ void QGLShaderProgram::setUniformValueArray(const char *name, const QVector4D *v } \ func(location, count, GL_FALSE, temp.constData()); \ } -#if !defined(QT_OPENGL_ES_2) -#define setUniformGenericMatrixArray(func,colfunc,location,values,count,type,cols,rows) \ - if (location == -1 || count <= 0) \ - return; \ - if (sizeof(type) == sizeof(GLfloat) * cols * rows) { \ - const GLfloat *data = reinterpret_cast \ - (values[0].constData()); \ - if (func) \ - func(location, count, GL_FALSE, data); \ - else \ - colfunc(location, count * cols, data); \ - } else { \ - QVarLengthArray temp(cols * rows * count); \ - for (int index = 0; index < count; ++index) { \ - for (int index2 = 0; index2 < (cols * rows); ++index2) { \ - temp.data()[cols * rows * index + index2] = \ - values[index].constData()[index2]; \ - } \ - } \ - if (func) \ - func(location, count, GL_FALSE, temp.constData()); \ - else \ - colfunc(location, count * cols, temp.constData()); \ - } -#else -#define setUniformGenericMatrixArray(func,colfunc,location,values,count,type,cols,rows) \ +#define setUniformGenericMatrixArray(colfunc,location,values,count,type,cols,rows) \ if (location == -1 || count <= 0) \ return; \ if (sizeof(type) == sizeof(GLfloat) * cols * rows) { \ @@ -2805,7 +2794,6 @@ void QGLShaderProgram::setUniformValueArray(const char *name, const QVector4D *v } \ colfunc(location, count * cols, temp.constData()); \ } -#endif /*! Sets the uniform variable array at \a location in the current @@ -2818,7 +2806,7 @@ void QGLShaderProgram::setUniformValueArray(int location, const QMatrix2x2 *valu Q_D(QGLShaderProgram); Q_UNUSED(d); setUniformMatrixArray - (glUniformMatrix2fv, location, values, count, QMatrix2x2, 2, 2); + (d->glfuncs->glUniformMatrix2fv, location, values, count, QMatrix2x2, 2, 2); } /*! @@ -2845,7 +2833,7 @@ void QGLShaderProgram::setUniformValueArray(int location, const QMatrix2x3 *valu Q_D(QGLShaderProgram); Q_UNUSED(d); setUniformGenericMatrixArray - (glUniformMatrix2x3fv, glUniform3fv, location, values, count, + (d->glfuncs->glUniform3fv, location, values, count, QMatrix2x3, 2, 3); } @@ -2873,7 +2861,7 @@ void QGLShaderProgram::setUniformValueArray(int location, const QMatrix2x4 *valu Q_D(QGLShaderProgram); Q_UNUSED(d); setUniformGenericMatrixArray - (glUniformMatrix2x4fv, glUniform4fv, location, values, count, + (d->glfuncs->glUniform4fv, location, values, count, QMatrix2x4, 2, 4); } @@ -2901,7 +2889,7 @@ void QGLShaderProgram::setUniformValueArray(int location, const QMatrix3x2 *valu Q_D(QGLShaderProgram); Q_UNUSED(d); setUniformGenericMatrixArray - (glUniformMatrix3x2fv, glUniform2fv, location, values, count, + (d->glfuncs->glUniform2fv, location, values, count, QMatrix3x2, 3, 2); } @@ -2929,7 +2917,7 @@ void QGLShaderProgram::setUniformValueArray(int location, const QMatrix3x3 *valu Q_D(QGLShaderProgram); Q_UNUSED(d); setUniformMatrixArray - (glUniformMatrix3fv, location, values, count, QMatrix3x3, 3, 3); + (d->glfuncs->glUniformMatrix3fv, location, values, count, QMatrix3x3, 3, 3); } /*! @@ -2956,7 +2944,7 @@ void QGLShaderProgram::setUniformValueArray(int location, const QMatrix3x4 *valu Q_D(QGLShaderProgram); Q_UNUSED(d); setUniformGenericMatrixArray - (glUniformMatrix3x4fv, glUniform4fv, location, values, count, + (d->glfuncs->glUniform4fv, location, values, count, QMatrix3x4, 3, 4); } @@ -2984,7 +2972,7 @@ void QGLShaderProgram::setUniformValueArray(int location, const QMatrix4x2 *valu Q_D(QGLShaderProgram); Q_UNUSED(d); setUniformGenericMatrixArray - (glUniformMatrix4x2fv, glUniform2fv, location, values, count, + (d->glfuncs->glUniform2fv, location, values, count, QMatrix4x2, 4, 2); } @@ -3012,7 +3000,7 @@ void QGLShaderProgram::setUniformValueArray(int location, const QMatrix4x3 *valu Q_D(QGLShaderProgram); Q_UNUSED(d); setUniformGenericMatrixArray - (glUniformMatrix4x3fv, glUniform3fv, location, values, count, + (d->glfuncs->glUniform3fv, location, values, count, QMatrix4x3, 4, 3); } @@ -3040,7 +3028,7 @@ void QGLShaderProgram::setUniformValueArray(int location, const QMatrix4x4 *valu Q_D(QGLShaderProgram); Q_UNUSED(d); setUniformMatrixArray - (glUniformMatrix4fv, location, values, count, QMatrix4x4, 4, 4); + (d->glfuncs->glUniformMatrix4fv, location, values, count, QMatrix4x4, 4, 4); } /*! @@ -3176,7 +3164,9 @@ bool QGLShaderProgram::hasOpenGLShaderPrograms(const QGLContext *context) context = QGLContext::currentContext(); if (!context) return false; - return qt_resolve_glsl_extensions(const_cast(context)); + + QOpenGLFunctions functions(context->contextHandle()); + return functions.hasOpenGLFeature(QOpenGLFunctions::Shaders); #else Q_UNUSED(context); return true; @@ -3217,7 +3207,8 @@ bool QGLShader::hasOpenGLShaders(ShaderType type, const QGLContext *context) if ((type & ~(Geometry | Vertex | Fragment)) || type == 0) return false; - bool resolved = qt_resolve_glsl_extensions(const_cast(context)); + QOpenGLFunctions functions(context->contextHandle()); + bool resolved = functions.hasOpenGLFeature(QOpenGLFunctions::Shaders); if (!resolved) return false; -- cgit v1.2.3 From 468d010fdf851804d8f02dd93c382b512ce5c67e Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 1 Feb 2013 10:36:42 +0100 Subject: Introduce a native file dialog for GTK+ 2.x Change-Id: I3cb29218a54b9120c2ab6e2e32b810a111a7bf3d Reviewed-by: Friedemann Kleint Reviewed-by: Jens Bache-Wiig Reviewed-by: Shawn Rutledge --- .../platformthemes/gtk2/qgtk2dialoghelpers.cpp | 239 +++++++++++++++++++++ .../platformthemes/gtk2/qgtk2dialoghelpers.h | 40 ++++ src/plugins/platformthemes/gtk2/qgtk2theme.cpp | 4 +- 3 files changed, 282 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp index 19d4e9e469..4f9210a3af 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp +++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp @@ -233,6 +233,245 @@ void QGtk2ColorDialogHelper::applyOptions() gtk_widget_hide(helpButton); } +QGtk2FileDialogHelper::QGtk2FileDialogHelper() +{ + d.reset(new QGtk2Dialog(gtk_file_chooser_dialog_new("", 0, + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_OK, NULL))); + connect(d.data(), SIGNAL(accept()), this, SLOT(onAccepted())); + connect(d.data(), SIGNAL(reject()), this, SIGNAL(reject())); + + g_signal_connect(GTK_FILE_CHOOSER(d->gtkDialog()), "selection-changed", G_CALLBACK(onSelectionChanged), this); + g_signal_connect_swapped(GTK_FILE_CHOOSER(d->gtkDialog()), "current-folder-changed", G_CALLBACK(onCurrentFolderChanged), this); +} + +QGtk2FileDialogHelper::~QGtk2FileDialogHelper() +{ +} + +bool QGtk2FileDialogHelper::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) +{ + _dir.clear(); + _selection.clear(); + + applyOptions(); + return d->show(flags, modality, parent); +} + +void QGtk2FileDialogHelper::exec() +{ + d->exec(); +} + +void QGtk2FileDialogHelper::hide() +{ + // After GtkFileChooserDialog has been hidden, gtk_file_chooser_get_current_folder() + // & gtk_file_chooser_get_filenames() will return bogus values -> cache the actual + // values before hiding the dialog + _dir = directory(); + _selection = selectedFiles(); + + d->hide(); +} + +bool QGtk2FileDialogHelper::defaultNameFilterDisables() const +{ + return false; +} + +void QGtk2FileDialogHelper::setDirectory(const QString &directory) +{ + GtkDialog *gtkDialog = d->gtkDialog(); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(gtkDialog), directory.toUtf8()); +} + +QString QGtk2FileDialogHelper::directory() const +{ + // While GtkFileChooserDialog is hidden, gtk_file_chooser_get_current_folder() + // returns a bogus value -> return the cached value before hiding + if (!_dir.isEmpty()) + return _dir; + + QString ret; + GtkDialog *gtkDialog = d->gtkDialog(); + gchar *folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(gtkDialog)); + if (folder) { + ret = QString::fromUtf8(folder); + g_free(folder); + } + return ret; +} + +void QGtk2FileDialogHelper::selectFile(const QString &filename) +{ + GtkDialog *gtkDialog = d->gtkDialog(); + gtk_file_chooser_select_filename(GTK_FILE_CHOOSER(gtkDialog), filename.toUtf8()); +} + +QStringList QGtk2FileDialogHelper::selectedFiles() const +{ + // While GtkFileChooserDialog is hidden, gtk_file_chooser_get_filenames() + // returns a bogus value -> return the cached value before hiding + if (!_selection.isEmpty()) + return _selection; + + QStringList selection; + GtkDialog *gtkDialog = d->gtkDialog(); + GSList *filenames = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(gtkDialog)); + for (GSList *it = filenames; it; it = it->next) + selection += QString::fromUtf8((const char*)it->data); + g_slist_free(filenames); + return selection; +} + +void QGtk2FileDialogHelper::setFilter() +{ + applyOptions(); +} + +void QGtk2FileDialogHelper::selectNameFilter(const QString &filter) +{ + GtkFileFilter *gtkFilter = _filters.value(filter); + if (gtkFilter) { + GtkDialog *gtkDialog = d->gtkDialog(); + gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(gtkDialog), gtkFilter); + } +} + +QString QGtk2FileDialogHelper::selectedNameFilter() const +{ + GtkDialog *gtkDialog = d->gtkDialog(); + GtkFileFilter *gtkFilter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(gtkDialog)); + return _filterNames.value(gtkFilter); +} + +void QGtk2FileDialogHelper::onAccepted() +{ + emit accept(); + + QString filter = selectedNameFilter(); + if (filter.isEmpty()) + emit filterSelected(filter); + + QStringList files = selectedFiles(); + emit filesSelected(files); + if (files.count() == 1) + emit fileSelected(files.first()); +} + +void QGtk2FileDialogHelper::onSelectionChanged(GtkDialog *gtkDialog, QGtk2FileDialogHelper *helper) +{ + QString selection; + gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(gtkDialog)); + if (filename) { + selection = QString::fromUtf8(filename); + g_free(filename); + } + emit helper->currentChanged(selection); +} + +void QGtk2FileDialogHelper::onCurrentFolderChanged(QGtk2FileDialogHelper *dialog) +{ + emit dialog->directoryEntered(dialog->directory()); +} + +static GtkFileChooserAction gtkFileChooserAction(const QSharedPointer &options) +{ + switch (options->fileMode()) { + case QFileDialogOptions::AnyFile: + case QFileDialogOptions::ExistingFile: + case QFileDialogOptions::ExistingFiles: + if (options->acceptMode() == QFileDialogOptions::AcceptOpen) + return GTK_FILE_CHOOSER_ACTION_OPEN; + else + return GTK_FILE_CHOOSER_ACTION_SAVE; + case QFileDialogOptions::Directory: + case QFileDialogOptions::DirectoryOnly: + default: + if (options->acceptMode() == QFileDialogOptions::AcceptOpen) + return GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER; + else + return GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER; + } +} + +void QGtk2FileDialogHelper::applyOptions() +{ + GtkDialog *gtkDialog = d->gtkDialog(); + const QSharedPointer &opts = options(); + + gtk_window_set_title(GTK_WINDOW(gtkDialog), opts->windowTitle().toUtf8()); + gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(gtkDialog), true); + + const GtkFileChooserAction action = gtkFileChooserAction(opts); + gtk_file_chooser_set_action(GTK_FILE_CHOOSER(gtkDialog), action); + + const bool selectMultiple = opts->fileMode() == QFileDialogOptions::ExistingFiles; + gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(gtkDialog), selectMultiple); + + const bool confirmOverwrite = !opts->testOption(QFileDialogOptions::DontConfirmOverwrite); + gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(gtkDialog), confirmOverwrite); + + const QStringList nameFilters = opts->nameFilters(); + if (!nameFilters.isEmpty()) + setNameFilters(nameFilters); + + const QString initialDirectory = opts->initialDirectory(); + if (!initialDirectory.isEmpty()) + setDirectory(initialDirectory); + + foreach (const QString &filename, opts->initiallySelectedFiles()) + selectFile(filename); + + const QString initialNameFilter = opts->initiallySelectedNameFilter(); + if (!initialNameFilter.isEmpty()) + selectNameFilter(initialNameFilter); + + GtkWidget *acceptButton = gtk_dialog_get_widget_for_response(gtkDialog, GTK_RESPONSE_OK); + if (acceptButton) { + if (opts->isLabelExplicitlySet(QFileDialogOptions::Accept)) + gtk_button_set_label(GTK_BUTTON(acceptButton), opts->labelText(QFileDialogOptions::Accept).toUtf8()); + else if (opts->acceptMode() == QFileDialogOptions::AcceptOpen) + gtk_button_set_label(GTK_BUTTON(acceptButton), GTK_STOCK_OPEN); + else + gtk_button_set_label(GTK_BUTTON(acceptButton), GTK_STOCK_SAVE); + } + + GtkWidget *rejectButton = gtk_dialog_get_widget_for_response(gtkDialog, GTK_RESPONSE_CANCEL); + if (rejectButton) { + if (opts->isLabelExplicitlySet(QFileDialogOptions::Reject)) + gtk_button_set_label(GTK_BUTTON(rejectButton), opts->labelText(QFileDialogOptions::Reject).toUtf8()); + else + gtk_button_set_label(GTK_BUTTON(rejectButton), GTK_STOCK_CANCEL); + } +} + +void QGtk2FileDialogHelper::setNameFilters(const QStringList& filters) +{ + GtkDialog *gtkDialog = d->gtkDialog(); + foreach (GtkFileFilter *filter, _filters) + gtk_file_chooser_remove_filter(GTK_FILE_CHOOSER(gtkDialog), filter); + + _filters.clear(); + _filterNames.clear(); + + foreach (const QString &filter, filters) { + GtkFileFilter *gtkFilter = gtk_file_filter_new(); + const QString name = filter.left(filter.indexOf(QLatin1Char('('))); + const QStringList extensions = cleanFilterList(filter); + + gtk_file_filter_set_name(gtkFilter, name.isEmpty() ? extensions.join(QStringLiteral(", ")).toUtf8() : name.toUtf8()); + foreach (const QString &ext, extensions) + gtk_file_filter_add_pattern(gtkFilter, ext.toUtf8()); + + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(gtkDialog), gtkFilter); + + _filters.insert(filter, gtkFilter); + _filterNames.insert(gtkFilter, filter); + } +} + QT_END_NAMESPACE #include "qgtk2dialoghelpers.moc" diff --git a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h index 9dc6991601..301a2aa6ae 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h +++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h @@ -45,6 +45,9 @@ #include #include +typedef struct _GtkDialog GtkDialog; +typedef struct _GtkFileFilter GtkFileFilter; + QT_BEGIN_NAMESPACE class QGtk2Dialog; @@ -74,6 +77,43 @@ private: mutable QScopedPointer d; }; +class QGtk2FileDialogHelper : public QPlatformFileDialogHelper +{ + Q_OBJECT + +public: + QGtk2FileDialogHelper(); + ~QGtk2FileDialogHelper(); + + virtual bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); + virtual void exec(); + virtual void hide(); + + virtual bool defaultNameFilterDisables() const; + virtual void setDirectory(const QString &directory); + virtual QString directory() const; + virtual void selectFile(const QString &filename); + virtual QStringList selectedFiles() const; + virtual void setFilter(); + virtual void selectNameFilter(const QString &filter); + virtual QString selectedNameFilter() const; + +private Q_SLOTS: + void onAccepted(); + +private: + static void onSelectionChanged(GtkDialog *dialog, QGtk2FileDialogHelper *helper); + static void onCurrentFolderChanged(QGtk2FileDialogHelper *helper); + void applyOptions(); + void setNameFilters(const QStringList &filters); + + QString _dir; + QStringList _selection; + QHash _filters; + QHash _filterNames; + mutable QScopedPointer d; +}; + QT_END_NAMESPACE #endif // QGTK2DIALOGHELPERS_P_H diff --git a/src/plugins/platformthemes/gtk2/qgtk2theme.cpp b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp index c7e612d1d6..c685d7b13c 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2theme.cpp +++ b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp @@ -56,7 +56,7 @@ QGtk2Theme::QGtk2Theme() bool QGtk2Theme::usePlatformNativeDialog(DialogType type) const { - return type == ColorDialog; + return type == ColorDialog || type == FileDialog; } QPlatformDialogHelper *QGtk2Theme::createPlatformDialogHelper(DialogType type) const @@ -64,6 +64,8 @@ QPlatformDialogHelper *QGtk2Theme::createPlatformDialogHelper(DialogType type) c switch (type) { case ColorDialog: return new QGtk2ColorDialogHelper; + case FileDialog: + return new QGtk2FileDialogHelper; default: return 0; } -- cgit v1.2.3 From 0768920dbdabef25eb7d41e8dbba891704b24f09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sat, 16 Feb 2013 14:56:50 +0100 Subject: Remove ifdefs for supporting Mac OS <= 10.5 Qt5 requires Mac OS 10.6, so we can remove checks such as if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 Change-Id: Iea21727a277291148704ecf9677ed0b68c24920f Reviewed-by: Thiago Macieira --- src/corelib/global/qsystemdetection.h | 2 +- src/corelib/io/qfilesystemengine.cpp | 3 +-- src/corelib/io/qfilesystemengine_unix.cpp | 2 -- src/corelib/kernel/qcore_mac_p.h | 10 ---------- src/corelib/tools/qlocale_mac.mm | 2 -- src/network/kernel/qnetworkproxy_mac.cpp | 5 +---- src/network/ssl/qsslcontext.cpp | 12 ++---------- src/network/ssl/qsslsocket_openssl.cpp | 12 ++---------- .../fontdatabases/mac/qfontengine_coretext.mm | 5 ----- .../fontdatabases/mac/qfontengine_coretext_p.h | 4 ---- .../platforms/cocoa/qcocoaapplicationdelegate.h | 13 ------------- src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm | 2 -- .../platforms/cocoa/qcocoafiledialoghelper.mm | 4 ---- src/plugins/platforms/cocoa/qcocoahelpers.mm | 2 -- src/plugins/platforms/cocoa/qcocoaintrospection.mm | 4 ---- src/plugins/platforms/cocoa/qmultitouch_mac.mm | 5 ----- src/plugins/platforms/cocoa/qmultitouch_mac_p.h | 4 ---- src/plugins/platforms/cocoa/qnswindowdelegate.h | 20 -------------------- src/plugins/platforms/cocoa/qpaintengine_mac.mm | 16 +++------------- src/plugins/platforms/cocoa/qprintengine_mac.mm | 18 +----------------- src/widgets/styles/qmacstyle_mac.mm | 4 ---- src/widgets/widgets/qtabbar.cpp | 2 +- 22 files changed, 12 insertions(+), 139 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qsystemdetection.h b/src/corelib/global/qsystemdetection.h index 5f9671932f..b7c586a3e2 100644 --- a/src/corelib/global/qsystemdetection.h +++ b/src/corelib/global/qsystemdetection.h @@ -178,7 +178,7 @@ # ifdef MAC_OS_X_VERSION_MIN_REQUIRED # undef MAC_OS_X_VERSION_MIN_REQUIRED # endif -# define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_4 +# define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_6 # include # if !defined(MAC_OS_X_VERSION_10_3) # define MAC_OS_X_VERSION_10_3 MAC_OS_X_VERSION_10_2 + 1 diff --git a/src/corelib/io/qfilesystemengine.cpp b/src/corelib/io/qfilesystemengine.cpp index 0fd77fbeb5..71ecc4a0a0 100644 --- a/src/corelib/io/qfilesystemengine.cpp +++ b/src/corelib/io/qfilesystemengine.cpp @@ -272,8 +272,7 @@ void QFileSystemMetaData::fillFromStatBuf(const QT_STATBUF &statBuffer) // Attributes entryFlags |= QFileSystemMetaData::ExistsAttribute; size_ = statBuffer.st_size; -#if defined (Q_OS_MAC) && !defined(Q_OS_IOS) \ - && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 +#if defined (Q_OS_MAC) && !defined(Q_OS_IOS) if (statBuffer.st_flags & UF_HIDDEN) { entryFlags |= QFileSystemMetaData::HiddenAttribute; knownFlagsMask |= QFileSystemMetaData::HiddenAttribute; diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index 1fe1107d95..9970530827 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -360,12 +360,10 @@ bool QFileSystemEngine::fillMetaData(const QFileSystemEntry &entry, QFileSystemM if (!data.hasFlags(QFileSystemMetaData::DirectoryType)) what |= QFileSystemMetaData::DirectoryType; } -# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 if (what & QFileSystemMetaData::HiddenAttribute) { // Mac OS >= 10.5: st_flags & UF_HIDDEN what |= QFileSystemMetaData::PosixStatFlags; } -# endif // MAC_OS_X_VERSION_MAX_ALLOWED... #endif // defined(Q_OS_MAC) && !defined(Q_OS_IOS) if (what & QFileSystemMetaData::PosixStatFlags) diff --git a/src/corelib/kernel/qcore_mac_p.h b/src/corelib/kernel/qcore_mac_p.h index c3a3afaf6c..b833eb4962 100644 --- a/src/corelib/kernel/qcore_mac_p.h +++ b/src/corelib/kernel/qcore_mac_p.h @@ -136,14 +136,4 @@ private: QT_END_NAMESPACE -#if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5) -#ifndef __LP64__ - typedef float CGFloat; - typedef int NSInteger; - typedef unsigned int NSUInteger; - #define SRefCon SInt32 - #define URefCon UInt32 -#endif -#endif - #endif // QCORE_MAC_P_H diff --git a/src/corelib/tools/qlocale_mac.mm b/src/corelib/tools/qlocale_mac.mm index 0dc6f389b3..b3dff3a83a 100644 --- a/src/corelib/tools/qlocale_mac.mm +++ b/src/corelib/tools/qlocale_mac.mm @@ -345,7 +345,6 @@ static QString macFormatCurrency(const QSystemLocale::CurrencyToStringArgument & static QVariant macQuoteString(QSystemLocale::QueryType type, const QStringRef &str) { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_6) return QVariant(); @@ -363,7 +362,6 @@ static QVariant macQuoteString(QSystemLocale::QueryType type, const QStringRef & default: break; } -#endif return QVariant(); } #endif //QT_NO_SYSTEMLOCALE diff --git a/src/network/kernel/qnetworkproxy_mac.cpp b/src/network/kernel/qnetworkproxy_mac.cpp index a283b7ee05..4a4acb59d4 100644 --- a/src/network/kernel/qnetworkproxy_mac.cpp +++ b/src/network/kernel/qnetworkproxy_mac.cpp @@ -231,7 +231,6 @@ QList macQueryInternal(const QNetworkProxyQuery &query) // PAC is enabled CFStringRef cfPacLocation = (CFStringRef)CFDictionaryGetValue(dict, kSCPropNetProxiesProxyAutoConfigURLString); -#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) { QCFType pacData; QCFType pacUrl = CFURLCreateWithString(kCFAllocatorDefault, cfPacLocation, NULL); @@ -275,9 +274,7 @@ QList macQueryInternal(const QNetworkProxyQuery &query) result << proxyFromDictionary(proxy); } return result; - } else -#endif - { + } else { QString pacLocation = QCFString::toQString(cfPacLocation); qWarning("Mac system proxy: PAC script at \"%s\" not handled", qPrintable(pacLocation)); } diff --git a/src/network/ssl/qsslcontext.cpp b/src/network/ssl/qsslcontext.cpp index 4e0143253d..f75ff3796d 100644 --- a/src/network/ssl/qsslcontext.cpp +++ b/src/network/ssl/qsslcontext.cpp @@ -176,17 +176,9 @@ init_context: } } - bool addExpiredCerts = true; -#if defined(Q_OS_MAC) && (MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_5) - //On Leopard SSL does not work if we add the expired certificates. - if (QSysInfo::MacintoshVersion == QSysInfo::MV_10_5) - addExpiredCerts = false; -#endif // now add the expired certs - if (addExpiredCerts) { - foreach (const QSslCertificate &caCertificate, expiredCerts) { - q_X509_STORE_add_cert(sslContext->ctx->cert_store, reinterpret_cast(caCertificate.handle())); - } + foreach (const QSslCertificate &caCertificate, expiredCerts) { + q_X509_STORE_add_cert(sslContext->ctx->cert_store, reinterpret_cast(caCertificate.handle())); } if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) { diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 7820e8b9a9..6845752d8b 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -1504,17 +1504,9 @@ QList QSslSocketBackendPrivate::verify(QList certifi } } - bool addExpiredCerts = true; -#if defined(Q_OS_MAC) && (MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_5) - //On Leopard SSL does not work if we add the expired certificates. - if (QSysInfo::MacintoshVersion == QSysInfo::MV_10_5) - addExpiredCerts = false; -#endif // now add the expired certs - if (addExpiredCerts) { - foreach (const QSslCertificate &caCertificate, expiredCerts) { - q_X509_STORE_add_cert(certStore, reinterpret_cast(caCertificate.handle())); - } + foreach (const QSslCertificate &caCertificate, expiredCerts) { + q_X509_STORE_add_cert(certStore, reinterpret_cast(caCertificate.handle())); } QMutexLocker sslErrorListMutexLocker(&_q_sslErrorList()->mutex); diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm index 078b639fa8..3e553acd0a 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm @@ -46,8 +46,6 @@ #include -#if !defined(Q_WS_MAC) || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) - QT_BEGIN_NAMESPACE static float SYNTHETIC_ITALIC_SKEW = tanf(14 * acosf(0) / 90); @@ -650,6 +648,3 @@ bool QCoreTextFontEngine::supportsTransformation(const QTransform &transform) co } QT_END_NAMESPACE - -#endif// !defined(Q_WS_MAC) || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) - diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h index 7c8f28aabd..a9b1960491 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h @@ -52,8 +52,6 @@ #include #endif -#if !defined(Q_WS_MAC) || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) - QT_BEGIN_NAMESPACE class QRawFontPrivate; @@ -142,6 +140,4 @@ CGAffineTransform qt_transform_from_fontdef(const QFontDef &fontDef); QT_END_NAMESPACE -#endif// !defined(Q_WS_MAC) || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) - #endif // QFONTENGINE_CORETEXT_P_H diff --git a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.h b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.h index 6dd7ea2fb3..e44b2d1b6d 100644 --- a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.h +++ b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.h @@ -93,19 +93,6 @@ @class QT_MANGLE_NAMESPACE(QCocoaMenuLoader); -#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5 - -@protocol NSApplicationDelegate -- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; -- (void)applicationDidFinishLaunching:(NSNotification *)aNotification; -- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames; -- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender; -- (void)applicationDidBecomeActive:(NSNotification *)notification; -- (void)applicationDidResignActive:(NSNotification *)notification; -@end - -#endif - @interface QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) : NSObject { bool startedQuit; NSMenu *dockMenu; diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm index bb907674dc..987600c6b4 100644 --- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm +++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm @@ -490,14 +490,12 @@ static bool IsMouseOrKeyEvent( NSEvent* event ) case NSOtherMouseUp: case NSOtherMouseDragged: #ifndef QT_NO_GESTURES -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 case NSEventTypeGesture: // touch events case NSEventTypeMagnify: case NSEventTypeSwipe: case NSEventTypeRotate: case NSEventTypeBeginGesture: case NSEventTypeEndGesture: -#endif #endif // QT_NO_GESTURES result = true; break; diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm index faea417f0f..9cc0353dc6 100644 --- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm +++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm @@ -77,11 +77,7 @@ typedef QSharedPointer SharedPointerFileDialogOptions; @class QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate); @interface QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 : NSObject -#else - : NSObject -#endif { @public NSOpenPanel *mOpenPanel; diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm index dc43666bb6..29a8c49511 100644 --- a/src/plugins/platforms/cocoa/qcocoahelpers.mm +++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm @@ -475,11 +475,9 @@ CGColorSpaceRef qt_mac_genericColorSpace() { #if 0 if (!m_genericColorSpace) { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_4) { m_genericColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); } else -#endif { m_genericColorSpace = CGColorSpaceCreateDeviceRGB(); } diff --git a/src/plugins/platforms/cocoa/qcocoaintrospection.mm b/src/plugins/platforms/cocoa/qcocoaintrospection.mm index ffb6ae4294..806effc929 100644 --- a/src/plugins/platforms/cocoa/qcocoaintrospection.mm +++ b/src/plugins/platforms/cocoa/qcocoaintrospection.mm @@ -83,7 +83,6 @@ void qt_cocoa_change_implementation(Class baseClass, SEL originalSel, Class prox if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) #endif { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 // The following code replaces the _implementation_ for the selector we want to hack // (originalSel) with the implementation found in proxyClass. Then it creates // a new 'backup' method inside baseClass containing the old, original, @@ -104,7 +103,6 @@ void qt_cocoa_change_implementation(Class baseClass, SEL originalSel, Class prox Method backupMethod = class_getInstanceMethod(proxyClass, backupSel); class_addMethod(baseClass, backupSel, originalImp, method_getTypeEncoding(backupMethod)); } -#endif } } @@ -114,11 +112,9 @@ void qt_cocoa_change_back_implementation(Class baseClass, SEL originalSel, SEL b if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) #endif { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 Method originalMethod = class_getInstanceMethod(baseClass, originalSel); Method backupMethodInBaseClass = class_getInstanceMethod(baseClass, backupSel); method_setImplementation(originalMethod, method_getImplementation(backupMethodInBaseClass)); -#endif } } diff --git a/src/plugins/platforms/cocoa/qmultitouch_mac.mm b/src/plugins/platforms/cocoa/qmultitouch_mac.mm index 337d962c7f..fc0048f998 100644 --- a/src/plugins/platforms/cocoa/qmultitouch_mac.mm +++ b/src/plugins/platforms/cocoa/qmultitouch_mac.mm @@ -42,8 +42,6 @@ #include "qmultitouch_mac_p.h" #include "qcocoahelpers.h" -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 - QT_BEGIN_NAMESPACE QHash QCocoaTouch::_currentTouches; @@ -214,6 +212,3 @@ QCocoaTouch::getCurrentTouchPointList(NSEvent *event, bool acceptSingleTouch) } QT_END_NAMESPACE - -#endif // MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 - diff --git a/src/plugins/platforms/cocoa/qmultitouch_mac_p.h b/src/plugins/platforms/cocoa/qmultitouch_mac_p.h index 1244b8223f..736eb3f878 100644 --- a/src/plugins/platforms/cocoa/qmultitouch_mac_p.h +++ b/src/plugins/platforms/cocoa/qmultitouch_mac_p.h @@ -61,8 +61,6 @@ #include #include -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 - QT_BEGIN_NAMESPACE class QCocoaTouch @@ -92,7 +90,5 @@ class QCocoaTouch QT_END_NAMESPACE -#endif // MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 - #endif // QMULTITOUCH_MAC_P_H diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.h b/src/plugins/platforms/cocoa/qnswindowdelegate.h index 53bbeb1318..98ad7b8c9d 100644 --- a/src/plugins/platforms/cocoa/qnswindowdelegate.h +++ b/src/plugins/platforms/cocoa/qnswindowdelegate.h @@ -46,26 +46,6 @@ #include "qcocoawindow.h" -#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5 -@protocol NSWindowDelegate -//- (NSSize)windowWillResize:(NSWindow *)window toSize:(NSSize)proposedFrameSize; -//- (void)windowDidMiniaturize:(NSNotification*)notification; -- (void)windowDidResize:(NSNotification *)notification; -- (void)windowWillClose:(NSNotification *)notification; -//- (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultFrame:(NSRect)defaultFrame; -- (void)windowDidMove:(NSNotification *)notification; -//- (BOOL)windowShouldClose:(id)window; -//- (void)windowDidDeminiaturize:(NSNotification *)notification; -//- (void)windowDidBecomeMain:(NSNotification*)notification; -//- (void)windowDidResignMain:(NSNotification*)notification; -//- (void)windowDidBecomeKey:(NSNotification*)notification; -//- (void)windowDidResignKey:(NSNotification*)notification; -//- (BOOL)window:(NSWindow *)window shouldPopUpDocumentPathMenu:(NSMenu *)menu; -//- (BOOL)window:(NSWindow *)window shouldDragDocumentWithEvent:(NSEvent *)event from:(NSPoint)dragImageLocation withPasteboard:(NSPasteboard *)pasteboard; -//- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame; -@end -#endif - @interface QNSWindowDelegate : NSObject { QCocoaWindow *m_cocoaWindow; diff --git a/src/plugins/platforms/cocoa/qpaintengine_mac.mm b/src/plugins/platforms/cocoa/qpaintengine_mac.mm index 3163ae947b..56ab732a32 100644 --- a/src/plugins/platforms/cocoa/qpaintengine_mac.mm +++ b/src/plugins/platforms/cocoa/qpaintengine_mac.mm @@ -90,14 +90,11 @@ void qt_mac_clip_cg(CGContextRef hd, const QRegion &rgn, CGAffineTransform *orig if (rgn.isEmpty()) { CGContextAddRect(hd, CGRectMake(0, 0, 0, 0)); } else { -#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) { QCFType shape = qt_mac_QRegionToHIMutableShape(rgn); Q_ASSERT(!HIShapeIsEmpty(shape)); HIShapeReplacePathInCGContext(shape, hd); - } else -#endif - { + } else { QVector rects = rgn.rects(); const int count = rects.size(); for (int i = 0; i < count; i++) { @@ -338,11 +335,9 @@ CGColorSpaceRef QCoreGraphicsPaintEngine::macGenericColorSpace() { #if 0 if (!m_genericColorSpace) { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_4) { m_genericColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); } else -#endif { m_genericColorSpace = CGColorSpaceCreateDeviceRGB(); } @@ -1185,7 +1180,6 @@ extern "C" { void QCoreGraphicsPaintEngine::updateCompositionMode(QPainter::CompositionMode mode) { -#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) { int cg_mode = kCGBlendModeNormal; switch (mode) { @@ -1267,11 +1261,9 @@ QCoreGraphicsPaintEngine::updateCompositionMode(QPainter::CompositionMode mode) if (cg_mode > -1) { CGContextSetBlendMode(d_func()->hd, CGBlendMode(cg_mode)); } - } else -#endif - // The standard porter duff ops. - if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_3 + } else if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_3 && mode <= QPainter::CompositionMode_Xor) { + // The standard porter duff ops. int cg_mode = kCGCompositeModeCopy; switch (mode) { case QPainter::CompositionMode_SourceOver: @@ -1317,7 +1309,6 @@ QCoreGraphicsPaintEngine::updateCompositionMode(QPainter::CompositionMode mode) if (cg_mode > -1) CGContextSetCompositeOperation(d_func()->hd, CGCompositeMode(cg_mode)); } else { -#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4) bool needPrivateAPI = false; if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_4) { int cg_mode = kCGBlendModeNormal; @@ -1367,7 +1358,6 @@ QCoreGraphicsPaintEngine::updateCompositionMode(QPainter::CompositionMode mode) else CGContextSetCompositeOperation(d_func()->hd, CGCompositeMode(cg_mode)); } -#endif } } diff --git a/src/plugins/platforms/cocoa/qprintengine_mac.mm b/src/plugins/platforms/cocoa/qprintengine_mac.mm index 54019372bc..4570a663f6 100644 --- a/src/plugins/platforms/cocoa/qprintengine_mac.mm +++ b/src/plugins/platforms/cocoa/qprintengine_mac.mm @@ -190,23 +190,7 @@ QList QMacPrintEnginePrivate::supportedResolutions() const if (PMSessionGetCurrentPrinter(session(), &printer) == noErr) { PMResolution res; OSStatus status = PMPrinterGetPrinterResolutionCount(printer, &resCount); - if (status == kPMNotImplemented) { -#if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5) - // *Sigh* we have to use the non-indexed version. - if (PMPrinterGetPrinterResolution(printer, kPMMinSquareResolution, &res) == noErr) - resolutions.append(int(res.hRes)); - if (PMPrinterGetPrinterResolution(printer, kPMMaxSquareResolution, &res) == noErr) { - QVariant var(int(res.hRes)); - if (!resolutions.contains(var)) - resolutions.append(var); - } - if (PMPrinterGetPrinterResolution(printer, kPMDefaultResolution, &res) == noErr) { - QVariant var(int(res.hRes)); - if (!resolutions.contains(var)) - resolutions.append(var); - } -#endif - } else if (status == noErr) { + if (status == noErr) { // According to the docs, index start at 1. for (UInt32 i = 1; i <= resCount; ++i) { if (PMPrinterGetIndexedPrinterResolution(printer, i, &res) == noErr) diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index ccf783adb3..085bf627aa 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -586,11 +586,9 @@ CGColorSpaceRef qt_mac_genericColorSpace() { #if 0 if (!m_genericColorSpace) { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_4) { m_genericColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); } else -#endif { m_genericColorSpace = CGColorSpaceCreateDeviceRGB(); } @@ -4912,10 +4910,8 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex } else { if (!(slider->subControls & SC_SliderHandle)) tdi.attributes &= ~kThemeTrackShowThumb; -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 if (!(slider->subControls & SC_SliderGroove)) tdi.attributes |= kThemeTrackHideTrack; -#endif } #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp index e0ea3e798d..787cc754f6 100644 --- a/src/widgets/widgets/qtabbar.cpp +++ b/src/widgets/widgets/qtabbar.cpp @@ -80,7 +80,7 @@ inline static bool verticalTabs(QTabBar::Shape shape) void QTabBarPrivate::updateMacBorderMetrics() { -#if (defined Q_WS_MAC) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) +#if defined(Q_WS_MAC) if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) { Q_Q(QTabBar); ::HIContentBorderMetrics metrics; -- cgit v1.2.3 From 193e3ba32e0c808b48216d9d96aa88e591dd189f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sat, 16 Feb 2013 15:03:33 +0100 Subject: Don't override OS X deployment target unconditionally in qsystemdetection.h AvailabilityMacros.h will pick up the MACOSX_DEPLOYMENT_TARGET environment variable, as well as the -mmacosx-min-version= command line flag, and set the MAC_OS_X_VERSION_MIN_REQUIRED based on that. By setting the define before including AvailabilityMacros.h we essentially skipped that whole logic and always set it to 10.6. Only in the case where there's no deployment target specified on the command line do we want to ensure that it's at least 10.6 Change-Id: Ic558ff4deb77937ea805b048d83949815b273bcc Reviewed-by: Thiago Macieira --- src/corelib/global/qsystemdetection.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qsystemdetection.h b/src/corelib/global/qsystemdetection.h index b7c586a3e2..f8a61962ec 100644 --- a/src/corelib/global/qsystemdetection.h +++ b/src/corelib/global/qsystemdetection.h @@ -175,11 +175,12 @@ #endif #ifdef Q_OS_DARWIN -# ifdef MAC_OS_X_VERSION_MIN_REQUIRED -# undef MAC_OS_X_VERSION_MIN_REQUIRED -# endif -# define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_6 # include +# if !defined(MAC_OS_X_VERSION_MIN_REQUIRED) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 +# undef MAC_OS_X_VERSION_MIN_REQUIRED +# define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_6 +# endif +# # if !defined(MAC_OS_X_VERSION_10_3) # define MAC_OS_X_VERSION_10_3 MAC_OS_X_VERSION_10_2 + 1 # endif -- cgit v1.2.3 From 4e78ce288aa67caddea65cd070663e95dc4f7183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sat, 16 Feb 2013 17:16:53 +0100 Subject: Start using Availability.h over AvailabilityMacros.h on Mac OS The former was introduced with Mac OS 10.6 and can also be used for checking iOS versions, so it's preferable. We still include the old availability header, and use it in various places in Qt, and so does the Mac OS frameworks, so there's no need to phase it out, but for new platform checks we want to use the updated macros of the form: #if __MAC_OS_X_VERSION_MAX_ALLOWED > __MAC_10_7 Ideally you should not use the named version macro, and use 1070 instead, in case you build against an SDK that does not define the named version yet, but we take care of defining these in qsystemdetection.h for convenience. Change-Id: I9cfa72e37816583f28ff9643793f111e155b7789 Reviewed-by: Thiago Macieira --- src/corelib/global/qsystemdetection.h | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qsystemdetection.h b/src/corelib/global/qsystemdetection.h index f8a61962ec..eb7aa2e64f 100644 --- a/src/corelib/global/qsystemdetection.h +++ b/src/corelib/global/qsystemdetection.h @@ -175,31 +175,34 @@ #endif #ifdef Q_OS_DARWIN +# include +# if !defined(__MAC_OS_X_VERSION_MIN_REQUIRED) || __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_6 +# undef __MAC_OS_X_VERSION_MIN_REQUIRED +# define __MAC_OS_X_VERSION_MIN_REQUIRED __MAC_10_6 +# endif # include # if !defined(MAC_OS_X_VERSION_MIN_REQUIRED) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 # undef MAC_OS_X_VERSION_MIN_REQUIRED # define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_6 # endif # -# if !defined(MAC_OS_X_VERSION_10_3) -# define MAC_OS_X_VERSION_10_3 MAC_OS_X_VERSION_10_2 + 1 -# endif -# if !defined(MAC_OS_X_VERSION_10_4) -# define MAC_OS_X_VERSION_10_4 MAC_OS_X_VERSION_10_3 + 1 -# endif -# if !defined(MAC_OS_X_VERSION_10_5) -# define MAC_OS_X_VERSION_10_5 MAC_OS_X_VERSION_10_4 + 1 +# // Numerical checks are preferred to named checks, but to be safe +# // we define the missing version names in case Qt uses them. +# +# if !defined(__MAC_10_7) +# define __MAC_10_7 1070 # endif -# if !defined(MAC_OS_X_VERSION_10_6) -# define MAC_OS_X_VERSION_10_6 MAC_OS_X_VERSION_10_5 + 1 +# if !defined(__MAC_10_8) +# define __MAC_10_8 1080 # endif # if !defined(MAC_OS_X_VERSION_10_7) -# define MAC_OS_X_VERSION_10_7 MAC_OS_X_VERSION_10_6 + 1 +# define MAC_OS_X_VERSION_10_7 1070 # endif # if !defined(MAC_OS_X_VERSION_10_8) -# define MAC_OS_X_VERSION_10_8 MAC_OS_X_VERSION_10_7 + 1 +# define MAC_OS_X_VERSION_10_8 1080 # endif -# if (MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_8) +# +# if (__MAC_OS_X_VERSION_MAX_ALLOWED > __MAC_10_8) # warning "This version of Mac OS X is unsupported" # endif #endif -- cgit v1.2.3 From f2191d9900cbb9930e2fbdefb4682ce59769e007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sat, 16 Feb 2013 17:31:58 +0100 Subject: Introduce macros for simplifying platform checks on Mac OS and iOS Change-Id: Ibab8486e1e6d7e4d8922fce96add055e60c6095c Reviewed-by: Thiago Macieira --- src/corelib/global/qglobal.h | 10 ++++++++++ src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 73e849cb3e..233743f3ce 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -512,6 +512,16 @@ template Q_DECL_CONSTEXPR inline const T &qBound(const T &min, const T &val, const T &max) { return qMax(min, qMin(max, val)); } +#ifdef Q_OS_DARWIN +# define QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(osx, ios) \ + (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= osx) || \ + (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= ios) + +# define QT_MAC_DEPLOYMENT_TARGET_BELOW(osx, ios) \ + (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && osx != __MAC_NA && __MAC_OS_X_VERSION_MIN_REQUIRED < osx) || \ + (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && ios != __IPHONE_NA && __IPHONE_OS_VERSION_MIN_REQUIRED < ios) +#endif + /* Data stream functions are provided by many classes (defined in qdatastream.h) */ diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index aec32e1bca..7391cbf9df 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -361,9 +361,9 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFo static QHash fallbackLists; -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 60000 +#if QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, __IPHONE_6_0) // CTFontCopyDefaultCascadeListForLanguages is available in the SDK - #if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 60000) + #if QT_MAC_DEPLOYMENT_TARGET_BELOW(__MAC_NA, __IPHONE_6_0) // But we have to feature check at runtime if (&CTFontCopyDefaultCascadeListForLanguages) #endif -- cgit v1.2.3 From 4d14d14021ee67b30e691dc96267ffb0312e3f26 Mon Sep 17 00:00:00 2001 From: anknight Date: Thu, 14 Feb 2013 15:26:32 +0200 Subject: KMS QPA Plugin: .pro file improvements - Use qtHaveModule to check for OpenGL - Add __GBM__ to pick up the correct native types in the Mesa EGL headers Change-Id: Idfc0e81e95672b08ba8f259b9d7edf2b25fd1bad Reviewed-by: Andy Nichols --- src/plugins/platforms/kms/kms.pro | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/kms/kms.pro b/src/plugins/platforms/kms/kms.pro index c0300e0960..711cf9e5c7 100644 --- a/src/plugins/platforms/kms/kms.pro +++ b/src/plugins/platforms/kms/kms.pro @@ -4,9 +4,10 @@ PLUGIN_TYPE = platforms PLUGIN_CLASS_NAME = QKmsIntegrationPlugin load(qt_plugin) -QT += core-private gui-private platformsupport-private opengl-private +QT += core-private gui-private platformsupport-private +qtHaveModule(opengl):QT += opengl-private -DEFINES += MESA_EGL_NO_X11_HEADERS +DEFINES += MESA_EGL_NO_X11_HEADERS __GBM__ CONFIG += link_pkgconfig egl qpa/genericunixfontdatabase -- cgit v1.2.3 From 936aceb5f204e6f51b69de5555d7d8337677c9c3 Mon Sep 17 00:00:00 2001 From: anknight Date: Thu, 14 Feb 2013 15:29:10 +0200 Subject: KMS QPA Plugin: use GBM cursor writer GBM provides a way to write directly to a buffer object that gets set as the drmMode cursor. This eliminates the need to create a GL texture and opens this class up to platforms that support GBM but not OpenGL. Change-Id: I7297827387ef9a717a5287b5484f14c9987b4158 Reviewed-by: Andy Nichols --- src/plugins/platforms/kms/qkmscursor.cpp | 65 ++++++++------------------------ src/plugins/platforms/kms/qkmscursor.h | 10 ++--- 2 files changed, 19 insertions(+), 56 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/kms/qkmscursor.cpp b/src/plugins/platforms/kms/qkmscursor.cpp index d5a28dbc9a..da5dc9bb06 100644 --- a/src/plugins/platforms/kms/qkmscursor.cpp +++ b/src/plugins/platforms/kms/qkmscursor.cpp @@ -48,22 +48,17 @@ QT_BEGIN_NAMESPACE QKmsCursor::QKmsCursor(QKmsScreen *screen) : m_screen(screen), m_graphicsBufferManager(screen->device()->gbmDevice()), + m_cursorBufferObject(gbm_bo_create(m_graphicsBufferManager, 64, 64, GBM_FORMAT_ARGB8888, + GBM_BO_USE_CURSOR_64X64|GBM_BO_USE_WRITE)), + m_cursorImage(new QPlatformCursorImage(0, 0, 0, 0, 0, 0)), m_moved(false) { - gbm_bo *bo = gbm_bo_create(m_graphicsBufferManager, 64, 64, - GBM_BO_FORMAT_ARGB8888, - GBM_BO_USE_CURSOR_64X64 | GBM_BO_USE_RENDERING); - - m_eglImage = eglCreateImageKHR(m_screen->device()->eglDisplay(), 0, EGL_NATIVE_PIXMAP_KHR, - bo, 0); - gbm_bo_destroy(bo); - m_cursorImage = new QPlatformCursorImage(0, 0, 0, 0, 0, 0); } QKmsCursor::~QKmsCursor() { - drmModeSetCursor(m_screen->device()->fd(), m_screen->crtcId(), - 0, 0, 0); + drmModeSetCursor(m_screen->device()->fd(), m_screen->crtcId(), 0, 0, 0); + gbm_bo_destroy(m_cursorBufferObject); } void QKmsCursor::pointerEvent(const QMouseEvent &event) @@ -78,58 +73,30 @@ void QKmsCursor::pointerEvent(const QMouseEvent &event) } } -void QKmsCursor::changeCursor(QCursor *widgetCursor, QWindow *window) +void QKmsCursor::changeCursor(QCursor *windowCursor, QWindow *window) { Q_UNUSED(window) if (!m_moved) drmModeMoveCursor(m_screen->device()->fd(), m_screen->crtcId(), 0, 0); - const Qt::CursorShape newShape = widgetCursor ? widgetCursor->shape() : Qt::ArrowCursor; + const Qt::CursorShape newShape = windowCursor ? windowCursor->shape() : Qt::ArrowCursor; if (newShape != Qt::BitmapCursor) { m_cursorImage->set(newShape); } else { - m_cursorImage->set(widgetCursor->pixmap().toImage(), - widgetCursor->hotSpot().x(), - widgetCursor->hotSpot().y()); - } - - if ((m_cursorImage->image()->width() > 64) || (m_cursorImage->image()->width() > 64)) { - qWarning("failed to set hardware cursor: larger than 64x64."); - return; - } - - QImage cursorImage = m_cursorImage->image()->convertToFormat(QImage::Format_RGB32); - - //Load cursor image into EGLImage - GLuint cursorTexture; - glGenTextures(1, &cursorTexture); - glBindTexture(GL_TEXTURE_2D, cursorTexture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - - //TODO: Format may be wrong here, need a color icon to test. - if (m_eglImage != EGL_NO_IMAGE_KHR) { - glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_eglImage); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, cursorImage.width(), - cursorImage.height(), GL_RGBA, - GL_UNSIGNED_BYTE, cursorImage.constBits()); - } else { - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, cursorImage.width(), - cursorImage.height(), 0, GL_RGBA, - GL_UNSIGNED_BYTE, cursorImage.constBits()); + m_cursorImage->set(windowCursor->pixmap().toImage(), + windowCursor->hotSpot().x(), + windowCursor->hotSpot().y()); } - //EGLImage needs to contain sprite before calling this: - gbm_bo *bufferObject = gbm_bo_import(m_graphicsBufferManager, GBM_BO_IMPORT_EGL_IMAGE, - m_eglImage, GBM_BO_USE_CURSOR_64X64); - quint32 handle = gbm_bo_get_handle(bufferObject).u32; + if ((m_cursorImage->image()->width() > 64) || (m_cursorImage->image()->width() > 64)) + qWarning("Warning: cursor larger than 64x64; only 64x64 pixels will be shown."); - gbm_bo_destroy(bufferObject); + QImage cursorImage = m_cursorImage->image()-> + convertToFormat(QImage::Format_ARGB32).copy(0, 0, 64, 64); + gbm_bo_write(m_cursorBufferObject, cursorImage.constBits(), cursorImage.byteCount()); + quint32 handle = gbm_bo_get_handle(m_cursorBufferObject).u32; int status = drmModeSetCursor(m_screen->device()->fd(), m_screen->crtcId(), handle, 64, 64); diff --git a/src/plugins/platforms/kms/qkmscursor.h b/src/plugins/platforms/kms/qkmscursor.h index fda47ebedc..ee65b01e36 100644 --- a/src/plugins/platforms/kms/qkmscursor.h +++ b/src/plugins/platforms/kms/qkmscursor.h @@ -44,15 +44,11 @@ #include -#define EGL_EGLEXT_PROTOTYPES 1 - -#include -#include - QT_BEGIN_NAMESPACE class QKmsScreen; class gbm_device; +class gbm_bo; class QKmsCursor : public QPlatformCursor { @@ -61,12 +57,12 @@ public: ~QKmsCursor(); void pointerEvent(const QMouseEvent &event); - void changeCursor(QCursor *widgetCursor, QWindow *window); + void changeCursor(QCursor *windowCursor, QWindow *window); private: QKmsScreen *m_screen; gbm_device *m_graphicsBufferManager; - EGLImageKHR m_eglImage; + gbm_bo *m_cursorBufferObject; QPlatformCursorImage *m_cursorImage; bool m_moved; }; -- cgit v1.2.3 From f8fdeb68b6e1a710438fc9084a2a3b1b9b6744fa Mon Sep 17 00:00:00 2001 From: anknight Date: Thu, 14 Feb 2013 14:52:58 +0200 Subject: KMS QPA Plugin: use preferred mode when selecting mode This should select the best mode (likely the currently running mode) for the display instead of the first one found. The built-in mode was left as a fallback. Change-Id: I4e1bc798df6f310b001566ab76cb9def3224a7ed Reviewed-by: Andy Nichols --- src/plugins/platforms/kms/qkmsscreen.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/kms/qkmsscreen.cpp b/src/plugins/platforms/kms/qkmsscreen.cpp index 123dcc283f..892f7bb01f 100644 --- a/src/plugins/platforms/kms/qkmsscreen.cpp +++ b/src/plugins/platforms/kms/qkmsscreen.cpp @@ -124,10 +124,14 @@ void QKmsScreen::initializeScreenMode() drmModeConnector *connector = drmModeGetConnector(m_device->fd(), m_connectorId); drmModeModeInfo *mode = 0; - if (connector->count_modes > 0) - mode = &connector->modes[0]; - else - mode = &builtin_1024x768; + for (int i = 0; i < connector->count_modes; ++i) { + if (connector->modes[i].type & DRM_MODE_TYPE_PREFERRED) { + mode = &connector->modes[i]; + break; + } + } + if (!mode) + mode = mode = &builtin_1024x768; drmModeEncoder *encoder = drmModeGetEncoder(m_device->fd(), connector->encoders[0]); if (encoder == 0) -- cgit v1.2.3 From c7a51f1858a8cac5cdc458b575df1f0e064e3853 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Fri, 8 Feb 2013 20:05:34 +0100 Subject: Added QOffscreenSurface class. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Inherits QSurface and allows to use OpenGL from an arbitrary thread. Platform plugins can implement QPlatformOffscreenSurface, otherwise an invisible QWindow is used by QOffscreenSurface. This patch includes an implementation of QOffscreenSurface for XCB and EglFS platform plugins using pbuffers. Change-Id: I57b4fc1db417331f34826dcfa754b7698782fde4 Reviewed-by: Lars Knoll Reviewed-by: Samuel Rødal --- src/gui/kernel/kernel.pri | 4 + src/gui/kernel/qoffscreensurface.cpp | 345 +++++++++++++++++++++ src/gui/kernel/qoffscreensurface.h | 98 ++++++ src/gui/kernel/qplatformintegration.cpp | 11 + src/gui/kernel/qplatformintegration.h | 4 + src/gui/kernel/qplatformoffscreensurface.cpp | 93 ++++++ src/gui/kernel/qplatformoffscreensurface.h | 85 +++++ src/gui/kernel/qplatformsurface.h | 1 + src/gui/kernel/qsurface.cpp | 1 + src/gui/kernel/qsurface.h | 3 +- .../eglconvenience/eglconvenience.pri | 6 +- src/platformsupport/eglconvenience/qeglpbuffer.cpp | 76 +++++ src/platformsupport/eglconvenience/qeglpbuffer_p.h | 69 +++++ src/plugins/platforms/eglfs/qeglfscontext.cpp | 18 +- src/plugins/platforms/eglfs/qeglfsintegration.cpp | 8 + src/plugins/platforms/eglfs/qeglfsintegration.h | 1 + src/plugins/platforms/xcb/qglxintegration.cpp | 60 +++- src/plugins/platforms/xcb/qglxintegration.h | 20 ++ src/plugins/platforms/xcb/qxcbintegration.cpp | 21 +- src/plugins/platforms/xcb/qxcbintegration.h | 2 + 20 files changed, 911 insertions(+), 15 deletions(-) create mode 100644 src/gui/kernel/qoffscreensurface.cpp create mode 100644 src/gui/kernel/qoffscreensurface.h create mode 100644 src/gui/kernel/qplatformoffscreensurface.cpp create mode 100644 src/gui/kernel/qplatformoffscreensurface.h create mode 100644 src/platformsupport/eglconvenience/qeglpbuffer.cpp create mode 100644 src/platformsupport/eglconvenience/qeglpbuffer_p.h (limited to 'src') diff --git a/src/gui/kernel/kernel.pri b/src/gui/kernel/kernel.pri index f766b5fbaf..eb87a8c31b 100644 --- a/src/gui/kernel/kernel.pri +++ b/src/gui/kernel/kernel.pri @@ -24,6 +24,7 @@ HEADERS += \ kernel/qplatformthemefactory_p.h \ kernel/qplatformthemeplugin.h \ kernel/qplatformwindow.h \ + kernel/qplatformoffscreensurface.h \ kernel/qplatformwindow_p.h \ kernel/qplatformcursor.h \ kernel/qplatformclipboard.h \ @@ -34,6 +35,7 @@ HEADERS += \ kernel/qguiapplication_p.h \ kernel/qwindow_p.h \ kernel/qwindow.h \ + kernel/qoffscreensurface.h \ kernel/qplatformsurface.h \ kernel/qsurface.h \ kernel/qclipboard.h \ @@ -81,6 +83,7 @@ SOURCES += \ kernel/qplatformthemefactory.cpp \ kernel/qplatformthemeplugin.cpp \ kernel/qplatformwindow.cpp \ + kernel/qplatformoffscreensurface.cpp \ kernel/qplatformcursor.cpp \ kernel/qplatformclipboard.cpp \ kernel/qplatformnativeinterface.cpp \ @@ -88,6 +91,7 @@ SOURCES += \ kernel/qsurfaceformat.cpp \ kernel/qguiapplication.cpp \ kernel/qwindow.cpp \ + kernel/qoffscreensurface.cpp \ kernel/qplatformsurface.cpp \ kernel/qsurface.cpp \ kernel/qclipboard.cpp \ diff --git a/src/gui/kernel/qoffscreensurface.cpp b/src/gui/kernel/qoffscreensurface.cpp new file mode 100644 index 0000000000..e2306050dd --- /dev/null +++ b/src/gui/kernel/qoffscreensurface.cpp @@ -0,0 +1,345 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qoffscreensurface.h" + +#include "qguiapplication_p.h" +#include "qscreen.h" +#include "qplatformintegration.h" +#include "qplatformoffscreensurface.h" +#include "qwindow.h" +#include "qplatformwindow.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOffscreenSurface + \inmodule QtGui + \since 5.1 + \brief The QOffscreenSurface class represents an offscreen surface in the underlying platform. + + QOffscreenSurface is intended to be used with QOpenGLContext to allow rendering with OpenGL in + an arbitrary thread without the need to create a QWindow. + + Even though the surface is renderable, the surface's pixels are not accessible. + QOffscreenSurface should only be used to create OpenGL resources such as textures + or framebuffer objects. + + An application will typically use QOffscreenSurface to perform some time-consuming tasks in a + separate thread in order to avoid stalling the main rendering thread. Resources created in the + QOffscreenSurface's context can be shared with the main OpenGL context. Some common use cases + are asynchronous texture uploads or rendering into a QOpenGLFramebufferObject. + + How the offscreen surface is implemented depends on the underlying platform, but it will + typically use a pixel buffer (pbuffer). If the platform doesn't implement or support + offscreen surfaces, QOffscreenSurface will use an invisible QWindow internally. +*/ +class Q_GUI_EXPORT QOffscreenSurfacePrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QOffscreenSurface) + +public: + QOffscreenSurfacePrivate() + : QObjectPrivate() + , surfaceType(QSurface::OpenGLSurface) + , platformOffscreenSurface(0) + , offscreenWindow(0) + , screen(0) + , size(1, 1) + { + } + + ~QOffscreenSurfacePrivate() + { + } + + QSurface::SurfaceType surfaceType; + QPlatformOffscreenSurface *platformOffscreenSurface; + QWindow *offscreenWindow; + QSurfaceFormat requestedFormat; + QScreen *screen; + QSize size; +}; + + +/*! + Creates an offscreen surface for the \a targetScreen. + + The underlying platform surface is not created until create() is called. + + \sa setScreen(), create() +*/ +QOffscreenSurface::QOffscreenSurface(QScreen *targetScreen) + : QObject(*new QOffscreenSurfacePrivate(), 0) + , QSurface(Offscreen) +{ + Q_D(QOffscreenSurface); + d->screen = targetScreen; + if (!d->screen) + d->screen = QGuiApplication::primaryScreen(); + + //if your applications aborts here, then chances are your creating a QOffscreenSurface before + //the screen list is populated. + Q_ASSERT(d->screen); + + connect(d->screen, SIGNAL(destroyed(QObject*)), this, SLOT(screenDestroyed(QObject*))); +} + + +/*! + Destroys the offscreen surface. +*/ +QOffscreenSurface::~QOffscreenSurface() +{ + destroy(); +} + +/*! + Returns the surface type of the offscreen surface. + + The surface type of an offscreen surface is always QSurface::OpenGLSurface. +*/ +QOffscreenSurface::SurfaceType QOffscreenSurface::surfaceType() const +{ + Q_D(const QOffscreenSurface); + return d->surfaceType; +} + +/*! + Allocates the platform resources associated with the offscreen surface. + + It is at this point that the surface format set using setFormat() gets resolved + into an actual native surface. + + Call destroy() to free the platform resources if necessary. + + \sa destroy() +*/ +void QOffscreenSurface::create() +{ + Q_D(QOffscreenSurface); + if (!d->platformOffscreenSurface && !d->offscreenWindow) { + d->platformOffscreenSurface = QGuiApplicationPrivate::platformIntegration()->createPlatformOffscreenSurface(this); + // No platform offscreen surface, fallback to an invisible window + if (!d->platformOffscreenSurface) { + d->offscreenWindow = new QWindow(d->screen); + d->offscreenWindow->setSurfaceType(QWindow::OpenGLSurface); + d->offscreenWindow->setFormat(d->requestedFormat); + d->offscreenWindow->setGeometry(0, 0, d->size.width(), d->size.height()); + d->offscreenWindow->create(); + } + } +} + +/*! + Releases the native platform resources associated with this offscreen surface. + + \sa create() +*/ +void QOffscreenSurface::destroy() +{ + Q_D(QOffscreenSurface); + delete d->platformOffscreenSurface; + d->platformOffscreenSurface = 0; + if (d->offscreenWindow) { + d->offscreenWindow->destroy(); + delete d->offscreenWindow; + d->offscreenWindow = 0; + } +} + +/*! + Returns \c true if this offscreen surface is valid; otherwise returns \c false. + + The offscreen surface is valid if the platform resources have been successfuly allocated. + + \sa create() +*/ +bool QOffscreenSurface::isValid() const +{ + Q_D(const QOffscreenSurface); + return (d->platformOffscreenSurface && d->platformOffscreenSurface->isValid()) + || (d->offscreenWindow && d->offscreenWindow->handle()); +} + +/*! + Sets the offscreen surface \a format. + + The surface format will be resolved in the create() function. Calling + this function after create() will not re-resolve the surface format of the native surface. + + \sa create(), destroy() +*/ +void QOffscreenSurface::setFormat(const QSurfaceFormat &format) +{ + Q_D(QOffscreenSurface); + d->requestedFormat = format; +} + +/*! + Returns the requested surfaceformat of this offscreen surface. + + If the requested format was not supported by the platform implementation, + the requestedFormat will differ from the actual offscreen surface format. + + This is the value set with setFormat(). + + \sa setFormat(), format() + */ +QSurfaceFormat QOffscreenSurface::requestedFormat() const +{ + Q_D(const QOffscreenSurface); + return d->requestedFormat; +} + +/*! + Returns the actual format of this offscreen surface. + + After the offscreen surface has been created, this function will return the actual + surface format of the surface. It might differ from the requested format if the requested + format could not be fulfilled by the platform. + + \sa create(), requestedFormat() +*/ +QSurfaceFormat QOffscreenSurface::format() const +{ + Q_D(const QOffscreenSurface); + if (d->platformOffscreenSurface) + return d->platformOffscreenSurface->format(); + if (d->offscreenWindow) + return d->offscreenWindow->format(); + return d->requestedFormat; +} + +/*! + Returns the size of the offscreen surface. +*/ +QSize QOffscreenSurface::size() const +{ + Q_D(const QOffscreenSurface); + return d->size; +} + +/*! + Returns the screen to which the offscreen surface is connected. + + \sa setScreen() +*/ +QScreen *QOffscreenSurface::screen() const +{ + Q_D(const QOffscreenSurface); + return d->screen; +} + +/*! + Sets the screen to which the offscreen surface is connected. + + If the offscreen surface has been created, it will be recreated on the \a newScreen. + + \sa screen() +*/ +void QOffscreenSurface::setScreen(QScreen *newScreen) +{ + Q_D(QOffscreenSurface); + if (!newScreen) + newScreen = QGuiApplication::primaryScreen(); + if (newScreen != d->screen) { + const bool wasCreated = d->platformOffscreenSurface != 0 || d->offscreenWindow != 0; + if (wasCreated) + destroy(); + if (d->screen) + disconnect(d->screen, SIGNAL(destroyed(QObject*)), this, SLOT(screenDestroyed(QObject*))); + d->screen = newScreen; + if (newScreen) { + connect(d->screen, SIGNAL(destroyed(QObject*)), this, SLOT(screenDestroyed(QObject*))); + if (wasCreated) + create(); + } + emit screenChanged(newScreen); + } +} + +/*! + Called when the offscreen surface's screen is destroyed. + + \internal +*/ +void QOffscreenSurface::screenDestroyed(QObject *object) +{ + Q_D(QOffscreenSurface); + if (object == static_cast(d->screen)) + setScreen(0); +} + +/*! + \fn QOffscreenSurface::screenChanged(QScreen *screen) + + This signal is emitted when an offscreen surface's \a screen changes, either + by being set explicitly with setScreen(), or automatically when + the window's screen is removed. +*/ + +/*! + Returns the platform offscreen surface corresponding to the offscreen surface. + + \internal +*/ +QPlatformOffscreenSurface *QOffscreenSurface::handle() const +{ + Q_D(const QOffscreenSurface); + return d->platformOffscreenSurface; +} + +/*! + Returns the platform surface corresponding to the offscreen surface. + + \internal +*/ +QPlatformSurface *QOffscreenSurface::surfaceHandle() const +{ + Q_D(const QOffscreenSurface); + if (d->offscreenWindow) + return d->offscreenWindow->handle(); + + return d->platformOffscreenSurface; +} + +QT_END_NAMESPACE diff --git a/src/gui/kernel/qoffscreensurface.h b/src/gui/kernel/qoffscreensurface.h new file mode 100644 index 0000000000..a1b46f9b88 --- /dev/null +++ b/src/gui/kernel/qoffscreensurface.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOFFSCREENSURFACE_H +#define QOFFSCREENSURFACE_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QOffscreenSurfacePrivate; + +class QScreen; +class QPlatformOffscreenSurface; + +class Q_GUI_EXPORT QOffscreenSurface : public QObject, public QSurface +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QOffscreenSurface) + +public: + + explicit QOffscreenSurface(QScreen *screen = 0); + virtual ~QOffscreenSurface(); + + SurfaceType surfaceType() const; + + void create(); + void destroy(); + + bool isValid() const; + + void setFormat(const QSurfaceFormat &format); + QSurfaceFormat format() const; + QSurfaceFormat requestedFormat() const; + + QSize size() const; + + QScreen *screen() const; + void setScreen(QScreen *screen); + + QPlatformOffscreenSurface *handle() const; + +Q_SIGNALS: + void screenChanged(QScreen *screen); + +private Q_SLOTS: + void screenDestroyed(QObject *screen); + +private: + + QPlatformSurface *surfaceHandle() const; + + Q_DISABLE_COPY(QOffscreenSurface) +}; + +QT_END_NAMESPACE + +#endif // QOFFSCREENSURFACE_H diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp index 980e45742e..027b9fc9f1 100644 --- a/src/gui/kernel/qplatformintegration.cpp +++ b/src/gui/kernel/qplatformintegration.cpp @@ -360,4 +360,15 @@ class QPlatformTheme *QPlatformIntegration::createPlatformTheme(const QString &n return new QPlatformTheme; } +/*! + Factory function for QOffscreenSurface. An offscreen surface will typically be implemented with a + pixel buffer (pbuffer). If the platform doesn't support offscreen surfaces, an invisible window + will be used by QOffscreenSurface instead. +*/ +QPlatformOffscreenSurface *QPlatformIntegration::createPlatformOffscreenSurface(QOffscreenSurface *surface) const +{ + Q_UNUSED(surface) + return 0; +} + QT_END_NAMESPACE diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h index 0b6cbb5a5c..6e10df9495 100644 --- a/src/gui/kernel/qplatformintegration.h +++ b/src/gui/kernel/qplatformintegration.h @@ -75,6 +75,8 @@ class QPlatformDialogHelper; class QPlatformSharedGraphicsCache; class QPlatformServices; class QKeyEvent; +class QPlatformOffscreenSurface; +class QOffscreenSurface; class Q_GUI_EXPORT QPlatformIntegration { @@ -146,6 +148,8 @@ public: virtual QStringList themeNames() const; virtual QPlatformTheme *createPlatformTheme(const QString &name) const; + virtual QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface) const; + protected: void screenAdded(QPlatformScreen *screen); }; diff --git a/src/gui/kernel/qplatformoffscreensurface.cpp b/src/gui/kernel/qplatformoffscreensurface.cpp new file mode 100644 index 0000000000..dd354f465e --- /dev/null +++ b/src/gui/kernel/qplatformoffscreensurface.cpp @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qplatformoffscreensurface.h" + +#include "qoffscreensurface.h" +#include "qscreen.h" + +QT_BEGIN_NAMESPACE + +class QPlatformOffscreenSurfacePrivate +{ +public: +}; + +QPlatformOffscreenSurface::QPlatformOffscreenSurface(QOffscreenSurface *offscreenSurface) + : QPlatformSurface(offscreenSurface) + , d_ptr(new QPlatformOffscreenSurfacePrivate) +{ +} + +QPlatformOffscreenSurface::~QPlatformOffscreenSurface() +{ +} + +QOffscreenSurface *QPlatformOffscreenSurface::offscreenSurface() const +{ + return static_cast(m_surface); +} + +/*! + Returns the platform screen handle corresponding to this QPlatformOffscreenSurface. +*/ +QPlatformScreen *QPlatformOffscreenSurface::screen() const +{ + return offscreenSurface()->screen()->handle(); +} + +/*! + Returns the actual surface format of the offscreen surface. +*/ +QSurfaceFormat QPlatformOffscreenSurface::format() const +{ + return QSurfaceFormat(); +} + +/*! + Returns \c true if the platform offscreen surface has been allocated. +*/ +bool QPlatformOffscreenSurface::isValid() const +{ + return false; +} + +QT_END_NAMESPACE diff --git a/src/gui/kernel/qplatformoffscreensurface.h b/src/gui/kernel/qplatformoffscreensurface.h new file mode 100644 index 0000000000..099d8ee94a --- /dev/null +++ b/src/gui/kernel/qplatformoffscreensurface.h @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMOFFSCREENSURFACE_H +#define QPLATFORMOFFSCREENSURFACE_H + +// +// W A R N I N G +// ------------- +// +// This file is part of the QPA API and is not meant to be used +// in applications. Usage of this API may make your code +// source and binary incompatible with future versions of Qt. +// + +#include "qplatformsurface.h" +#include + +QT_BEGIN_NAMESPACE + +class QOffscreenSurface; +class QPlatformScreen; +class QPlatformOffscreenSurfacePrivate; + +class Q_GUI_EXPORT QPlatformOffscreenSurface : public QPlatformSurface +{ + Q_DECLARE_PRIVATE(QPlatformOffscreenSurface) +public: + explicit QPlatformOffscreenSurface(QOffscreenSurface *offscreenSurface); + virtual ~QPlatformOffscreenSurface(); + + QOffscreenSurface *offscreenSurface() const; + + QPlatformScreen *screen() const; + + virtual QSurfaceFormat format() const; + virtual bool isValid() const; + +protected: + QScopedPointer d_ptr; +private: + Q_DISABLE_COPY(QPlatformOffscreenSurface) +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMOFFSCREENSURFACE_H diff --git a/src/gui/kernel/qplatformsurface.h b/src/gui/kernel/qplatformsurface.h index 18af7927bf..b96e494f74 100644 --- a/src/gui/kernel/qplatformsurface.h +++ b/src/gui/kernel/qplatformsurface.h @@ -72,6 +72,7 @@ private: QSurface *m_surface; friend class QPlatformWindow; + friend class QPlatformOffscreenSurface; }; QT_END_NAMESPACE diff --git a/src/gui/kernel/qsurface.cpp b/src/gui/kernel/qsurface.cpp index 97b8220124..a943639d5f 100644 --- a/src/gui/kernel/qsurface.cpp +++ b/src/gui/kernel/qsurface.cpp @@ -61,6 +61,7 @@ QT_BEGIN_NAMESPACE The SurfaceClass enum describes the actual subclass of the surface. \value Window The surface is an instance of QWindow. + \value Offscreen The surface is an instance of QOffscreenSurface. */ diff --git a/src/gui/kernel/qsurface.h b/src/gui/kernel/qsurface.h index a2589c733b..8dbc230c10 100644 --- a/src/gui/kernel/qsurface.h +++ b/src/gui/kernel/qsurface.h @@ -58,7 +58,8 @@ class Q_GUI_EXPORT QSurface { public: enum SurfaceClass { - Window + Window, + Offscreen }; enum SurfaceType { diff --git a/src/platformsupport/eglconvenience/eglconvenience.pri b/src/platformsupport/eglconvenience/eglconvenience.pri index 188eb1ce64..22ade42816 100644 --- a/src/platformsupport/eglconvenience/eglconvenience.pri +++ b/src/platformsupport/eglconvenience/eglconvenience.pri @@ -1,10 +1,12 @@ contains(QT_CONFIG,egl) { HEADERS += \ $$PWD/qeglconvenience_p.h \ - $$PWD/qeglplatformcontext_p.h + $$PWD/qeglplatformcontext_p.h \ + $$PWD/qeglpbuffer_p.h SOURCES += \ $$PWD/qeglconvenience.cpp \ - $$PWD/qeglplatformcontext.cpp + $$PWD/qeglplatformcontext.cpp \ + $$PWD/qeglpbuffer.cpp contains(QT_CONFIG,xlib) { HEADERS += \ diff --git a/src/platformsupport/eglconvenience/qeglpbuffer.cpp b/src/platformsupport/eglconvenience/qeglpbuffer.cpp new file mode 100644 index 0000000000..919314e9aa --- /dev/null +++ b/src/platformsupport/eglconvenience/qeglpbuffer.cpp @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include "qeglpbuffer_p.h" +#include "qeglconvenience_p.h" + +QT_BEGIN_NAMESPACE + +QEGLPbuffer::QEGLPbuffer(EGLDisplay display, const QSurfaceFormat &format, QOffscreenSurface *offscreenSurface) + : QPlatformOffscreenSurface(offscreenSurface) + , m_format(format) + , m_display(display) + , m_pbuffer(EGL_NO_SURFACE) +{ + EGLConfig config = q_configFromGLFormat(m_display, m_format, false, EGL_PBUFFER_BIT); + + if (config) { + const EGLint attributes[] = { + EGL_WIDTH, offscreenSurface->size().width(), + EGL_HEIGHT, offscreenSurface->size().height(), + EGL_LARGEST_PBUFFER, EGL_FALSE, + EGL_NONE + }; + + m_pbuffer = eglCreatePbufferSurface(m_display, config, attributes); + + if (m_pbuffer != EGL_NO_SURFACE) + m_format = q_glFormatFromConfig(m_display, config); + } +} + +QEGLPbuffer::~QEGLPbuffer() +{ + eglDestroySurface(m_display, m_pbuffer); +} + +QT_END_NAMESPACE diff --git a/src/platformsupport/eglconvenience/qeglpbuffer_p.h b/src/platformsupport/eglconvenience/qeglpbuffer_p.h new file mode 100644 index 0000000000..1b4ac6f991 --- /dev/null +++ b/src/platformsupport/eglconvenience/qeglpbuffer_p.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QEGLPBUFFER_H +#define QEGLPBUFFER_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QEGLPbuffer : public QPlatformOffscreenSurface +{ +public: + QEGLPbuffer(EGLDisplay display, const QSurfaceFormat &format, QOffscreenSurface *offscreenSurface); + ~QEGLPbuffer(); + + QSurfaceFormat format() const { return m_format; } + bool isValid() const { return m_pbuffer != EGL_NO_SURFACE; } + + EGLSurface pbuffer() const { return m_pbuffer; } + +private: + QSurfaceFormat m_format; + EGLDisplay m_display; + EGLSurface m_pbuffer; +}; + +QT_END_NAMESPACE + +#endif // QEGLPBUFFER_H diff --git a/src/plugins/platforms/eglfs/qeglfscontext.cpp b/src/plugins/platforms/eglfs/qeglfscontext.cpp index 1f0c373818..06db4e02db 100644 --- a/src/plugins/platforms/eglfs/qeglfscontext.cpp +++ b/src/plugins/platforms/eglfs/qeglfscontext.cpp @@ -45,6 +45,8 @@ #include "qeglfshooks.h" #include "qeglfsintegration.h" +#include +#include #include QT_BEGIN_NAMESPACE @@ -62,16 +64,20 @@ bool QEglFSContext::makeCurrent(QPlatformSurface *surface) EGLSurface QEglFSContext::eglSurfaceForPlatformSurface(QPlatformSurface *surface) { - QEglFSWindow *window = static_cast(surface); - return window->surface(); + if (surface->surface()->surfaceClass() == QSurface::Window) + return static_cast(surface)->surface(); + else + return static_cast(surface)->pbuffer(); } void QEglFSContext::swapBuffers(QPlatformSurface *surface) { - QEglFSWindow *window = static_cast(surface); - // draw the cursor - if (QEglFSCursor *cursor = static_cast(window->screen()->cursor())) - cursor->paintOnScreen(); + if (surface->surface()->surfaceClass() == QSurface::Window) { + QEglFSWindow *window = static_cast(surface); + // draw the cursor + if (QEglFSCursor *cursor = static_cast(window->screen()->cursor())) + cursor->paintOnScreen(); + } QEGLPlatformContext::swapBuffers(surface); } diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp index 9c48ba1575..dd212c80a0 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #if !defined(QT_NO_EVDEV) #include @@ -62,6 +63,7 @@ #include #include #include +#include #include #include "qeglfscontext.h" @@ -154,6 +156,12 @@ QPlatformOpenGLContext *QEglFSIntegration::createPlatformOpenGLContext(QOpenGLCo return new QEglFSContext(hooks->surfaceFormatFor(context->format()), context->shareHandle(), mDisplay); } +QPlatformOffscreenSurface *QEglFSIntegration::createPlatformOffscreenSurface(QOffscreenSurface *surface) const +{ + QEglFSScreen *screen = static_cast(surface->screen()->handle()); + return new QEGLPbuffer(screen->display(), hooks->surfaceFormatFor(surface->requestedFormat()), surface); +} + QPlatformFontDatabase *QEglFSIntegration::fontDatabase() const { return mFontDb; diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h index 9eae8d2703..e048c5d310 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.h +++ b/src/plugins/platforms/eglfs/qeglfsintegration.h @@ -61,6 +61,7 @@ public: QPlatformWindow *createPlatformWindow(QWindow *window) const; QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const; + QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface) const; QPlatformNativeInterface *nativeInterface() const; QPlatformFontDatabase *fontDatabase() const; diff --git a/src/plugins/platforms/xcb/qglxintegration.cpp b/src/plugins/platforms/xcb/qglxintegration.cpp index 23bec15b48..5e2731430d 100644 --- a/src/plugins/platforms/xcb/qglxintegration.cpp +++ b/src/plugins/platforms/xcb/qglxintegration.cpp @@ -50,6 +50,7 @@ #include #include +#include #include "qglxintegration.h" #include @@ -270,6 +271,7 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat , m_screen(screen) , m_context(0) , m_format(format) + , m_isPBufferCurrent(false) { m_shareContext = 0; if (share) @@ -390,19 +392,35 @@ bool QGLXContext::makeCurrent(QPlatformSurface *surface) { Q_ASSERT(surface->surface()->surfaceType() == QSurface::OpenGLSurface); - GLXDrawable glxDrawable = static_cast(surface)->xcb_window(); - - return glXMakeCurrent(DISPLAY_FROM_XCB(m_screen), glxDrawable, m_context); + QSurface::SurfaceClass surfaceClass = surface->surface()->surfaceClass(); + if (surfaceClass == QSurface::Window) { + m_isPBufferCurrent = false; + QXcbWindow *window = static_cast(surface); + return glXMakeCurrent(DISPLAY_FROM_XCB(m_screen), window->xcb_window(), m_context); + } else if (surfaceClass == QSurface::Offscreen) { + m_isPBufferCurrent = true; + QGLXPbuffer *pbuffer = static_cast(surface); + return glXMakeContextCurrent(DISPLAY_FROM_XCB(m_screen), pbuffer->pbuffer(), pbuffer->pbuffer(), m_context); + } + return false; } void QGLXContext::doneCurrent() { - glXMakeCurrent(DISPLAY_FROM_XCB(m_screen), 0, 0); + if (m_isPBufferCurrent) + glXMakeContextCurrent(DISPLAY_FROM_XCB(m_screen), 0, 0, 0); + else + glXMakeCurrent(DISPLAY_FROM_XCB(m_screen), 0, 0); + m_isPBufferCurrent = false; } void QGLXContext::swapBuffers(QPlatformSurface *surface) { - GLXDrawable glxDrawable = static_cast(surface)->xcb_window(); + GLXDrawable glxDrawable = 0; + if (surface->surface()->surfaceClass() == QSurface::Offscreen) + glxDrawable = static_cast(surface)->pbuffer(); + else + glxDrawable = static_cast(surface)->xcb_window(); glXSwapBuffers(DISPLAY_FROM_XCB(m_screen), glxDrawable); } @@ -454,4 +472,36 @@ bool QGLXContext::isValid() const return m_context != 0; } + +QGLXPbuffer::QGLXPbuffer(QOffscreenSurface *offscreenSurface) + : QPlatformOffscreenSurface(offscreenSurface) + , m_format(offscreenSurface->requestedFormat()) + , m_screen(static_cast(offscreenSurface->screen()->handle())) + , m_pbuffer(0) +{ + GLXFBConfig config = qglx_findConfig(DISPLAY_FROM_XCB(m_screen), m_screen->screenNumber(), m_format); + + if (config) { + const int attributes[] = { + GLX_PBUFFER_WIDTH, offscreenSurface->size().width(), + GLX_PBUFFER_HEIGHT, offscreenSurface->size().height(), + GLX_LARGEST_PBUFFER, False, + GLX_PRESERVED_CONTENTS, False, + GLX_NONE + }; + + m_pbuffer = glXCreatePbuffer(DISPLAY_FROM_XCB(m_screen), config, attributes); + + if (m_pbuffer) + m_format = qglx_surfaceFormatFromGLXFBConfig(DISPLAY_FROM_XCB(m_screen), config); + } +} + +QGLXPbuffer::~QGLXPbuffer() +{ + if (m_pbuffer) + glXDestroyPbuffer(DISPLAY_FROM_XCB(m_screen), m_pbuffer); +} + + QT_END_NAMESPACE diff --git a/src/plugins/platforms/xcb/qglxintegration.h b/src/plugins/platforms/xcb/qglxintegration.h index 78e9985334..d10b1d441b 100644 --- a/src/plugins/platforms/xcb/qglxintegration.h +++ b/src/plugins/platforms/xcb/qglxintegration.h @@ -46,6 +46,7 @@ #include "qxcbscreen.h" #include +#include #include #include @@ -89,6 +90,25 @@ private: GLXContext m_context; GLXContext m_shareContext; QSurfaceFormat m_format; + bool m_isPBufferCurrent; +}; + + +class QGLXPbuffer : public QPlatformOffscreenSurface +{ +public: + explicit QGLXPbuffer(QOffscreenSurface *offscreenSurface); + ~QGLXPbuffer(); + + QSurfaceFormat format() const { return m_format; } + bool isValid() const { return m_pbuffer != 0; } + + GLXPbuffer pbuffer() const { return m_pbuffer; } + +private: + QSurfaceFormat m_format; + QXcbScreen *m_screen; + GLXPbuffer m_pbuffer; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp index 1840dd1ce5..d0b0ab8d02 100644 --- a/src/plugins/platforms/xcb/qxcbintegration.cpp +++ b/src/plugins/platforms/xcb/qxcbintegration.cpp @@ -78,10 +78,12 @@ #elif defined(XCB_USE_EGL) #include "qxcbeglsurface.h" #include +#include #endif #include #include +#include #ifndef QT_NO_ACCESSIBILITY #include #ifndef QT_NO_ACCESSIBILITY_ATSPI_BRIDGE @@ -168,7 +170,10 @@ public: EGLSurface eglSurfaceForPlatformSurface(QPlatformSurface *surface) { - return static_cast(surface)->eglSurface()->surface(); + if (surface->surface()->surfaceClass() == QSurface::Window) + return static_cast(surface)->eglSurface()->surface(); + else + return static_cast(surface)->pbuffer(); } private: @@ -205,6 +210,20 @@ QPlatformBackingStore *QXcbIntegration::createPlatformBackingStore(QWindow *wind return new QXcbBackingStore(window); } +QPlatformOffscreenSurface *QXcbIntegration::createPlatformOffscreenSurface(QOffscreenSurface *surface) const +{ +#if defined(XCB_USE_GLX) + return new QGLXPbuffer(surface); +#elif defined(XCB_USE_EGL) + QXcbScreen *screen = static_cast(surface->screen()->handle()); + return new QEGLPbuffer(screen->connection()->egl_display(), surface->requestedFormat(), surface); +#else + Q_UNUSED(surface); + qWarning("QXcbIntegration: Cannot create platform offscreen surface, neither GLX nor EGL are enabled"); + return 0; +#endif +} + bool QXcbIntegration::hasCapability(QPlatformIntegration::Capability cap) const { switch (cap) { diff --git a/src/plugins/platforms/xcb/qxcbintegration.h b/src/plugins/platforms/xcb/qxcbintegration.h index cd6c2fd73c..13b3b115ca 100644 --- a/src/plugins/platforms/xcb/qxcbintegration.h +++ b/src/plugins/platforms/xcb/qxcbintegration.h @@ -68,6 +68,8 @@ public: #endif QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; + QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface) const; + bool hasCapability(Capability cap) const; QAbstractEventDispatcher *guiThreadEventDispatcher() const; -- cgit v1.2.3 From 7c33ae6a7bbbd42ce70acf77aa55c1bc2a23c8ec Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Thu, 14 Feb 2013 19:50:35 +0100 Subject: Cocoa QPA: Make QCocoaMenu::menuItemAt() more robust MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2c68f87eb1a4926ca5bd0bfcc842ab9c56c99cd7 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoamenu.mm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm index a92f4e875c..0fe4c48510 100644 --- a/src/plugins/platforms/cocoa/qcocoamenu.mm +++ b/src/plugins/platforms/cocoa/qcocoamenu.mm @@ -322,7 +322,10 @@ void QCocoaMenu::showPopup(const QWindow *parentWindow, QPoint pos, const QPlatf QPlatformMenuItem *QCocoaMenu::menuItemAt(int position) const { - return m_menuItems.at(position); + if (0 <= position && position < m_menuItems.count()) + return m_menuItems.at(position); + + return 0; } QPlatformMenuItem *QCocoaMenu::menuItemForTag(quintptr tag) const -- cgit v1.2.3 From ffecaf85e8cd8adb5a18e4ce50b2a8f5f2b0e4b0 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Thu, 14 Feb 2013 11:33:47 +0100 Subject: QScreen::refreshRate would return 0 on Mac OS X MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The function we use to get the actual vsync on cocoa is documented to return 0 if the monitor is not a CRT monitor. A refreshrate of 0 means we have vsync deltas of 1000/0 which cause problems elsewhere. It is better to use the "default" value in this case as it will be closer to correct than 0. Change-Id: Id08007e40a9af5e42f13a07628fcad5fd3a7d0dc Reviewed-by: Morten Johan Sørvig Reviewed-by: Samuel Rødal --- src/plugins/platforms/cocoa/qcocoaintegration.mm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm index 7fcdab4d97..f33d4cb68b 100644 --- a/src/plugins/platforms/cocoa/qcocoaintegration.mm +++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm @@ -105,7 +105,9 @@ void QCocoaScreen::updateGeometry() m_physicalSize = QSizeF(size.width, size.height); m_logicalDpi.first = 72; m_logicalDpi.second = 72; - m_refreshRate = CGDisplayModeGetRefreshRate(CGDisplayCopyDisplayMode(dpy)); + float refresh = CGDisplayModeGetRefreshRate(CGDisplayCopyDisplayMode(dpy)); + if (refresh > 0) + m_refreshRate = refresh; // Get m_name (brand/model of the monitor) NSDictionary *deviceInfo = (NSDictionary *)IODisplayCreateInfoDictionary(CGDisplayIOServicePort(dpy), kIODisplayOnlyPreferredName); -- cgit v1.2.3 From dfde72e4361d82a782cb4da08ddcd0d8e8c40b07 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Tue, 18 Dec 2012 18:43:29 +0100 Subject: Added QDebug support for QWindowSystemInterface::TouchPoint Change-Id: Icfc606a49a7fd24fcd35b9c818642a03e044ed6c Reviewed-by: Frederik Gladhorn --- src/gui/kernel/qwindowsysteminterface.cpp | 7 +++++++ src/gui/kernel/qwindowsysteminterface.h | 4 ++++ 2 files changed, 11 insertions(+) (limited to 'src') diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 92434d1181..5483dc49d0 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -647,6 +647,13 @@ void QWindowSystemInterface::handleContextMenuEvent(QWindow *w, bool mouseTrigge } #endif +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QWindowSystemInterface::TouchPoint &p) { + dbg.nospace() << "TouchPoint(" << p.id << " @" << p.normalPosition << " press " << p.pressure << " vel " << p.velocity << " state " << (int)p.state; + return dbg.space(); +} +#endif + Q_GUI_EXPORT void qt_handleMouseEvent(QWindow *w, const QPointF & local, const QPointF & global, Qt::MouseButtons b, Qt::KeyboardModifiers mods = Qt::NoModifier) { QWindowSystemInterface::handleMouseEvent(w, local, global, b, mods); } diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h index 72bebe19fe..687c72bbef 100644 --- a/src/gui/kernel/qwindowsysteminterface.h +++ b/src/gui/kernel/qwindowsysteminterface.h @@ -190,6 +190,10 @@ private: static bool sendWindowSystemEventsImplementation(QEventLoop::ProcessEventsFlags flags); }; +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QWindowSystemInterface::TouchPoint &p); +#endif + QT_END_NAMESPACE #endif // QWINDOWSYSTEMINTERFACE_H -- cgit v1.2.3 From c04f3584abd621f09e8f2c81b9c6c87212a993a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 15 Feb 2013 16:07:00 +0100 Subject: Remove deprecated use of QMAKE_MAC_SDK in corewlan.pro MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We no longer support OS X < 10.6, so there's no need to check for it. Change-Id: I2628984846de0c0c19ea86b3ba6d00fc370ddae7 Reviewed-by: Tor Arne Vestbø --- src/plugins/bearer/corewlan/corewlan.pro | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/bearer/corewlan/corewlan.pro b/src/plugins/bearer/corewlan/corewlan.pro index db8651de6e..674af0cbbe 100644 --- a/src/plugins/bearer/corewlan/corewlan.pro +++ b/src/plugins/bearer/corewlan/corewlan.pro @@ -8,9 +8,7 @@ QT = core-private network-private LIBS += -framework Foundation -framework SystemConfiguration contains(QT_CONFIG, corewlan) { - !contains(QMAKE_MAC_SDK, ".*MacOSX10\\.[345]\\.sdk") { - LIBS += -framework CoreWLAN -framework Security - } + LIBS += -framework CoreWLAN -framework Security } HEADERS += qcorewlanengine.h \ -- cgit v1.2.3 From cfc09b656420a42a9f4b8e7b8b3ebe4fc4a426a2 Mon Sep 17 00:00:00 2001 From: Keith Gardner Date: Sat, 2 Feb 2013 13:37:31 -0600 Subject: QLocale: Added QStringRef overloads to toInt(), toUInt(), etc... Added the following function overloads to QLocale: toShort, toUShort, toInt, toUInt, toLong, toULong, toLongLong, toULongLong, toFloat, and toDouble. Change-Id: I8cd90ca08b88338b08a73a72492f4c91c4f46ea4 Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- src/corelib/tools/qlocale.cpp | 276 ++++++++++++++++++++++++++++++++++++++++++ src/corelib/tools/qlocale.h | 10 ++ src/corelib/tools/qlocale_p.h | 4 + 3 files changed, 290 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index 6c35f45cdb..454025f54d 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -1326,6 +1326,224 @@ double QLocale::toDouble(const QString &s, bool *ok) const return d->stringToDouble(s, ok, mode); } +/*! + Returns the short int represented by the localized string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toUShort(), toString() + + \since 5.1 +*/ + +short QLocale::toShort(const QStringRef &s, bool *ok) const +{ + qlonglong i = toLongLong(s, ok); + if (i < SHRT_MIN || i > SHRT_MAX) { + if (ok) + *ok = false; + return 0; + } + return short(i); +} + +/*! + Returns the unsigned short int represented by the localized string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toShort(), toString() + + \since 5.1 +*/ + +ushort QLocale::toUShort(const QStringRef &s, bool *ok) const +{ + qulonglong i = toULongLong(s, ok); + if (i > USHRT_MAX) { + if (ok) + *ok = false; + return 0; + } + return ushort(i); +} + +/*! + Returns the int represented by the localized string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toUInt(), toString() + + \since 5.1 +*/ + +int QLocale::toInt(const QStringRef &s, bool *ok) const +{ + qlonglong i = toLongLong(s, ok); + if (i < INT_MIN || i > INT_MAX) { + if (ok) + *ok = false; + return 0; + } + return int(i); +} + +/*! + Returns the unsigned int represented by the localized string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toInt(), toString() + + \since 5.1 +*/ + +uint QLocale::toUInt(const QStringRef &s, bool *ok) const +{ + qulonglong i = toULongLong(s, ok); + if (i > UINT_MAX) { + if (ok) + *ok = false; + return 0; + } + return uint(i); +} + +/*! + Returns the long long int represented by the localized string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toInt(), toULongLong(), toDouble(), toString() + + \since 5.1 +*/ + + +qlonglong QLocale::toLongLong(const QStringRef &s, bool *ok) const +{ + QLocalePrivate::GroupSeparatorMode mode + = d->m_numberOptions & RejectGroupSeparator + ? QLocalePrivate::FailOnGroupSeparators + : QLocalePrivate::ParseGroupSeparators; + + return d->stringToLongLong(s, 10, ok, mode); +} + +/*! + Returns the unsigned long long int represented by the localized + string \a s. + + If the conversion fails the function returns 0. + + If \a ok is not null, failure is reported by setting *ok to false, and + success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toLongLong(), toInt(), toDouble(), toString() + + \since 5.1 +*/ + +qulonglong QLocale::toULongLong(const QStringRef &s, bool *ok) const +{ + QLocalePrivate::GroupSeparatorMode mode + = d->m_numberOptions & RejectGroupSeparator + ? QLocalePrivate::FailOnGroupSeparators + : QLocalePrivate::ParseGroupSeparators; + + return d->stringToUnsLongLong(s, 10, ok, mode); +} + +/*! + Returns the float represented by the localized string \a s, or 0.0 + if the conversion failed. + + If \a ok is not null, reports failure by setting + *ok to false and success by setting *ok to true. + + This function ignores leading and trailing whitespace. + + \sa toDouble(), toInt(), toString() + + \since 5.1 +*/ + +float QLocale::toFloat(const QStringRef &s, bool *ok) const +{ + bool myOk; + double d = toDouble(s, &myOk); + if (!myOk || d > QT_MAX_FLOAT || d < -QT_MAX_FLOAT) { + if (ok) + *ok = false; + return 0.0; + } + if (ok) + *ok = true; + return float(d); +} + +/*! + Returns the double represented by the localized string \a s, or + 0.0 if the conversion failed. + + If \a ok is not null, reports failure by setting + *ok to false and success by setting *ok to true. + + Unlike QString::toDouble(), this function does not fall back to + the "C" locale if the string cannot be interpreted in this + locale. + + \snippet code/src_corelib_tools_qlocale.cpp 3 + + Notice that the last conversion returns 1234.0, because '.' is the + thousands group separator in the German locale. + + This function ignores leading and trailing whitespace. + + \sa toFloat(), toInt(), toString() + + \since 5.1 +*/ + +double QLocale::toDouble(const QStringRef &s, bool *ok) const +{ + QLocalePrivate::GroupSeparatorMode mode + = d->m_numberOptions & RejectGroupSeparator + ? QLocalePrivate::FailOnGroupSeparators + : QLocalePrivate::ParseGroupSeparators; + + return d->stringToDouble(s, ok, mode); +} + + /*! Returns a localized string representation of \a i. @@ -3098,6 +3316,64 @@ qulonglong QLocalePrivate::stringToUnsLongLong(const QString &number, int base, return bytearrayToUnsLongLong(buff.constData(), base, ok); } +double QLocalePrivate::stringToDouble(const QStringRef &number, bool *ok, + GroupSeparatorMode group_sep_mode) const +{ + CharBuff buff; + QStringRef trimmedNumber; + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), + group_sep_mode, &buff)) { + if (ok != 0) + *ok = false; + return 0.0; + } + return bytearrayToDouble(buff.constData(), ok); +} + +qlonglong QLocalePrivate::stringToLongLong(const QStringRef &number, int base, + bool *ok, GroupSeparatorMode group_sep_mode) const +{ + CharBuff buff; + QStringRef trimmedNumber; + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), + group_sep_mode, &buff)) { + if (ok != 0) + *ok = false; + return 0; + } + + return bytearrayToLongLong(buff.constData(), base, ok); +} + +qulonglong QLocalePrivate::stringToUnsLongLong(const QStringRef &number, int base, + bool *ok, GroupSeparatorMode group_sep_mode) const +{ + CharBuff buff; + QStringRef trimmedNumber; + // Do not use the ternary operator - triggers msvc2012 bug in optimized builds + if (group().unicode() == 0xa0) + trimmedNumber = number.trimmed(); + else + trimmedNumber = number; + if (!numberToCLocale(trimmedNumber.unicode(), trimmedNumber.size(), + group_sep_mode, &buff)) { + if (ok != 0) + *ok = false; + return 0; + } + + return bytearrayToUnsLongLong(buff.constData(), base, ok); +} double QLocalePrivate::bytearrayToDouble(const char *num, bool *ok, bool *overflow) { diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h index cb008da0c9..f7f30ea0d5 100644 --- a/src/corelib/tools/qlocale.h +++ b/src/corelib/tools/qlocale.h @@ -67,6 +67,7 @@ class Q_CORE_EXPORT QLocale Q_ENUMS(Country) Q_ENUMS(MeasurementSystem) friend class QString; + friend class QStringRef; friend class QByteArray; friend class QIntValidator; friend class QDoubleValidatorPrivate; @@ -710,6 +711,15 @@ public: float toFloat(const QString &s, bool *ok = 0) const; double toDouble(const QString &s, bool *ok = 0) const; + short toShort(const QStringRef &s, bool *ok = 0) const; + ushort toUShort(const QStringRef &s, bool *ok = 0) const; + int toInt(const QStringRef &s, bool *ok = 0) const; + uint toUInt(const QStringRef &s, bool *ok = 0) const; + qlonglong toLongLong(const QStringRef &s, bool *ok = 0) const; + qulonglong toULongLong(const QStringRef &s, bool *ok = 0) const; + float toFloat(const QStringRef &s, bool *ok = 0) const; + double toDouble(const QStringRef &s, bool *ok = 0) const; + QString toString(qlonglong i) const; QString toString(qulonglong i) const; inline QString toString(short i) const; diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h index 5389fd2384..3c3d7c7054 100644 --- a/src/corelib/tools/qlocale_p.h +++ b/src/corelib/tools/qlocale_p.h @@ -311,6 +311,10 @@ public: qint64 stringToLongLong(const QString &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const; quint64 stringToUnsLongLong(const QString &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const; + double stringToDouble(const QStringRef &num, bool *ok, GroupSeparatorMode group_sep_mode) const; + qint64 stringToLongLong(const QStringRef &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const; + quint64 stringToUnsLongLong(const QStringRef &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const; + static double bytearrayToDouble(const char *num, bool *ok, bool *overflow = 0); static qint64 bytearrayToLongLong(const char *num, int base, bool *ok, bool *overflow = 0); -- cgit v1.2.3 From 3988ad95f757f7531e8133a10e83f74ab0ce1b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 12 Feb 2013 16:36:40 +0100 Subject: moc: Error out when detecting unterminated macro usage Exhausting the symbol list while looking for the final right parenthesis means it is missing. Task-number: QTBUG-29308 Change-Id: Iccf5897b0f5eb719699fd12d6c8e4a16ff189d9b Reviewed-by: Simon Hausmann --- src/tools/moc/preprocessor.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/tools/moc/preprocessor.cpp b/src/tools/moc/preprocessor.cpp index 7430c4a86c..96b920b7cd 100644 --- a/src/tools/moc/preprocessor.cpp +++ b/src/tools/moc/preprocessor.cpp @@ -630,6 +630,8 @@ Symbols Preprocessor::macroExpandIdentifier(Preprocessor *that, SymbolStack &sym if (nesting < 0) break; + else if (!symbols.hasNext()) + that->error("missing ')' in macro usage"); } // empty VA_ARGS -- cgit v1.2.3 From febbdbb99223b8fca6241f1acac76376c3e3fbbf Mon Sep 17 00:00:00 2001 From: Takumi ASAKI Date: Mon, 21 Jan 2013 00:24:58 +0900 Subject: Doc: Fix some typos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I7f3a8cd27f1d1cb944599cff40024f3521a3ec34 Reviewed-by: Samuel Rødal --- src/widgets/kernel/qapplication.cpp | 4 ++-- src/widgets/kernel/qwidget.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 4c6d8cfdc7..cff75f258e 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -3560,8 +3560,8 @@ int QApplication::doubleClickInterval() \since 4.2 \deprecated - Returns the current keyboard input direction. Replaced with QInputPanel::inputDirection() - \sa QInputPanel::inputDirection() + Returns the current keyboard input direction. Replaced with QInputMethod::inputDirection() + \sa QInputMethod::inputDirection() */ /*! diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 1b6f6b8f8f..823403c4a6 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -8801,7 +8801,7 @@ void QWidget::inputMethodEvent(QInputMethodEvent *event) \a query specifies which property is queried. - \sa inputMethodEvent(), QInputMethodEven, inputMethodHints + \sa inputMethodEvent(), QInputMethodEvent, QInputMethodQueryEvent, inputMethodHints */ QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const { -- cgit v1.2.3 From 46cc594c6753ef774fa3016c3039ebb07281a151 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Fri, 15 Feb 2013 09:23:30 +0100 Subject: Fixed EGLFS reporting impossibly high physical dimensions. If FBIOGET_VSCREENINFO doesn't give us sensible values we need to default to something instead. Refactor the code that queries the resolution and depth to behave the same way. Change-Id: Id2b3fc41349a74610856273b10281f744612890b Reviewed-by: Gunnar Sletta --- src/plugins/platforms/eglfs/qeglfshooks_stub.cpp | 75 ++++++++++++++++++++---- 1 file changed, 62 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp index d09423ec72..a8fa81a6ec 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp +++ b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp @@ -46,6 +46,8 @@ #include #include +#include + QT_BEGIN_NAMESPACE const char *QEglFSHooks::fbDeviceName() const @@ -86,16 +88,38 @@ QSizeF QEglFSHooks::physicalScreenSize() const struct fb_var_screeninfo vinfo; int fd = open(fbDeviceName(), O_RDONLY); + int w = -1; + int h = -1; + if (fd != -1) { - if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) - qWarning("Could not query variable screen info."); - else - size = QSizeF(vinfo.width, vinfo.height); + if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) { + qWarning("EGLFS: Could not query variable screen info."); + } else { + w = vinfo.width; + h = vinfo.height; + } close(fd); } else { - qWarning("Failed to open %s to detect screen size.", fbDeviceName()); + qWarning("EGLFS: Failed to open %s to detect physical screen size.", fbDeviceName()); } + + const int defaultPhysicalDpi = 100; + size.setWidth(w <= 0 ? vinfo.xres * Q_MM_PER_INCH / defaultPhysicalDpi : qreal(w)); + size.setHeight(h <= 0 ? vinfo.yres * Q_MM_PER_INCH / defaultPhysicalDpi : qreal(h)); + + if (w <= 0 || h <= 0) { + qWarning("EGLFS: Unable to query physical screen size, defaulting to %d dpi.\n" + "EGLFS: To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH " + "and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).", + defaultPhysicalDpi); + } + + // override fb0 from environment var setting + if (width) + size.setWidth(width); + if (height) + size.setWidth(height); } return size; } @@ -118,15 +142,31 @@ QSize QEglFSHooks::screenSize() const struct fb_var_screeninfo vinfo; int fd = open(fbDeviceName(), O_RDONLY); + int xres = -1; + int yres = -1; + if (fd != -1) { - if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) - qWarning("Could not query variable screen info."); - else - size = QSize(vinfo.xres, vinfo.yres); + if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) { + qWarning("EGLFS: Could not query variable screen info."); + } else { + xres = vinfo.xres; + yres = vinfo.yres; + } close(fd); } else { - qWarning("Failed to open %s to detect screen depth.", fbDeviceName()); + qWarning("EGLFS: Failed to open %s to detect screen resolution.", fbDeviceName()); + } + + const int defaultWidth = 800; + const int defaultHeight = 600; + size.setWidth(xres <= 0 ? defaultWidth : xres); + size.setHeight(yres <= 0 ? defaultHeight : yres); + + if (xres <= 0 || yres <= 0) { + qWarning("EGLFS: Unable to query screen resolution, defaulting to %dx%d.\n" + "EGLFS: To override, set QT_QPA_EGLFS_WIDTH and QT_QPA_EGLFS_HEIGHT.", + defaultWidth, defaultHeight); } // override fb0 from environment var setting @@ -149,17 +189,26 @@ int QEglFSHooks::screenDepth() const if (fd != -1) { if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) - qWarning("Could not query variable screen info."); + qWarning("EGLFS: Could not query variable screen info."); else depth = vinfo.bits_per_pixel; close(fd); } else { - qWarning("Failed to open %s to detect screen depth.", fbDeviceName()); + qWarning("EGLFS: Failed to open %s to detect screen depth.", fbDeviceName()); + } + + const int defaultDepth = 32; + + if (depth <= 0) { + depth = defaultDepth; + + qWarning("EGLFS: Unable to query screen depth, defaulting to %d.\n" + "EGLFS: To override, set QT_QPA_EGLFS_DEPTH.", defaultDepth); } } - return depth == 0 ? 32 : depth; + return depth; } QImage::Format QEglFSHooks::screenFormat() const -- cgit v1.2.3 From 388f4f16b03949bbfc6bc8b18491ab16a43c484d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Mon, 18 Feb 2013 10:30:11 +0100 Subject: Mention offscreen platform plugin in QTestLib documentation. Change-Id: Icb82e0b4dedbe4978230cd3271f335ec07da60e4 Reviewed-by: Jason McDonald --- src/testlib/doc/src/qttestlib-manual.qdoc | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/testlib/doc/src/qttestlib-manual.qdoc b/src/testlib/doc/src/qttestlib-manual.qdoc index 70bc6112c0..9d4a34c9d4 100644 --- a/src/testlib/doc/src/qttestlib-manual.qdoc +++ b/src/testlib/doc/src/qttestlib-manual.qdoc @@ -247,6 +247,12 @@ 2000. \li \c -nocrashhandler \br Disables the crash handler on Unix platforms. + \li \c -platform \e name \br + This command line argument applies to all Qt applications, but might be + especially useful in the context of auto-testing. By using the "offscreen" + platform plugin (-platform offscreen) it's possible to have tests that use + QWidget or QWindow run without showing anything on the screen. Currently + the offscreen platform plugin is only fully supported on X11. \endlist \section3 Benchmarking Options -- cgit v1.2.3 From fc6b21436347f21c8a228bb0e256d946936095a2 Mon Sep 17 00:00:00 2001 From: Kevin Ottens Date: Fri, 1 Feb 2013 08:15:50 +0100 Subject: Let QPlatformTheme decide which engine QIcon::fromTheme uses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By default we still use QIconLoaderEngine but now platform theme plugins have the opportunity to override that. It is in particular planned to be used in a WIP platform theme plugin for KDE sessions. Change-Id: I07a82dc91daea44709b3a790f3f6e2a7a090d108 Reviewed-by: Olivier Goffart Reviewed-by: Friedemann Kleint Reviewed-by: David Faure (KDE) Reviewed-by: Samuel Rødal Reviewed-by: Frederik Gladhorn --- src/gui/image/qicon.cpp | 6 +++++- src/gui/kernel/qplatformtheme.cpp | 16 ++++++++++++++++ src/gui/kernel/qplatformtheme.h | 3 +++ 3 files changed, 24 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index dce902301c..6b91ead666 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -60,6 +60,7 @@ #include "private/qhexstring_p.h" #include "private/qguiapplication_p.h" +#include "qpa/qplatformtheme.h" #ifndef QT_NO_ICON QT_BEGIN_NAMESPACE @@ -986,7 +987,10 @@ QIcon QIcon::fromTheme(const QString &name, const QIcon &fallback) if (qtIconCache()->contains(name)) { icon = *qtIconCache()->object(name); } else { - QIcon *cachedIcon = new QIcon(new QIconLoaderEngine(name)); + QPlatformTheme * const platformTheme = QGuiApplicationPrivate::platformTheme(); + QIconEngine * const engine = platformTheme ? platformTheme->createIconEngine(name) + : new QIconLoaderEngine(name); + QIcon *cachedIcon = new QIcon(engine); qtIconCache()->insert(name, cachedIcon); icon = *cachedIcon; } diff --git a/src/gui/kernel/qplatformtheme.cpp b/src/gui/kernel/qplatformtheme.cpp index ceb95c51e8..9f5c789a6e 100644 --- a/src/gui/kernel/qplatformtheme.cpp +++ b/src/gui/kernel/qplatformtheme.cpp @@ -46,6 +46,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -272,4 +273,19 @@ QPlatformSystemTrayIcon *QPlatformTheme::createPlatformSystemTrayIcon() const } #endif +/*! + Factory function for the QIconEngine used by QIcon::fromTheme(). By default this + function returns a QIconLoaderEngine, but subclasses can reimplement it to + provide their own. + + It is especially useful to benefit from some platform specific facilities or + optimizations like an inter-process cache in systems mostly built with Qt. + + \since 5.1 +*/ +QIconEngine *QPlatformTheme::createIconEngine(const QString &iconName) const +{ + return new QIconLoaderEngine(iconName); +} + QT_END_NAMESPACE diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h index 14e2dac19d..0e95321102 100644 --- a/src/gui/kernel/qplatformtheme.h +++ b/src/gui/kernel/qplatformtheme.h @@ -55,6 +55,7 @@ QT_BEGIN_NAMESPACE +class QIconEngine; class QMenu; class QMenuBar; class QPlatformMenuItem; @@ -270,6 +271,8 @@ public: virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const; virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size) const; + virtual QIconEngine *createIconEngine(const QString &iconName) const; + static QVariant defaultThemeHint(ThemeHint hint); }; -- cgit v1.2.3 From 436c65ba2129f9e4aad2b4258351a0381a7b0bac Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Wed, 6 Feb 2013 11:58:20 +0100 Subject: Fix compilation with Clang on MacOS. Apparently Clang does not like methods to be declared static inline, and then have their definition somewhere else. Error messages: ../../../include/QtCore/../../src/corelib/tools/qpoint.h:156:37: error: conflicting types for 'dotProduct' Q_DECL_CONSTEXPR inline int QPoint::dotProduct(const QPoint &p1, const QPoint &p2) ^ ../../../include/QtCore/../../src/corelib/tools/qpoint.h:77:40: note: previous declaration is here Q_DECL_CONSTEXPR static inline int dotProduct(const QPoint &p1, const QPoint &p2); ^ ../../../include/QtCore/../../src/corelib/tools/qpoint.h:338:40: error: conflicting types for 'dotProduct' Q_DECL_CONSTEXPR inline qreal QPointF::dotProduct(const QPointF &p1, const QPointF &p2) ^ ../../../include/QtCore/../../src/corelib/tools/qpoint.h:239:42: note: previous declaration is here Q_DECL_CONSTEXPR static inline qreal dotProduct(const QPointF &p1, const QPointF &p2); ^ Change-Id: I041b96d79506d2898daf40d70b37f02459de35bd Reviewed-by: Lars Knoll Reviewed-by: Thiago Macieira --- src/corelib/tools/qpoint.h | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h index 4e0f4d5a4e..69403ebc53 100644 --- a/src/corelib/tools/qpoint.h +++ b/src/corelib/tools/qpoint.h @@ -74,7 +74,8 @@ public: inline QPoint &operator/=(qreal divisor); - Q_DECL_CONSTEXPR static inline int dotProduct(const QPoint &p1, const QPoint &p2); + Q_DECL_CONSTEXPR static inline int dotProduct(const QPoint &p1, const QPoint &p2) + { return p1.xp * p2.xp + p1.yp * p2.yp; } friend Q_DECL_CONSTEXPR inline bool operator==(const QPoint &, const QPoint &); friend Q_DECL_CONSTEXPR inline bool operator!=(const QPoint &, const QPoint &); @@ -153,9 +154,6 @@ inline QPoint &QPoint::operator*=(double factor) inline QPoint &QPoint::operator*=(int factor) { xp = xp*factor; yp = yp*factor; return *this; } -Q_DECL_CONSTEXPR inline int QPoint::dotProduct(const QPoint &p1, const QPoint &p2) -{ return p1.xp * p2.xp + p1.yp * p2.yp; } - Q_DECL_CONSTEXPR inline bool operator==(const QPoint &p1, const QPoint &p2) { return p1.xp == p2.xp && p1.yp == p2.yp; } @@ -236,7 +234,8 @@ public: inline QPointF &operator*=(qreal c); inline QPointF &operator/=(qreal c); - Q_DECL_CONSTEXPR static inline qreal dotProduct(const QPointF &p1, const QPointF &p2); + Q_DECL_CONSTEXPR static inline qreal dotProduct(const QPointF &p1, const QPointF &p2) + { return p1.xp * p2.xp + p1.yp * p2.yp; } friend Q_DECL_CONSTEXPR inline bool operator==(const QPointF &, const QPointF &); friend Q_DECL_CONSTEXPR inline bool operator!=(const QPointF &, const QPointF &); @@ -335,11 +334,6 @@ inline QPointF &QPointF::operator*=(qreal c) xp*=c; yp*=c; return *this; } -Q_DECL_CONSTEXPR inline qreal QPointF::dotProduct(const QPointF &p1, const QPointF &p2) -{ - return p1.xp * p2.xp + p1.yp * p2.yp; -} - Q_DECL_CONSTEXPR inline bool operator==(const QPointF &p1, const QPointF &p2) { return qFuzzyIsNull(p1.xp - p2.xp) && qFuzzyIsNull(p1.yp - p2.yp); -- cgit v1.2.3 From 2dd8e7cf2e24cd24e0e023d88cf345309df3afb0 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 4 Feb 2013 14:07:34 +0100 Subject: Introduce a native font dialog for GTK+ 2.x Change-Id: Ia5660c3e2c8c122187427ccb490d46e52ee3ad21 Reviewed-by: Friedemann Kleint Reviewed-by: Shawn Rutledge --- .../platformthemes/gtk2/qgtk2dialoghelpers.cpp | 132 +++++++++++++++++++++ .../platformthemes/gtk2/qgtk2dialoghelpers.h | 24 ++++ src/plugins/platformthemes/gtk2/qgtk2theme.cpp | 5 +- 3 files changed, 160 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp index 4f9210a3af..2a8815654f 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp +++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include @@ -52,6 +53,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -472,6 +474,136 @@ void QGtk2FileDialogHelper::setNameFilters(const QStringList& filters) } } +QGtk2FontDialogHelper::QGtk2FontDialogHelper() +{ + d.reset(new QGtk2Dialog(gtk_font_selection_dialog_new(""))); + connect(d.data(), SIGNAL(accept()), this, SLOT(onAccepted())); + connect(d.data(), SIGNAL(reject()), this, SIGNAL(reject())); +} + +QGtk2FontDialogHelper::~QGtk2FontDialogHelper() +{ +} + +bool QGtk2FontDialogHelper::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) +{ + applyOptions(); + return d->show(flags, modality, parent); +} + +void QGtk2FontDialogHelper::exec() +{ + d->exec(); +} + +void QGtk2FontDialogHelper::hide() +{ + d->hide(); +} + +static QString qt_fontToString(const QFont& font) +{ + PangoFontDescription *desc = pango_font_description_new(); + pango_font_description_set_size(desc, font.pointSizeF() * PANGO_SCALE); + pango_font_description_set_family(desc, font.family().toUtf8()); + + int weight = font.weight(); + if (weight >= QFont::Black) + pango_font_description_set_weight(desc, PANGO_WEIGHT_HEAVY); + else if (weight >= QFont::Bold) + pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD); + else if (weight >= QFont::DemiBold) + pango_font_description_set_weight(desc, PANGO_WEIGHT_SEMIBOLD); + else if (weight >= QFont::Normal) + pango_font_description_set_weight(desc, PANGO_WEIGHT_NORMAL); + else + pango_font_description_set_weight(desc, PANGO_WEIGHT_LIGHT); + + int style = font.style(); + if (style == QFont::StyleItalic) + pango_font_description_set_style(desc, PANGO_STYLE_ITALIC); + else if (style == QFont::StyleOblique) + pango_font_description_set_style(desc, PANGO_STYLE_OBLIQUE); + else + pango_font_description_set_style(desc, PANGO_STYLE_NORMAL); + + char *str = pango_font_description_to_string(desc); + QString name = QString::fromUtf8(str); + pango_font_description_free(desc); + g_free(str); + return name; +} + +static QFont qt_fontFromString(const QString &name) +{ + QFont font; + PangoFontDescription* desc = pango_font_description_from_string(name.toUtf8()); + font.setPointSizeF(static_cast(pango_font_description_get_size(desc)) / PANGO_SCALE); + + QString family = QString::fromUtf8(pango_font_description_get_family(desc)); + if (!family.isEmpty()) + font.setFamily(family); + + int weight = pango_font_description_get_weight(desc); + if (weight >= PANGO_WEIGHT_HEAVY) + font.setWeight(QFont::Black); + else if (weight >= PANGO_WEIGHT_BOLD) + font.setWeight(QFont::Bold); + else if (weight >= PANGO_WEIGHT_SEMIBOLD) + font.setWeight(QFont::DemiBold); + else if (weight >= PANGO_WEIGHT_NORMAL) + font.setWeight(QFont::Normal); + else + font.setWeight(QFont::Light); + + PangoStyle style = pango_font_description_get_style(desc); + if (style == PANGO_STYLE_ITALIC) + font.setStyle(QFont::StyleItalic); + else if (style == PANGO_STYLE_OBLIQUE) + font.setStyle(QFont::StyleOblique); + else + font.setStyle(QFont::StyleNormal); + + pango_font_description_free(desc); + return font; +} + +void QGtk2FontDialogHelper::setCurrentFont(const QFont &font) +{ + GtkFontSelectionDialog *gtkDialog = GTK_FONT_SELECTION_DIALOG(d->gtkDialog()); + gtk_font_selection_dialog_set_font_name(gtkDialog, qt_fontToString(font).toUtf8()); +} + +QFont QGtk2FontDialogHelper::currentFont() const +{ + GtkFontSelectionDialog *gtkDialog = GTK_FONT_SELECTION_DIALOG(d->gtkDialog()); + gchar *name = gtk_font_selection_dialog_get_font_name(gtkDialog); + QFont font = qt_fontFromString(QString::fromUtf8(name)); + g_free(name); + return font; +} + +void QGtk2FontDialogHelper::onAccepted() +{ + emit accept(); + emit fontSelected(currentFont()); +} + +void QGtk2FontDialogHelper::applyOptions() +{ + GtkDialog *gtkDialog = d->gtkDialog(); + const QSharedPointer &opts = options(); + + gtk_window_set_title(GTK_WINDOW(gtkDialog), opts->windowTitle().toUtf8()); + + GtkWidget *okButton = gtk_font_selection_dialog_get_ok_button(GTK_FONT_SELECTION_DIALOG(gtkDialog)); + GtkWidget *cancelButton = gtk_font_selection_dialog_get_cancel_button(GTK_FONT_SELECTION_DIALOG(gtkDialog)); + if (okButton) + gtk_widget_set_visible(okButton, !options()->testOption(QFontDialogOptions::NoButtons)); + if (cancelButton) + gtk_widget_set_visible(cancelButton, !options()->testOption(QFontDialogOptions::NoButtons)); +} + QT_END_NAMESPACE #include "qgtk2dialoghelpers.moc" diff --git a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h index 301a2aa6ae..2c5381aec8 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h +++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h @@ -114,6 +114,30 @@ private: mutable QScopedPointer d; }; +class QGtk2FontDialogHelper : public QPlatformFontDialogHelper +{ + Q_OBJECT + +public: + QGtk2FontDialogHelper(); + ~QGtk2FontDialogHelper(); + + virtual bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); + virtual void exec(); + virtual void hide(); + + virtual void setCurrentFont(const QFont &font); + virtual QFont currentFont() const; + +private Q_SLOTS: + void onAccepted(); + +private: + void applyOptions(); + + mutable QScopedPointer d; +}; + QT_END_NAMESPACE #endif // QGTK2DIALOGHELPERS_P_H diff --git a/src/plugins/platformthemes/gtk2/qgtk2theme.cpp b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp index c685d7b13c..7bb538b888 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2theme.cpp +++ b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp @@ -56,7 +56,8 @@ QGtk2Theme::QGtk2Theme() bool QGtk2Theme::usePlatformNativeDialog(DialogType type) const { - return type == ColorDialog || type == FileDialog; + Q_UNUSED(type); + return true; } QPlatformDialogHelper *QGtk2Theme::createPlatformDialogHelper(DialogType type) const @@ -66,6 +67,8 @@ QPlatformDialogHelper *QGtk2Theme::createPlatformDialogHelper(DialogType type) c return new QGtk2ColorDialogHelper; case FileDialog: return new QGtk2FileDialogHelper; + case FontDialog: + return new QGtk2FontDialogHelper; default: return 0; } -- cgit v1.2.3 From a54b271c390f54b4aafa1b7f7cd5e2c1b82cb8ad Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Mon, 18 Feb 2013 16:42:17 -0600 Subject: Fix EGL_BAD_MATCH when requesting a 16-bit surface with eglfs. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QEglFSWindow does not request highestPixelFormat, and can obtain a 16-bit config when requested. QEGLPlatformContext does request highestPixelFormat, and can obtain a 32-bit config when a 16-bit config is requested, leading to this error. Change-Id: I418c09a35ec19b2e9ca372b32599034e02384e44 Reviewed-by: Samuel Rødal --- src/platformsupport/eglconvenience/qeglplatformcontext.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp index eafd7a5288..8152f74067 100644 --- a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp +++ b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp @@ -63,7 +63,7 @@ QEGLPlatformContext::QEGLPlatformContext(const QSurfaceFormat &format, QPlatform EGLenum eglApi) : m_eglDisplay(display) , m_eglApi(eglApi) - , m_eglConfig(q_configFromGLFormat(display, format, true)) + , m_eglConfig(q_configFromGLFormat(display, format)) { init(format, share); } -- cgit v1.2.3 From a19037cc9e66470f5e047390aa716930f168674b Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Tue, 19 Feb 2013 12:58:47 +0100 Subject: Don't build the bearer plugin if network is not available Change-Id: Ia706ac95570e903ae4fa0e47d2c850daf703bb04 Reviewed-by: Friedemann Kleint --- src/plugins/plugins.pro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index 0dba5d14d0..516105401e 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -1,6 +1,7 @@ TEMPLATE = subdirs -SUBDIRS *= sqldrivers bearer +SUBDIRS *= sqldrivers +qtHaveModule(network): SUBDIRS += bearer qtHaveModule(gui): SUBDIRS *= imageformats platforms platforminputcontexts platformthemes generic qtHaveModule(widgets): SUBDIRS += accessible -- cgit v1.2.3 From 4a07519877b4b3aad45d1a727487d9e87630973b Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Mon, 11 Feb 2013 17:14:25 +0000 Subject: Store the local certificate in a QList. Instead of storing a single QSslCertificate for a the local cert, store a list of them. This will allow us to handle server sockets that use a certificate that is not issued directly from the CA root in future. Change-Id: I9a36b9a99daa9c0bdd17f61b4ce1a7da746f2e96 Reviewed-by: Peter Hartmann --- src/network/ssl/qsslconfiguration.cpp | 23 +++++++++++++++++++---- src/network/ssl/qsslconfiguration.h | 2 ++ src/network/ssl/qsslconfiguration_p.h | 2 +- src/network/ssl/qsslsocket.cpp | 15 +++++++++------ 4 files changed, 31 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp index 145cd7be5d..3d466b85ca 100644 --- a/src/network/ssl/qsslconfiguration.cpp +++ b/src/network/ssl/qsslconfiguration.cpp @@ -173,7 +173,7 @@ bool QSslConfiguration::operator==(const QSslConfiguration &other) const return true; return d->peerCertificate == other.d->peerCertificate && d->peerCertificateChain == other.d->peerCertificateChain && - d->localCertificate == other.d->localCertificate && + d->localCertificateChain == other.d->localCertificateChain && d->privateKey == other.d->privateKey && d->sessionCipher == other.d->sessionCipher && d->ciphers == other.d->ciphers && @@ -212,7 +212,7 @@ bool QSslConfiguration::isNull() const d->allowRootCertOnDemandLoading == true && d->caCertificates.count() == 0 && d->ciphers.count() == 0 && - d->localCertificate.isNull() && + d->localCertificateChain.isEmpty() && d->privateKey.isNull() && d->peerCertificate.isNull() && d->peerCertificateChain.count() == 0 && @@ -312,6 +312,18 @@ void QSslConfiguration::setPeerVerifyDepth(int depth) d->peerVerifyDepth = depth; } +/*! + Returns the certificate chain to be presented to the peer during + the SSL handshake process. + + \sa localCertificate() + \since 5.1 +*/ +QList QSslConfiguration::localCertificateChain() const +{ + return d->localCertificateChain; +} + /*! Returns the certificate to be presented to the peer during the SSL handshake process. @@ -320,7 +332,9 @@ void QSslConfiguration::setPeerVerifyDepth(int depth) */ QSslCertificate QSslConfiguration::localCertificate() const { - return d->localCertificate; + if (d->localCertificateChain.isEmpty()) + return QSslCertificate(); + return d->localCertificateChain[0]; } /*! @@ -341,7 +355,8 @@ QSslCertificate QSslConfiguration::localCertificate() const */ void QSslConfiguration::setLocalCertificate(const QSslCertificate &certificate) { - d->localCertificate = certificate; + d->localCertificateChain = QList(); + d->localCertificateChain += certificate; } /*! diff --git a/src/network/ssl/qsslconfiguration.h b/src/network/ssl/qsslconfiguration.h index 064e1b96a8..291f6ead9d 100644 --- a/src/network/ssl/qsslconfiguration.h +++ b/src/network/ssl/qsslconfiguration.h @@ -99,6 +99,8 @@ public: void setPeerVerifyDepth(int depth); // Certificate & cipher configuration + QList localCertificateChain() const; + QSslCertificate localCertificate() const; void setLocalCertificate(const QSslCertificate &certificate); diff --git a/src/network/ssl/qsslconfiguration_p.h b/src/network/ssl/qsslconfiguration_p.h index a6c22db707..54b7264d3d 100644 --- a/src/network/ssl/qsslconfiguration_p.h +++ b/src/network/ssl/qsslconfiguration_p.h @@ -91,7 +91,7 @@ public: QSslCertificate peerCertificate; QList peerCertificateChain; - QSslCertificate localCertificate; + QList localCertificateChain; QSslKey privateKey; QSslCipher sessionCipher; diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index c86234a5ac..421731a174 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -895,7 +895,7 @@ QSslConfiguration QSslSocket::sslConfiguration() const void QSslSocket::setSslConfiguration(const QSslConfiguration &configuration) { Q_D(QSslSocket); - d->configuration.localCertificate = configuration.localCertificate(); + d->configuration.localCertificateChain = configuration.localCertificateChain(); d->configuration.privateKey = configuration.privateKey(); d->configuration.ciphers = configuration.ciphers(); d->configuration.caCertificates = configuration.caCertificates(); @@ -926,7 +926,8 @@ void QSslSocket::setSslConfiguration(const QSslConfiguration &configuration) void QSslSocket::setLocalCertificate(const QSslCertificate &certificate) { Q_D(QSslSocket); - d->configuration.localCertificate = certificate; + d->configuration.localCertificateChain = QList(); + d->configuration.localCertificateChain += certificate; } /*! @@ -939,10 +940,10 @@ void QSslSocket::setLocalCertificate(const QSslCertificate &certificate) void QSslSocket::setLocalCertificate(const QString &path, QSsl::EncodingFormat format) { - Q_D(QSslSocket); QFile file(path); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) - d->configuration.localCertificate = QSslCertificate(file.readAll(), format); + setLocalCertificate(QSslCertificate(file.readAll(), format)); + } /*! @@ -954,7 +955,9 @@ void QSslSocket::setLocalCertificate(const QString &path, QSslCertificate QSslSocket::localCertificate() const { Q_D(const QSslSocket); - return d->configuration.localCertificate; + if (d->configuration.localCertificateChain.isEmpty()) + return QSslCertificate(); + return d->configuration.localCertificateChain[0]; } /*! @@ -2057,7 +2060,7 @@ void QSslConfigurationPrivate::deepCopyDefaultConfiguration(QSslConfigurationPri ptr->ref.store(1); ptr->peerCertificate = global->peerCertificate; ptr->peerCertificateChain = global->peerCertificateChain; - ptr->localCertificate = global->localCertificate; + ptr->localCertificateChain = global->localCertificateChain; ptr->privateKey = global->privateKey; ptr->sessionCipher = global->sessionCipher; ptr->ciphers = global->ciphers; -- cgit v1.2.3 From 7898080ca78ceec15163976390979631fcbd178d Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Mon, 11 Feb 2013 22:31:00 +0000 Subject: Add support for intermediate certificates to server sockets. Add intermediate certificates to our server sockets, and to our client certs. Change-Id: Ib5aa575473f9e84f337bebe35099506dd7d7e2ba Task-Number: QTBUG-19825 Task-Number: QTBUG-13281 Reviewed-by: Peter Hartmann --- src/network/ssl/qsslconfiguration.cpp | 27 +++++++++++++++++++++++++++ src/network/ssl/qsslconfiguration.h | 1 + src/network/ssl/qsslcontext.cpp | 11 +++++++++++ src/network/ssl/qsslsocket.cpp | 26 ++++++++++++++++++++++++++ src/network/ssl/qsslsocket.h | 3 +++ 5 files changed, 68 insertions(+) (limited to 'src') diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp index 3d466b85ca..afbd4fac77 100644 --- a/src/network/ssl/qsslconfiguration.cpp +++ b/src/network/ssl/qsslconfiguration.cpp @@ -324,6 +324,33 @@ QList QSslConfiguration::localCertificateChain() const return d->localCertificateChain; } +/*! + Sets the certificate chain to be presented to the peer during the + SSL handshake to be \a localChain. + + Setting the certificate chain once the connection has been + established has no effect. + + A certificate is the means of identification used in the SSL + process. The local certificate is used by the remote end to verify + the local user's identity against its list of Certification + Authorities. In most cases, such as in HTTP web browsing, only + servers identify to the clients, so the client does not send a + certificate. + + Unlike QSslConfiguration::setLocalCertificate() this method allows + you to specify any intermediate certificates required in order to + validate your certificate. The first item in the list must be the + leaf certificate. + + \sa localCertificateChain() + \since 5.1 + */ +void QSslConfiguration::setLocalCertificateChain(const QList &localChain) +{ + d->localCertificateChain = localChain; +} + /*! Returns the certificate to be presented to the peer during the SSL handshake process. diff --git a/src/network/ssl/qsslconfiguration.h b/src/network/ssl/qsslconfiguration.h index 291f6ead9d..0000382ed5 100644 --- a/src/network/ssl/qsslconfiguration.h +++ b/src/network/ssl/qsslconfiguration.h @@ -100,6 +100,7 @@ public: // Certificate & cipher configuration QList localCertificateChain() const; + void setLocalCertificateChain(const QList &localChain); QSslCertificate localCertificate() const; void setLocalCertificate(const QSslCertificate &certificate); diff --git a/src/network/ssl/qsslcontext.cpp b/src/network/ssl/qsslcontext.cpp index f75ff3796d..22ad42116b 100644 --- a/src/network/ssl/qsslcontext.cpp +++ b/src/network/ssl/qsslcontext.cpp @@ -234,6 +234,17 @@ init_context: sslContext->errorCode = QSslError::UnspecifiedError; return sslContext; } + + // If we have any intermediate certificates then we need to add them to our chain + bool first = true; + foreach (const QSslCertificate &cert, configuration.d->localCertificateChain) { + if (first) { + first = false; + continue; + } + q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, + q_X509_dup(reinterpret_cast(cert.handle()))); + } } // Initialize peer verification. diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index 421731a174..b1cdef7f29 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -911,6 +911,32 @@ void QSslSocket::setSslConfiguration(const QSslConfiguration &configuration) d->allowRootCertOnDemandLoading = false; } +/*! + Sets the certificate chain to be presented to the peer during the + SSL handshake to be \a localChain. + + \sa QSslConfiguration::setLocalCertificateChain() + \since 5.1 + */ +void QSslSocket::setLocalCertificateChain(const QList &localChain) +{ + Q_D(QSslSocket); + d->configuration.localCertificateChain = localChain; +} + +/*! + Returns the socket's local \l {QSslCertificate} {certificate} chain, + or an empty list if no local certificates have been assigned. + + \sa setLocalCertificateChain() + \since 5.1 +*/ +QList QSslSocket::localCertificateChain() const +{ + Q_D(const QSslSocket); + return d->configuration.localCertificateChain; +} + /*! Sets the socket's local certificate to \a certificate. The local certificate is necessary if you need to confirm your identity to the diff --git a/src/network/ssl/qsslsocket.h b/src/network/ssl/qsslsocket.h index 55141243ff..d89933efda 100644 --- a/src/network/ssl/qsslsocket.h +++ b/src/network/ssl/qsslsocket.h @@ -131,6 +131,9 @@ public: void setSslConfiguration(const QSslConfiguration &config); // Certificate & cipher accessors. + void setLocalCertificateChain(const QList &localChain); + QList localCertificateChain() const; + void setLocalCertificate(const QSslCertificate &certificate); void setLocalCertificate(const QString &fileName, QSsl::EncodingFormat format = QSsl::Pem); QSslCertificate localCertificate() const; -- cgit v1.2.3 From 5ebc8d3663df5860f13ec9fe0bf4cce1cb37111b Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Sun, 10 Feb 2013 17:06:34 +0000 Subject: Add an encrypted() signal to QNetworkAccessManager and QNetworkReply. Add an encrypted signal to QNAM and QNetworkReply to allow applications to perform additional checks on the certificate chain beyond those done as part of the standard SSL validation. This allows things like certificate change notification to be implemented for QNAM as they can be for QSSLSocket currently. Change-Id: I693e3e6fec8b7040379b7e7f1f819550e6b2617f Reviewed-by: Peter Hartmann --- .../access/qhttpnetworkconnectionchannel.cpp | 2 ++ src/network/access/qhttpnetworkreply_p.h | 1 + src/network/access/qhttpthreaddelegate.cpp | 9 ++++++ src/network/access/qhttpthreaddelegate_p.h | 2 ++ src/network/access/qnetworkaccessbackend.cpp | 7 ++++ src/network/access/qnetworkaccessbackend_p.h | 1 + src/network/access/qnetworkaccessmanager.cpp | 37 ++++++++++++++++++++++ src/network/access/qnetworkaccessmanager.h | 2 ++ src/network/access/qnetworkaccessmanager_p.h | 1 + src/network/access/qnetworkreply.cpp | 25 +++++++++++++++ src/network/access/qnetworkreply.h | 1 + src/network/access/qnetworkreplyhttpimpl.cpp | 8 +++++ src/network/access/qnetworkreplyhttpimpl_p.h | 2 ++ src/network/access/qnetworkreplyimpl.cpp | 8 +++++ src/network/access/qnetworkreplyimpl_p.h | 1 + 15 files changed, 107 insertions(+) (limited to 'src') diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 4dfed762f5..4b8fe8aca7 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -1224,6 +1224,8 @@ void QHttpNetworkConnectionChannel::_q_encrypted() pendingEncrypt = false; if (!reply) connection->d_func()->dequeueRequest(socket); + if (reply) + emit reply->encrypted(); if (reply) sendRequest(); } diff --git a/src/network/access/qhttpnetworkreply_p.h b/src/network/access/qhttpnetworkreply_p.h index e849c66659..7aea9f14ec 100644 --- a/src/network/access/qhttpnetworkreply_p.h +++ b/src/network/access/qhttpnetworkreply_p.h @@ -142,6 +142,7 @@ public: void ignoreSslErrors(const QList &errors); Q_SIGNALS: + void encrypted(); void sslErrors(const QList &errors); #endif diff --git a/src/network/access/qhttpthreaddelegate.cpp b/src/network/access/qhttpthreaddelegate.cpp index 117265dbfb..a2cee48b22 100644 --- a/src/network/access/qhttpthreaddelegate.cpp +++ b/src/network/access/qhttpthreaddelegate.cpp @@ -315,6 +315,7 @@ void QHttpThreadDelegate::startRequest() connect(httpReply,SIGNAL(readyRead()), this, SLOT(readyReadSlot())); connect(httpReply,SIGNAL(dataReadProgress(qint64,qint64)), this, SLOT(dataReadProgressSlot(qint64,qint64))); #ifndef QT_NO_SSL + connect(httpReply,SIGNAL(encrypted()), this, SLOT(encryptedSlot())); connect(httpReply,SIGNAL(sslErrors(QList)), this, SLOT(sslErrorsSlot(QList))); #endif @@ -589,6 +590,14 @@ void QHttpThreadDelegate::cacheCredentialsSlot(const QHttpNetworkRequest &reques #ifndef QT_NO_SSL +void QHttpThreadDelegate::encryptedSlot() +{ + if (!httpReply) + return; + + emit encrypted(); +} + void QHttpThreadDelegate::sslErrorsSlot(const QList &errors) { if (!httpReply) diff --git a/src/network/access/qhttpthreaddelegate_p.h b/src/network/access/qhttpthreaddelegate_p.h index 86192c77cc..d9ef1a0a55 100644 --- a/src/network/access/qhttpthreaddelegate_p.h +++ b/src/network/access/qhttpthreaddelegate_p.h @@ -135,6 +135,7 @@ signals: void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *); #endif #ifndef QT_NO_SSL + void encrypted(); void sslErrors(const QList &, bool *, QList *); void sslConfigurationChanged(const QSslConfiguration); #endif @@ -164,6 +165,7 @@ protected slots: void dataReadProgressSlot(qint64 done, qint64 total); void cacheCredentialsSlot(const QHttpNetworkRequest &request, QAuthenticator *authenticator); #ifndef QT_NO_SSL + void encryptedSlot(); void sslErrorsSlot(const QList &errors); #endif diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp index 84f9b82a22..a895864d76 100644 --- a/src/network/access/qnetworkaccessbackend.cpp +++ b/src/network/access/qnetworkaccessbackend.cpp @@ -340,6 +340,13 @@ void QNetworkAccessBackend::redirectionRequested(const QUrl &target) reply->redirectionRequested(target); } +void QNetworkAccessBackend::encrypted() +{ +#ifndef QT_NO_SSL + reply->encrypted(); +#endif +} + void QNetworkAccessBackend::sslErrors(const QList &errors) { #ifndef QT_NO_SSL diff --git a/src/network/access/qnetworkaccessbackend_p.h b/src/network/access/qnetworkaccessbackend_p.h index 23f8416e0e..bf284414e0 100644 --- a/src/network/access/qnetworkaccessbackend_p.h +++ b/src/network/access/qnetworkaccessbackend_p.h @@ -196,6 +196,7 @@ protected slots: void authenticationRequired(QAuthenticator *auth); void metaDataChanged(); void redirectionRequested(const QUrl &destination); + void encrypted(); void sslErrors(const QList &errors); void emitReplyUploadProgress(qint64 bytesSent, qint64 bytesTotal); diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index f185f7f695..b83b437b2c 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -373,6 +373,32 @@ static void ensureInitialized() \sa QNetworkReply::finished(), QNetworkReply::error() */ +/*! + \fn void QNetworkAccessManager::encrypted(QNetworkReply *reply) + \since 5.1 + + This signal is emitted when an SSL/TLS session has successfully + completed the initial handshake. At this point, no user data + has been transmitted. The signal can be used to perform + additional checks on the certificate chain, for example to + notify users when the certificate for a website has changed. The + \a reply parameter specifies which network reply is responsible. + If the reply does not match the expected criteria then it should + be aborted by calling QNetworkReply::abort() by a slot connected + to this signal. The SSL configuration in use can be inspected + using the QNetworkReply::sslConfiguration() method. + + Internally, QNetworkAccessManager may open multiple connections + to a server, in order to allow it process requests in parallel. + These connections may be reused, which means that the encrypted() + signal would not be emitted. This means that you are only + guaranteed to receive this signal for the first connection to a + site in the lifespan of the QNetworkAccessManager. + + \sa QSslSocket::encrypted() + \sa QNetworkReply::encrypted() +*/ + /*! \fn void QNetworkAccessManager::sslErrors(QNetworkReply *reply, const QList &errors) @@ -1132,6 +1158,16 @@ void QNetworkAccessManagerPrivate::_q_replyFinished() #endif } +void QNetworkAccessManagerPrivate::_q_replyEncrypted() +{ +#ifndef QT_NO_SSL + Q_Q(QNetworkAccessManager); + QNetworkReply *reply = qobject_cast(q->sender()); + if (reply) + emit q->encrypted(reply); +#endif +} + void QNetworkAccessManagerPrivate::_q_replySslErrors(const QList &errors) { #ifndef QT_NO_SSL @@ -1152,6 +1188,7 @@ QNetworkReply *QNetworkAccessManagerPrivate::postProcess(QNetworkReply *reply) #ifndef QT_NO_SSL /* In case we're compiled without SSL support, we don't have this signal and we need to * avoid getting a connection error. */ + q->connect(reply, SIGNAL(encrypted()), SLOT(_q_replyEncrypted())); q->connect(reply, SIGNAL(sslErrors(QList)), SLOT(_q_replySslErrors(QList))); #endif #ifndef QT_NO_BEARERMANAGEMENT diff --git a/src/network/access/qnetworkaccessmanager.h b/src/network/access/qnetworkaccessmanager.h index 0caba127fc..826c8e47d7 100644 --- a/src/network/access/qnetworkaccessmanager.h +++ b/src/network/access/qnetworkaccessmanager.h @@ -139,6 +139,7 @@ Q_SIGNALS: void authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator); void finished(QNetworkReply *reply); #ifndef QT_NO_SSL + void encrypted(QNetworkReply *reply); void sslErrors(QNetworkReply *reply, const QList &errors); #endif @@ -159,6 +160,7 @@ private: Q_DECLARE_PRIVATE(QNetworkAccessManager) Q_PRIVATE_SLOT(d_func(), void _q_replyFinished()) + Q_PRIVATE_SLOT(d_func(), void _q_replyEncrypted()) Q_PRIVATE_SLOT(d_func(), void _q_replySslErrors(QList)) #ifndef QT_NO_BEARERMANAGEMENT Q_PRIVATE_SLOT(d_func(), void _q_networkSessionClosed()) diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h index b4ad3511fa..cf756dad7b 100644 --- a/src/network/access/qnetworkaccessmanager_p.h +++ b/src/network/access/qnetworkaccessmanager_p.h @@ -90,6 +90,7 @@ public: ~QNetworkAccessManagerPrivate(); void _q_replyFinished(); + void _q_replyEncrypted(); void _q_replySslErrors(const QList &errors); QNetworkReply *postProcess(QNetworkReply *reply); void createCookieJar() const; diff --git a/src/network/access/qnetworkreply.cpp b/src/network/access/qnetworkreply.cpp index fd3b7760cb..dc42adc612 100644 --- a/src/network/access/qnetworkreply.cpp +++ b/src/network/access/qnetworkreply.cpp @@ -194,6 +194,31 @@ QNetworkReplyPrivate::QNetworkReplyPrivate() \sa error() */ +/*! + \fn void QNetworkReply::encrypted() + \since 5.1 + + This signal is emitted when an SSL/TLS session has successfully + completed the initial handshake. At this point, no user data + has been transmitted. The signal can be used to perform + additional checks on the certificate chain, for example to + notify users when the certificate for a website has changed. + If the reply does not match the expected criteria then it should + be aborted by calling QNetworkReply::abort() by a slot connected + to this signal. The SSL configuration in use can be inspected + using the QNetworkReply::sslConfiguration() method. + + Internally, QNetworkAccessManager may open multiple connections + to a server, in order to allow it process requests in parallel. + These connections may be reused, which means that the encrypted() + signal would not be emitted. This means that you are only + guaranteed to receive this signal for the first connection to a + site in the lifespan of the QNetworkAccessManager. + + \sa QSslSocket::encrypted() + \sa QNetworkAccessManager::encrypted() +*/ + /*! \fn void QNetworkReply::sslErrors(const QList &errors) diff --git a/src/network/access/qnetworkreply.h b/src/network/access/qnetworkreply.h index 39901aafb6..a7db2d189c 100644 --- a/src/network/access/qnetworkreply.h +++ b/src/network/access/qnetworkreply.h @@ -148,6 +148,7 @@ Q_SIGNALS: void finished(); void error(QNetworkReply::NetworkError); #ifndef QT_NO_SSL + void encrypted(); void sslErrors(const QList &errors); #endif diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp index 522965c104..c04421e5c7 100644 --- a/src/network/access/qnetworkreplyhttpimpl.cpp +++ b/src/network/access/qnetworkreplyhttpimpl.cpp @@ -830,6 +830,8 @@ void QNetworkReplyHttpImplPrivate::postRequest() Qt::BlockingQueuedConnection); #endif #ifndef QT_NO_SSL + QObject::connect(delegate, SIGNAL(encrypted()), q, SLOT(replyEncrypted()), + Qt::BlockingQueuedConnection); QObject::connect(delegate, SIGNAL(sslErrors(QList,bool*,QList*)), q, SLOT(replySslErrors(QList,bool*,QList*)), Qt::BlockingQueuedConnection); @@ -1220,6 +1222,12 @@ void QNetworkReplyHttpImplPrivate::httpError(QNetworkReply::NetworkError errorCo } #ifndef QT_NO_SSL +void QNetworkReplyHttpImplPrivate::replyEncrypted() +{ + Q_Q(QNetworkReplyHttpImpl); + emit q->encrypted(); +} + void QNetworkReplyHttpImplPrivate::replySslErrors( const QList &list, bool *ignoreAll, QList *toBeIgnored) { diff --git a/src/network/access/qnetworkreplyhttpimpl_p.h b/src/network/access/qnetworkreplyhttpimpl_p.h index 5f8f0badf7..15cc0ec476 100644 --- a/src/network/access/qnetworkreplyhttpimpl_p.h +++ b/src/network/access/qnetworkreplyhttpimpl_p.h @@ -116,6 +116,7 @@ public: Q_PRIVATE_SLOT(d_func(), void httpAuthenticationRequired(const QHttpNetworkRequest &, QAuthenticator *)) Q_PRIVATE_SLOT(d_func(), void httpError(QNetworkReply::NetworkError, const QString &)) #ifndef QT_NO_SSL + Q_PRIVATE_SLOT(d_func(), void replyEncrypted()) Q_PRIVATE_SLOT(d_func(), void replySslErrors(const QList &, bool *, QList *)) Q_PRIVATE_SLOT(d_func(), void replySslConfigurationChanged(const QSslConfiguration&)) #endif @@ -280,6 +281,7 @@ public: void httpAuthenticationRequired(const QHttpNetworkRequest &request, QAuthenticator *auth); void httpError(QNetworkReply::NetworkError error, const QString &errorString); #ifndef QT_NO_SSL + void replyEncrypted(); void replySslErrors(const QList &, bool *, QList *); void replySslConfigurationChanged(const QSslConfiguration&); #endif diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp index e12286c459..33357293a3 100644 --- a/src/network/access/qnetworkreplyimpl.cpp +++ b/src/network/access/qnetworkreplyimpl.cpp @@ -879,6 +879,14 @@ void QNetworkReplyImplPrivate::redirectionRequested(const QUrl &target) attributes.insert(QNetworkRequest::RedirectionTargetAttribute, target); } +void QNetworkReplyImplPrivate::encrypted() +{ +#ifndef QT_NO_SSL + Q_Q(QNetworkReplyImpl); + emit q->encrypted(); +#endif +} + void QNetworkReplyImplPrivate::sslErrors(const QList &errors) { #ifndef QT_NO_SSL diff --git a/src/network/access/qnetworkreplyimpl_p.h b/src/network/access/qnetworkreplyimpl_p.h index ca9a3b5fd1..9edc0f6b59 100644 --- a/src/network/access/qnetworkreplyimpl_p.h +++ b/src/network/access/qnetworkreplyimpl_p.h @@ -176,6 +176,7 @@ public: void error(QNetworkReply::NetworkError code, const QString &errorString); void metaDataChanged(); void redirectionRequested(const QUrl &target); + void encrypted(); void sslErrors(const QList &errors); QNetworkAccessBackend *backend; -- cgit v1.2.3 From 8efad82d6c8b0f59c5acb7f355ad2742f17b91df Mon Sep 17 00:00:00 2001 From: Simeon Bird Date: Wed, 13 Feb 2013 19:56:02 -0500 Subject: Fix QTBUG-18934 by checking return value of qt_safe_pipe When QProcess->start() is called, Qt creates a pipe to the process to get its exit value and output. It does this with qt_create_pipe, which calls qt_safe_pipe. qt_safe_pipe, on failure, returns 1. qt_create_pipe then sets errno and returns void. The calling function, QProcessPrivate::startProcess, does not check errno, and thus continues to fork the process, assuming the pipe has been created successfully. The child process then has no way to pass its exit value to the calling process, since the communication pipes it would normally use do not exist, and thus when it exits it becomes a zombie. As a bonus, if waitForFinished is called on a broken process, a crash results because it is trying to wait on a pipe which does not exist. The fix makes qt_create_pipe return an integer, and QProcess::startProcess check the return value, set processError and not create the child process. Task-Number: QTBUG-18934 Change-Id: I2e1effdd0617be5b8c5492bcbcf5f2b1584b2241 Reviewed-by: Thiago Macieira --- src/corelib/io/qprocess_unix.cpp | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index 3daae8b2f6..997848851d 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -328,16 +328,18 @@ void QProcessManager::unlock() mutex.unlock(); } -static void qt_create_pipe(int *pipe) +static int qt_create_pipe(int *pipe) { if (pipe[0] != -1) qt_safe_close(pipe[0]); if (pipe[1] != -1) qt_safe_close(pipe[1]); - if (qt_safe_pipe(pipe) != 0) { + int pipe_ret = qt_safe_pipe(pipe); + if (pipe_ret != 0) { qWarning("QProcessPrivate::createPipe: Cannot create pipe %p: %s", pipe, qPrintable(qt_error_string(errno))); } + return pipe_ret; } void QProcessPrivate::destroyPipe(int *pipe) @@ -374,7 +376,8 @@ bool QProcessPrivate::createChannel(Channel &channel) if (channel.type == Channel::Normal) { // we're piping this channel to our own process - qt_create_pipe(channel.pipe); + if (qt_create_pipe(channel.pipe) != 0) + return false; // create the socket notifiers if (threadData->eventDispatcher) { @@ -458,7 +461,8 @@ bool QProcessPrivate::createChannel(Channel &channel) Q_ASSERT(sink->pipe[0] == INVALID_Q_PIPE && sink->pipe[1] == INVALID_Q_PIPE); Q_PIPE pipe[2] = { -1, -1 }; - qt_create_pipe(pipe); + if (qt_create_pipe(pipe) != 0) + return false; sink->pipe[0] = pipe[0]; source->pipe[1] = pipe[1]; @@ -548,10 +552,15 @@ void QProcessPrivate::startProcess() // Initialize pipes if (!createChannel(stdinChannel) || !createChannel(stdoutChannel) || - !createChannel(stderrChannel)) + !createChannel(stderrChannel) || + qt_create_pipe(childStartedPipe) != 0 || + qt_create_pipe(deathPipe) != 0) { + processError = QProcess::FailedToStart; + q->setErrorString(qt_error_string(errno)); + emit q->error(processError); + cleanup(); return; - qt_create_pipe(childStartedPipe); - qt_create_pipe(deathPipe); + } if (threadData->eventDispatcher) { startupSocketNotifier = new QSocketNotifier(childStartedPipe[0], @@ -1339,10 +1348,15 @@ bool QProcessPrivate::startDetached(const QString &program, const QStringList &a // To catch the startup of the child int startedPipe[2]; - qt_safe_pipe(startedPipe); + if (qt_safe_pipe(startedPipe) != 0) + return false; // To communicate the pid of the child int pidPipe[2]; - qt_safe_pipe(pidPipe); + if (qt_safe_pipe(pidPipe) != 0) { + qt_safe_close(startedPipe[0]); + qt_safe_close(startedPipe[1]); + return false; + } pid_t childPid = fork(); if (childPid == 0) { -- cgit v1.2.3 From 4606ea53958df33fffba680dd75c8b1733ca9f40 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 15 Feb 2013 13:53:14 +0100 Subject: QProgressBar: Use localized numbers and percent sign. Task-number: QTBUG-28751 Change-Id: I56aca3e0ee9c579297110c69d2d832c7a57f1ae7 Reviewed-by: J-P Nurmi Reviewed-by: Karim Pinter --- src/widgets/widgets/qprogressbar.cpp | 46 +++++++++++++++++++++++++++++------- src/widgets/widgets/qprogressbar.h | 3 ++- 2 files changed, 39 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/widgets/widgets/qprogressbar.cpp b/src/widgets/widgets/qprogressbar.cpp index 72e937b604..6b3dadddf0 100644 --- a/src/widgets/widgets/qprogressbar.cpp +++ b/src/widgets/widgets/qprogressbar.cpp @@ -41,6 +41,7 @@ #include "qprogressbar.h" #ifndef QT_NO_PROGRESSBAR +#include #include #include #include @@ -61,6 +62,7 @@ public: QProgressBarPrivate(); void init(); + void initDefaultFormat(); inline void resetLayoutItemMargins(); int minimum; @@ -68,6 +70,7 @@ public: int value; Qt::Alignment alignment; uint textVisible : 1; + uint defaultFormat: 1; int lastPaintedValue; Qt::Orientation orientation; bool invertedAppearance; @@ -79,9 +82,16 @@ public: QProgressBarPrivate::QProgressBarPrivate() : minimum(0), maximum(100), value(-1), alignment(Qt::AlignLeft), textVisible(true), - lastPaintedValue(-1), orientation(Qt::Horizontal), invertedAppearance(false), - textDirection(QProgressBar::TopToBottom), format(QLatin1String("%p%")) + defaultFormat(true), lastPaintedValue(-1), orientation(Qt::Horizontal), invertedAppearance(false), + textDirection(QProgressBar::TopToBottom) { + initDefaultFormat(); +} + +void QProgressBarPrivate::initDefaultFormat() +{ + if (defaultFormat) + format = QLatin1String("%p") + locale.percent(); } void QProgressBarPrivate::init() @@ -466,19 +476,21 @@ QString QProgressBar::text() const qint64 totalSteps = qint64(d->maximum) - d->minimum; QString result = d->format; - result.replace(QLatin1String("%m"), QString::number(totalSteps)); - result.replace(QLatin1String("%v"), QString::number(d->value)); + QLocale locale = d->locale; // Omit group separators for compatibility with previous versions that were non-localized. + locale.setNumberOptions(locale.numberOptions() | QLocale::OmitGroupSeparator); + result.replace(QLatin1String("%m"), locale.toString(totalSteps)); + result.replace(QLatin1String("%v"), locale.toString(d->value)); // If max and min are equal and we get this far, it means that the // progress bar has one step and that we are on that step. Return // 100% here in order to avoid division by zero further down. if (totalSteps == 0) { - result.replace(QLatin1String("%p"), QString::number(100)); + result.replace(QLatin1String("%p"), locale.toString(int(100))); return result; } int progress = (qreal(d->value) - d->minimum) * 100.0 / totalSteps; - result.replace(QLatin1String("%p"), QString::number(progress)); + result.replace(QLatin1String("%p"), locale.toString(progress)); return result; } @@ -568,12 +580,19 @@ QProgressBar::Direction QProgressBar::textDirection() const bool QProgressBar::event(QEvent *e) { Q_D(QProgressBar); - if (e->type() == QEvent::StyleChange + switch (e->type()) { + case QEvent::StyleChange: #ifdef Q_OS_MAC - || e->type() == QEvent::MacSizeChange + case QEvent::MacSizeChange: #endif - ) d->resetLayoutItemMargins(); + break; + case QEvent::LocaleChange: + d->initDefaultFormat(); + break; + default: + break; + } return QWidget::event(e); } @@ -596,6 +615,15 @@ void QProgressBar::setFormat(const QString &format) if (d->format == format) return; d->format = format; + d->defaultFormat = false; + update(); +} + +void QProgressBar::resetFormat() +{ + Q_D(QProgressBar); + d->defaultFormat = true; + d->initDefaultFormat(); update(); } diff --git a/src/widgets/widgets/qprogressbar.h b/src/widgets/widgets/qprogressbar.h index 99fbe005ed..71bb2fc8f8 100644 --- a/src/widgets/widgets/qprogressbar.h +++ b/src/widgets/widgets/qprogressbar.h @@ -65,7 +65,7 @@ class Q_WIDGETS_EXPORT QProgressBar : public QWidget Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) Q_PROPERTY(bool invertedAppearance READ invertedAppearance WRITE setInvertedAppearance) Q_PROPERTY(Direction textDirection READ textDirection WRITE setTextDirection) - Q_PROPERTY(QString format READ format WRITE setFormat) + Q_PROPERTY(QString format READ format WRITE setFormat RESET resetFormat) public: enum Direction { TopToBottom, BottomToTop }; @@ -96,6 +96,7 @@ public: QProgressBar::Direction textDirection() const; void setFormat(const QString &format); + void resetFormat(); QString format() const; public Q_SLOTS: -- cgit v1.2.3 From af27b37b084d46bb7084633b56feaf3bb6a3ac48 Mon Sep 17 00:00:00 2001 From: jian liang Date: Wed, 13 Feb 2013 11:50:37 +0800 Subject: Activate window before replay mouse press event MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Activate the window of the widget under mouse pointer before replay mouse press event. Change-Id: I9e699374accf108aa49b2a3c73d5e76631100dfd Reviewed-by: Friedemann Kleint Reviewed-by: Samuel Rødal Reviewed-by: Gunnar Sletta --- src/widgets/kernel/qwidgetwindow.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index d7b9d8c5fb..c543303024 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -356,6 +356,12 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event) // the popup disappeared, replay the mouse press event QWidget *w = QApplication::widgetAt(event->globalPos()); if (w && !QApplicationPrivate::isBlockedByModal(w)) { + // activate window of the widget under mouse pointer + if (!w->isActiveWindow()) { + w->activateWindow(); + w->raise(); + } + QWindow *win = w->windowHandle(); if (!win) win = w->nativeParentWidget()->windowHandle(); -- cgit v1.2.3 From eff6dbb306956f099374e5a0c5942b9e91a81e71 Mon Sep 17 00:00:00 2001 From: Pavel Mogylevskiy Date: Tue, 19 Feb 2013 02:45:44 +0200 Subject: Fix path separators in archives created by QZipWriter It was not possible to extract data from the archive on OSX which was created on Windows platform because of wrong separators. Archive was created on Windows via QZipWriter and opened on OSX with QZipReader. It consisted of a lots directories and subdirectories with files. The solution is to use '/' separator for internal representation. Change-Id: Ic0837ca184bb6188129d53b587a5df2ec61e4e05 Reviewed-by: Oswald Buddenhagen --- src/gui/text/qzip.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp index 9e37330381..151b0bcfeb 100644 --- a/src/gui/text/qzip.cpp +++ b/src/gui/text/qzip.cpp @@ -1302,7 +1302,7 @@ QFile::Permissions QZipWriter::creationPermissions() const */ void QZipWriter::addFile(const QString &fileName, const QByteArray &data) { - d->addEntry(QZipWriterPrivate::File, fileName, data); + d->addEntry(QZipWriterPrivate::File, QDir::fromNativeSeparators(fileName), data); } /*! @@ -1324,7 +1324,7 @@ void QZipWriter::addFile(const QString &fileName, QIODevice *device) return; } } - d->addEntry(QZipWriterPrivate::File, fileName, device->readAll()); + d->addEntry(QZipWriterPrivate::File, QDir::fromNativeSeparators(fileName), device->readAll()); if (opened) device->close(); } @@ -1335,10 +1335,10 @@ void QZipWriter::addFile(const QString &fileName, QIODevice *device) */ void QZipWriter::addDirectory(const QString &dirName) { - QString name = dirName; + QString name(QDir::fromNativeSeparators(dirName)); // separator is mandatory - if (!name.endsWith(QDir::separator())) - name.append(QDir::separator()); + if (!name.endsWith(QLatin1Char('/'))) + name.append(QLatin1Char('/')); d->addEntry(QZipWriterPrivate::Directory, name, QByteArray()); } @@ -1349,7 +1349,7 @@ void QZipWriter::addDirectory(const QString &dirName) */ void QZipWriter::addSymLink(const QString &fileName, const QString &destination) { - d->addEntry(QZipWriterPrivate::Symlink, fileName, QFile::encodeName(destination)); + d->addEntry(QZipWriterPrivate::Symlink, QDir::fromNativeSeparators(fileName), QFile::encodeName(destination)); } /*! -- cgit v1.2.3 From 26bc4ab22e0784979e9606f799d118e67828e23d Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Wed, 20 Feb 2013 17:42:28 +0100 Subject: Gtk Style: Workaround to get combo box item style from QtQuick Controls Change-Id: I0f39269d08d58e0ee1f5b09b90e11ab1030a3932 Reviewed-by: Jens Bache-Wiig --- src/widgets/styles/qgtkstyle.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/styles/qgtkstyle.cpp b/src/widgets/styles/qgtkstyle.cpp index 52c1e2376c..caa41db451 100644 --- a/src/widgets/styles/qgtkstyle.cpp +++ b/src/widgets/styles/qgtkstyle.cpp @@ -3173,7 +3173,8 @@ void QGtkStyle::drawControl(ControlElement element, #ifndef QT_NO_COMBOBOX - if (qobject_cast(widget)) + if (qobject_cast(widget) || + option->styleObject && option->styleObject->property("_q_isComboBoxPopupItem").toBool()) ignoreCheckMark = true; // Ignore the checkmarks provided by the QComboMenuDelegate #endif -- cgit v1.2.3 From b92d951bb16bb690daa20d13f1638ff3500f41eb Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Wed, 20 Feb 2013 17:24:06 +0100 Subject: QGtk2XxxDialogHelper: cleanup unnecessary mutable keywords Change-Id: Ic0b72661e561e20d50de7aca6d8a681975100b56 Reviewed-by: Shawn Rutledge --- src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h index 2c5381aec8..08af59b2a4 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h +++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h @@ -74,7 +74,7 @@ private: static void onColorChanged(QGtk2ColorDialogHelper *helper); void applyOptions(); - mutable QScopedPointer d; + QScopedPointer d; }; class QGtk2FileDialogHelper : public QPlatformFileDialogHelper @@ -111,7 +111,7 @@ private: QStringList _selection; QHash _filters; QHash _filterNames; - mutable QScopedPointer d; + QScopedPointer d; }; class QGtk2FontDialogHelper : public QPlatformFontDialogHelper @@ -135,7 +135,7 @@ private Q_SLOTS: private: void applyOptions(); - mutable QScopedPointer d; + QScopedPointer d; }; QT_END_NAMESPACE -- cgit v1.2.3 From 4030b6339c3dae4474f60b07700526fccf428b0c Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Mon, 4 Feb 2013 22:28:59 +0000 Subject: Allow QHostInfo::lookupHost() with no receiver to warm the DNS cache. This change lets you call QHostInfo::lookupHost() with a null receiver in order to warm up the DNS cache. This allows you to try to get the DNS request in flight early. Change-Id: Icfdd28146479aa534ae9ceb472f75e08aaa39cd2 Reviewed-by: Thiago Macieira --- src/network/kernel/qhostinfo.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index d9d8396011..d25372ece6 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -164,6 +164,9 @@ int QHostInfo::lookupHost(const QString &name, QObject *receiver, int id = theIdCounter.fetchAndAddRelaxed(1); // generate unique ID if (name.isEmpty()) { + if (!receiver) + return -1; + QHostInfo hostInfo(id); hostInfo.setError(QHostInfo::HostNotFound); hostInfo.setErrorString(QCoreApplication::translate("QHostInfo", "No host name given")); @@ -183,6 +186,9 @@ int QHostInfo::lookupHost(const QString &name, QObject *receiver, bool valid = false; QHostInfo info = manager->cache.get(name, &valid); if (valid) { + if (!receiver) + return -1; + info.setLookupId(id); QHostInfoResult result; QObject::connect(&result, SIGNAL(resultsReady(QHostInfo)), receiver, member, Qt::QueuedConnection); @@ -193,7 +199,8 @@ int QHostInfo::lookupHost(const QString &name, QObject *receiver, // cache is not enabled or it was not in the cache, do normal lookup QHostInfoRunnable* runnable = new QHostInfoRunnable(name, id); - QObject::connect(&runnable->resultEmitter, SIGNAL(resultsReady(QHostInfo)), receiver, member, Qt::QueuedConnection); + if (receiver) + QObject::connect(&runnable->resultEmitter, SIGNAL(resultsReady(QHostInfo)), receiver, member, Qt::QueuedConnection); manager->scheduleLookup(runnable); } return id; -- cgit v1.2.3 From f73ddd4dfb80ce8d587a2f85b96b55067e90a3c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 20 Feb 2013 15:00:11 +0100 Subject: Reintroduce use of CTFontCopyDefaultCascadeListForLanguages on Mac OS Now that we always build against an SDK, we can be sure that the function declaration for CTFontCopyDefaultCascadeListForLanguages is available in the CoreText CTFont.h header. Change-Id: I304a701548833e5c7774b4fd2e72eb8c541dd103 Reviewed-by: Jens Bache-Wiig Reviewed-by: Oswald Buddenhagen Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index 7391cbf9df..ef5bdbbf0d 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -361,9 +361,9 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString &family, QFo static QHash fallbackLists; -#if QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, __IPHONE_6_0) +#if QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_8, __IPHONE_6_0) // CTFontCopyDefaultCascadeListForLanguages is available in the SDK - #if QT_MAC_DEPLOYMENT_TARGET_BELOW(__MAC_NA, __IPHONE_6_0) + #if QT_MAC_DEPLOYMENT_TARGET_BELOW(__MAC_10_8, __IPHONE_6_0) // But we have to feature check at runtime if (&CTFontCopyDefaultCascadeListForLanguages) #endif -- cgit v1.2.3 From 03b25125986f083a260b421abeed1f1d088d27b3 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 5 Feb 2013 14:35:10 +0100 Subject: Fix QMetaType of const references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes QMetaType detection of const reference arguments in signals while connecting using the new syntax and Qt::QueuedConnection const references should have the same QMetaType as non references. That means we need to remove the const reference while getting the QMetaType. Change-Id: I9b2688da7fb9ae985aec0d8fa62a1165357ffe71 Reviewed-by: Thiago Macieira Reviewed-by: Stephen Kelly Reviewed-by: Jędrzej Nowacki --- src/corelib/kernel/qmetatype.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index e4f1052673..16ea1042a2 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -532,6 +532,9 @@ struct QMetaTypeId2 static inline Q_DECL_CONSTEXPR int qt_metatype_id() { return QMetaTypeId::qt_metatype_id(); } }; +template +struct QMetaTypeId2 : QMetaTypeId2 {}; + namespace QtPrivate { template ::Defined> struct QMetaTypeIdHelper { -- cgit v1.2.3 From 22077e1609c8a5af39d48ddfb65066581ef15c0d Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 28 Jan 2013 15:16:02 +0100 Subject: QPA: Add interface for setting the application state explicitly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The motivation for this patch is twofold: 1: we need a way (for iOS/Android) to tell the current window to remove focus from the focus object when the user hides the input panel. Otherwise, if the focus object is e.g a line edit, the cursor will continue to blink inside it, which is wrong. As it stands, telling the active window to deactivate (by calling QWindowSystemInterface::handleWindowActivated(0)), will cause the whole application to deactivate if no windows are active, which is not what we want. 2: Qt currently understands just two application states, Activated and Deactivated. On mobile platforms we can have other states as well, like "suspended" on iOS. So controlling the application state should not depend on window activation, but instead be controlled through a separate API by the platform plugin. This patch will add the following function: QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationState newState) that lets us control the application state from the plugin. This also means that we factor out application state handling from window activation, which also gives us a way to remove focus from a window while keeping the application active. To not break existing desktop platforms that relies on application activation being tied to window activation, we need to make this API opt-in by using a platform integration capability hint. This is not optimal, but found necessary after investigating several other solutions. Which states (other that active/inactive) it makes sense to add to Qt::ApplicationState will be a topic for later patches. Change-Id: Ic6fdd3b66867abb67da43eba04ec86f06d82ff94 Reviewed-by: Friedemann Kleint Reviewed-by: Samuel Rødal --- src/corelib/global/qnamespace.h | 7 +++++++ src/corelib/global/qnamespace.qdoc | 15 +++++++++++++++ src/gui/kernel/qguiapplication.cpp | 27 +++++++++++++++++++++++++-- src/gui/kernel/qguiapplication_p.h | 3 +++ src/gui/kernel/qplatformintegration.cpp | 7 +++++++ src/gui/kernel/qplatformintegration.h | 3 ++- src/gui/kernel/qwindowsysteminterface.cpp | 9 +++++++++ src/gui/kernel/qwindowsysteminterface.h | 2 ++ src/gui/kernel/qwindowsysteminterface_p.h | 12 +++++++++++- 9 files changed, 81 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index a60743d3df..c8a615a1f7 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -325,6 +325,13 @@ public: Q_DECLARE_FLAGS(WindowStates, WindowState) + enum ApplicationState { + ApplicationInactive = 0x00000000, + ApplicationActive = 0x00000001 + }; + + Q_DECLARE_FLAGS(ApplicationStates, ApplicationState) + enum ScreenOrientation { PrimaryOrientation = 0x00000000, PortraitOrientation = 0x00000001, diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 1f1ff36442..248cdbce96 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -1782,6 +1782,21 @@ */ +/*! + \enum Qt::ApplicationState + + \keyword application state + + This enum type is used to specify the current state of the application. + + The states are + + \value ApplicationInactive The application is running in the background. + \value ApplicationActive The application is running in the foreground. + + \since 5.1 +*/ + /*! \enum Qt::ScreenOrientation diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 89b3b9ab89..b8c6e4db20 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -111,6 +111,8 @@ bool QGuiApplicationPrivate::tabletState = false; QWindow *QGuiApplicationPrivate::tabletPressTarget = 0; QWindow *QGuiApplicationPrivate::currentMouseWindow = 0; +Qt::ApplicationState QGuiApplicationPrivate::applicationState = Qt::ApplicationInactive; + QPlatformIntegration *QGuiApplicationPrivate::platform_integration = 0; QPlatformTheme *QGuiApplicationPrivate::platform_theme = 0; @@ -1274,6 +1276,9 @@ void QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePriv case QWindowSystemInterfacePrivate::WindowStateChanged: QGuiApplicationPrivate::processWindowStateChangedEvent(static_cast(e)); break; + case QWindowSystemInterfacePrivate::ApplicationStateChanged: + QGuiApplicationPrivate::processApplicationStateChangedEvent(static_cast(e)); + break; case QWindowSystemInterfacePrivate::Close: QGuiApplicationPrivate::processCloseEvent( static_cast(e)); @@ -1567,7 +1572,7 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate QCoreApplication::sendSpontaneousEvent(previous, &focusOut); QObject::disconnect(previous, SIGNAL(focusObjectChanged(QObject*)), qApp, SLOT(_q_updateFocusObject(QObject*))); - } else { + } else if (!platformIntegration()->hasCapability(QPlatformIntegration::ApplicationState)) { QEvent appActivate(QEvent::ApplicationActivate); qApp->sendSpontaneousEvent(qApp, &appActivate); } @@ -1577,7 +1582,7 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate QCoreApplication::sendSpontaneousEvent(QGuiApplicationPrivate::focus_window, &focusIn); QObject::connect(QGuiApplicationPrivate::focus_window, SIGNAL(focusObjectChanged(QObject*)), qApp, SLOT(_q_updateFocusObject(QObject*))); - } else { + } else if (!platformIntegration()->hasCapability(QPlatformIntegration::ApplicationState)) { QEvent appActivate(QEvent::ApplicationDeactivate); qApp->sendSpontaneousEvent(qApp, &appActivate); } @@ -1601,6 +1606,24 @@ void QGuiApplicationPrivate::processWindowStateChangedEvent(QWindowSystemInterfa } } +void QGuiApplicationPrivate::processApplicationStateChangedEvent(QWindowSystemInterfacePrivate::ApplicationStateChangedEvent *e) +{ + if (e->newState == applicationState) + return; + applicationState = e->newState; + + switch (e->newState) { + case Qt::ApplicationActive: { + QEvent appActivate(QEvent::ApplicationActivate); + qApp->sendSpontaneousEvent(qApp, &appActivate); + break; } + case Qt::ApplicationInactive: { + QEvent appDeactivate(QEvent::ApplicationDeactivate); + qApp->sendSpontaneousEvent(qApp, &appDeactivate); + break; } + } +} + void QGuiApplicationPrivate::processThemeChanged(QWindowSystemInterfacePrivate::ThemeChangeEvent *tce) { if (self) diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h index e5f08934c1..13b5952e73 100644 --- a/src/gui/kernel/qguiapplication_p.h +++ b/src/gui/kernel/qguiapplication_p.h @@ -127,6 +127,8 @@ public: static void processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent *e); static void processWindowStateChangedEvent(QWindowSystemInterfacePrivate::WindowStateChangedEvent *e); + static void processApplicationStateChangedEvent(QWindowSystemInterfacePrivate::ApplicationStateChangedEvent *e); + static void processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *e); static void updateFilteredScreenOrientation(QScreen *screen); @@ -199,6 +201,7 @@ public: static bool tabletState; static QWindow *tabletPressTarget; static QWindow *currentMouseWindow; + static Qt::ApplicationState applicationState; #ifndef QT_NO_CLIPBOARD static QClipboard *qt_clipboard; diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp index 027b9fc9f1..fbc7eeb76f 100644 --- a/src/gui/kernel/qplatformintegration.cpp +++ b/src/gui/kernel/qplatformintegration.cpp @@ -199,6 +199,13 @@ QPlatformServices *QPlatformIntegration::services() const \value MultipleWindows The platform supports multiple QWindows, i.e. does some kind of compositing either client or server side. Some platforms might only support a single fullscreen window. + + \value ApplicationState The platform handles the application state explicitly. + This means that QEvent::ApplicationActivate and QEvent::ApplicationDeativate + will not be posted automatically. Instead, the platform must handle application + state explicitly by using QWindowSystemInterface::handleApplicationStateChanged(). + If not set, application state will follow window activation, which is the normal + behavior for desktop platforms. */ diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h index 6e10df9495..55517cf600 100644 --- a/src/gui/kernel/qplatformintegration.h +++ b/src/gui/kernel/qplatformintegration.h @@ -88,7 +88,8 @@ public: SharedGraphicsCache, BufferQueueingOpenGL, WindowMasks, - MultipleWindows + MultipleWindows, + ApplicationState }; virtual ~QPlatformIntegration() { } diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 5483dc49d0..01100d8555 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -46,6 +46,7 @@ #include "private/qtouchdevice_p.h" #include #include +#include #include QT_BEGIN_NAMESPACE @@ -122,6 +123,14 @@ void QWindowSystemInterface::handleWindowStateChanged(QWindow *tlw, Qt::WindowSt QWindowSystemInterfacePrivate::handleWindowSystemEvent(e); } +void QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationState newState) +{ + Q_ASSERT(QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::ApplicationState)); + QWindowSystemInterfacePrivate::ApplicationStateChangedEvent *e = + new QWindowSystemInterfacePrivate::ApplicationStateChangedEvent(newState); + QWindowSystemInterfacePrivate::handleWindowSystemEvent(e); +} + void QWindowSystemInterface::handleGeometryChange(QWindow *tlw, const QRect &newRect) { QWindowSystemInterfacePrivate::GeometryChangeEvent *e = new QWindowSystemInterfacePrivate::GeometryChangeEvent(tlw,newRect); diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h index 687c72bbef..5668f3c0cf 100644 --- a/src/gui/kernel/qwindowsysteminterface.h +++ b/src/gui/kernel/qwindowsysteminterface.h @@ -138,6 +138,8 @@ public: static void handleWindowActivated(QWindow *w); static void handleWindowStateChanged(QWindow *w, Qt::WindowState newState); + static void handleApplicationStateChanged(Qt::ApplicationState newState); + static void handleExposeEvent(QWindow *tlw, const QRegion ®ion); #ifndef QT_NO_DRAGANDDROP diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h index d0b728ec4d..3d98ae07c9 100644 --- a/src/gui/kernel/qwindowsysteminterface_p.h +++ b/src/gui/kernel/qwindowsysteminterface_p.h @@ -88,7 +88,8 @@ public: TabletEnterProximity = UserInputEvent | 0x15, TabletLeaveProximity = UserInputEvent | 0x16, PlatformPanel = UserInputEvent | 0x17, - ContextMenu = UserInputEvent | 0x18 + ContextMenu = UserInputEvent | 0x18, + ApplicationStateChanged = 0x19 }; class WindowSystemEvent { @@ -152,6 +153,15 @@ public: Qt::WindowState newState; }; + class ApplicationStateChangedEvent : public WindowSystemEvent { + public: + ApplicationStateChangedEvent(Qt::ApplicationState newState) + : WindowSystemEvent(ApplicationStateChanged), newState(newState) + { } + + Qt::ApplicationState newState; + }; + class UserEvent : public WindowSystemEvent { public: UserEvent(QWindow * w, ulong time, EventType t) -- cgit v1.2.3 From 25c90050974714b5582df5ef9609be4efe4e771a Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Fri, 1 Feb 2013 13:20:19 +0000 Subject: OpenGL: Refactor some defines and typedefs to a common location MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These will be needed by the upcoming OpenGL enablers so move them out of qopenglfunctions.h to somewhere that any opengl related file can access them. Change-Id: I0c788559397d446ec7210e2ad940da862179710d Reviewed-by: Samuel Rødal --- src/gui/opengl/qopengl.h | 17 +++++++++++++++++ src/gui/opengl/qopenglfunctions.h | 21 --------------------- 2 files changed, 17 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h index a4a626a0c4..e1d36662d1 100644 --- a/src/gui/opengl/qopengl.h +++ b/src/gui/opengl/qopengl.h @@ -108,6 +108,23 @@ typedef GLfloat GLdouble; QT_BEGIN_NAMESPACE +// Types that aren't defined in all system's gl.h files. +typedef ptrdiff_t qopengl_GLintptr; +typedef ptrdiff_t qopengl_GLsizeiptr; + + +#if defined(APIENTRY) && !defined(QOPENGLF_APIENTRY) +# define QOPENGLF_APIENTRY APIENTRY +#endif + +# ifndef QOPENGLF_APIENTRYP +# ifdef QOPENGLF_APIENTRY +# define QOPENGLF_APIENTRYP QOPENGLF_APIENTRY * +# else +# define QOPENGLF_APIENTRY +# define QOPENGLF_APIENTRYP * +# endif +# endif QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions.h b/src/gui/opengl/qopenglfunctions.h index 100e3751be..7d88f8b08b 100644 --- a/src/gui/opengl/qopenglfunctions.h +++ b/src/gui/opengl/qopenglfunctions.h @@ -73,27 +73,6 @@ QT_BEGIN_NAMESPACE - -// Types that aren't defined in all system's gl.h files. -typedef ptrdiff_t qopengl_GLintptr; -typedef ptrdiff_t qopengl_GLsizeiptr; - - -#if defined(APIENTRY) && !defined(QOPENGLF_APIENTRY) -# define QOPENGLF_APIENTRY APIENTRY -#elif defined(GL_APIENTRY) && !defined(QOPENGLF_APIENTRY) -# define QOPENGLF_APIENTRY GL_APIENTRY -#endif - -# ifndef QOPENGLF_APIENTRYP -# ifdef QOPENGLF_APIENTRY -# define QOPENGLF_APIENTRYP QOPENGLF_APIENTRY * -# else -# define QOPENGLF_APIENTRY -# define QOPENGLF_APIENTRYP * -# endif -# endif - struct QOpenGLFunctionsPrivate; // Undefine any macros from GLEW, qopenglextensions_p.h, etc that -- cgit v1.2.3 From 4f14b42f7dc289cd73a5e7aa934d6052c708bac3 Mon Sep 17 00:00:00 2001 From: Milian Wolff Date: Mon, 14 Jan 2013 16:26:03 +0100 Subject: Add support for forced VSYNC using the EGLFS platform plugin. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before a buffer swap the new QEglFSHooks::waitForVSync method is called which looks at QT_QPA_EGLFS_FORCEVSYNC and - if that is set and non-null - calls ioctl with the FBIO_WAITFORVSYNC request on the framebuffer device. This is required on some embedded platforms where the driver does not support VSYNC yet the Kernel provides a generic implementation. I tested this using QML_RENDER_TIMING=1 which proofs that the frame rate for an example of mine drops from >125fps to a straight ~60fps with a few frames that take ~33ms (i.e. 30fps) as expected for VSYNC. To prevent excessive open/close calls on the frame buffer device per frame, the file descriptor is now cached. To keep the QEglFSHooks interface as clean as possible this is done via a global static in qeglfshooks_stub.cpp and initialized and freed in platformInit and platformDestroy. Change-Id: I4d31b227c65ff22aa089db0fbc62c89a59cbb6c7 Reviewed-by: Sean Harmer Reviewed-by: Samuel Rødal --- src/plugins/platforms/eglfs/qeglfscontext.cpp | 1 + src/plugins/platforms/eglfs/qeglfshooks.h | 1 + src/plugins/platforms/eglfs/qeglfshooks_stub.cpp | 50 +++++++++++++----------- 3 files changed, 30 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/eglfs/qeglfscontext.cpp b/src/plugins/platforms/eglfs/qeglfscontext.cpp index 06db4e02db..44bc9b2344 100644 --- a/src/plugins/platforms/eglfs/qeglfscontext.cpp +++ b/src/plugins/platforms/eglfs/qeglfscontext.cpp @@ -79,6 +79,7 @@ void QEglFSContext::swapBuffers(QPlatformSurface *surface) cursor->paintOnScreen(); } + hooks->waitForVSync(); QEGLPlatformContext::swapBuffers(surface); } diff --git a/src/plugins/platforms/eglfs/qeglfshooks.h b/src/plugins/platforms/eglfs/qeglfshooks.h index f3b6a28e70..fc1ee16073 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks.h +++ b/src/plugins/platforms/eglfs/qeglfshooks.h @@ -69,6 +69,7 @@ public: virtual bool hasCapability(QPlatformIntegration::Capability cap) const; virtual QEglFSCursor *createCursor(QEglFSScreen *screen) const; virtual bool filterConfig(EGLDisplay display, EGLConfig config) const; + virtual void waitForVSync() const; virtual const char *fbDeviceName() const; }; diff --git a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp index a8fa81a6ec..6c036cd680 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp +++ b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp @@ -47,9 +47,14 @@ #include #include +#include QT_BEGIN_NAMESPACE +// file descriptor for the frame buffer +// this is a global static to keep the QEglFSHooks interface as clean as possible +static int framebuffer = -1; + const char *QEglFSHooks::fbDeviceName() const { return "/dev/fb0"; @@ -58,10 +63,17 @@ const char *QEglFSHooks::fbDeviceName() const void QEglFSHooks::platformInit() { Q_UNUSED(hooks); + + framebuffer = qt_safe_open(fbDeviceName(), O_RDONLY); + + if (framebuffer == -1) + qWarning("EGLFS: Failed to open %s", fbDeviceName()); } void QEglFSHooks::platformDestroy() { + if (framebuffer != -1) + close(framebuffer); } EGLNativeDisplayType QEglFSHooks::platformDisplay() const @@ -86,22 +98,16 @@ QSizeF QEglFSHooks::physicalScreenSize() const } struct fb_var_screeninfo vinfo; - int fd = open(fbDeviceName(), O_RDONLY); - int w = -1; int h = -1; - if (fd != -1) { - if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) { + if (framebuffer != -1) { + if (ioctl(framebuffer, FBIOGET_VSCREENINFO, &vinfo) == -1) { qWarning("EGLFS: Could not query variable screen info."); } else { w = vinfo.width; h = vinfo.height; } - - close(fd); - } else { - qWarning("EGLFS: Failed to open %s to detect physical screen size.", fbDeviceName()); } const int defaultPhysicalDpi = 100; @@ -140,22 +146,17 @@ QSize QEglFSHooks::screenSize() const } struct fb_var_screeninfo vinfo; - int fd = open(fbDeviceName(), O_RDONLY); int xres = -1; int yres = -1; - if (fd != -1) { - if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) { + if (framebuffer != -1) { + if (ioctl(framebuffer, FBIOGET_VSCREENINFO, &vinfo) == -1) { qWarning("EGLFS: Could not query variable screen info."); } else { xres = vinfo.xres; yres = vinfo.yres; } - - close(fd); - } else { - qWarning("EGLFS: Failed to open %s to detect screen resolution.", fbDeviceName()); } const int defaultWidth = 800; @@ -185,17 +186,12 @@ int QEglFSHooks::screenDepth() const if (depth == 0) { struct fb_var_screeninfo vinfo; - int fd = open(fbDeviceName(), O_RDONLY); - if (fd != -1) { - if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1) + if (framebuffer != -1) { + if (ioctl(framebuffer, FBIOGET_VSCREENINFO, &vinfo) == -1) qWarning("EGLFS: Could not query variable screen info."); else depth = vinfo.bits_per_pixel; - - close(fd); - } else { - qWarning("EGLFS: Failed to open %s to detect screen depth.", fbDeviceName()); } const int defaultDepth = 32; @@ -250,6 +246,16 @@ QEglFSCursor *QEglFSHooks::createCursor(QEglFSScreen *screen) const return 0; } +void QEglFSHooks::waitForVSync() const +{ + static const bool forceSync = qgetenv("QT_QPA_EGLFS_FORCEVSYNC").toInt(); + if (forceSync && framebuffer != -1) { + int arg = 0; + if (ioctl(framebuffer, FBIO_WAITFORVSYNC, &arg) == -1) + qWarning("Could not wait for vsync."); + } +} + #ifndef EGLFS_PLATFORM_HOOKS QEglFSHooks stubHooks; #endif -- cgit v1.2.3 From 06af277c598cfb88eaf53fabd79b2de4a00dd4c3 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Mon, 14 Jan 2013 11:54:08 +0000 Subject: Update qopenglext.h to latest glext.h from Khronos.org This now includes support for OpenGL 4.3 Change-Id: I964284843dffe806280e7f67cde67f17e84dc6df Reviewed-by: Lars Knoll Reviewed-by: Sean Harmer --- src/gui/opengl/qopenglext.h | 1115 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 1016 insertions(+), 99 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglext.h b/src/gui/opengl/qopenglext.h index 5d21cb6eea..856f3b2c48 100644 --- a/src/gui/opengl/qopenglext.h +++ b/src/gui/opengl/qopenglext.h @@ -34,9 +34,9 @@ extern "C" { */ /* Header file version number, required by OpenGL ABI for Linux */ -/* glext.h last updated $Date: 2012-06-18 11:26:35 -0700 (Mon, 18 Jun 2012) $ */ +/* glext.h last updated $Date: 2012-09-19 19:02:24 -0700 (Wed, 19 Sep 2012) $ */ /* Current version at http://www.opengl.org/registry/ */ -#define GL_GLEXT_VERSION 82 +#define GL_GLEXT_VERSION 85 /* Function declaration macros - to move into glplatform.h */ #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) @@ -93,9 +93,6 @@ extern "C" { #define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 #define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 #define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#endif - -#ifndef GL_VERSION_1_2_DEPRECATED #define GL_RESCALE_NORMAL 0x803A #define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 #define GL_SINGLE_COLOR 0x81F9 @@ -115,9 +112,6 @@ extern "C" { #define GL_BLEND_EQUATION 0x8009 #define GL_FUNC_SUBTRACT 0x800A #define GL_FUNC_REVERSE_SUBTRACT 0x800B -#endif - -#ifndef GL_ARB_imaging_DEPRECATED #define GL_CONVOLUTION_1D 0x8010 #define GL_CONVOLUTION_2D 0x8011 #define GL_SEPARABLE_2D 0x8012 @@ -244,9 +238,6 @@ extern "C" { #define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 #define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 #define GL_CLAMP_TO_BORDER 0x812D -#endif - -#ifndef GL_VERSION_1_3_DEPRECATED #define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 #define GL_MAX_TEXTURE_UNITS 0x84E2 #define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 @@ -303,9 +294,6 @@ extern "C" { #define GL_TEXTURE_DEPTH_SIZE 0x884A #define GL_TEXTURE_COMPARE_MODE 0x884C #define GL_TEXTURE_COMPARE_FUNC 0x884D -#endif - -#ifndef GL_VERSION_1_4_DEPRECATED #define GL_POINT_SIZE_MIN 0x8126 #define GL_POINT_SIZE_MAX 0x8127 #define GL_POINT_DISTANCE_ATTENUATION 0x8129 @@ -359,9 +347,7 @@ extern "C" { #define GL_DYNAMIC_READ 0x88E9 #define GL_DYNAMIC_COPY 0x88EA #define GL_SAMPLES_PASSED 0x8914 -#endif - -#ifndef GL_VERSION_1_5_DEPRECATED +#define GL_SRC1_ALPHA 0x8589 #define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 #define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 #define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 @@ -383,7 +369,6 @@ extern "C" { #define GL_SRC1_RGB 0x8581 #define GL_SRC2_RGB 0x8582 #define GL_SRC0_ALPHA 0x8588 -#define GL_SRC1_ALPHA 0x8589 #define GL_SRC2_ALPHA 0x858A #endif @@ -468,9 +453,6 @@ extern "C" { #define GL_STENCIL_BACK_REF 0x8CA3 #define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 #define GL_STENCIL_BACK_WRITEMASK 0x8CA5 -#endif - -#ifndef GL_VERSION_2_0_DEPRECATED #define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 #define GL_POINT_SPRITE 0x8861 #define GL_COORD_REPLACE 0x8862 @@ -494,9 +476,6 @@ extern "C" { #define GL_SRGB8_ALPHA8 0x8C43 #define GL_COMPRESSED_SRGB 0x8C48 #define GL_COMPRESSED_SRGB_ALPHA 0x8C49 -#endif - -#ifndef GL_VERSION_2_1_DEPRECATED #define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F #define GL_SLUMINANCE_ALPHA 0x8C44 #define GL_SLUMINANCE8_ALPHA8 0x8C45 @@ -731,9 +710,6 @@ extern "C" { /* reuse GL_RG32UI */ /* Reuse tokens from ARB_vertex_array_object */ /* reuse GL_VERTEX_ARRAY_BINDING */ -#endif - -#ifndef GL_VERSION_3_0_DEPRECATED #define GL_CLAMP_VERTEX_COLOR 0x891A #define GL_CLAMP_FRAGMENT_COLOR 0x891B #define GL_ALPHA_INTEGER 0x8D97 @@ -754,7 +730,6 @@ extern "C" { #define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B #define GL_TEXTURE_BINDING_BUFFER 0x8C2C #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E #define GL_TEXTURE_RECTANGLE 0x84F5 #define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 #define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 @@ -1020,6 +995,7 @@ extern "C" { /* reuse GL_MEDIUM_INT */ /* reuse GL_HIGH_INT */ /* reuse GL_SHADER_COMPILER */ +/* reuse GL_SHADER_BINARY_FORMATS */ /* reuse GL_NUM_SHADER_BINARY_FORMATS */ /* reuse GL_MAX_VERTEX_UNIFORM_VECTORS */ /* reuse GL_MAX_VARYING_VECTORS */ @@ -1169,6 +1145,290 @@ extern "C" { /* reuse GL_TEXTURE_IMMUTABLE_FORMAT */ #endif +#ifndef GL_VERSION_4_3 +#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E +/* Reuse tokens from ARB_arrays_of_arrays (none, GLSL only) */ +/* Reuse tokens from ARB_fragment_layer_viewport (none, GLSL only) */ +/* Reuse tokens from ARB_shader_image_size (none, GLSL only) */ +/* Reuse tokens from ARB_ES3_compatibility */ +/* reuse GL_COMPRESSED_RGB8_ETC2 */ +/* reuse GL_COMPRESSED_SRGB8_ETC2 */ +/* reuse GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 */ +/* reuse GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 */ +/* reuse GL_COMPRESSED_RGBA8_ETC2_EAC */ +/* reuse GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC */ +/* reuse GL_COMPRESSED_R11_EAC */ +/* reuse GL_COMPRESSED_SIGNED_R11_EAC */ +/* reuse GL_COMPRESSED_RG11_EAC */ +/* reuse GL_COMPRESSED_SIGNED_RG11_EAC */ +/* reuse GL_PRIMITIVE_RESTART_FIXED_INDEX */ +/* reuse GL_ANY_SAMPLES_PASSED_CONSERVATIVE */ +/* reuse GL_MAX_ELEMENT_INDEX */ +/* Reuse tokens from ARB_clear_buffer_object (none) */ +/* Reuse tokens from ARB_compute_shader */ +/* reuse GL_COMPUTE_SHADER */ +/* reuse GL_MAX_COMPUTE_UNIFORM_BLOCKS */ +/* reuse GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS */ +/* reuse GL_MAX_COMPUTE_IMAGE_UNIFORMS */ +/* reuse GL_MAX_COMPUTE_SHARED_MEMORY_SIZE */ +/* reuse GL_MAX_COMPUTE_UNIFORM_COMPONENTS */ +/* reuse GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS */ +/* reuse GL_MAX_COMPUTE_ATOMIC_COUNTERS */ +/* reuse GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS */ +/* reuse GL_MAX_COMPUTE_LOCAL_INVOCATIONS */ +/* reuse GL_MAX_COMPUTE_WORK_GROUP_COUNT */ +/* reuse GL_MAX_COMPUTE_WORK_GROUP_SIZE */ +/* reuse GL_COMPUTE_LOCAL_WORK_SIZE */ +/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER */ +/* reuse GL_DISPATCH_INDIRECT_BUFFER */ +/* reuse GL_DISPATCH_INDIRECT_BUFFER_BINDING */ +/* Reuse tokens from ARB_copy_image (none) */ +/* Reuse tokens from KHR_debug */ +/* reuse GL_DEBUG_OUTPUT_SYNCHRONOUS */ +/* reuse GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH */ +/* reuse GL_DEBUG_CALLBACK_FUNCTION */ +/* reuse GL_DEBUG_CALLBACK_USER_PARAM */ +/* reuse GL_DEBUG_SOURCE_API */ +/* reuse GL_DEBUG_SOURCE_WINDOW_SYSTEM */ +/* reuse GL_DEBUG_SOURCE_SHADER_COMPILER */ +/* reuse GL_DEBUG_SOURCE_THIRD_PARTY */ +/* reuse GL_DEBUG_SOURCE_APPLICATION */ +/* reuse GL_DEBUG_SOURCE_OTHER */ +/* reuse GL_DEBUG_TYPE_ERROR */ +/* reuse GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR */ +/* reuse GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR */ +/* reuse GL_DEBUG_TYPE_PORTABILITY */ +/* reuse GL_DEBUG_TYPE_PERFORMANCE */ +/* reuse GL_DEBUG_TYPE_OTHER */ +/* reuse GL_MAX_DEBUG_MESSAGE_LENGTH */ +/* reuse GL_MAX_DEBUG_LOGGED_MESSAGES */ +/* reuse GL_DEBUG_LOGGED_MESSAGES */ +/* reuse GL_DEBUG_SEVERITY_HIGH */ +/* reuse GL_DEBUG_SEVERITY_MEDIUM */ +/* reuse GL_DEBUG_SEVERITY_LOW */ +/* reuse GL_DEBUG_TYPE_MARKER */ +/* reuse GL_DEBUG_TYPE_PUSH_GROUP */ +/* reuse GL_DEBUG_TYPE_POP_GROUP */ +/* reuse GL_DEBUG_SEVERITY_NOTIFICATION */ +/* reuse GL_MAX_DEBUG_GROUP_STACK_DEPTH */ +/* reuse GL_DEBUG_GROUP_STACK_DEPTH */ +/* reuse GL_BUFFER */ +/* reuse GL_SHADER */ +/* reuse GL_PROGRAM */ +/* reuse GL_QUERY */ +/* reuse GL_PROGRAM_PIPELINE */ +/* reuse GL_SAMPLER */ +/* reuse GL_DISPLAY_LIST */ +/* reuse GL_MAX_LABEL_LENGTH */ +/* reuse GL_DEBUG_OUTPUT */ +/* reuse GL_CONTEXT_FLAG_DEBUG_BIT */ +/* reuse GL_STACK_UNDERFLOW */ +/* reuse GL_STACK_OVERFLOW */ +/* Reuse tokens from ARB_explicit_uniform_location */ +/* reuse GL_MAX_UNIFORM_LOCATIONS */ +/* Reuse tokens from ARB_framebuffer_no_attachments */ +/* reuse GL_FRAMEBUFFER_DEFAULT_WIDTH */ +/* reuse GL_FRAMEBUFFER_DEFAULT_HEIGHT */ +/* reuse GL_FRAMEBUFFER_DEFAULT_LAYERS */ +/* reuse GL_FRAMEBUFFER_DEFAULT_SAMPLES */ +/* reuse GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS */ +/* reuse GL_MAX_FRAMEBUFFER_WIDTH */ +/* reuse GL_MAX_FRAMEBUFFER_HEIGHT */ +/* reuse GL_MAX_FRAMEBUFFER_LAYERS */ +/* reuse GL_MAX_FRAMEBUFFER_SAMPLES */ +/* Reuse tokens from ARB_internalformat_query2 */ +/* reuse GL_INTERNALFORMAT_SUPPORTED */ +/* reuse GL_INTERNALFORMAT_PREFERRED */ +/* reuse GL_INTERNALFORMAT_RED_SIZE */ +/* reuse GL_INTERNALFORMAT_GREEN_SIZE */ +/* reuse GL_INTERNALFORMAT_BLUE_SIZE */ +/* reuse GL_INTERNALFORMAT_ALPHA_SIZE */ +/* reuse GL_INTERNALFORMAT_DEPTH_SIZE */ +/* reuse GL_INTERNALFORMAT_STENCIL_SIZE */ +/* reuse GL_INTERNALFORMAT_SHARED_SIZE */ +/* reuse GL_INTERNALFORMAT_RED_TYPE */ +/* reuse GL_INTERNALFORMAT_GREEN_TYPE */ +/* reuse GL_INTERNALFORMAT_BLUE_TYPE */ +/* reuse GL_INTERNALFORMAT_ALPHA_TYPE */ +/* reuse GL_INTERNALFORMAT_DEPTH_TYPE */ +/* reuse GL_INTERNALFORMAT_STENCIL_TYPE */ +/* reuse GL_MAX_WIDTH */ +/* reuse GL_MAX_HEIGHT */ +/* reuse GL_MAX_DEPTH */ +/* reuse GL_MAX_LAYERS */ +/* reuse GL_MAX_COMBINED_DIMENSIONS */ +/* reuse GL_COLOR_COMPONENTS */ +/* reuse GL_DEPTH_COMPONENTS */ +/* reuse GL_STENCIL_COMPONENTS */ +/* reuse GL_COLOR_RENDERABLE */ +/* reuse GL_DEPTH_RENDERABLE */ +/* reuse GL_STENCIL_RENDERABLE */ +/* reuse GL_FRAMEBUFFER_RENDERABLE */ +/* reuse GL_FRAMEBUFFER_RENDERABLE_LAYERED */ +/* reuse GL_FRAMEBUFFER_BLEND */ +/* reuse GL_READ_PIXELS */ +/* reuse GL_READ_PIXELS_FORMAT */ +/* reuse GL_READ_PIXELS_TYPE */ +/* reuse GL_TEXTURE_IMAGE_FORMAT */ +/* reuse GL_TEXTURE_IMAGE_TYPE */ +/* reuse GL_GET_TEXTURE_IMAGE_FORMAT */ +/* reuse GL_GET_TEXTURE_IMAGE_TYPE */ +/* reuse GL_MIPMAP */ +/* reuse GL_MANUAL_GENERATE_MIPMAP */ +/* reuse GL_AUTO_GENERATE_MIPMAP */ +/* reuse GL_COLOR_ENCODING */ +/* reuse GL_SRGB_READ */ +/* reuse GL_SRGB_WRITE */ +/* reuse GL_FILTER */ +/* reuse GL_VERTEX_TEXTURE */ +/* reuse GL_TESS_CONTROL_TEXTURE */ +/* reuse GL_TESS_EVALUATION_TEXTURE */ +/* reuse GL_GEOMETRY_TEXTURE */ +/* reuse GL_FRAGMENT_TEXTURE */ +/* reuse GL_COMPUTE_TEXTURE */ +/* reuse GL_TEXTURE_SHADOW */ +/* reuse GL_TEXTURE_GATHER */ +/* reuse GL_TEXTURE_GATHER_SHADOW */ +/* reuse GL_SHADER_IMAGE_LOAD */ +/* reuse GL_SHADER_IMAGE_STORE */ +/* reuse GL_SHADER_IMAGE_ATOMIC */ +/* reuse GL_IMAGE_TEXEL_SIZE */ +/* reuse GL_IMAGE_COMPATIBILITY_CLASS */ +/* reuse GL_IMAGE_PIXEL_FORMAT */ +/* reuse GL_IMAGE_PIXEL_TYPE */ +/* reuse GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST */ +/* reuse GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST */ +/* reuse GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE */ +/* reuse GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE */ +/* reuse GL_TEXTURE_COMPRESSED_BLOCK_WIDTH */ +/* reuse GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT */ +/* reuse GL_TEXTURE_COMPRESSED_BLOCK_SIZE */ +/* reuse GL_CLEAR_BUFFER */ +/* reuse GL_TEXTURE_VIEW */ +/* reuse GL_VIEW_COMPATIBILITY_CLASS */ +/* reuse GL_FULL_SUPPORT */ +/* reuse GL_CAVEAT_SUPPORT */ +/* reuse GL_IMAGE_CLASS_4_X_32 */ +/* reuse GL_IMAGE_CLASS_2_X_32 */ +/* reuse GL_IMAGE_CLASS_1_X_32 */ +/* reuse GL_IMAGE_CLASS_4_X_16 */ +/* reuse GL_IMAGE_CLASS_2_X_16 */ +/* reuse GL_IMAGE_CLASS_1_X_16 */ +/* reuse GL_IMAGE_CLASS_4_X_8 */ +/* reuse GL_IMAGE_CLASS_2_X_8 */ +/* reuse GL_IMAGE_CLASS_1_X_8 */ +/* reuse GL_IMAGE_CLASS_11_11_10 */ +/* reuse GL_IMAGE_CLASS_10_10_10_2 */ +/* reuse GL_VIEW_CLASS_128_BITS */ +/* reuse GL_VIEW_CLASS_96_BITS */ +/* reuse GL_VIEW_CLASS_64_BITS */ +/* reuse GL_VIEW_CLASS_48_BITS */ +/* reuse GL_VIEW_CLASS_32_BITS */ +/* reuse GL_VIEW_CLASS_24_BITS */ +/* reuse GL_VIEW_CLASS_16_BITS */ +/* reuse GL_VIEW_CLASS_8_BITS */ +/* reuse GL_VIEW_CLASS_S3TC_DXT1_RGB */ +/* reuse GL_VIEW_CLASS_S3TC_DXT1_RGBA */ +/* reuse GL_VIEW_CLASS_S3TC_DXT3_RGBA */ +/* reuse GL_VIEW_CLASS_S3TC_DXT5_RGBA */ +/* reuse GL_VIEW_CLASS_RGTC1_RED */ +/* reuse GL_VIEW_CLASS_RGTC2_RG */ +/* reuse GL_VIEW_CLASS_BPTC_UNORM */ +/* reuse GL_VIEW_CLASS_BPTC_FLOAT */ +/* Reuse tokens from ARB_invalidate_subdata (none) */ +/* Reuse tokens from ARB_multi_draw_indirect (none) */ +/* Reuse tokens from ARB_program_interface_query */ +/* reuse GL_UNIFORM */ +/* reuse GL_UNIFORM_BLOCK */ +/* reuse GL_PROGRAM_INPUT */ +/* reuse GL_PROGRAM_OUTPUT */ +/* reuse GL_BUFFER_VARIABLE */ +/* reuse GL_SHADER_STORAGE_BLOCK */ +/* reuse GL_VERTEX_SUBROUTINE */ +/* reuse GL_TESS_CONTROL_SUBROUTINE */ +/* reuse GL_TESS_EVALUATION_SUBROUTINE */ +/* reuse GL_GEOMETRY_SUBROUTINE */ +/* reuse GL_FRAGMENT_SUBROUTINE */ +/* reuse GL_COMPUTE_SUBROUTINE */ +/* reuse GL_VERTEX_SUBROUTINE_UNIFORM */ +/* reuse GL_TESS_CONTROL_SUBROUTINE_UNIFORM */ +/* reuse GL_TESS_EVALUATION_SUBROUTINE_UNIFORM */ +/* reuse GL_GEOMETRY_SUBROUTINE_UNIFORM */ +/* reuse GL_FRAGMENT_SUBROUTINE_UNIFORM */ +/* reuse GL_COMPUTE_SUBROUTINE_UNIFORM */ +/* reuse GL_TRANSFORM_FEEDBACK_VARYING */ +/* reuse GL_ACTIVE_RESOURCES */ +/* reuse GL_MAX_NAME_LENGTH */ +/* reuse GL_MAX_NUM_ACTIVE_VARIABLES */ +/* reuse GL_MAX_NUM_COMPATIBLE_SUBROUTINES */ +/* reuse GL_NAME_LENGTH */ +/* reuse GL_TYPE */ +/* reuse GL_ARRAY_SIZE */ +/* reuse GL_OFFSET */ +/* reuse GL_BLOCK_INDEX */ +/* reuse GL_ARRAY_STRIDE */ +/* reuse GL_MATRIX_STRIDE */ +/* reuse GL_IS_ROW_MAJOR */ +/* reuse GL_ATOMIC_COUNTER_BUFFER_INDEX */ +/* reuse GL_BUFFER_BINDING */ +/* reuse GL_BUFFER_DATA_SIZE */ +/* reuse GL_NUM_ACTIVE_VARIABLES */ +/* reuse GL_ACTIVE_VARIABLES */ +/* reuse GL_REFERENCED_BY_VERTEX_SHADER */ +/* reuse GL_REFERENCED_BY_TESS_CONTROL_SHADER */ +/* reuse GL_REFERENCED_BY_TESS_EVALUATION_SHADER */ +/* reuse GL_REFERENCED_BY_GEOMETRY_SHADER */ +/* reuse GL_REFERENCED_BY_FRAGMENT_SHADER */ +/* reuse GL_REFERENCED_BY_COMPUTE_SHADER */ +/* reuse GL_TOP_LEVEL_ARRAY_SIZE */ +/* reuse GL_TOP_LEVEL_ARRAY_STRIDE */ +/* reuse GL_LOCATION */ +/* reuse GL_LOCATION_INDEX */ +/* reuse GL_IS_PER_PATCH */ +/* Reuse tokens from ARB_robust_buffer_access_behavior (none) */ +/* Reuse tokens from ARB_shader_storage_buffer_object */ +/* reuse GL_SHADER_STORAGE_BUFFER */ +/* reuse GL_SHADER_STORAGE_BUFFER_BINDING */ +/* reuse GL_SHADER_STORAGE_BUFFER_START */ +/* reuse GL_SHADER_STORAGE_BUFFER_SIZE */ +/* reuse GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS */ +/* reuse GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS */ +/* reuse GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS */ +/* reuse GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS */ +/* reuse GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS */ +/* reuse GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS */ +/* reuse GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS */ +/* reuse GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS */ +/* reuse GL_MAX_SHADER_STORAGE_BLOCK_SIZE */ +/* reuse GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT */ +/* reuse GL_SHADER_STORAGE_BARRIER_BIT */ +/* reuse GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES */ +/* Reuse tokens from ARB_stencil_texturing */ +/* reuse GL_DEPTH_STENCIL_TEXTURE_MODE */ +/* Reuse tokens from ARB_texture_buffer_range */ +/* reuse GL_TEXTURE_BUFFER_OFFSET */ +/* reuse GL_TEXTURE_BUFFER_SIZE */ +/* reuse GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT */ +/* Reuse tokens from ARB_texture_query_levels (none) */ +/* Reuse tokens from ARB_texture_storage_multisample (none) */ +/* Reuse tokens from ARB_texture_view */ +/* reuse GL_TEXTURE_VIEW_MIN_LEVEL */ +/* reuse GL_TEXTURE_VIEW_NUM_LEVELS */ +/* reuse GL_TEXTURE_VIEW_MIN_LAYER */ +/* reuse GL_TEXTURE_VIEW_NUM_LAYERS */ +/* reuse GL_TEXTURE_IMMUTABLE_LEVELS */ +/* Reuse tokens from ARB_vertex_attrib_binding */ +/* reuse GL_VERTEX_ATTRIB_BINDING */ +/* reuse GL_VERTEX_ATTRIB_RELATIVE_OFFSET */ +/* reuse GL_VERTEX_BINDING_DIVISOR */ +/* reuse GL_VERTEX_BINDING_OFFSET */ +/* reuse GL_VERTEX_BINDING_STRIDE */ +/* reuse GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET */ +/* reuse GL_MAX_VERTEX_ATTRIB_BINDINGS */ +#endif + #ifndef GL_ARB_multitexture #define GL_TEXTURE0_ARB 0x84C0 #define GL_TEXTURE1_ARB 0x84C1 @@ -1751,9 +2011,6 @@ extern "C" { #define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 #define GL_MAX_SAMPLES 0x8D57 -#endif - -#ifndef GL_ARB_framebuffer_object_DEPRECATED #define GL_INDEX 0x8222 #define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 #define GL_TEXTURE_INTENSITY_TYPE 0x8C15 @@ -1985,6 +2242,7 @@ extern "C" { #ifndef GL_ARB_texture_gather #define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E #define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F #endif #ifndef GL_ARB_texture_query_lod @@ -2162,6 +2420,7 @@ extern "C" { #define GL_MEDIUM_INT 0x8DF4 #define GL_HIGH_INT 0x8DF5 #define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 #define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 #define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB #define GL_MAX_VARYING_VECTORS 0x8DFC @@ -2404,6 +2663,386 @@ extern "C" { #define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F #endif +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#endif + +#ifndef GL_KHR_debug +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_QUERY 0x82E3 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_SAMPLER 0x82E6 +#define GL_DISPLAY_LIST 0x82E7 +/* DISPLAY_LIST used in compatibility profile only */ +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +/* reuse GL_STACK_UNDERFLOW */ +/* reuse GL_STACK_OVERFLOW */ +#endif + +#ifndef GL_ARB_arrays_of_arrays +#endif + +#ifndef GL_ARB_clear_buffer_object +#endif + +#ifndef GL_ARB_compute_shader +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB +#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 +#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 +#define GL_MAX_COMPUTE_LOCAL_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_COMPUTE_LOCAL_WORK_SIZE 0x8267 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#endif + +#ifndef GL_ARB_copy_image +#endif + +#ifndef GL_ARB_texture_view +#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#endif + +#ifndef GL_ARB_vertex_attrib_binding +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#endif + +#ifndef GL_ARB_robustness_isolation +#endif + +#ifndef GL_ARB_ES3_compatibility +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#endif + +#ifndef GL_ARB_explicit_uniform_location +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#endif + +#ifndef GL_ARB_fragment_layer_viewport +#endif + +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 +#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 +#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 +#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 +#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 +#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 +#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 +#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 +#endif + +#ifndef GL_ARB_internalformat_query2 +/* reuse GL_IMAGE_FORMAT_COMPATIBILITY_TYPE */ +/* reuse GL_NUM_SAMPLE_COUNTS */ +/* reuse GL_RENDERBUFFER */ +/* reuse GL_SAMPLES */ +/* reuse GL_TEXTURE_1D */ +/* reuse GL_TEXTURE_1D_ARRAY */ +/* reuse GL_TEXTURE_2D */ +/* reuse GL_TEXTURE_2D_ARRAY */ +/* reuse GL_TEXTURE_3D */ +/* reuse GL_TEXTURE_CUBE_MAP */ +/* reuse GL_TEXTURE_CUBE_MAP_ARRAY */ +/* reuse GL_TEXTURE_RECTANGLE */ +/* reuse GL_TEXTURE_BUFFER */ +/* reuse GL_TEXTURE_2D_MULTISAMPLE */ +/* reuse GL_TEXTURE_2D_MULTISAMPLE_ARRAY */ +/* reuse GL_TEXTURE_COMPRESSED */ +#define GL_INTERNALFORMAT_SUPPORTED 0x826F +#define GL_INTERNALFORMAT_PREFERRED 0x8270 +#define GL_INTERNALFORMAT_RED_SIZE 0x8271 +#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 +#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 +#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 +#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 +#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 +#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 +#define GL_INTERNALFORMAT_RED_TYPE 0x8278 +#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 +#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A +#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B +#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C +#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D +#define GL_MAX_WIDTH 0x827E +#define GL_MAX_HEIGHT 0x827F +#define GL_MAX_DEPTH 0x8280 +#define GL_MAX_LAYERS 0x8281 +#define GL_MAX_COMBINED_DIMENSIONS 0x8282 +#define GL_COLOR_COMPONENTS 0x8283 +#define GL_DEPTH_COMPONENTS 0x8284 +#define GL_STENCIL_COMPONENTS 0x8285 +#define GL_COLOR_RENDERABLE 0x8286 +#define GL_DEPTH_RENDERABLE 0x8287 +#define GL_STENCIL_RENDERABLE 0x8288 +#define GL_FRAMEBUFFER_RENDERABLE 0x8289 +#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A +#define GL_FRAMEBUFFER_BLEND 0x828B +#define GL_READ_PIXELS 0x828C +#define GL_READ_PIXELS_FORMAT 0x828D +#define GL_READ_PIXELS_TYPE 0x828E +#define GL_TEXTURE_IMAGE_FORMAT 0x828F +#define GL_TEXTURE_IMAGE_TYPE 0x8290 +#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 +#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 +#define GL_MIPMAP 0x8293 +#define GL_MANUAL_GENERATE_MIPMAP 0x8294 +#define GL_AUTO_GENERATE_MIPMAP 0x8295 +#define GL_COLOR_ENCODING 0x8296 +#define GL_SRGB_READ 0x8297 +#define GL_SRGB_WRITE 0x8298 +#define GL_SRGB_DECODE_ARB 0x8299 +#define GL_FILTER 0x829A +#define GL_VERTEX_TEXTURE 0x829B +#define GL_TESS_CONTROL_TEXTURE 0x829C +#define GL_TESS_EVALUATION_TEXTURE 0x829D +#define GL_GEOMETRY_TEXTURE 0x829E +#define GL_FRAGMENT_TEXTURE 0x829F +#define GL_COMPUTE_TEXTURE 0x82A0 +#define GL_TEXTURE_SHADOW 0x82A1 +#define GL_TEXTURE_GATHER 0x82A2 +#define GL_TEXTURE_GATHER_SHADOW 0x82A3 +#define GL_SHADER_IMAGE_LOAD 0x82A4 +#define GL_SHADER_IMAGE_STORE 0x82A5 +#define GL_SHADER_IMAGE_ATOMIC 0x82A6 +#define GL_IMAGE_TEXEL_SIZE 0x82A7 +#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 +#define GL_IMAGE_PIXEL_FORMAT 0x82A9 +#define GL_IMAGE_PIXEL_TYPE 0x82AA +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF +#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 +#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 +#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 +#define GL_CLEAR_BUFFER 0x82B4 +#define GL_TEXTURE_VIEW 0x82B5 +#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 +#define GL_FULL_SUPPORT 0x82B7 +#define GL_CAVEAT_SUPPORT 0x82B8 +#define GL_IMAGE_CLASS_4_X_32 0x82B9 +#define GL_IMAGE_CLASS_2_X_32 0x82BA +#define GL_IMAGE_CLASS_1_X_32 0x82BB +#define GL_IMAGE_CLASS_4_X_16 0x82BC +#define GL_IMAGE_CLASS_2_X_16 0x82BD +#define GL_IMAGE_CLASS_1_X_16 0x82BE +#define GL_IMAGE_CLASS_4_X_8 0x82BF +#define GL_IMAGE_CLASS_2_X_8 0x82C0 +#define GL_IMAGE_CLASS_1_X_8 0x82C1 +#define GL_IMAGE_CLASS_11_11_10 0x82C2 +#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 +#define GL_VIEW_CLASS_128_BITS 0x82C4 +#define GL_VIEW_CLASS_96_BITS 0x82C5 +#define GL_VIEW_CLASS_64_BITS 0x82C6 +#define GL_VIEW_CLASS_48_BITS 0x82C7 +#define GL_VIEW_CLASS_32_BITS 0x82C8 +#define GL_VIEW_CLASS_24_BITS 0x82C9 +#define GL_VIEW_CLASS_16_BITS 0x82CA +#define GL_VIEW_CLASS_8_BITS 0x82CB +#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC +#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD +#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE +#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF +#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 +#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 +#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 +#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 +#endif + +#ifndef GL_ARB_invalidate_subdata +#endif + +#ifndef GL_ARB_multi_draw_indirect +#endif + +#ifndef GL_ARB_program_interface_query +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_BLOCK 0x92E2 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_SHADER_STORAGE_BLOCK 0x92E6 +/* reuse GL_ATOMIC_COUNTER_BUFFER */ +#define GL_VERTEX_SUBROUTINE 0x92E8 +#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 +#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA +#define GL_GEOMETRY_SUBROUTINE 0x92EB +#define GL_FRAGMENT_SUBROUTINE 0x92EC +#define GL_COMPUTE_SUBROUTINE 0x92ED +#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE +#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF +#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 +#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 +#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 +#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_ACTIVE_RESOURCES 0x92F5 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 +#define GL_NAME_LENGTH 0x92F9 +#define GL_TYPE 0x92FA +#define GL_ARRAY_SIZE 0x92FB +#define GL_OFFSET 0x92FC +#define GL_BLOCK_INDEX 0x92FD +#define GL_ARRAY_STRIDE 0x92FE +#define GL_MATRIX_STRIDE 0x92FF +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_ACTIVE_VARIABLES 0x9305 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 +#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_LOCATION 0x930E +#define GL_LOCATION_INDEX 0x930F +#define GL_IS_PER_PATCH 0x92E7 +/* reuse GL_NUM_COMPATIBLE_SUBROUTINES */ +/* reuse GL_COMPATIBLE_SUBROUTINES */ +#endif + +#ifndef GL_ARB_robust_buffer_access_behavior +#endif + +#ifndef GL_ARB_shader_image_size +#endif + +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_SHADER_STORAGE_BUFFER 0x90D2 +#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 +#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 +#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 +#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA +#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF +#define GL_SHADER_STORAGE_BARRIER_BIT 0x2000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS +/* reuse GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS */ +#endif + +#ifndef GL_ARB_stencil_texturing +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#endif + +#ifndef GL_ARB_texture_buffer_range +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#endif + +#ifndef GL_ARB_texture_query_levels +#endif + +#ifndef GL_ARB_texture_storage_multisample +#endif + #ifndef GL_EXT_abgr #define GL_ABGR_EXT 0x8000 #endif @@ -4260,6 +4899,8 @@ extern "C" { #define GL_RGB4_S3TC 0x83A1 #define GL_RGBA_S3TC 0x83A2 #define GL_RGBA4_S3TC 0x83A3 +#define GL_RGBA_DXT5_S3TC 0x83A4 +#define GL_RGBA4_DXT5_S3TC 0x83A5 #endif #ifndef GL_ATI_draw_buffers @@ -4283,7 +4924,7 @@ extern "C" { #endif #ifndef GL_ATI_pixel_format_float -#define GL_TYPE_RGBA_FLOAT_ATI 0x8820 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 #define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 #endif @@ -4743,7 +5384,7 @@ extern "C" { #define GL_PRIMITIVES_GENERATED_NV 0x8C87 #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 #define GL_RASTERIZER_DISCARD_NV 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B #define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C #define GL_SEPARATE_ATTRIBS_NV 0x8C8D @@ -5260,6 +5901,7 @@ extern "C" { #endif #ifndef GL_AMD_debug_output +#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 #define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 #define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 #define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 @@ -5489,6 +6131,18 @@ extern "C" { #define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 #endif +#ifndef GL_AMD_sparse_texture +#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A +#define GL_MIN_SPARSE_LEVEL_AMD 0x919B +#define GL_MIN_LOD_WARNING_AMD 0x919C +#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 +#endif + /*************************************************************/ @@ -5588,6 +6242,10 @@ typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLen typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); #endif +#ifndef GL_KHR_debug +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); +#endif + #ifndef GL_NV_vdpau_interop typedef GLintptr GLvdpauSurfaceNV; #endif @@ -5601,18 +6259,6 @@ GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#endif - -#ifndef GL_VERSION_1_2_DEPRECATED -#define GL_VERSION_1_2_DEPRECATED 1 -#ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params); GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params); @@ -5646,6 +6292,12 @@ GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean si GLAPI void APIENTRY glResetHistogram (GLenum target); GLAPI void APIENTRY glResetMinmax (GLenum target); #endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); @@ -5692,21 +6344,6 @@ GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); -#endif - -#ifndef GL_VERSION_1_3_DEPRECATED -#define GL_VERSION_1_3_DEPRECATED 1 -#ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glClientActiveTexture (GLenum texture); GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s); GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v); @@ -5745,6 +6382,15 @@ GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m); GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m); GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m); #endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); @@ -5788,25 +6434,12 @@ typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); #define GL_VERSION_1_4 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); -GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount); +GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param); GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params); GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param); GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); -#endif - -#ifndef GL_VERSION_1_4_DEPRECATED -#define GL_VERSION_1_4_DEPRECATED 1 -#ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFogCoordf (GLfloat coord); GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord); GLAPI void APIENTRY glFogCoordd (GLdouble coord); @@ -5846,6 +6479,13 @@ GLAPI void APIENTRY glWindowPos3iv (const GLint *v); GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z); GLAPI void APIENTRY glWindowPos3sv (const GLshort *v); #endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord); typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord); typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord); @@ -6272,13 +6912,13 @@ typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint ind /* ARB_copy_buffer */ /* ARB_uniform_buffer_object */ #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer); GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); #endif @@ -6373,6 +7013,33 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, /* ARB_texture_storage */ #endif +#ifndef GL_VERSION_4_3 +#define GL_VERSION_4_3 1 +/* OpenGL 4.3 reuses entry points from these extensions: */ +/* ARB_arrays_of_arrays (no entry points, GLSL only) */ +/* ARB_fragment_layer_viewport (no entry points, GLSL only) */ +/* ARB_shader_image_size (no entry points, GLSL only) */ +/* ARB_ES3_compatibility (no entry points) */ +/* ARB_clear_buffer_object */ +/* ARB_compute_shader */ +/* ARB_copy_image */ +/* KHR_debug (includes ARB_debug_output commands promoted to KHR without suffixes) */ +/* ARB_explicit_uniform_location (no entry points) */ +/* ARB_framebuffer_no_attachments */ +/* ARB_internalformat_query2 */ +/* ARB_invalidate_subdata */ +/* ARB_multi_draw_indirect */ +/* ARB_program_interface_query */ +/* ARB_robust_buffer_access_behavior (no entry points) */ +/* ARB_shader_storage_buffer_object */ +/* ARB_stencil_texturing (no entry points) */ +/* ARB_texture_buffer_range */ +/* ARB_texture_query_levels (no entry points) */ +/* ARB_texture_storage_multisample */ +/* ARB_texture_view */ +/* ARB_vertex_attrib_binding */ +#endif + #ifndef GL_ARB_multitexture #define GL_ARB_multitexture 1 #ifdef GL_GLEXT_PROTOTYPES @@ -7127,13 +7794,13 @@ typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum w #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex); -GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, const GLint *basevertex); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); +GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, const GLint *basevertex); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); #endif #ifndef GL_ARB_fragment_coord_conventions @@ -7811,13 +8478,13 @@ typedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint locati #ifndef GL_ARB_base_instance #define GL_ARB_base_instance 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance); -GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance); -GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance); +GLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLuint baseinstance); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); #endif #ifndef GL_ARB_shading_language_420pack @@ -7827,11 +8494,11 @@ typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (G #ifndef GL_ARB_transform_feedback_instanced #define GL_ARB_transform_feedback_instanced 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei primcount); -GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei primcount); +GLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount); +GLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei primcount); -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei primcount); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); #endif #ifndef GL_ARB_compressed_texture_pixel_storage @@ -7894,6 +8561,242 @@ typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum ta typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); #endif +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam); +GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GLAPI void APIENTRY glPopDebugGroup (void); +GLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label); +GLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void); +typedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif + +#ifndef GL_ARB_arrays_of_arrays +#define GL_ARB_arrays_of_arrays 1 +#endif + +#ifndef GL_ARB_clear_buffer_object +#define GL_ARB_clear_buffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data); +#endif + +#ifndef GL_ARB_compute_shader +#define GL_ARB_compute_shader 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +GLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +typedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); +#endif + +#ifndef GL_ARB_copy_image +#define GL_ARB_copy_image 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +#endif + +#ifndef GL_ARB_texture_view +#define GL_ARB_texture_view 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif + +#ifndef GL_ARB_vertex_attrib_binding +#define GL_ARB_vertex_attrib_binding 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex); +GLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor); +GLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); +typedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); +typedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); +typedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); +#endif + +#ifndef GL_ARB_robustness_isolation +#define GL_ARB_robustness_isolation 1 +#endif + +#ifndef GL_ARB_ES3_compatibility +#define GL_ARB_ES3_compatibility 1 +#endif + +#ifndef GL_ARB_explicit_uniform_location +#define GL_ARB_explicit_uniform_location 1 +#endif + +#ifndef GL_ARB_fragment_layer_viewport +#define GL_ARB_fragment_layer_viewport 1 +#endif + +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_ARB_framebuffer_no_attachments 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param); +GLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param); +GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param); +typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); +#endif + +#ifndef GL_ARB_internalformat_query2 +#define GL_ARB_internalformat_query2 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); +#endif + +#ifndef GL_ARB_invalidate_subdata +#define GL_ARB_invalidate_subdata 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +GLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level); +GLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length); +GLAPI void APIENTRY glInvalidateBufferData (GLuint buffer); +GLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments); +GLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +typedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); +typedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); +typedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +typedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); +#endif + +#ifndef GL_ARB_multi_draw_indirect +#define GL_ARB_multi_draw_indirect 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#endif + +#ifndef GL_ARB_program_interface_query +#define GL_ARB_program_interface_query 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params); +GLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name); +GLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); +GLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name); +GLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params); +typedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +typedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); +typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name); +#endif + +#ifndef GL_ARB_robust_buffer_access_behavior +#define GL_ARB_robust_buffer_access_behavior 1 +#endif + +#ifndef GL_ARB_shader_image_size +#define GL_ARB_shader_image_size 1 +#endif + +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_ARB_shader_storage_buffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +#endif + +#ifndef GL_ARB_stencil_texturing +#define GL_ARB_stencil_texturing 1 +#endif + +#ifndef GL_ARB_texture_buffer_range +#define GL_ARB_texture_buffer_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +typedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif + +#ifndef GL_ARB_texture_query_levels +#define GL_ARB_texture_query_levels 1 +#endif + +#ifndef GL_ARB_texture_storage_multisample +#define GL_ARB_texture_storage_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +typedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#endif + #ifndef GL_EXT_abgr #define GL_EXT_abgr 1 #endif @@ -8635,11 +9538,15 @@ GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param); GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params); GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params); +GLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); #endif #ifndef GL_EXT_pixel_transform_color_table @@ -8991,11 +9898,11 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLen #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight); GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight); -GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); +GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); #endif #ifndef GL_NV_light_max_exponent @@ -10059,10 +10966,10 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, c #ifndef GL_NV_pixel_data_range #define GL_NV_pixel_data_range 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, GLvoid *pointer); +GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const GLvoid *pointer); GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer); +typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const GLvoid *pointer); typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); #endif @@ -11571,7 +12478,7 @@ typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVDPAUInitNV (const GLvoid *vdpDevice, const GLvoid *getProcAddress); GLAPI void APIENTRY glVDPAUFiniNV (void); -GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface); GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface); @@ -11582,7 +12489,7 @@ GLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSur #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const GLvoid *vdpDevice, const GLvoid *getProcAddress); typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void); -typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); typedef void (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); @@ -11820,6 +12727,16 @@ typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle) #define GL_AMD_query_buffer_object 1 #endif +#ifndef GL_AMD_sparse_texture +#define GL_AMD_sparse_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +GLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +#endif + #ifdef __cplusplus } -- cgit v1.2.3 From cb8bfeafac537fd8b985eded4b4a0b2adba28b7e Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 20 Feb 2013 13:56:14 +0100 Subject: Drop the unused qcgl_createGlContext function Change-Id: I09286388e9af7ec472b394be87204746f8ae22b1 Reviewed-by: James Turner Reviewed-by: Gunnar Sletta --- src/platformsupport/cglconvenience/cglconvenience.mm | 10 ---------- src/platformsupport/cglconvenience/cglconvenience_p.h | 1 - 2 files changed, 11 deletions(-) (limited to 'src') diff --git a/src/platformsupport/cglconvenience/cglconvenience.mm b/src/platformsupport/cglconvenience/cglconvenience.mm index b0ea2d2225..81e8870ade 100644 --- a/src/platformsupport/cglconvenience/cglconvenience.mm +++ b/src/platformsupport/cglconvenience/cglconvenience.mm @@ -125,13 +125,3 @@ void *qcgl_createNSOpenGLPixelFormat(const QSurfaceFormat &format) NSOpenGLPixelFormat* pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs.constData()]; return pixelFormat; } - -CGLContextObj qcgl_createGlContext() -{ - CGLContextObj context; - NSOpenGLPixelFormat *format = reinterpret_cast(qcgl_createNSOpenGLPixelFormat(qcgl_surfaceFormat())); - CGLPixelFormatObj cglFormat = static_cast([format CGLPixelFormatObj]); - CGLCreateContext(cglFormat ,NULL, &context); - return context; -} - diff --git a/src/platformsupport/cglconvenience/cglconvenience_p.h b/src/platformsupport/cglconvenience/cglconvenience_p.h index bd2de0abc0..82842a78f0 100644 --- a/src/platformsupport/cglconvenience/cglconvenience_p.h +++ b/src/platformsupport/cglconvenience/cglconvenience_p.h @@ -49,6 +49,5 @@ void (*qcgl_getProcAddress(const QByteArray &procName))(); QSurfaceFormat qcgl_surfaceFormat(); void *qcgl_createNSOpenGLPixelFormat(const QSurfaceFormat &format); -CGLContextObj qcgl_createGlContext(); #endif // QMACGLCONVENIENCE_H -- cgit v1.2.3 From 3b5600f6ee9f2982c5a93250e577f87a34fe32d1 Mon Sep 17 00:00:00 2001 From: Keith Gardner Date: Fri, 28 Dec 2012 16:35:39 -0600 Subject: QStringRef: Added toInt(), toUInt(), etc... functions to QStringRef. Added the following functions to QStringRef: toShort, toUShort, toInt, toUInt, toLong, toULong, toLongLong, toULongLong, toFloat, and toDouble. These functions use the corresponding functions found in QLocale. Updated tst_qstringref.cpp to exercise the new functionality. Change-Id: I38668a0cc7da0c101a62613fd16cb5a98286617f Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- src/corelib/tools/qstring.cpp | 319 ++++++++++++++++++++++++++++++++++++++++++ src/corelib/tools/qstring.h | 10 ++ 2 files changed, 329 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 0be0a84459..bbe7628d38 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -9225,6 +9225,325 @@ QStringRef QStringRef::trimmed() const return QStringRef(m_string, m_position + start, l); } +/*! + Returns the string converted to a \c{long long} using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toLongLong() + + \sa QString::toLongLong() + + \since 5.1 +*/ + +qint64 QStringRef::toLongLong(bool *ok, int base) const +{ +#if defined(QT_CHECK_RANGE) + if (base != 0 && (base < 2 || base > 36)) { + qWarning("QString::toLongLong: Invalid base (%d)", base); + base = 10; + } +#endif + + QLocale c_locale(QLocale::C); + return c_locale.d->stringToLongLong(*this, base, ok, QLocalePrivate::FailOnGroupSeparators); +} + +/*! + Returns the string converted to an \c{unsigned long long} using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toULongLong() + + \sa QString::toULongLong() + + \since 5.1 +*/ + +quint64 QStringRef::toULongLong(bool *ok, int base) const +{ +#if defined(QT_CHECK_RANGE) + if (base != 0 && (base < 2 || base > 36)) { + qWarning("QString::toULongLong: Invalid base (%d)", base); + base = 10; + } +#endif + + QLocale c_locale(QLocale::C); + return c_locale.d->stringToUnsLongLong(*this, base, ok, QLocalePrivate::FailOnGroupSeparators); +} + +/*! + \fn long QStringRef::toLong(bool *ok, int base) const + + Returns the string converted to a \c long using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toLong() + + \sa QString::toLong() + + \since 5.1 +*/ + +long QStringRef::toLong(bool *ok, int base) const +{ + qint64 v = toLongLong(ok, base); + if (v < LONG_MIN || v > LONG_MAX) { + if (ok) + *ok = false; + v = 0; + } + return long(v); +} + +/*! + \fn ulong QStringRef::toULong(bool *ok, int base) const + + Returns the string converted to an \c{unsigned long} using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toULong() + + \sa QString::toULong() + + \since 5.1 +*/ + +ulong QStringRef::toULong(bool *ok, int base) const +{ + quint64 v = toULongLong(ok, base); + if (v > ULONG_MAX) { + if (ok) + *ok = false; + v = 0; + } + return ulong(v); +} + + +/*! + Returns the string converted to an \c int using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toInt() + + \sa QString::toInt() + + \since 5.1 +*/ + +int QStringRef::toInt(bool *ok, int base) const +{ + qint64 v = toLongLong(ok, base); + if (v < INT_MIN || v > INT_MAX) { + if (ok) + *ok = false; + v = 0; + } + return int(v); +} + +/*! + Returns the string converted to an \c{unsigned int} using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toUInt() + + \sa QString::toUInt() + + \since 5.1 +*/ + +uint QStringRef::toUInt(bool *ok, int base) const +{ + quint64 v = toULongLong(ok, base); + if (v > UINT_MAX) { + if (ok) + *ok = false; + v = 0; + } + return uint(v); +} + +/*! + Returns the string converted to a \c short using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toShort() + + \sa QString::toShort() + + \since 5.1 +*/ + +short QStringRef::toShort(bool *ok, int base) const +{ + long v = toLongLong(ok, base); + if (v < SHRT_MIN || v > SHRT_MAX) { + if (ok) + *ok = false; + v = 0; + } + return short(v); +} + +/*! + Returns the string converted to an \c{unsigned short} using base \a + base, which is 10 by default and must be between 2 and 36, or 0. + Returns 0 if the conversion fails. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. + + If \a base is 0, the C language convention is used: If the string + begins with "0x", base 16 is used; if the string begins with "0", + base 8 is used; otherwise, base 10 is used. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toUShort() + + \sa QString::toUShort() + + \since 5.1 +*/ + +ushort QStringRef::toUShort(bool *ok, int base) const +{ + ulong v = toULongLong(ok, base); + if (v > USHRT_MAX) { + if (ok) + *ok = false; + v = 0; + } + return ushort(v); +} + + +/*! + Returns the string converted to a \c double value. + + Returns 0.0 if the conversion fails. + + If a conversion error occurs, \c{*}\a{ok} is set to false; + otherwise \c{*}\a{ok} is set to true. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toDouble() + + For historic reasons, this function does not handle + thousands group separators. If you need to convert such numbers, + use QLocale::toDouble(). + + \sa QString::toDouble() + + \since 5.1 +*/ + +double QStringRef::toDouble(bool *ok) const +{ + QLocale c_locale(QLocale::C); + return c_locale.d->stringToDouble(*this, ok, QLocalePrivate::FailOnGroupSeparators); +} + +/*! + Returns the string converted to a \c float value. + + If a conversion error occurs, *\a{ok} is set to false; otherwise + *\a{ok} is set to true. Returns 0.0 if the conversion fails. + + The string conversion will always happen in the 'C' locale. For locale + dependent conversion use QLocale::toFloat() + + \sa QString::toFloat() + + \since 5.1 +*/ + +float QStringRef::toFloat(bool *ok) const +{ + bool myOk; + double d = toDouble(&myOk); + if (!myOk) { + if (ok != 0) + *ok = false; + return 0.0; + } + if (qIsInf(d)) + return float(d); + if (d > QT_MAX_FLOAT || d < -QT_MAX_FLOAT) { + if (ok != 0) + *ok = false; + return 0.0; + } + if (ok) + *ok = true; + return float(d); +} + /*! \obsolete \fn QString Qt::escape(const QString &plain) diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index 9cde603c0b..d152e6795e 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -1279,6 +1279,16 @@ public: static int localeAwareCompare(const QStringRef &s1, const QStringRef &s2); QStringRef trimmed() const Q_REQUIRED_RESULT; + short toShort(bool *ok = 0, int base = 10) const; + ushort toUShort(bool *ok = 0, int base = 10) const; + int toInt(bool *ok = 0, int base = 10) const; + uint toUInt(bool *ok = 0, int base = 10) const; + long toLong(bool *ok = 0, int base = 10) const; + ulong toULong(bool *ok = 0, int base = 10) const; + qlonglong toLongLong(bool *ok = 0, int base = 10) const; + qulonglong toULongLong(bool *ok = 0, int base = 10) const; + float toFloat(bool *ok = 0) const; + double toDouble(bool *ok = 0) const; }; Q_DECLARE_TYPEINFO(QStringRef, Q_PRIMITIVE_TYPE); -- cgit v1.2.3 From 0575baac5e21cbe38a6ceabaa6b17862cbfee7d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 1 Nov 2012 22:22:56 +0100 Subject: Don't link QtPlatformSupport to CoreFoundation or Carbon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move the Carbon dependency to the Cocoa platform plugin instead, where it's actually used. CoreFoundation was not used by any plugins and could be removed completely. Change-Id: I1c825cdf94e2cc348ea13519b894fd868be0d14a Reviewed-by: Morten Johan Sørvig --- src/platformsupport/platformsupport.pro | 2 +- src/plugins/platforms/cocoa/cocoa.pro | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/platformsupport/platformsupport.pro b/src/platformsupport/platformsupport.pro index 57d9b422f4..469c76ffae 100644 --- a/src/platformsupport/platformsupport.pro +++ b/src/platformsupport/platformsupport.pro @@ -2,7 +2,7 @@ TARGET = QtPlatformSupport QT = core-private gui-private CONFIG += static internal_module -mac:LIBS += -lz -framework CoreFoundation -framework Carbon +mac:LIBS += -lz load(qt_module) diff --git a/src/plugins/platforms/cocoa/cocoa.pro b/src/plugins/platforms/cocoa/cocoa.pro index 83e2a88e6a..6ed26f9e6c 100644 --- a/src/plugins/platforms/cocoa/cocoa.pro +++ b/src/plugins/platforms/cocoa/cocoa.pro @@ -78,7 +78,7 @@ HEADERS += qcocoaintegration.h \ RESOURCES += qcocoaresources.qrc -LIBS += -framework Cocoa -framework IOKit +LIBS += -framework Cocoa -framework Carbon -framework IOKit QT += core-private gui-private platformsupport-private -- cgit v1.2.3 From 7e5750101699a408356439126649e8f49010d1df Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 20 Feb 2013 14:00:52 +0100 Subject: Enforce OpenGL context creation under Cocoa We don't support other context types, so fail in those cases. Also, return OpenGL as the rendereable type of our surface. Change-Id: I3d5632eb8555d73ed14837b662c7450589a8681f Reviewed-by: Gunnar Sletta --- src/platformsupport/cglconvenience/cglconvenience.mm | 1 + src/plugins/platforms/cocoa/qcocoaglcontext.mm | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/platformsupport/cglconvenience/cglconvenience.mm b/src/platformsupport/cglconvenience/cglconvenience.mm index 81e8870ade..12ae5965df 100644 --- a/src/platformsupport/cglconvenience/cglconvenience.mm +++ b/src/platformsupport/cglconvenience/cglconvenience.mm @@ -61,6 +61,7 @@ void (*qcgl_getProcAddress(const QByteArray &procName))() QSurfaceFormat qcgl_surfaceFormat() { QSurfaceFormat format; + format.setRenderableType(QSurfaceFormat::OpenGL); format.setRedBufferSize(8); format.setGreenBufferSize(8); format.setBlueBufferSize(8); diff --git a/src/plugins/platforms/cocoa/qcocoaglcontext.mm b/src/plugins/platforms/cocoa/qcocoaglcontext.mm index d0f5a58e22..6c2fdf5470 100644 --- a/src/plugins/platforms/cocoa/qcocoaglcontext.mm +++ b/src/plugins/platforms/cocoa/qcocoaglcontext.mm @@ -49,11 +49,19 @@ #import QCocoaGLContext::QCocoaGLContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share) - : m_format(format) + : m_context(nil), + m_shareContext(nil), + m_format(format) { + // we only support OpenGL contexts under Cocoa + if (m_format.renderableType() == QSurfaceFormat::DefaultRenderableType) + m_format.setRenderableType(QSurfaceFormat::OpenGL); + if (m_format.renderableType() != QSurfaceFormat::OpenGL) + return; + QCocoaAutoReleasePool pool; // For the SG Canvas render thread - NSOpenGLPixelFormat *pixelFormat = static_cast (qcgl_createNSOpenGLPixelFormat(format)); + NSOpenGLPixelFormat *pixelFormat = static_cast (qcgl_createNSOpenGLPixelFormat(m_format)); m_shareContext = share ? static_cast(share)->nsOpenGLContext() : nil; m_context = [NSOpenGLContext alloc]; -- cgit v1.2.3 From f2b26af2b4db25aeb74279a40365b76f0406a018 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 20 Feb 2013 14:00:52 +0100 Subject: Enforce OpenGL context creation under XCB MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We don't support other context types, so fail in those cases. Also, return OpenGL as the rendereable type of our surface. Change-Id: Ic7b5ed0ec5eaf5c0f88f50f5bceb697ea414c696 Reviewed-by: Samuel Rødal Reviewed-by: Gunnar Sletta --- src/platformsupport/glxconvenience/qglxconvenience.cpp | 2 ++ src/plugins/platforms/xcb/qglxintegration.cpp | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/platformsupport/glxconvenience/qglxconvenience.cpp b/src/platformsupport/glxconvenience/qglxconvenience.cpp index e885ecc105..9ce74f55fe 100644 --- a/src/platformsupport/glxconvenience/qglxconvenience.cpp +++ b/src/platformsupport/glxconvenience/qglxconvenience.cpp @@ -224,6 +224,8 @@ XVisualInfo *qglx_findVisualInfo(Display *display, int screen, QSurfaceFormat *f QSurfaceFormat qglx_surfaceFormatFromGLXFBConfig(Display *display, GLXFBConfig config, GLXContext) { QSurfaceFormat format; + format.setRenderableType(QSurfaceFormat::OpenGL); + int redSize = 0; int greenSize = 0; int blueSize = 0; diff --git a/src/plugins/platforms/xcb/qglxintegration.cpp b/src/plugins/platforms/xcb/qglxintegration.cpp index 854f7bcd17..db942fc3ad 100644 --- a/src/plugins/platforms/xcb/qglxintegration.cpp +++ b/src/plugins/platforms/xcb/qglxintegration.cpp @@ -270,14 +270,19 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat : QPlatformOpenGLContext() , m_screen(screen) , m_context(0) + , m_shareContext(0) , m_format(format) , m_isPBufferCurrent(false) { - m_shareContext = 0; + if (m_format.renderableType() == QSurfaceFormat::DefaultRenderableType) + m_format.setRenderableType(QSurfaceFormat::OpenGL); + if (m_format.renderableType() != QSurfaceFormat::OpenGL) + return; + if (share) m_shareContext = static_cast(share)->glxContext(); - GLXFBConfig config = qglx_findConfig(DISPLAY_FROM_XCB(screen),screen->screenNumber(),format); + GLXFBConfig config = qglx_findConfig(DISPLAY_FROM_XCB(screen),screen->screenNumber(),m_format); XVisualInfo *visualInfo = 0; Window window = 0; // Temporary window used to query OpenGL context @@ -297,7 +302,7 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat // context format that that which was requested and is supported by the driver const int maxSupportedVersion = (defaultContextInfo->format.majorVersion() << 8) + defaultContextInfo->format.minorVersion(); - const int requestedVersion = qMin((format.majorVersion() << 8) + format.minorVersion(), + const int requestedVersion = qMin((m_format.majorVersion() << 8) + m_format.minorVersion(), maxSupportedVersion); const int majorVersion = requestedVersion >> 8; const int minorVersion = requestedVersion & 0xFF; -- cgit v1.2.3 From 7e3ee5400ee13796d045879a5bc9d0be23b1b8ff Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 20 Feb 2013 14:00:52 +0100 Subject: Enforce OpenGL context creation under Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We don't support other context types, so fail in those cases. Also, return OpenGL as the rendereable type of our surface. Change-Id: I22792a913b78b837da3d27cef69145076579b949 Reviewed-by: Samuel Rødal Reviewed-by: Gunnar Sletta Reviewed-by: Friedemann Kleint --- src/plugins/platforms/windows/qwindowsglcontext.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsglcontext.cpp b/src/plugins/platforms/windows/qwindowsglcontext.cpp index 081b42ce65..6f59b33e62 100644 --- a/src/plugins/platforms/windows/qwindowsglcontext.cpp +++ b/src/plugins/platforms/windows/qwindowsglcontext.cpp @@ -232,6 +232,7 @@ static QSurfaceFormat QWindowsOpenGLAdditionalFormat *additionalIn = 0) { QSurfaceFormat format; + format.setRenderableType(QSurfaceFormat::OpenGL); if (pfd.dwFlags & PFD_DOUBLEBUFFER) format.setSwapBehavior(QSurfaceFormat::DoubleBuffer); format.setDepthBufferSize(pfd.cDepthBits); @@ -500,6 +501,7 @@ static QSurfaceFormat enum { attribSize =40 }; QSurfaceFormat result; + result.setRenderableType(QSurfaceFormat::OpenGL); if (!staticContext.hasExtensions()) return result; int iAttributes[attribSize]; @@ -875,6 +877,12 @@ QWindowsGLContext::QWindowsGLContext(const QOpenGLStaticContextPtr &staticContex m_renderingContext(0), m_pixelFormat(0), m_extensionsUsed(false) { + QSurfaceFormat format = context->format(); + if (format.renderableType() == QSurfaceFormat::DefaultRenderableType) + format.setRenderableType(QSurfaceFormat::OpenGL); + if (format.renderableType() != QSurfaceFormat::OpenGL) + return; + // workaround for matrox driver: // make a cheap call to opengl to force loading of DLL static bool opengl32dll = false; @@ -912,7 +920,7 @@ QWindowsGLContext::QWindowsGLContext(const QOpenGLStaticContextPtr &staticContex QWindowsOpenGLAdditionalFormat obtainedAdditional; if (tryExtensions) { m_pixelFormat = - ARB::choosePixelFormat(hdc, *m_staticContext, context->format(), + ARB::choosePixelFormat(hdc, *m_staticContext, format, requestedAdditional, &m_obtainedPixelFormatDescriptor); if (m_pixelFormat > 0) { m_obtainedFormat = @@ -922,7 +930,7 @@ QWindowsGLContext::QWindowsGLContext(const QOpenGLStaticContextPtr &staticContex } } // tryExtensions if (!m_pixelFormat) { // Failed, try GDI - m_pixelFormat = GDI::choosePixelFormat(hdc, context->format(), requestedAdditional, + m_pixelFormat = GDI::choosePixelFormat(hdc, format, requestedAdditional, &m_obtainedPixelFormatDescriptor); if (m_pixelFormat) m_obtainedFormat = @@ -945,7 +953,7 @@ QWindowsGLContext::QWindowsGLContext(const QOpenGLStaticContextPtr &staticContex if (m_extensionsUsed) m_renderingContext = ARB::createContext(*m_staticContext, hdc, - context->format(), + format, requestedAdditional, sharingRenderingContext); if (!m_renderingContext) -- cgit v1.2.3 From 0077b5f30de7190227317247609c820f37466960 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 21 Feb 2013 16:07:46 +0100 Subject: Pass the surface format to qglx_surfaceFormatFromGLXFBConfig MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of creating a default-constructed format and filling its field in, pass a pointer to an instance. This way we won't lose the renderable type set on the surface, but just fill in the other parameters. Change-Id: I1fd403671f9c677cc74aaf3c116a05f213d5d556 Reviewed-by: Samuel Rødal --- .../glxconvenience/qglxconvenience.cpp | 25 +++++++++------------- .../glxconvenience/qglxconvenience_p.h | 2 +- .../offscreen/qoffscreenintegration_x11.cpp | 2 +- src/plugins/platforms/xcb/qglxintegration.cpp | 4 ++-- 4 files changed, 14 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/platformsupport/glxconvenience/qglxconvenience.cpp b/src/platformsupport/glxconvenience/qglxconvenience.cpp index 9ce74f55fe..11d9377db7 100644 --- a/src/platformsupport/glxconvenience/qglxconvenience.cpp +++ b/src/platformsupport/glxconvenience/qglxconvenience.cpp @@ -171,7 +171,7 @@ XVisualInfo *qglx_findVisualInfo(Display *display, int screen, QSurfaceFormat *f GLXFBConfig config = qglx_findConfig(display,screen,*format); if (config) { visualInfo = glXGetVisualFromFBConfig(display, config); - *format = qglx_surfaceFormatFromGLXFBConfig(display, config); + qglx_surfaceFormatFromGLXFBConfig(format, display, config); } // attempt to fall back to glXChooseVisual @@ -221,11 +221,8 @@ XVisualInfo *qglx_findVisualInfo(Display *display, int screen, QSurfaceFormat *f return visualInfo; } -QSurfaceFormat qglx_surfaceFormatFromGLXFBConfig(Display *display, GLXFBConfig config, GLXContext) +void qglx_surfaceFormatFromGLXFBConfig(QSurfaceFormat *format, Display *display, GLXFBConfig config, GLXContext) { - QSurfaceFormat format; - format.setRenderableType(QSurfaceFormat::OpenGL); - int redSize = 0; int greenSize = 0; int blueSize = 0; @@ -247,20 +244,18 @@ QSurfaceFormat qglx_surfaceFormatFromGLXFBConfig(Display *display, GLXFBConfig c glXGetFBConfigAttrib(display, config, GLX_SAMPLES_ARB, &sampleBuffers); glXGetFBConfigAttrib(display, config, GLX_STEREO, &stereo); - format.setRedBufferSize(redSize); - format.setGreenBufferSize(greenSize); - format.setBlueBufferSize(blueSize); - format.setAlphaBufferSize(alphaSize); - format.setDepthBufferSize(depthSize); - format.setStencilBufferSize(stencilSize); + format->setRedBufferSize(redSize); + format->setGreenBufferSize(greenSize); + format->setBlueBufferSize(blueSize); + format->setAlphaBufferSize(alphaSize); + format->setDepthBufferSize(depthSize); + format->setStencilBufferSize(stencilSize); if (sampleBuffers) { glXGetFBConfigAttrib(display, config, GLX_SAMPLES_ARB, &sampleCount); - format.setSamples(sampleCount); + format->setSamples(sampleCount); } - format.setStereo(stereo); - - return format; + format->setStereo(stereo); } QSurfaceFormat qglx_reduceSurfaceFormat(const QSurfaceFormat &format, bool *reduced) diff --git a/src/platformsupport/glxconvenience/qglxconvenience_p.h b/src/platformsupport/glxconvenience/qglxconvenience_p.h index 70f97d8b38..66548a3479 100644 --- a/src/platformsupport/glxconvenience/qglxconvenience_p.h +++ b/src/platformsupport/glxconvenience/qglxconvenience_p.h @@ -50,7 +50,7 @@ XVisualInfo *qglx_findVisualInfo(Display *display, int screen, QSurfaceFormat *format); GLXFBConfig qglx_findConfig(Display *display, int screen, const QSurfaceFormat &format, int drawableBit = GLX_WINDOW_BIT); -QSurfaceFormat qglx_surfaceFormatFromGLXFBConfig(Display *display, GLXFBConfig config, GLXContext context = 0); +void qglx_surfaceFormatFromGLXFBConfig(QSurfaceFormat *format, Display *display, GLXFBConfig config, GLXContext context = 0); QVector qglx_buildSpec(const QSurfaceFormat &format, int drawableBit = GLX_WINDOW_BIT); QSurfaceFormat qglx_reduceSurfaceFormat(const QSurfaceFormat &format, bool *reduced); diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp b/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp index 4b27afd80f..6c6c516a4e 100644 --- a/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp +++ b/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp @@ -179,7 +179,7 @@ QOffscreenX11GLXContext::QOffscreenX11GLXContext(QOffscreenX11Info *x11, QOpenGL // Get the basic surface format details if (d->context) - d->format = qglx_surfaceFormatFromGLXFBConfig(x11->display(), config, d->context); + qglx_surfaceFormatFromGLXFBConfig(&d->format, x11->display(), config, d->context); // Create a temporary window so that we can make the new context current d->window = createDummyWindow(x11, config); diff --git a/src/plugins/platforms/xcb/qglxintegration.cpp b/src/plugins/platforms/xcb/qglxintegration.cpp index db942fc3ad..2b18ecf7a4 100644 --- a/src/plugins/platforms/xcb/qglxintegration.cpp +++ b/src/plugins/platforms/xcb/qglxintegration.cpp @@ -355,7 +355,7 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat // Get the basic surface format details if (m_context) - m_format = qglx_surfaceFormatFromGLXFBConfig(DISPLAY_FROM_XCB(screen), config, m_context); + qglx_surfaceFormatFromGLXFBConfig(&m_format, DISPLAY_FROM_XCB(screen), config, m_context); // Create a temporary window so that we can make the new context current window = createDummyWindow(screen, config); @@ -499,7 +499,7 @@ QGLXPbuffer::QGLXPbuffer(QOffscreenSurface *offscreenSurface) m_pbuffer = glXCreatePbuffer(DISPLAY_FROM_XCB(m_screen), config, attributes); if (m_pbuffer) - m_format = qglx_surfaceFormatFromGLXFBConfig(DISPLAY_FROM_XCB(m_screen), config); + qglx_surfaceFormatFromGLXFBConfig(&m_format, DISPLAY_FROM_XCB(m_screen), config); } } -- cgit v1.2.3 From bc616641a1c3d2d79cf7c5ee9e80a59279edb756 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Wed, 20 Feb 2013 15:50:35 +0100 Subject: Make toplevel transparent windows work on Mac OS X MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch includes a few different fixes to make transparent toplevels work on cocoa. - When setting alpha on the toplevel, it also needs setOpaque:NO - The OpenGL context needs a separate flag for this to work. - Make sure setOpaque fighting between setMask, setFormat and setOpacity ends up correctly Task-number: QTBUG-28214 Change-Id: Ic3a2d71193bb653e181c98787b4ebda002424092 Reviewed-by: Shawn Rutledge Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoaglcontext.mm | 4 ++++ src/plugins/platforms/cocoa/qcocoawindow.h | 2 ++ src/plugins/platforms/cocoa/qcocoawindow.mm | 24 ++++++++++++++++++++---- src/plugins/platforms/cocoa/qnsview.h | 1 + src/plugins/platforms/cocoa/qnsview.mm | 5 +++++ 5 files changed, 32 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoaglcontext.mm b/src/plugins/platforms/cocoa/qcocoaglcontext.mm index 6c2fdf5470..d4673baaef 100644 --- a/src/plugins/platforms/cocoa/qcocoaglcontext.mm +++ b/src/plugins/platforms/cocoa/qcocoaglcontext.mm @@ -78,6 +78,10 @@ QCocoaGLContext::QCocoaGLContext(const QSurfaceFormat &format, QPlatformOpenGLCo const GLint interval = 1; [m_context setValues:&interval forParameter:NSOpenGLCPSwapInterval]; + if (format.alphaBufferSize() > 0) { + int zeroOpacity = 0; + [m_context setValues:&zeroOpacity forParameter:NSOpenGLCPSurfaceOpacity]; + } } QCocoaGLContext::~QCocoaGLContext() diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h index 291c688915..70df7451f7 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.h +++ b/src/plugins/platforms/cocoa/qcocoawindow.h @@ -157,6 +157,8 @@ protected: QCocoaWindow *parentCocoaWindow() const; void syncWindowState(Qt::WindowState newState); + void updateOpaque(); + // private: public: // for QNSView friend class QCocoaBackingStore; diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 56ca2e0b14..fe6a9ad50b 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -516,20 +516,30 @@ void QCocoaWindow::propagateSizeHints() } } +void QCocoaWindow::updateOpaque() +{ + bool translucent = window()->format().alphaBufferSize() > 0 + || window()->opacity() < 1 + || (m_contentView && [m_contentView hasMask]); + [m_nsWindow setOpaque:!translucent]; +} + + void QCocoaWindow::setOpacity(qreal level) { - if (m_nsWindow) + if (m_nsWindow) { [m_nsWindow setAlphaValue:level]; + updateOpaque(); + } } void QCocoaWindow::setMask(const QRegion ®ion) { - if (m_nsWindow) { - [m_nsWindow setOpaque:NO]; + if (m_nsWindow) [m_nsWindow setBackgroundColor:[NSColor clearColor]]; - } [m_contentView setMaskRegion:®ion]; + updateOpaque(); } bool QCocoaWindow::setKeyboardGrabEnabled(bool grab) @@ -726,6 +736,12 @@ NSWindow * QCocoaWindow::createNSWindow() NSInteger level = windowLevel(flags); [createdWindow setLevel:level]; + + if (window()->format().alphaBufferSize() > 0) { + [createdWindow setBackgroundColor:[NSColor clearColor]]; + [createdWindow setOpaque:NO]; + } + m_windowModality = window()->modality(); return createdWindow; } diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h index eec0cfe5f6..5fe0861e0a 100644 --- a/src/plugins/platforms/cocoa/qnsview.h +++ b/src/plugins/platforms/cocoa/qnsview.h @@ -83,6 +83,7 @@ QT_END_NAMESPACE - (BOOL)isFlipped; - (BOOL)acceptsFirstResponder; - (BOOL)becomeFirstResponder; +- (BOOL)hasMask; - (void)resetMouseButtons; diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index cdbaa235e4..a8d8baa942 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -254,6 +254,11 @@ static QTouchDevice *touchDevice = 0; [self setNeedsDisplayInRect:NSMakeRect(br.x(), br.y(), br.width(), br.height())]; } +- (BOOL) hasMask +{ + return m_maskData != 0; +} + - (void) setMaskRegion:(const QRegion *)region { if (m_maskImage) -- cgit v1.2.3 From 44cb71d6fdb0b7285d4ef74a1ef778323aa9e5ee Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 22 Feb 2013 17:53:33 -0800 Subject: Compile only the SHA-1 code into qdoc There's no need to compile the other codecs if they never get used. It's possible that a whole-program optimisation would remove the dead code away, but it's not very likely. Change-Id: I75d7618c174566beec2fab44f60a9f7120133775 Reviewed-by: Richard J. Moore --- src/corelib/tools/qcryptographichash.cpp | 60 +++++++++++++++++++++++--------- src/tools/qdoc/qdoc.pro | 3 +- 2 files changed, 45 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp index 6704f14eb1..fdf2d1a620 100644 --- a/src/corelib/tools/qcryptographichash.cpp +++ b/src/corelib/tools/qcryptographichash.cpp @@ -41,12 +41,16 @@ ****************************************************************************/ #include +#include + +#include "../../3rdparty/sha1/sha1.cpp" +#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 +// qdoc only needs SHA-1 #include "../../3rdparty/md5/md5.h" #include "../../3rdparty/md5/md5.cpp" #include "../../3rdparty/md4/md4.h" #include "../../3rdparty/md4/md4.cpp" -#include "../../3rdparty/sha1/sha1.cpp" typedef unsigned char BitSequence; typedef unsigned long long DataLength; @@ -124,8 +128,6 @@ static int SHA384_512AddLength(SHA512Context *context, unsigned int length); #undef uint68_t #undef int_least16_t -#include - static inline int SHA224_256AddLength(SHA256Context *context, unsigned int length) { QT_PREPEND_NAMESPACE(quint32) addTemp; @@ -136,6 +138,7 @@ static inline int SHA384_512AddLength(SHA512Context *context, unsigned int lengt QT_PREPEND_NAMESPACE(quint64) addTemp; return SHA384_512AddLengthM(context, length); } +#endif // QT_CRYPTOGRAPHICHASH_ONLY_SHA1 QT_BEGIN_NAMESPACE @@ -144,14 +147,16 @@ class QCryptographicHashPrivate public: QCryptographicHash::Algorithm method; union { + Sha1State sha1Context; +#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 MD5Context md5Context; md4_context md4Context; - Sha1State sha1Context; SHA224Context sha224Context; SHA256Context sha256Context; SHA384Context sha384Context; SHA512Context sha512Context; SHA3Context sha3Context; +#endif }; QByteArray result; }; @@ -212,15 +217,21 @@ QCryptographicHash::~QCryptographicHash() void QCryptographicHash::reset() { switch (d->method) { + case Sha1: + sha1InitState(&d->sha1Context); + break; +#ifdef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 + default: + Q_ASSERT_X(false, "QCryptographicHash", "Method not compiled in"); + Q_UNREACHABLE(); + break; +#else case Md4: md4_init(&d->md4Context); break; case Md5: MD5Init(&d->md5Context); break; - case Sha1: - sha1InitState(&d->sha1Context); - break; case Sha224: SHA224Reset(&d->sha224Context); break; @@ -245,6 +256,7 @@ void QCryptographicHash::reset() case Sha3_512: sha3Init(&d->sha3Context, 512); break; +#endif } d->result.clear(); } @@ -256,15 +268,21 @@ void QCryptographicHash::reset() void QCryptographicHash::addData(const char *data, int length) { switch (d->method) { + case Sha1: + sha1Update(&d->sha1Context, (const unsigned char *)data, length); + break; +#ifdef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 + default: + Q_ASSERT_X(false, "QCryptographicHash", "Method not compiled in"); + Q_UNREACHABLE(); + break; +#else case Md4: md4_update(&d->md4Context, (const unsigned char *)data, length); break; case Md5: MD5Update(&d->md5Context, (const unsigned char *)data, length); break; - case Sha1: - sha1Update(&d->sha1Context, (const unsigned char *)data, length); - break; case Sha224: SHA224Input(&d->sha224Context, reinterpret_cast(data), length); break; @@ -289,6 +307,7 @@ void QCryptographicHash::addData(const char *data, int length) case Sha3_512: sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); break; +#endif } d->result.clear(); } @@ -335,6 +354,19 @@ QByteArray QCryptographicHash::result() const return d->result; switch (d->method) { + case Sha1: { + Sha1State copy = d->sha1Context; + d->result.resize(20); + sha1FinalizeState(©); + sha1ToHash(©, (unsigned char *)d->result.data()); + break; + } +#ifdef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 + default: + Q_ASSERT_X(false, "QCryptographicHash", "Method not compiled in"); + Q_UNREACHABLE(); + break; +#else case Md4: { md4_context copy = d->md4Context; d->result.resize(MD4_RESULTLEN); @@ -347,13 +379,6 @@ QByteArray QCryptographicHash::result() const MD5Final(©, (unsigned char *)d->result.data()); break; } - case Sha1: { - Sha1State copy = d->sha1Context; - d->result.resize(20); - sha1FinalizeState(©); - sha1ToHash(©, (unsigned char *)d->result.data()); - break; - } case Sha224: { SHA224Context copy = d->sha224Context; d->result.resize(SHA224HashSize); @@ -402,6 +427,7 @@ QByteArray QCryptographicHash::result() const sha3Final(©, reinterpret_cast(d->result.data())); break; } +#endif } return d->result; } diff --git a/src/tools/qdoc/qdoc.pro b/src/tools/qdoc/qdoc.pro index 9df79ec718..cd792e73e8 100644 --- a/src/tools/qdoc/qdoc.pro +++ b/src/tools/qdoc/qdoc.pro @@ -1,6 +1,7 @@ option(host_build) -DEFINES += QDOC2_COMPAT +DEFINES += QDOC2_COMPAT \ + QT_CRYPTOGRAPHICHASH_ONLY_SHA1 INCLUDEPATH += $$QT_SOURCE_TREE/src/tools/qdoc \ $$QT_SOURCE_TREE/src/tools/qdoc/qmlparser -- cgit v1.2.3 From d38004bdb08a7e2e038123dea74d6f58dc02b298 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 22 Feb 2013 17:58:50 -0800 Subject: Disable the SHA-3 Hash function: QCryptographicHash doesn't need it QCryptographicHash will do the full Init/Update/Final calls, so we don't need the Hash function. Disable it from the compilation to avoid a warning about a function defined but not used. Change-Id: Ib48ae4a7be91089fdcffa00851b786816b798cd9 Reviewed-by: Richard J. Moore --- src/3rdparty/sha3/KeccakNISTInterface.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/3rdparty/sha3/KeccakNISTInterface.c b/src/3rdparty/sha3/KeccakNISTInterface.c index 33e6e0d28b..e530a11db5 100755 --- a/src/3rdparty/sha3/KeccakNISTInterface.c +++ b/src/3rdparty/sha3/KeccakNISTInterface.c @@ -62,6 +62,7 @@ static HashReturn Final(hashState *state, BitSequence *hashval) return (HashReturn) Squeeze(state, hashval, state->fixedOutputLength); } +#ifndef QT_BUILDING_QT static HashReturn Hash(int hashbitlen, const BitSequence *data, DataLength databitlen, BitSequence *hashval) { hashState state; @@ -78,4 +79,4 @@ static HashReturn Hash(int hashbitlen, const BitSequence *data, DataLength datab result = Final(&state, hashval); return result; } - +#endif -- cgit v1.2.3 From 7ea6ac832e3841f029a0ada37ec77cc3710ea99e Mon Sep 17 00:00:00 2001 From: Marcel Krems Date: Mon, 18 Feb 2013 23:40:30 +0100 Subject: Deprecate QSqlError setters. The constructor is sufficient, since it has a parameter for each member variable. Even the drivers, which were mentioned in the class description don't use them. Change-Id: Ie8ba0467c7dc1928c539b4b19db8cc2ea0f44ea0 Reviewed-by: Andy Shaw Reviewed-by: Mark Brand --- src/sql/kernel/qsqlerror.cpp | 44 +++++++++++++++++++++++++++++++++++--------- src/sql/kernel/qsqlerror.h | 11 +++++++---- 2 files changed, 42 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/sql/kernel/qsqlerror.cpp b/src/sql/kernel/qsqlerror.cpp index adcb8de4d4..9beaf10a32 100644 --- a/src/sql/kernel/qsqlerror.cpp +++ b/src/sql/kernel/qsqlerror.cpp @@ -63,9 +63,7 @@ QDebug operator<<(QDebug dbg, const QSqlError &s) A QSqlError object can provide database-specific error data, including the driverText() and databaseText() messages (or both concatenated together as text()), and the error number() and - type(). The functions all have setters so that you can create and - return QSqlError objects from your own classes, for example from - your own SQL drivers. + type(). \sa QSqlDatabase::lastError(), QSqlQuery::lastError() */ @@ -149,7 +147,7 @@ QSqlError::~QSqlError() Returns the text of the error as reported by the driver. This may contain database-specific descriptions. It may also be empty. - \sa setDriverText(), databaseText(), text() + \sa databaseText(), text() */ QString QSqlError::driverText() const { @@ -157,21 +155,29 @@ QString QSqlError::driverText() const } /*! + \fn void QSqlError::setDriverText(const QString &driverText) + \obsolete + Sets the driver error text to the value of \a driverText. + Use QSqlError(const QString &driverText, const QString &databaseText, + ErrorType type, int number) instead + \sa driverText(), setDatabaseText(), text() */ +#if QT_DEPRECATED_SINCE(5, 1) void QSqlError::setDriverText(const QString& driverText) { driverError = driverText; } +#endif /*! Returns the text of the error as reported by the database. This may contain database-specific descriptions; it may be empty. - \sa setDatabaseText(), driverText(), text() + \sa driverText(), text() */ QString QSqlError::databaseText() const @@ -180,20 +186,26 @@ QString QSqlError::databaseText() const } /*! + \fn void QSqlError::setDatabaseText(const QString &databaseText) + \obsolete + Sets the database error text to the value of \a databaseText. + Use QSqlError(const QString &driverText, const QString &databaseText, + ErrorType type, int number) instead + \sa databaseText(), setDriverText(), text() */ +#if QT_DEPRECATED_SINCE(5, 1) void QSqlError::setDatabaseText(const QString& databaseText) { databaseError = databaseText; } +#endif /*! Returns the error type, or -1 if the type cannot be determined. - - \sa setType() */ QSqlError::ErrorType QSqlError::type() const @@ -202,21 +214,27 @@ QSqlError::ErrorType QSqlError::type() const } /*! + \fn void QSqlError::setType(ErrorType type) + \obsolete + Sets the error type to the value of \a type. + Use QSqlError(const QString &driverText, const QString &databaseText, + ErrorType type, int number) instead + \sa type() */ +#if QT_DEPRECATED_SINCE(5, 1) void QSqlError::setType(ErrorType type) { errorType = type; } +#endif /*! Returns the database-specific error number, or -1 if it cannot be determined. - - \sa setNumber() */ int QSqlError::number() const @@ -225,15 +243,23 @@ int QSqlError::number() const } /*! + \fn void QSqlError::setNumber(int number) + \obsolete + Sets the database-specific error number to \a number. + Use QSqlError(const QString &driverText, const QString &databaseText, + ErrorType type, int number) instead + \sa number() */ +#if QT_DEPRECATED_SINCE(5, 1) void QSqlError::setNumber(int number) { errorNumber = number; } +#endif /*! This is a convenience function that returns databaseText() and diff --git a/src/sql/kernel/qsqlerror.h b/src/sql/kernel/qsqlerror.h index f4ad9eddff..39c4cda958 100644 --- a/src/sql/kernel/qsqlerror.h +++ b/src/sql/kernel/qsqlerror.h @@ -69,16 +69,19 @@ public: ~QSqlError(); QString driverText() const; - void setDriverText(const QString& driverText); QString databaseText() const; - void setDatabaseText(const QString& databaseText); ErrorType type() const; - void setType(ErrorType type); int number() const; - void setNumber(int number); QString text() const; bool isValid() const; +#if QT_DEPRECATED_SINCE(5, 1) + QT_DEPRECATED void setDriverText(const QString &driverText); + QT_DEPRECATED void setDatabaseText(const QString &databaseText); + QT_DEPRECATED void setType(ErrorType type); + QT_DEPRECATED void setNumber(int number); +#endif + private: QString driverError; QString databaseError; -- cgit v1.2.3 From 5c70e53722c4bf3d7184741c52ec0fbf6564e3c2 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 22 Feb 2013 09:34:42 +0100 Subject: QPA: fix memory leak in qwindowsysteminterface.h Just removing the event from QList will not delete it... Change-Id: I3c4bb69a2afaada7ad4d5695eba0b3f29e9463ec Reviewed-by: Friedemann Kleint Reviewed-by: Konstantin Ritt --- src/gui/kernel/qwindowsysteminterface_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h index 3d98ae07c9..8336c3d63c 100644 --- a/src/gui/kernel/qwindowsysteminterface_p.h +++ b/src/gui/kernel/qwindowsysteminterface_p.h @@ -411,7 +411,7 @@ public: const QMutexLocker locker(&mutex); for (int i = 0; i < impl.size(); ++i) { if (impl.at(i) == e) { - impl.removeAt(i); + delete impl.takeAt(i); break; } } -- cgit v1.2.3 From 7686b2386d60c17aa70c621fe94afc646314e6ac Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 21 Feb 2013 11:15:35 +0100 Subject: Update qopenglext.h with the latest version from Khronos Change-Id: I84b051b30623fda67c89d4d6b0b7756681cb9011 Reviewed-by: Sean Harmer Reviewed-by: Lars Knoll --- src/gui/opengl/qopenglext.h | 466 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 434 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglext.h b/src/gui/opengl/qopenglext.h index 856f3b2c48..68025f3e5c 100644 --- a/src/gui/opengl/qopenglext.h +++ b/src/gui/opengl/qopenglext.h @@ -34,9 +34,9 @@ extern "C" { */ /* Header file version number, required by OpenGL ABI for Linux */ -/* glext.h last updated $Date: 2012-09-19 19:02:24 -0700 (Wed, 19 Sep 2012) $ */ +/* glext.h last updated $Date: 2013-02-07 01:42:49 -0800 (Thu, 07 Feb 2013) $ */ /* Current version at http://www.opengl.org/registry/ */ -#define GL_GLEXT_VERSION 85 +#define GL_GLEXT_VERSION 86 /* Function declaration macros - to move into glplatform.h */ #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) @@ -5014,11 +5014,37 @@ extern "C" { #ifndef GL_ATI_vertex_attrib_array_object #endif +#ifndef GL_OES_byte_coordinates +#endif + +#ifndef GL_OES_fixed_point +#define GL_FIXED_OES 0x140C +#endif + +#ifndef GL_OES_single_precision +#endif + +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif + #ifndef GL_OES_read_format #define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A #define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B #endif +#ifndef GL_OES_query_matrix +#endif + #ifndef GL_EXT_depth_bounds_test #define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 #define GL_DEPTH_BOUNDS_EXT 0x8891 @@ -5986,27 +6012,19 @@ extern "C" { #define GL_PATH_FILL_COVER_MODE_NV 0x9082 #define GL_PATH_STROKE_COVER_MODE_NV 0x9083 #define GL_PATH_STROKE_MASK_NV 0x9084 -#define GL_PATH_SAMPLE_QUALITY_NV 0x9085 -#define GL_PATH_STROKE_BOUND_NV 0x9086 -#define GL_PATH_STROKE_OVERSAMPLE_COUNT_NV 0x9087 #define GL_COUNT_UP_NV 0x9088 #define GL_COUNT_DOWN_NV 0x9089 #define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A #define GL_CONVEX_HULL_NV 0x908B -#define GL_MULTI_HULLS_NV 0x908C #define GL_BOUNDING_BOX_NV 0x908D #define GL_TRANSLATE_X_NV 0x908E #define GL_TRANSLATE_Y_NV 0x908F #define GL_TRANSLATE_2D_NV 0x9090 #define GL_TRANSLATE_3D_NV 0x9091 #define GL_AFFINE_2D_NV 0x9092 -#define GL_PROJECTIVE_2D_NV 0x9093 #define GL_AFFINE_3D_NV 0x9094 -#define GL_PROJECTIVE_3D_NV 0x9095 #define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 -#define GL_TRANSPOSE_PROJECTIVE_2D_NV 0x9097 #define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 -#define GL_TRANSPOSE_PROJECTIVE_3D_NV 0x9099 #define GL_UTF8_NV 0x909A #define GL_UTF16_NV 0x909B #define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C @@ -6086,20 +6104,23 @@ extern "C" { #define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 #define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 #define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 -#define GL_GLYPH_HAS_KERNING_NV 0x100 -#define GL_FONT_X_MIN_BOUNDS_NV 0x00010000 -#define GL_FONT_Y_MIN_BOUNDS_NV 0x00020000 -#define GL_FONT_X_MAX_BOUNDS_NV 0x00040000 -#define GL_FONT_Y_MAX_BOUNDS_NV 0x00080000 -#define GL_FONT_UNITS_PER_EM_NV 0x00100000 -#define GL_FONT_ASCENDER_NV 0x00200000 -#define GL_FONT_DESCENDER_NV 0x00400000 -#define GL_FONT_HEIGHT_NV 0x00800000 -#define GL_FONT_MAX_ADVANCE_WIDTH_NV 0x01000000 -#define GL_FONT_MAX_ADVANCE_HEIGHT_NV 0x02000000 -#define GL_FONT_UNDERLINE_POSITION_NV 0x04000000 -#define GL_FONT_UNDERLINE_THICKNESS_NV 0x08000000 -#define GL_FONT_HAS_KERNING_NV 0x10000000 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +/* reuse GL_PRIMARY_COLOR */ +/* reuse GL_PRIMARY_COLOR_NV */ +/* reuse GL_SECONDARY_COLOR_NV */ #endif #ifndef GL_AMD_pinned_memory @@ -6131,6 +6152,25 @@ extern "C" { #define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 #endif +#ifndef GL_NV_compute_program5 +#define GL_COMPUTE_PROGRAM_NV 0x90FB +#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC +#endif + +#ifndef GL_NV_shader_storage_buffer_object +#endif + +#ifndef GL_NV_shader_atomic_counters +#endif + +#ifndef GL_NV_deep_texture3D +#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 +#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 +#endif + +#ifndef GL_NVX_conditional_render +#endif + #ifndef GL_AMD_sparse_texture #define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 #define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 @@ -6143,6 +6183,19 @@ extern "C" { #define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 #endif +#ifndef GL_AMD_shader_trinary_minmax +#endif + +#ifndef GL_INTEL_map_texture +#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF +#define GL_LAYOUT_DEFAULT_INTEL 0 +#define GL_LAYOUT_LINEAR_INTEL 1 +#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 +#endif + +#ifndef GL_NV_draw_texture +#endif + /*************************************************************/ @@ -6250,6 +6303,11 @@ typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum typedef GLintptr GLvdpauSurfaceNV; #endif +#ifndef GL_OES_fixed_point +/* GLint must be 32 bits, a relatively safe assumption on modern CPUs */ +typedef GLint GLfixed; +#endif + #ifndef GL_VERSION_1_2 #define GL_VERSION_1_2 1 #ifdef GL_GLEXT_PROTOTYPES @@ -10851,15 +10909,15 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs) /* Some NV_fragment_program entry points are shared with ARB_vertex_program. */ #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); +typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); @@ -11023,10 +11081,304 @@ typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params); #endif +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiTexCoord1bOES (GLenum texture, GLbyte s); +GLAPI void APIENTRY glMultiTexCoord1bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glMultiTexCoord2bOES (GLenum texture, GLbyte s, GLbyte t); +GLAPI void APIENTRY glMultiTexCoord2bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glMultiTexCoord3bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r); +GLAPI void APIENTRY glMultiTexCoord3bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glMultiTexCoord4bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +GLAPI void APIENTRY glMultiTexCoord4bvOES (GLenum texture, const GLbyte *coords); +GLAPI void APIENTRY glTexCoord1bOES (GLbyte s); +GLAPI void APIENTRY glTexCoord1bvOES (const GLbyte *coords); +GLAPI void APIENTRY glTexCoord2bOES (GLbyte s, GLbyte t); +GLAPI void APIENTRY glTexCoord2bvOES (const GLbyte *coords); +GLAPI void APIENTRY glTexCoord3bOES (GLbyte s, GLbyte t, GLbyte r); +GLAPI void APIENTRY glTexCoord3bvOES (const GLbyte *coords); +GLAPI void APIENTRY glTexCoord4bOES (GLbyte s, GLbyte t, GLbyte r, GLbyte q); +GLAPI void APIENTRY glTexCoord4bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex2bOES (GLbyte x); +GLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y); +GLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords); +GLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z); +GLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC) (GLbyte s); +typedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t); +typedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r); +typedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX2BOESPROC) (GLbyte x); +typedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y); +typedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords); +typedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z); +typedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords); +#endif + +#ifndef GL_OES_fixed_point +#define GL_OES_fixed_point 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAccumxOES (GLenum op, GLfixed value); +GLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref); +GLAPI void APIENTRY glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +GLAPI void APIENTRY glBlendColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glClearColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glClearDepthxOES (GLfixed depth); +GLAPI void APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation); +GLAPI void APIENTRY glColor3xOES (GLfixed red, GLfixed green, GLfixed blue); +GLAPI void APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GLAPI void APIENTRY glColor3xvOES (const GLfixed *components); +GLAPI void APIENTRY glColor4xvOES (const GLfixed *components); +GLAPI void APIENTRY glConvolutionParameterxOES (GLenum target, GLenum pname, GLfixed param); +GLAPI void APIENTRY glConvolutionParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f); +GLAPI void APIENTRY glEvalCoord1xOES (GLfixed u); +GLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v); +GLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords); +GLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer); +GLAPI void APIENTRY glFogxOES (GLenum pname, GLfixed param); +GLAPI void APIENTRY glFogxvOES (GLenum pname, const GLfixed *param); +GLAPI void APIENTRY glFrustumxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +GLAPI void APIENTRY glGetClipPlanexOES (GLenum plane, GLfixed *equation); +GLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetHistogramParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetLightxOES (GLenum light, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetMapxvOES (GLenum target, GLenum query, GLfixed *v); +GLAPI void APIENTRY glGetMaterialxOES (GLenum face, GLenum pname, GLfixed param); +GLAPI void APIENTRY glGetPixelMapxv (GLenum map, GLint size, GLfixed *values); +GLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GLAPI void APIENTRY glIndexxOES (GLfixed component); +GLAPI void APIENTRY glIndexxvOES (const GLfixed *component); +GLAPI void APIENTRY glLightModelxOES (GLenum pname, GLfixed param); +GLAPI void APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *param); +GLAPI void APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param); +GLAPI void APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glLineWidthxOES (GLfixed width); +GLAPI void APIENTRY glLoadMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glLoadTransposeMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMap1xOES (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +GLAPI void APIENTRY glMap2xOES (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +GLAPI void APIENTRY glMapGrid1xOES (GLint n, GLfixed u1, GLfixed u2); +GLAPI void APIENTRY glMapGrid2xOES (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +GLAPI void APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param); +GLAPI void APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *param); +GLAPI void APIENTRY glMultMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMultTransposeMatrixxOES (const GLfixed *m); +GLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s); +GLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t); +GLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +GLAPI void APIENTRY glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords); +GLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz); +GLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +GLAPI void APIENTRY glPassThroughxOES (GLfixed token); +GLAPI void APIENTRY glPixelMapx (GLenum map, GLint size, const GLfixed *values); +GLAPI void APIENTRY glPixelStorex (GLenum pname, GLfixed param); +GLAPI void APIENTRY glPixelTransferxOES (GLenum pname, GLfixed param); +GLAPI void APIENTRY glPixelZoomxOES (GLfixed xfactor, GLfixed yfactor); +GLAPI void APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glPointSizexOES (GLfixed size); +GLAPI void APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units); +GLAPI void APIENTRY glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities); +GLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y); +GLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +GLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRasterPos4xvOES (const GLfixed *coords); +GLAPI void APIENTRY glRectxOES (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +GLAPI void APIENTRY glRectxvOES (const GLfixed *v1, const GLfixed *v2); +GLAPI void APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glSampleCoverageOES (GLfixed value, GLboolean invert); +GLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glTexCoord1xOES (GLfixed s); +GLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t); +GLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r); +GLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords); +GLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param); +GLAPI void APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); +GLAPI void APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glVertex2xOES (GLfixed x); +GLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y); +GLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z); +GLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords); +GLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords); +GLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value); +typedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); +typedef void (APIENTRYP PFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap); +typedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLfixed depth); +typedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); +typedef void (APIENTRYP PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); +typedef void (APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (APIENTRYP PFNGLCOLOR3XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP PFNGLCOLOR4XVOESPROC) (const GLfixed *components); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); +typedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC) (GLfixed u); +typedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); +typedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer); +typedef void (APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation); +typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v); +typedef void (APIENTRYP PFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values); +typedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component); +typedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component); +typedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param); +typedef void (APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width); +typedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); +typedef void (APIENTRYP PFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); +typedef void (APIENTRYP PFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2); +typedef void (APIENTRYP PFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); +typedef void (APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param); +typedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords); +typedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); +typedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC) (GLfixed token); +typedef void (APIENTRYP PFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values); +typedef void (APIENTRYP PFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor); +typedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size); +typedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities); +typedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); +typedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +typedef void (APIENTRYP PFNGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2); +typedef void (APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert); +typedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC) (GLfixed s); +typedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); +typedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); +typedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x); +typedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); +typedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords); +typedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords); +#endif + +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDepthRangefOES (GLclampf n, GLclampf f); +GLAPI void APIENTRY glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +GLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +GLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation); +GLAPI void APIENTRY glClearDepthfOES (GLclampd depth); +GLAPI void APIENTRY glGetClipPlanefOES (GLenum plane, GLfloat *equation); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); +typedef void (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +typedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); +typedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampd depth); +typedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation); +#endif + +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#endif + #ifndef GL_OES_read_format #define GL_OES_read_format 1 #endif +#ifndef GL_OES_query_matrix +#define GL_OES_query_matrix 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLbitfield APIENTRY glQueryMatrixxOES (const GLfixed *mantissa, const GLint *exponent); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (const GLfixed *mantissa, const GLint *exponent); +#endif + #ifndef GL_EXT_depth_bounds_test #define GL_EXT_depth_bounds_test 1 #ifdef GL_GLEXT_PROTOTYPES @@ -11402,13 +11754,13 @@ typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLen #ifndef GL_NV_parameter_buffer_object #define GL_NV_parameter_buffer_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); -GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); -GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); +GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); +GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); +GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params); +typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params); #endif #ifndef GL_EXT_draw_buffers2 @@ -12727,6 +13079,32 @@ typedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle) #define GL_AMD_query_buffer_object 1 #endif +#ifndef GL_NV_compute_program5 +#define GL_NV_compute_program5 1 +#endif + +#ifndef GL_NV_shader_storage_buffer_object +#define GL_NV_shader_storage_buffer_object 1 +#endif + +#ifndef GL_NV_shader_atomic_counters +#define GL_NV_shader_atomic_counters 1 +#endif + +#ifndef GL_NV_deep_texture3D +#define GL_NV_deep_texture3D 1 +#endif + +#ifndef GL_NVX_conditional_render +#define GL_NVX_conditional_render 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id); +GLAPI void APIENTRY glEndConditionalRenderNVX (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id); +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void); +#endif + #ifndef GL_AMD_sparse_texture #define GL_AMD_sparse_texture 1 #ifdef GL_GLEXT_PROTOTYPES @@ -12737,6 +13115,30 @@ typedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum int typedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); #endif +#ifndef GL_AMD_shader_trinary_minmax +#define GL_AMD_shader_trinary_minmax 1 +#endif + +#ifndef GL_INTEL_map_texture +#define GL_INTEL_map_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSyncTextureINTEL (GLuint texture); +GLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level); +GLAPI GLvoid* APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture); +typedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level); +typedef GLvoid* (APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, const GLint *stride, const GLenum *layout); +#endif + +#ifndef GL_NV_draw_texture +#define GL_NV_draw_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +#endif + #ifdef __cplusplus } -- cgit v1.2.3 From a8fce5d6e2cfc4971ca932a18e38662de3482cbc Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 14 Feb 2013 09:43:16 +0100 Subject: ANGLE: Fix static build. Introduce QT_OPENGL_ES_2_ANGLE_STATIC define for static builds and modify export accordingly. Provided static instances of gl::Current and egl::Current for Qt's single threaded use. Task-number: QTBUG-28196 Change-Id: Ia75699d6da103fb8dd9d5fe97c1ee51e48a74406 Reviewed-by: Oswald Buddenhagen Reviewed-by: Kai Koehne --- src/3rdparty/angle/include/KHR/khrplatform.h | 3 +- src/3rdparty/angle/src/libEGL/main.cpp | 58 +++--- src/3rdparty/angle/src/libGLESv2/main.cpp | 32 ++- ...sible-to-link-ANGLE-statically-for-single.patch | 218 +++++++++++++++++++++ src/angle/src/common/common.pri | 2 + 5 files changed, 273 insertions(+), 40 deletions(-) create mode 100644 src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch (limited to 'src') diff --git a/src/3rdparty/angle/include/KHR/khrplatform.h b/src/3rdparty/angle/include/KHR/khrplatform.h index 56c676c77b..18a104ea1f 100644 --- a/src/3rdparty/angle/include/KHR/khrplatform.h +++ b/src/3rdparty/angle/include/KHR/khrplatform.h @@ -97,7 +97,8 @@ *------------------------------------------------------------------------- * This precedes the return type of the function in the function prototype. */ -#if defined(_WIN32) && !defined(__SCITECH_SNAP__) + +#if defined(_WIN32) && !defined(__SCITECH_SNAP__) && !defined(QT_OPENGL_ES_2_ANGLE_STATIC) # define KHRONOS_APICALL __declspec(dllimport) #elif defined (__SYMBIAN32__) # define KHRONOS_APICALL IMPORT_C diff --git a/src/3rdparty/angle/src/libEGL/main.cpp b/src/3rdparty/angle/src/libEGL/main.cpp index dc24c4fb04..614bcf67ad 100644 --- a/src/3rdparty/angle/src/libEGL/main.cpp +++ b/src/3rdparty/angle/src/libEGL/main.cpp @@ -10,6 +10,8 @@ #include "common/debug.h" +#ifndef QT_OPENGL_ES_2_ANGLE_STATIC + static DWORD currentTLS = TLS_OUT_OF_INDEXES; extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) @@ -86,76 +88,72 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved return TRUE; } +static inline egl::Current *current() +{ + return (egl::Current*)TlsGetValue(currentTLS); +} + +#else // !QT_OPENGL_ES_2_ANGLE_STATIC + +static egl::Current *current() +{ + // No precautions for thread safety taken as ANGLE is used single-threaded in Qt. + static egl::Current curr = { EGL_SUCCESS, EGL_OPENGL_ES_API, EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE }; + return &curr; +} + +#endif // QT_OPENGL_ES_2_ANGLE_STATIC + namespace egl { void setCurrentError(EGLint error) { - Current *current = (Current*)TlsGetValue(currentTLS); - - current->error = error; + current()->error = error; } EGLint getCurrentError() { - Current *current = (Current*)TlsGetValue(currentTLS); - - return current->error; + return current()->error; } void setCurrentAPI(EGLenum API) { - Current *current = (Current*)TlsGetValue(currentTLS); - - current->API = API; + current()->API = API; } EGLenum getCurrentAPI() { - Current *current = (Current*)TlsGetValue(currentTLS); - - return current->API; + return current()->API; } void setCurrentDisplay(EGLDisplay dpy) { - Current *current = (Current*)TlsGetValue(currentTLS); - - current->display = dpy; + current()->display = dpy; } EGLDisplay getCurrentDisplay() { - Current *current = (Current*)TlsGetValue(currentTLS); - - return current->display; + return current()->display; } void setCurrentDrawSurface(EGLSurface surface) { - Current *current = (Current*)TlsGetValue(currentTLS); - - current->drawSurface = surface; + current()->drawSurface = surface; } EGLSurface getCurrentDrawSurface() { - Current *current = (Current*)TlsGetValue(currentTLS); - - return current->drawSurface; + return current()->drawSurface; } void setCurrentReadSurface(EGLSurface surface) { - Current *current = (Current*)TlsGetValue(currentTLS); - - current->readSurface = surface; + current()->readSurface = surface; } EGLSurface getCurrentReadSurface() { - Current *current = (Current*)TlsGetValue(currentTLS); - - return current->readSurface; + return current()->readSurface; } } diff --git a/src/3rdparty/angle/src/libGLESv2/main.cpp b/src/3rdparty/angle/src/libGLESv2/main.cpp index 6e678c2616..3853e41c23 100644 --- a/src/3rdparty/angle/src/libGLESv2/main.cpp +++ b/src/3rdparty/angle/src/libGLESv2/main.cpp @@ -14,6 +14,8 @@ #include "libGLESv2/Framebuffer.h" +#ifndef QT_OPENGL_ES_2_ANGLE_STATIC + static DWORD currentTLS = TLS_OUT_OF_INDEXES; extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) @@ -72,14 +74,30 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved return TRUE; } +static gl::Current *current() +{ + return (gl::Current*)TlsGetValue(currentTLS); +} + +#else // !QT_OPENGL_ES_2_ANGLE_STATIC + +static inline gl::Current *current() +{ + // No precautions for thread safety taken as ANGLE is used single-threaded in Qt. + static gl::Current curr = { 0, 0 }; + return &curr; +} + +#endif // QT_OPENGL_ES_2_ANGLE_STATIC + namespace gl { void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface) { - Current *current = (Current*)TlsGetValue(currentTLS); + Current *curr = current(); - current->context = context; - current->display = display; + curr->context = context; + curr->display = display; if (context && display && surface) { @@ -89,9 +107,7 @@ void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface) Context *getContext() { - Current *current = (Current*)TlsGetValue(currentTLS); - - return current->context; + return current()->context; } Context *getNonLostContext() @@ -115,9 +131,7 @@ Context *getNonLostContext() egl::Display *getDisplay() { - Current *current = (Current*)TlsGetValue(currentTLS); - - return current->display; + return current()->display; } IDirect3DDevice9 *getDevice() diff --git a/src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch b/src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch new file mode 100644 index 0000000000..9133ac73ae --- /dev/null +++ b/src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch @@ -0,0 +1,218 @@ +From cbe9afef7cd467c41353e8a41544d86807be7dd2 Mon Sep 17 00:00:00 2001 +From: Friedemann Kleint +Date: Thu, 14 Feb 2013 09:40:30 +0100 +Subject: [PATCH] Make it possible to link ANGLE statically for single-thread + use. + +Fix exports and provide static instances of thread-local +data depending on QT_OPENGL_ES_2_ANGLE_STATIC. + +Change-Id: Ifab25a820adf5953bb3b09036de53dbf7f1a7fd5 +--- + src/3rdparty/angle/include/KHR/khrplatform.h | 3 +- + src/3rdparty/angle/src/libEGL/main.cpp | 58 ++++++++++++++-------------- + src/3rdparty/angle/src/libGLESv2/main.cpp | 32 ++++++++++----- + 3 files changed, 53 insertions(+), 40 deletions(-) + +diff --git a/src/3rdparty/angle/include/KHR/khrplatform.h b/src/3rdparty/angle/include/KHR/khrplatform.h +index 56c676c..18a104e 100644 +--- a/src/3rdparty/angle/include/KHR/khrplatform.h ++++ b/src/3rdparty/angle/include/KHR/khrplatform.h +@@ -97,7 +97,8 @@ + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +-#if defined(_WIN32) && !defined(__SCITECH_SNAP__) ++ ++#if defined(_WIN32) && !defined(__SCITECH_SNAP__) && !defined(QT_OPENGL_ES_2_ANGLE_STATIC) + # define KHRONOS_APICALL __declspec(dllimport) + #elif defined (__SYMBIAN32__) + # define KHRONOS_APICALL IMPORT_C +diff --git a/src/3rdparty/angle/src/libEGL/main.cpp b/src/3rdparty/angle/src/libEGL/main.cpp +index dc24c4f..614bcf6 100644 +--- a/src/3rdparty/angle/src/libEGL/main.cpp ++++ b/src/3rdparty/angle/src/libEGL/main.cpp +@@ -10,6 +10,8 @@ + + #include "common/debug.h" + ++#ifndef QT_OPENGL_ES_2_ANGLE_STATIC ++ + static DWORD currentTLS = TLS_OUT_OF_INDEXES; + + extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) +@@ -86,76 +88,72 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved + return TRUE; + } + ++static inline egl::Current *current() ++{ ++ return (egl::Current*)TlsGetValue(currentTLS); ++} ++ ++#else // !QT_OPENGL_ES_2_ANGLE_STATIC ++ ++static egl::Current *current() ++{ ++ // No precautions for thread safety taken as ANGLE is used single-threaded in Qt. ++ static egl::Current curr = { EGL_SUCCESS, EGL_OPENGL_ES_API, EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE }; ++ return &curr; ++} ++ ++#endif // QT_OPENGL_ES_2_ANGLE_STATIC ++ + namespace egl + { + void setCurrentError(EGLint error) + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- current->error = error; ++ current()->error = error; + } + + EGLint getCurrentError() + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- return current->error; ++ return current()->error; + } + + void setCurrentAPI(EGLenum API) + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- current->API = API; ++ current()->API = API; + } + + EGLenum getCurrentAPI() + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- return current->API; ++ return current()->API; + } + + void setCurrentDisplay(EGLDisplay dpy) + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- current->display = dpy; ++ current()->display = dpy; + } + + EGLDisplay getCurrentDisplay() + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- return current->display; ++ return current()->display; + } + + void setCurrentDrawSurface(EGLSurface surface) + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- current->drawSurface = surface; ++ current()->drawSurface = surface; + } + + EGLSurface getCurrentDrawSurface() + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- return current->drawSurface; ++ return current()->drawSurface; + } + + void setCurrentReadSurface(EGLSurface surface) + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- current->readSurface = surface; ++ current()->readSurface = surface; + } + + EGLSurface getCurrentReadSurface() + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- return current->readSurface; ++ return current()->readSurface; + } + } + +diff --git a/src/3rdparty/angle/src/libGLESv2/main.cpp b/src/3rdparty/angle/src/libGLESv2/main.cpp +index 6e678c2..3853e41 100644 +--- a/src/3rdparty/angle/src/libGLESv2/main.cpp ++++ b/src/3rdparty/angle/src/libGLESv2/main.cpp +@@ -14,6 +14,8 @@ + + #include "libGLESv2/Framebuffer.h" + ++#ifndef QT_OPENGL_ES_2_ANGLE_STATIC ++ + static DWORD currentTLS = TLS_OUT_OF_INDEXES; + + extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) +@@ -72,14 +74,30 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved + return TRUE; + } + ++static gl::Current *current() ++{ ++ return (gl::Current*)TlsGetValue(currentTLS); ++} ++ ++#else // !QT_OPENGL_ES_2_ANGLE_STATIC ++ ++static inline gl::Current *current() ++{ ++ // No precautions for thread safety taken as ANGLE is used single-threaded in Qt. ++ static gl::Current curr = { 0, 0 }; ++ return &curr; ++} ++ ++#endif // QT_OPENGL_ES_2_ANGLE_STATIC ++ + namespace gl + { + void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface) + { +- Current *current = (Current*)TlsGetValue(currentTLS); ++ Current *curr = current(); + +- current->context = context; +- current->display = display; ++ curr->context = context; ++ curr->display = display; + + if (context && display && surface) + { +@@ -89,9 +107,7 @@ void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface) + + Context *getContext() + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- return current->context; ++ return current()->context; + } + + Context *getNonLostContext() +@@ -115,9 +131,7 @@ Context *getNonLostContext() + + egl::Display *getDisplay() + { +- Current *current = (Current*)TlsGetValue(currentTLS); +- +- return current->display; ++ return current()->display; + } + + IDirect3DDevice9 *getDevice() +-- +1.8.0.msysgit.0 + diff --git a/src/angle/src/common/common.pri b/src/angle/src/common/common.pri index c7d2a2d5ae..d16202b6d6 100644 --- a/src/angle/src/common/common.pri +++ b/src/angle/src/common/common.pri @@ -40,6 +40,8 @@ win32-msvc2012 { } } +static: DEFINES *= QT_OPENGL_ES_2_ANGLE_STATIC + HEADERS += \ $$ANGLE_DIR/src/common/angleutils.h \ $$ANGLE_DIR/src/common/debug.h \ -- cgit v1.2.3 From 7df995a9bd3e989b4136f98424490604eb5178aa Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 23 Feb 2013 16:43:26 +0200 Subject: Harfbuzz: backporting fixes from upstream 81c8ef785b079980ad5b46be4fe7c7bf156dbf65 Fix crash! 81f2ecafa19b602f950df5a9e6e1b99c4b5ea55e Bug 30319 ff0612c2e7df1b86fc702c72e3015a6a5ae39b4c and 2dbd0fd11799c18bb6c66e337c3e31a1419823d4 Fix OOB access possibility 3bebe289aace6daa84b3d6983cebf5c58ddfad78 Fix problem with Indic shaper and control chars 90138e5a4d15c44f05456f90083ecacdc3196c8e Fix bad memory access in Myanmar shaper b847f24ce855d24f6822bcd9c0006905e81b94d8 Fix Arabic cursive positioning 3ab7b37bdebf0f8773493a1fee910b151c4de30f Fix misc leaks Change-Id: I6f3a6253782bff6abe4bf741d11c09fdd67542db Reviewed-by: Lars Knoll --- src/3rdparty/harfbuzz/src/harfbuzz-arabic.c | 12 +++++++++--- src/3rdparty/harfbuzz/src/harfbuzz-gpos.c | 9 ++++++--- src/3rdparty/harfbuzz/src/harfbuzz-gsub.c | 6 +++--- src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp | 5 +++-- src/3rdparty/harfbuzz/src/harfbuzz-myanmar.c | 3 ++- src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp | 2 +- src/3rdparty/harfbuzz/src/harfbuzz-tibetan.c | 3 ++- 7 files changed, 26 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-arabic.c b/src/3rdparty/harfbuzz/src/harfbuzz-arabic.c index 0293a5dadf..660939415b 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-arabic.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-arabic.c @@ -1114,16 +1114,22 @@ HB_Bool HB_ArabicShape(HB_ShaperItem *item) if (HB_SelectScript(item, item->item.script == HB_Script_Arabic ? arabic_features : syriac_features)) { HB_Bool ot_ok; - if (arabicSyriacOpenTypeShape(item, &ot_ok)) + if (arabicSyriacOpenTypeShape(item, &ot_ok)) { + HB_FREE_STACKARRAY(shapedChars); return TRUE; - if (ot_ok) + } + if (ot_ok) { + HB_FREE_STACKARRAY(shapedChars); return FALSE; /* fall through to the non OT code*/ + } } #endif - if (item->item.script != HB_Script_Arabic) + if (item->item.script != HB_Script_Arabic) { + HB_FREE_STACKARRAY(shapedChars); return HB_BasicShape(item); + } shapedString(item->string, item->stringLength, item->item.pos, item->item.length, shapedChars, &slen, item->item.bidiLevel % 2, diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c index 21ffe84ab3..1e1b92b010 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c @@ -3193,6 +3193,9 @@ static HB_Error Lookup_MarkMarkPos( GPOS_Instance* gpi, j--; } + if ( i > buffer->in_pos ) + return HB_Err_Not_Covered; + error = _HB_OPEN_Coverage_Index( &mmp->Mark2Coverage, IN_GLYPH( j ), &mark2_index ); if ( error ) @@ -5349,13 +5352,13 @@ static HB_Error Lookup_ChainContextPos2( if ( error ) return error; + if (ccpf2->MaxInputLength < 1) + return HB_Err_Not_Covered; + if ( ALLOC_ARRAY( backtrack_classes, ccpf2->MaxBacktrackLength, HB_UShort ) ) return error; known_backtrack_classes = 0; - if (ccpf2->MaxInputLength < 1) - return HB_Err_Not_Covered; - if ( ALLOC_ARRAY( input_classes, ccpf2->MaxInputLength, HB_UShort ) ) goto End3; known_input_classes = 1; diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gsub.c b/src/3rdparty/harfbuzz/src/harfbuzz-gsub.c index 9b6b59875a..89875d1d24 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-gsub.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-gsub.c @@ -3158,13 +3158,13 @@ static HB_Error Lookup_ChainContextSubst2( HB_GSUBHeader* gsub, if ( error ) return error; + if (ccsf2->MaxInputLength < 1) + return HB_Err_Not_Covered; + if ( ALLOC_ARRAY( backtrack_classes, ccsf2->MaxBacktrackLength, HB_UShort ) ) return error; known_backtrack_classes = 0; - if (ccsf2->MaxInputLength < 1) - return HB_Err_Not_Covered; - if ( ALLOC_ARRAY( input_classes, ccsf2->MaxInputLength, HB_UShort ) ) goto End3; known_input_classes = 1; diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp b/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp index 021d1ff4ae..31026829dd 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp +++ b/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp @@ -37,7 +37,7 @@ static HB_Bool isLetter(HB_UChar16 ucs) FLAG(HB_Letter_Titlecase) | FLAG(HB_Letter_Modifier) | FLAG(HB_Letter_Other); - return (FLAG(HB_GetUnicodeCharCategory(ucs)) & test) != 0; + return !!(FLAG(HB_GetUnicodeCharCategory(ucs)) & test); } static HB_Bool isMark(HB_UChar16 ucs) @@ -45,7 +45,7 @@ static HB_Bool isMark(HB_UChar16 ucs) const int test = FLAG(HB_Mark_NonSpacing) | FLAG(HB_Mark_SpacingCombining) | FLAG(HB_Mark_Enclosing); - return FLAG(HB_GetUnicodeCharCategory(ucs)) & test; + return !!(FLAG(HB_GetUnicodeCharCategory(ucs)) & test); } enum Form { @@ -1683,6 +1683,7 @@ static bool indic_shape_syllable(HB_Bool openType, HB_ShaperItem *item, bool inv } item->glyphs[j] = item->glyphs[i]; item->attributes[j] = item->attributes[i]; + item->offsets[j] = item->offsets[i]; item->advances[j] = item->advances[i]; ++i; ++j; diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-myanmar.c b/src/3rdparty/harfbuzz/src/harfbuzz-myanmar.c index 14a963a540..91a353f5c0 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-myanmar.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-myanmar.c @@ -359,7 +359,8 @@ static HB_Bool myanmar_shape_syllable(HB_Bool openType, HB_ShaperItem *item, HB_ if (kinzi >= 0 && i > base && (cc & Mymr_CF_AFTER_KINZI)) { reordered[len] = Mymr_C_NGA; reordered[len+1] = Mymr_C_VIRAMA; - properties[len-1] = AboveForm; + if (len > 0) + properties[len-1] = AboveForm; properties[len] = AboveForm; len += 2; kinzi = -1; diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp index 70efc76d7e..4ffaaee235 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp +++ b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp @@ -1033,7 +1033,7 @@ HB_Bool HB_OpenTypePosition(HB_ShaperItem *item, int availableGlyphs, HB_Bool do adjustment = HB_FIXED_ROUND(adjustment); if (positions[i].new_advance) { - advances[i] = adjustment; + ; //advances[i] = adjustment; } else { advances[i] += adjustment; } diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-tibetan.c b/src/3rdparty/harfbuzz/src/harfbuzz-tibetan.c index b745f22332..7dc4cebfb2 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-tibetan.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-tibetan.c @@ -90,7 +90,7 @@ static const unsigned char tibetanForm[0x80] = { #define tibetan_form(c) \ - (TibetanForm)tibetanForm[c - 0x0f40] + ((c) >= 0x0f40 && (c) < 0x0fc0 ? (TibetanForm)tibetanForm[(c) - 0x0f40] : TibetanOther) #ifndef NO_OPENTYPE static const HB_OpenTypeFeature tibetan_features[] = { @@ -115,6 +115,7 @@ static HB_Bool tibetan_shape_syllable(HB_Bool openType, HB_ShaperItem *item, HB_ if (item->num_glyphs < item->item.length + 4) { item->num_glyphs = item->item.length + 4; + HB_FREE_STACKARRAY(reordered); return FALSE; } -- cgit v1.2.3 From 3fdc4ae0ed156851c99dee4b52340cfbc0f9aaf7 Mon Sep 17 00:00:00 2001 From: Alain Boyer Date: Sat, 9 Feb 2013 01:48:44 +0200 Subject: Fix primary screen selection. When selecting the primary screen, the m_primaryScreen value obtained from the xcb_connect() call should be respected. This ensures that the proper primary screen is selected when specifying the DISPLAY environment variable. Task-number: QTBUG-27220 Change-Id: I60aa207f13d919087d4d2913141c804928684731 Reviewed-by: Shawn Rutledge --- src/plugins/platforms/xcb/qxcbconnection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index 32de54562a..a36f823b7c 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -184,7 +184,7 @@ void QXcbConnection::updateScreens() activeScreens << screen; ++screenNumber; if (!primaryScreen && primary) { - if (primary->output == XCB_NONE || outputs[i] == primary->output) { + if (m_primaryScreen == xcbScreenNumber && (primary->output == XCB_NONE || outputs[i] == primary->output)) { primaryScreen = screen; siblings.prepend(siblings.takeLast()); #ifdef Q_XCB_DEBUG -- cgit v1.2.3 From 34b870e4b5b1ae23a202443f4ea5a102471c0075 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 23 Feb 2013 14:56:18 +0200 Subject: Fix HB incorrectly hides [narrow non-breaking space] character U+202F is not of a Default_Ignorable property for a loooong time (perhaps was treated like a control code by mistake) Task-number: QTBUG-13280 Change-Id: I3c5ec5fa514039b7bca9ffa28ad6f5355e627855 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/3rdparty/harfbuzz/src/harfbuzz-shaper-private.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-shaper-private.h b/src/3rdparty/harfbuzz/src/harfbuzz-shaper-private.h index e5ed380fe7..cd53c12ac6 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-shaper-private.h +++ b/src/3rdparty/harfbuzz/src/harfbuzz-shaper-private.h @@ -142,7 +142,7 @@ void HB_HeuristicSetGlyphAttributes(HB_ShaperItem *item); #define HB_IsControlChar(uc) \ ((uc >= 0x200b && uc <= 0x200f /* ZW Space, ZWNJ, ZWJ, LRM and RLM */) \ - || (uc >= 0x2028 && uc <= 0x202f /* LS, PS, LRE, RLE, PDF, LRO, RLO, NNBSP */) \ + || (uc >= 0x2028 && uc <= 0x202e /* LS, PS, LRE, RLE, PDF, LRO, RLO */) \ || (uc >= 0x206a && uc <= 0x206f /* ISS, ASS, IAFS, AFS, NADS, NODS */)) HB_Bool HB_ConvertStringToGlyphIndices(HB_ShaperItem *shaper_item); -- cgit v1.2.3 From 26149d057a464ddafcc9694cfa94525c01a45231 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 25 Feb 2013 16:34:37 +0100 Subject: Windows native dialogs: Handle libraries. Task-number: QTBUG-29447 Change-Id: I4e68e546a4eb6b5f9c3dbe6d98905109e72e600a Reviewed-by: Joerg Bornemann --- .../platforms/windows/qwindowsdialoghelpers.cpp | 119 ++++++++++++++++++++- 1 file changed, 114 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp index e9c0cccc14..869e94b566 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp @@ -86,6 +86,8 @@ static const IID q_IID_IShellItem = {0x43826d1e, 0xe718, 0x42ee, {0xbc, 0 #define IID_IShellItem q_IID_IShellItem #else static const IID IID_IShellItem = {0x43826d1e, 0xe718, 0x42ee, {0xbc, 0x55, 0xa1, 0xe2, 0x61, 0xc3, 0x7b, 0xfe}}; +static const IID IID_IShellItemArray = {0xb63ea76d, 0x1f85, 0x456f, {0xa1, 0x9c, 0x48, 0x15, 0x9e, 0xfa, 0x85, 0x8b}}; +# define LFF_FORCEFILESYSTEM 1 #endif static const IID IID_IFileDialogEvents = {0x973510db, 0x7d7f, 0x452b,{0x89, 0x75, 0x74, 0xa8, 0x58, 0x28, 0xd3, 0x54}}; static const CLSID CLSID_FileOpenDialog = {0xdc1c5a9c, 0xe88a, 0x4dde, {0xa5, 0xa1, 0x60, 0xf8, 0x2a, 0x20, 0xae, 0xf7}}; @@ -253,6 +255,34 @@ DECLARE_INTERFACE_(IShellItemArray, IUnknown) }; #endif +#ifndef __IShellLibrary_INTERFACE_DEFINED__ + +enum LIBRARYOPTIONFLAGS {}; +enum DEFAULTSAVEFOLDERTYPE { DSFT_DETECT = 1 }; +enum LIBRARYSAVEFLAGS {}; + +DECLARE_INTERFACE_(IShellLibrary, IUnknown) +{ + STDMETHOD(LoadLibraryFromItem)(THIS_ IShellItem *psiLibrary, DWORD grfMode) PURE; + STDMETHOD(LoadLibraryFromKnownFolder)(THIS_ const GUID &kfidLibrary, DWORD grfMode) PURE; + STDMETHOD(AddFolder)(THIS_ IShellItem *psiLocation) PURE; + STDMETHOD(RemoveFolder)(THIS_ IShellItem *psiLocation) PURE; + STDMETHOD(GetFolders)(THIS_ int lff, REFIID riid, void **ppv) PURE; + STDMETHOD(ResolveFolder)(THIS_ IShellItem *psiFolderToResolve, DWORD dwTimeout, REFIID riid, void **ppv) PURE; + STDMETHOD(GetDefaultSaveFolder)(THIS_ DEFAULTSAVEFOLDERTYPE dsft, REFIID riid, void **ppv) PURE; + STDMETHOD(SetDefaultSaveFolder)(THIS_ DEFAULTSAVEFOLDERTYPE dsft, IShellItem *psi) PURE; + STDMETHOD(GetOptions)(THIS_ LIBRARYOPTIONFLAGS *plofOptions) PURE; + STDMETHOD(SetOptions)(THIS_ LIBRARYOPTIONFLAGS lofMask, LIBRARYOPTIONFLAGS lofOptions) PURE; + STDMETHOD(GetFolderType)(THIS_ GUID *pftid) PURE; + STDMETHOD(SetFolderType)(THIS_ const GUID &ftid) PURE; + STDMETHOD(GetIcon)(THIS_ LPWSTR *ppszIcon) PURE; + STDMETHOD(SetIcon)(THIS_ LPCWSTR pszIcon) PURE; + STDMETHOD(Commit)(THIS_) PURE; + STDMETHOD(Save)(THIS_ IShellItem *psiFolderToSaveIn, LPCWSTR pszLibraryName, LIBRARYSAVEFLAGS lsf, IShellItem **ppsiSavedTo) PURE; + STDMETHOD(SaveInKnownFolder)(THIS_ const GUID &kfidToSaveIn, LPCWSTR pszLibraryName, LIBRARYSAVEFLAGS lsf,IShellItem **ppsiSavedTo) PURE; +}; +#endif + #ifndef __IModalWindow_INTERFACE_DEFINED__ DECLARE_INTERFACE_(IModalWindow, IUnknown) { @@ -829,6 +859,8 @@ protected: bool init(const CLSID &clsId, const IID &iid); inline IFileDialog * fileDialog() const { return m_fileDialog; } static QString itemPath(IShellItem *item); + static QStringList libraryItemFolders(IShellItem *item); + static QString libraryItemDefaultSaveFolder(IShellItem *item); static int itemPaths(IShellItemArray *items, QStringList *fileResult = 0); static IShellItem *shellItem(const QString &path); @@ -972,17 +1004,94 @@ void QWindowsNativeFileDialogBase::setMode(QFileDialogOptions::FileMode mode, QF qErrnoWarning("%s: SetOptions() failed", __FUNCTION__); } -QString QWindowsNativeFileDialogBase::itemPath(IShellItem *item) +#ifndef Q_OS_WINCE + +// Helper for "Libraries": collections of folders appearing from Windows 7 +// on, visible in the file dialogs. + +// Load a library from a IShellItem (sanitized copy of the inline function +// SHLoadLibraryFromItem from ShObjIdl.h, which does not exist for MinGW). +static IShellLibrary *sHLoadLibraryFromItem(IShellItem *libraryItem, DWORD mode) +{ + // ID symbols present from Windows 7 on: + static const CLSID classId_ShellLibrary = {0xd9b3211d, 0xe57f, 0x4426, {0xaa, 0xef, 0x30, 0xa8, 0x6, 0xad, 0xd3, 0x97}}; + static const IID iId_IShellLibrary = {0x11a66efa, 0x382e, 0x451a, {0x92, 0x34, 0x1e, 0xe, 0x12, 0xef, 0x30, 0x85}}; + + IShellLibrary *helper = 0; + IShellLibrary *result = 0; + if (SUCCEEDED(CoCreateInstance(classId_ShellLibrary, NULL, CLSCTX_INPROC_SERVER, iId_IShellLibrary, reinterpret_cast(&helper)))) + if (SUCCEEDED(helper->LoadLibraryFromItem(libraryItem, mode))) + helper->QueryInterface(iId_IShellLibrary, reinterpret_cast(&result)); + if (helper) + helper->Release(); + return result; +} + +// Return all folders of a library-type item. +QStringList QWindowsNativeFileDialogBase::libraryItemFolders(IShellItem *item) +{ + QStringList result; + if (IShellLibrary *library = sHLoadLibraryFromItem(item, STGM_READ | STGM_SHARE_DENY_WRITE)) { + IShellItemArray *itemArray = 0; + if (SUCCEEDED(library->GetFolders(LFF_FORCEFILESYSTEM, IID_IShellItemArray, reinterpret_cast(&itemArray)))) { + QWindowsNativeFileDialogBase::itemPaths(itemArray, &result); + itemArray->Release(); + } + library->Release(); + } + return result; +} + +// Return default save folders of a library-type item. +QString QWindowsNativeFileDialogBase::libraryItemDefaultSaveFolder(IShellItem *item) { QString result; - LPWSTR name = 0; - if (SUCCEEDED(item->GetDisplayName(SIGDN_FILESYSPATH, &name))) { - result = QDir::cleanPath(QString::fromWCharArray(name)); - CoTaskMemFree(name); + if (IShellLibrary *library = sHLoadLibraryFromItem(item, STGM_READ | STGM_SHARE_DENY_WRITE)) { + IShellItem *item = 0; + if (SUCCEEDED(library->GetDefaultSaveFolder(DSFT_DETECT, IID_IShellItem, reinterpret_cast(&item)))) { + result = QWindowsNativeFileDialogBase::itemPath(item); + item->Release(); + } + library->Release(); } return result; } +#else // !Q_OS_WINCE + +QStringList QWindowsNativeFileDialogBase::libraryItemPaths(IShellItem *) +{ + return QStringList(); +} + +QString QWindowsNativeFileDialogBase::libraryDefaultSaveFolder(IShellItem *) +{ + return QString(); +} + +#endif // Q_OS_WINCE + +QString QWindowsNativeFileDialogBase::itemPath(IShellItem *item) +{ + SFGAOF attributes = 0; + // Check whether it has a file system representation? + if (FAILED(item->GetAttributes(SFGAO_FILESYSTEM, &attributes))) + return QString(); + if (attributes & SFGAO_FILESYSTEM) { + LPWSTR name = 0; + QString result; + if (SUCCEEDED(item->GetDisplayName(SIGDN_FILESYSPATH, &name))) { + result = QDir::cleanPath(QString::fromWCharArray(name)); + CoTaskMemFree(name); + } + return result; + } + // Check for a "Library" item + if ((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) && QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS7) + return QWindowsNativeFileDialogBase::libraryItemDefaultSaveFolder(item); + return QString(); +} + int QWindowsNativeFileDialogBase::itemPaths(IShellItemArray *items, QStringList *result /* = 0 */) { -- cgit v1.2.3 From 1ee11474622e7da068fb1cd26f509ed10848a3b5 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 21 Feb 2013 16:54:24 -0800 Subject: Rename the SQL driver header files to _p.h (make private) The drivers were never public API. They were exposed by mistake in public headers. What's more, they have #include'd a private header (qsqlcachedresult_p.h) since at least Qt 4.5.1. That means no one used those headers in Qt 4 (private headers weren't installed then) and it's unlikely anyone did in 5.0. Change-Id: Ie0a47bcf0260ee6bdd3d8494b78fd1eec28a2d6b Reviewed-by: Oswald Buddenhagen Reviewed-by: Friedemann Kleint Reviewed-by: Mark Brand --- src/plugins/sqldrivers/db2/main.cpp | 2 +- src/plugins/sqldrivers/ibase/main.cpp | 2 +- src/plugins/sqldrivers/mysql/main.cpp | 2 +- src/plugins/sqldrivers/oci/main.cpp | 2 +- src/plugins/sqldrivers/odbc/main.cpp | 2 +- src/plugins/sqldrivers/psql/main.cpp | 2 +- src/plugins/sqldrivers/sqlite/smain.cpp | 2 +- src/plugins/sqldrivers/sqlite2/smain.cpp | 2 +- src/plugins/sqldrivers/tds/main.cpp | 2 +- src/sql/drivers/db2/qsql_db2.cpp | 2 +- src/sql/drivers/db2/qsql_db2.h | 127 ------------------------ src/sql/drivers/db2/qsql_db2.pri | 2 +- src/sql/drivers/db2/qsql_db2_p.h | 127 ++++++++++++++++++++++++ src/sql/drivers/ibase/qsql_ibase.cpp | 2 +- src/sql/drivers/ibase/qsql_ibase.h | 108 --------------------- src/sql/drivers/ibase/qsql_ibase.pri | 2 +- src/sql/drivers/ibase/qsql_ibase_p.h | 108 +++++++++++++++++++++ src/sql/drivers/mysql/qsql_mysql.cpp | 2 +- src/sql/drivers/mysql/qsql_mysql.h | 143 --------------------------- src/sql/drivers/mysql/qsql_mysql.pri | 2 +- src/sql/drivers/mysql/qsql_mysql_p.h | 143 +++++++++++++++++++++++++++ src/sql/drivers/oci/qsql_oci.cpp | 2 +- src/sql/drivers/oci/qsql_oci.h | 104 -------------------- src/sql/drivers/oci/qsql_oci.pri | 2 +- src/sql/drivers/oci/qsql_oci_p.h | 104 ++++++++++++++++++++ src/sql/drivers/odbc/qsql_odbc.cpp | 2 +- src/sql/drivers/odbc/qsql_odbc.h | 159 ------------------------------- src/sql/drivers/odbc/qsql_odbc.pri | 2 +- src/sql/drivers/odbc/qsql_odbc_p.h | 159 +++++++++++++++++++++++++++++++ src/sql/drivers/psql/qsql_psql.cpp | 2 +- src/sql/drivers/psql/qsql_psql.h | 159 ------------------------------- src/sql/drivers/psql/qsql_psql.pri | 2 +- src/sql/drivers/psql/qsql_psql_p.h | 159 +++++++++++++++++++++++++++++++ src/sql/drivers/sqlite/qsql_sqlite.cpp | 2 +- src/sql/drivers/sqlite/qsql_sqlite.h | 99 ------------------- src/sql/drivers/sqlite/qsql_sqlite.pri | 2 +- src/sql/drivers/sqlite/qsql_sqlite_p.h | 99 +++++++++++++++++++ src/sql/drivers/sqlite2/qsql_sqlite2.cpp | 2 +- src/sql/drivers/sqlite2/qsql_sqlite2.h | 104 -------------------- src/sql/drivers/sqlite2/qsql_sqlite2.pri | 2 +- src/sql/drivers/sqlite2/qsql_sqlite2_p.h | 104 ++++++++++++++++++++ src/sql/drivers/tds/qsql_tds.cpp | 2 +- src/sql/drivers/tds/qsql_tds.h | 117 ----------------------- src/sql/drivers/tds/qsql_tds.pri | 2 +- src/sql/drivers/tds/qsql_tds_p.h | 117 +++++++++++++++++++++++ src/sql/kernel/qsqldatabase.cpp | 18 ++-- src/tools/uic/qclass_lib_map.h | 18 ---- 47 files changed, 1156 insertions(+), 1174 deletions(-) delete mode 100644 src/sql/drivers/db2/qsql_db2.h create mode 100644 src/sql/drivers/db2/qsql_db2_p.h delete mode 100644 src/sql/drivers/ibase/qsql_ibase.h create mode 100644 src/sql/drivers/ibase/qsql_ibase_p.h delete mode 100644 src/sql/drivers/mysql/qsql_mysql.h create mode 100644 src/sql/drivers/mysql/qsql_mysql_p.h delete mode 100644 src/sql/drivers/oci/qsql_oci.h create mode 100644 src/sql/drivers/oci/qsql_oci_p.h delete mode 100644 src/sql/drivers/odbc/qsql_odbc.h create mode 100644 src/sql/drivers/odbc/qsql_odbc_p.h delete mode 100644 src/sql/drivers/psql/qsql_psql.h create mode 100644 src/sql/drivers/psql/qsql_psql_p.h delete mode 100644 src/sql/drivers/sqlite/qsql_sqlite.h create mode 100644 src/sql/drivers/sqlite/qsql_sqlite_p.h delete mode 100644 src/sql/drivers/sqlite2/qsql_sqlite2.h create mode 100644 src/sql/drivers/sqlite2/qsql_sqlite2_p.h delete mode 100644 src/sql/drivers/tds/qsql_tds.h create mode 100644 src/sql/drivers/tds/qsql_tds_p.h (limited to 'src') diff --git a/src/plugins/sqldrivers/db2/main.cpp b/src/plugins/sqldrivers/db2/main.cpp index abde11b178..6c796beff6 100644 --- a/src/plugins/sqldrivers/db2/main.cpp +++ b/src/plugins/sqldrivers/db2/main.cpp @@ -41,7 +41,7 @@ #include #include -#include "../../../sql/drivers/db2/qsql_db2.h" +#include "../../../sql/drivers/db2/qsql_db2_p.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/sqldrivers/ibase/main.cpp b/src/plugins/sqldrivers/ibase/main.cpp index 1ce663d868..e7d1c38690 100644 --- a/src/plugins/sqldrivers/ibase/main.cpp +++ b/src/plugins/sqldrivers/ibase/main.cpp @@ -41,7 +41,7 @@ #include #include -#include "../../../sql/drivers/ibase/qsql_ibase.h" +#include "../../../sql/drivers/ibase/qsql_ibase_p.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/sqldrivers/mysql/main.cpp b/src/plugins/sqldrivers/mysql/main.cpp index d313152cd7..8aaee6c268 100644 --- a/src/plugins/sqldrivers/mysql/main.cpp +++ b/src/plugins/sqldrivers/mysql/main.cpp @@ -41,7 +41,7 @@ #include #include -#include "../../../sql/drivers/mysql/qsql_mysql.h" +#include "../../../sql/drivers/mysql/qsql_mysql_p.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/sqldrivers/oci/main.cpp b/src/plugins/sqldrivers/oci/main.cpp index fc069df534..f1b0266536 100644 --- a/src/plugins/sqldrivers/oci/main.cpp +++ b/src/plugins/sqldrivers/oci/main.cpp @@ -41,7 +41,7 @@ #include #include -#include "../../../sql/drivers/oci/qsql_oci.h" +#include "../../../sql/drivers/oci/qsql_oci_p.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/sqldrivers/odbc/main.cpp b/src/plugins/sqldrivers/odbc/main.cpp index 215cbf6042..fda5c68fcc 100644 --- a/src/plugins/sqldrivers/odbc/main.cpp +++ b/src/plugins/sqldrivers/odbc/main.cpp @@ -41,7 +41,7 @@ #include #include -#include "../../../sql/drivers/odbc/qsql_odbc.h" +#include "../../../sql/drivers/odbc/qsql_odbc_p.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/sqldrivers/psql/main.cpp b/src/plugins/sqldrivers/psql/main.cpp index b3cba82f3e..3851ba6bfe 100644 --- a/src/plugins/sqldrivers/psql/main.cpp +++ b/src/plugins/sqldrivers/psql/main.cpp @@ -41,7 +41,7 @@ #include #include -#include "../../../sql/drivers/psql/qsql_psql.h" +#include "../../../sql/drivers/psql/qsql_psql_p.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/sqldrivers/sqlite/smain.cpp b/src/plugins/sqldrivers/sqlite/smain.cpp index e52c235c18..1835962331 100644 --- a/src/plugins/sqldrivers/sqlite/smain.cpp +++ b/src/plugins/sqldrivers/sqlite/smain.cpp @@ -41,7 +41,7 @@ #include #include -#include "../../../../src/sql/drivers/sqlite/qsql_sqlite.h" +#include "../../../../src/sql/drivers/sqlite/qsql_sqlite_p.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/sqldrivers/sqlite2/smain.cpp b/src/plugins/sqldrivers/sqlite2/smain.cpp index 38eb8e7fed..e15834a18e 100644 --- a/src/plugins/sqldrivers/sqlite2/smain.cpp +++ b/src/plugins/sqldrivers/sqlite2/smain.cpp @@ -41,7 +41,7 @@ #include #include -#include "../../../../src/sql/drivers/sqlite2/qsql_sqlite2.h" +#include "../../../../src/sql/drivers/sqlite2/qsql_sqlite2_p.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/sqldrivers/tds/main.cpp b/src/plugins/sqldrivers/tds/main.cpp index 9066efa172..1cb04e9e07 100644 --- a/src/plugins/sqldrivers/tds/main.cpp +++ b/src/plugins/sqldrivers/tds/main.cpp @@ -47,7 +47,7 @@ #define _WINSCARD_H_ #include #endif -#include "../../../sql/drivers/tds/qsql_tds.h" +#include "../../../sql/drivers/tds/qsql_tds_p.h" QT_BEGIN_NAMESPACE diff --git a/src/sql/drivers/db2/qsql_db2.cpp b/src/sql/drivers/db2/qsql_db2.cpp index 9406861d4c..50a9af23bc 100644 --- a/src/sql/drivers/db2/qsql_db2.cpp +++ b/src/sql/drivers/db2/qsql_db2.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qsql_db2.h" +#include "qsql_db2_p.h" #include #include #include diff --git a/src/sql/drivers/db2/qsql_db2.h b/src/sql/drivers/db2/qsql_db2.h deleted file mode 100644 index 5d31906096..0000000000 --- a/src/sql/drivers/db2/qsql_db2.h +++ /dev/null @@ -1,127 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtSql module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSQL_DB2_H -#define QSQL_DB2_H - -#ifdef QT_PLUGIN -#define Q_EXPORT_SQLDRIVER_DB2 -#else -#define Q_EXPORT_SQLDRIVER_DB2 Q_SQL_EXPORT -#endif - -#include -#include - -QT_BEGIN_NAMESPACE - -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - -class QDB2Driver; -class QDB2DriverPrivate; -class QDB2ResultPrivate; -class QSqlRecord; - -class QDB2Result : public QSqlResult -{ -public: - QDB2Result(const QDB2Driver* dr, const QDB2DriverPrivate* dp); - ~QDB2Result(); - bool prepare(const QString& query); - bool exec(); - QVariant handle() const; - -protected: - QVariant data(int field); - bool reset (const QString& query); - bool fetch(int i); - bool fetchNext(); - bool fetchFirst(); - bool fetchLast(); - bool isNull(int i); - int size(); - int numRowsAffected(); - QSqlRecord record() const; - void virtual_hook(int id, void *data); - void detachFromResultSet(); - bool nextResult(); - -private: - QDB2ResultPrivate* d; -}; - -class Q_EXPORT_SQLDRIVER_DB2 QDB2Driver : public QSqlDriver -{ - Q_OBJECT -public: - explicit QDB2Driver(QObject* parent = 0); - QDB2Driver(Qt::HANDLE env, Qt::HANDLE con, QObject* parent = 0); - ~QDB2Driver(); - bool hasFeature(DriverFeature) const; - void close(); - QSqlRecord record(const QString& tableName) const; - QStringList tables(QSql::TableType type) const; - QSqlResult *createResult() const; - QSqlIndex primaryIndex(const QString& tablename) const; - bool beginTransaction(); - bool commitTransaction(); - bool rollbackTransaction(); - QString formatValue(const QSqlField &field, bool trimStrings) const; - QVariant handle() const; - bool open(const QString& db, - const QString& user, - const QString& password, - const QString& host, - int port, - const QString& connOpts); - QString escapeIdentifier(const QString &identifier, IdentifierType type) const; - -private: - bool setAutoCommit(bool autoCommit); - QDB2DriverPrivate* d; -}; - -QT_END_NAMESPACE - -#endif // QSQL_DB2_H diff --git a/src/sql/drivers/db2/qsql_db2.pri b/src/sql/drivers/db2/qsql_db2.pri index 963732aaee..c9e65e2c2e 100644 --- a/src/sql/drivers/db2/qsql_db2.pri +++ b/src/sql/drivers/db2/qsql_db2.pri @@ -1,4 +1,4 @@ -HEADERS += $$PWD/qsql_db2.h +HEADERS += $$PWD/qsql_db2_p.h SOURCES += $$PWD/qsql_db2.cpp unix { diff --git a/src/sql/drivers/db2/qsql_db2_p.h b/src/sql/drivers/db2/qsql_db2_p.h new file mode 100644 index 0000000000..5d31906096 --- /dev/null +++ b/src/sql/drivers/db2/qsql_db2_p.h @@ -0,0 +1,127 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSql module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSQL_DB2_H +#define QSQL_DB2_H + +#ifdef QT_PLUGIN +#define Q_EXPORT_SQLDRIVER_DB2 +#else +#define Q_EXPORT_SQLDRIVER_DB2 Q_SQL_EXPORT +#endif + +#include +#include + +QT_BEGIN_NAMESPACE + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_stop_processing +#endif + +class QDB2Driver; +class QDB2DriverPrivate; +class QDB2ResultPrivate; +class QSqlRecord; + +class QDB2Result : public QSqlResult +{ +public: + QDB2Result(const QDB2Driver* dr, const QDB2DriverPrivate* dp); + ~QDB2Result(); + bool prepare(const QString& query); + bool exec(); + QVariant handle() const; + +protected: + QVariant data(int field); + bool reset (const QString& query); + bool fetch(int i); + bool fetchNext(); + bool fetchFirst(); + bool fetchLast(); + bool isNull(int i); + int size(); + int numRowsAffected(); + QSqlRecord record() const; + void virtual_hook(int id, void *data); + void detachFromResultSet(); + bool nextResult(); + +private: + QDB2ResultPrivate* d; +}; + +class Q_EXPORT_SQLDRIVER_DB2 QDB2Driver : public QSqlDriver +{ + Q_OBJECT +public: + explicit QDB2Driver(QObject* parent = 0); + QDB2Driver(Qt::HANDLE env, Qt::HANDLE con, QObject* parent = 0); + ~QDB2Driver(); + bool hasFeature(DriverFeature) const; + void close(); + QSqlRecord record(const QString& tableName) const; + QStringList tables(QSql::TableType type) const; + QSqlResult *createResult() const; + QSqlIndex primaryIndex(const QString& tablename) const; + bool beginTransaction(); + bool commitTransaction(); + bool rollbackTransaction(); + QString formatValue(const QSqlField &field, bool trimStrings) const; + QVariant handle() const; + bool open(const QString& db, + const QString& user, + const QString& password, + const QString& host, + int port, + const QString& connOpts); + QString escapeIdentifier(const QString &identifier, IdentifierType type) const; + +private: + bool setAutoCommit(bool autoCommit); + QDB2DriverPrivate* d; +}; + +QT_END_NAMESPACE + +#endif // QSQL_DB2_H diff --git a/src/sql/drivers/ibase/qsql_ibase.cpp b/src/sql/drivers/ibase/qsql_ibase.cpp index 7aff6f62fc..abf6a74c3e 100644 --- a/src/sql/drivers/ibase/qsql_ibase.cpp +++ b/src/sql/drivers/ibase/qsql_ibase.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qsql_ibase.h" +#include "qsql_ibase_p.h" #include #include #include diff --git a/src/sql/drivers/ibase/qsql_ibase.h b/src/sql/drivers/ibase/qsql_ibase.h deleted file mode 100644 index 781448b98a..0000000000 --- a/src/sql/drivers/ibase/qsql_ibase.h +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtSql module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSQL_IBASE_H -#define QSQL_IBASE_H - -#include -#include -#include - -QT_BEGIN_NAMESPACE - -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - -class QIBaseDriverPrivate; -class QIBaseDriver; - -class QIBaseDriver : public QSqlDriver -{ - Q_OBJECT - friend class QIBaseDriverPrivate; - friend class QIBaseResultPrivate; -public: - explicit QIBaseDriver(QObject *parent = 0); - explicit QIBaseDriver(isc_db_handle connection, QObject *parent = 0); - virtual ~QIBaseDriver(); - bool hasFeature(DriverFeature f) const; - bool open(const QString & db, - const QString & user, - const QString & password, - const QString & host, - int port, - const QString & connOpts); - bool open(const QString & db, - const QString & user, - const QString & password, - const QString & host, - int port) { return open (db, user, password, host, port, QString()); } - void close(); - QSqlResult *createResult() const; - bool beginTransaction(); - bool commitTransaction(); - bool rollbackTransaction(); - QStringList tables(QSql::TableType) const; - - QSqlRecord record(const QString& tablename) const; - QSqlIndex primaryIndex(const QString &table) const; - - QString formatValue(const QSqlField &field, bool trimStrings) const; - QVariant handle() const; - - QString escapeIdentifier(const QString &identifier, IdentifierType type) const; - - bool subscribeToNotification(const QString &name); - bool unsubscribeFromNotification(const QString &name); - QStringList subscribedToNotifications() const; - -private Q_SLOTS: - void qHandleEventNotification(void* updatedResultBuffer); - -private: - QIBaseDriverPrivate* d; -}; - -QT_END_NAMESPACE - -#endif // QSQL_IBASE_H diff --git a/src/sql/drivers/ibase/qsql_ibase.pri b/src/sql/drivers/ibase/qsql_ibase.pri index 26017e8727..ef3b68d34e 100644 --- a/src/sql/drivers/ibase/qsql_ibase.pri +++ b/src/sql/drivers/ibase/qsql_ibase.pri @@ -1,4 +1,4 @@ -HEADERS += $$PWD/qsql_ibase.h +HEADERS += $$PWD/qsql_ibase_p.h SOURCES += $$PWD/qsql_ibase.cpp unix { diff --git a/src/sql/drivers/ibase/qsql_ibase_p.h b/src/sql/drivers/ibase/qsql_ibase_p.h new file mode 100644 index 0000000000..781448b98a --- /dev/null +++ b/src/sql/drivers/ibase/qsql_ibase_p.h @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSql module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSQL_IBASE_H +#define QSQL_IBASE_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_stop_processing +#endif + +class QIBaseDriverPrivate; +class QIBaseDriver; + +class QIBaseDriver : public QSqlDriver +{ + Q_OBJECT + friend class QIBaseDriverPrivate; + friend class QIBaseResultPrivate; +public: + explicit QIBaseDriver(QObject *parent = 0); + explicit QIBaseDriver(isc_db_handle connection, QObject *parent = 0); + virtual ~QIBaseDriver(); + bool hasFeature(DriverFeature f) const; + bool open(const QString & db, + const QString & user, + const QString & password, + const QString & host, + int port, + const QString & connOpts); + bool open(const QString & db, + const QString & user, + const QString & password, + const QString & host, + int port) { return open (db, user, password, host, port, QString()); } + void close(); + QSqlResult *createResult() const; + bool beginTransaction(); + bool commitTransaction(); + bool rollbackTransaction(); + QStringList tables(QSql::TableType) const; + + QSqlRecord record(const QString& tablename) const; + QSqlIndex primaryIndex(const QString &table) const; + + QString formatValue(const QSqlField &field, bool trimStrings) const; + QVariant handle() const; + + QString escapeIdentifier(const QString &identifier, IdentifierType type) const; + + bool subscribeToNotification(const QString &name); + bool unsubscribeFromNotification(const QString &name); + QStringList subscribedToNotifications() const; + +private Q_SLOTS: + void qHandleEventNotification(void* updatedResultBuffer); + +private: + QIBaseDriverPrivate* d; +}; + +QT_END_NAMESPACE + +#endif // QSQL_IBASE_H diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp index b4aa5cd4cc..04ba450d46 100644 --- a/src/sql/drivers/mysql/qsql_mysql.cpp +++ b/src/sql/drivers/mysql/qsql_mysql.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qsql_mysql.h" +#include "qsql_mysql_p.h" #include #include diff --git a/src/sql/drivers/mysql/qsql_mysql.h b/src/sql/drivers/mysql/qsql_mysql.h deleted file mode 100644 index 953216de9a..0000000000 --- a/src/sql/drivers/mysql/qsql_mysql.h +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtSql module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSQL_MYSQL_H -#define QSQL_MYSQL_H - -#include -#include - -#if defined (Q_OS_WIN32) -#include -#endif - -#include - -#ifdef QT_PLUGIN -#define Q_EXPORT_SQLDRIVER_MYSQL -#else -#define Q_EXPORT_SQLDRIVER_MYSQL Q_SQL_EXPORT -#endif - -QT_BEGIN_NAMESPACE - -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - -class QMYSQLDriverPrivate; -class QMYSQLResultPrivate; -class QMYSQLDriver; -class QSqlRecordInfo; - -class QMYSQLResult : public QSqlResult -{ - friend class QMYSQLDriver; - friend class QMYSQLResultPrivate; -public: - explicit QMYSQLResult(const QMYSQLDriver* db); - ~QMYSQLResult(); - - QVariant handle() const; -protected: - void cleanup(); - bool fetch(int i); - bool fetchNext(); - bool fetchLast(); - bool fetchFirst(); - QVariant data(int field); - bool isNull(int field); - bool reset (const QString& query); - int size(); - int numRowsAffected(); - QVariant lastInsertId() const; - QSqlRecord record() const; - void virtual_hook(int id, void *data); - bool nextResult(); - -#if MYSQL_VERSION_ID >= 40108 - bool prepare(const QString& stmt); - bool exec(); -#endif -private: - QMYSQLResultPrivate* d; -}; - -class Q_EXPORT_SQLDRIVER_MYSQL QMYSQLDriver : public QSqlDriver -{ - Q_OBJECT - friend class QMYSQLResult; -public: - explicit QMYSQLDriver(QObject *parent=0); - explicit QMYSQLDriver(MYSQL *con, QObject * parent=0); - ~QMYSQLDriver(); - bool hasFeature(DriverFeature f) const; - bool open(const QString & db, - const QString & user, - const QString & password, - const QString & host, - int port, - const QString& connOpts); - void close(); - QSqlResult *createResult() const; - QStringList tables(QSql::TableType) const; - QSqlIndex primaryIndex(const QString& tablename) const; - QSqlRecord record(const QString& tablename) const; - QString formatValue(const QSqlField &field, - bool trimStrings) const; - QVariant handle() const; - QString escapeIdentifier(const QString &identifier, IdentifierType type) const; - - bool isIdentifierEscaped(const QString &identifier, IdentifierType type) const; - -protected: - bool beginTransaction(); - bool commitTransaction(); - bool rollbackTransaction(); -private: - void init(); - QMYSQLDriverPrivate* d; -}; - -QT_END_NAMESPACE - -#endif // QSQL_MYSQL_H diff --git a/src/sql/drivers/mysql/qsql_mysql.pri b/src/sql/drivers/mysql/qsql_mysql.pri index 0423eb4ed9..50f49ca548 100644 --- a/src/sql/drivers/mysql/qsql_mysql.pri +++ b/src/sql/drivers/mysql/qsql_mysql.pri @@ -1,4 +1,4 @@ -HEADERS += $$PWD/qsql_mysql.h +HEADERS += $$PWD/qsql_mysql_p.h SOURCES += $$PWD/qsql_mysql.cpp !isEmpty(MYSQL_PATH) { diff --git a/src/sql/drivers/mysql/qsql_mysql_p.h b/src/sql/drivers/mysql/qsql_mysql_p.h new file mode 100644 index 0000000000..953216de9a --- /dev/null +++ b/src/sql/drivers/mysql/qsql_mysql_p.h @@ -0,0 +1,143 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSql module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSQL_MYSQL_H +#define QSQL_MYSQL_H + +#include +#include + +#if defined (Q_OS_WIN32) +#include +#endif + +#include + +#ifdef QT_PLUGIN +#define Q_EXPORT_SQLDRIVER_MYSQL +#else +#define Q_EXPORT_SQLDRIVER_MYSQL Q_SQL_EXPORT +#endif + +QT_BEGIN_NAMESPACE + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_stop_processing +#endif + +class QMYSQLDriverPrivate; +class QMYSQLResultPrivate; +class QMYSQLDriver; +class QSqlRecordInfo; + +class QMYSQLResult : public QSqlResult +{ + friend class QMYSQLDriver; + friend class QMYSQLResultPrivate; +public: + explicit QMYSQLResult(const QMYSQLDriver* db); + ~QMYSQLResult(); + + QVariant handle() const; +protected: + void cleanup(); + bool fetch(int i); + bool fetchNext(); + bool fetchLast(); + bool fetchFirst(); + QVariant data(int field); + bool isNull(int field); + bool reset (const QString& query); + int size(); + int numRowsAffected(); + QVariant lastInsertId() const; + QSqlRecord record() const; + void virtual_hook(int id, void *data); + bool nextResult(); + +#if MYSQL_VERSION_ID >= 40108 + bool prepare(const QString& stmt); + bool exec(); +#endif +private: + QMYSQLResultPrivate* d; +}; + +class Q_EXPORT_SQLDRIVER_MYSQL QMYSQLDriver : public QSqlDriver +{ + Q_OBJECT + friend class QMYSQLResult; +public: + explicit QMYSQLDriver(QObject *parent=0); + explicit QMYSQLDriver(MYSQL *con, QObject * parent=0); + ~QMYSQLDriver(); + bool hasFeature(DriverFeature f) const; + bool open(const QString & db, + const QString & user, + const QString & password, + const QString & host, + int port, + const QString& connOpts); + void close(); + QSqlResult *createResult() const; + QStringList tables(QSql::TableType) const; + QSqlIndex primaryIndex(const QString& tablename) const; + QSqlRecord record(const QString& tablename) const; + QString formatValue(const QSqlField &field, + bool trimStrings) const; + QVariant handle() const; + QString escapeIdentifier(const QString &identifier, IdentifierType type) const; + + bool isIdentifierEscaped(const QString &identifier, IdentifierType type) const; + +protected: + bool beginTransaction(); + bool commitTransaction(); + bool rollbackTransaction(); +private: + void init(); + QMYSQLDriverPrivate* d; +}; + +QT_END_NAMESPACE + +#endif // QSQL_MYSQL_H diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp index db73f8f6ea..8a6161d816 100644 --- a/src/sql/drivers/oci/qsql_oci.cpp +++ b/src/sql/drivers/oci/qsql_oci.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qsql_oci.h" +#include "qsql_oci_p.h" #include #include diff --git a/src/sql/drivers/oci/qsql_oci.h b/src/sql/drivers/oci/qsql_oci.h deleted file mode 100644 index 403de623ce..0000000000 --- a/src/sql/drivers/oci/qsql_oci.h +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtSql module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSQL_OCI_H -#define QSQL_OCI_H - -#include -#include - -#ifdef QT_PLUGIN -#define Q_EXPORT_SQLDRIVER_OCI -#else -#define Q_EXPORT_SQLDRIVER_OCI Q_SQL_EXPORT -#endif - -typedef struct OCIEnv OCIEnv; -typedef struct OCISvcCtx OCISvcCtx; - -QT_BEGIN_NAMESPACE - -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - -class QOCIDriver; -class QOCICols; -struct QOCIDriverPrivate; - -class Q_EXPORT_SQLDRIVER_OCI QOCIDriver : public QSqlDriver -{ - Q_OBJECT - friend struct QOCIResultPrivate; - friend class QOCIPrivate; -public: - explicit QOCIDriver(QObject* parent = 0); - QOCIDriver(OCIEnv* env, OCISvcCtx* ctx, QObject* parent = 0); - ~QOCIDriver(); - bool hasFeature(DriverFeature f) const; - bool open(const QString & db, - const QString & user, - const QString & password, - const QString & host, - int port, - const QString& connOpts); - void close(); - QSqlResult *createResult() const; - QStringList tables(QSql::TableType) const; - QSqlRecord record(const QString& tablename) const; - QSqlIndex primaryIndex(const QString& tablename) const; - QString formatValue(const QSqlField &field, - bool trimStrings) const; - QVariant handle() const; - QString escapeIdentifier(const QString &identifier, IdentifierType) const; - -protected: - bool beginTransaction(); - bool commitTransaction(); - bool rollbackTransaction(); -private: - QOCIDriverPrivate *d; -}; - -QT_END_NAMESPACE - -#endif // QSQL_OCI_H diff --git a/src/sql/drivers/oci/qsql_oci.pri b/src/sql/drivers/oci/qsql_oci.pri index 60ccc4c227..9108dbaa3c 100644 --- a/src/sql/drivers/oci/qsql_oci.pri +++ b/src/sql/drivers/oci/qsql_oci.pri @@ -1,4 +1,4 @@ -HEADERS += $$PWD/qsql_oci.h +HEADERS += $$PWD/qsql_oci_p.h SOURCES += $$PWD/qsql_oci.cpp unix { diff --git a/src/sql/drivers/oci/qsql_oci_p.h b/src/sql/drivers/oci/qsql_oci_p.h new file mode 100644 index 0000000000..403de623ce --- /dev/null +++ b/src/sql/drivers/oci/qsql_oci_p.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSql module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSQL_OCI_H +#define QSQL_OCI_H + +#include +#include + +#ifdef QT_PLUGIN +#define Q_EXPORT_SQLDRIVER_OCI +#else +#define Q_EXPORT_SQLDRIVER_OCI Q_SQL_EXPORT +#endif + +typedef struct OCIEnv OCIEnv; +typedef struct OCISvcCtx OCISvcCtx; + +QT_BEGIN_NAMESPACE + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_stop_processing +#endif + +class QOCIDriver; +class QOCICols; +struct QOCIDriverPrivate; + +class Q_EXPORT_SQLDRIVER_OCI QOCIDriver : public QSqlDriver +{ + Q_OBJECT + friend struct QOCIResultPrivate; + friend class QOCIPrivate; +public: + explicit QOCIDriver(QObject* parent = 0); + QOCIDriver(OCIEnv* env, OCISvcCtx* ctx, QObject* parent = 0); + ~QOCIDriver(); + bool hasFeature(DriverFeature f) const; + bool open(const QString & db, + const QString & user, + const QString & password, + const QString & host, + int port, + const QString& connOpts); + void close(); + QSqlResult *createResult() const; + QStringList tables(QSql::TableType) const; + QSqlRecord record(const QString& tablename) const; + QSqlIndex primaryIndex(const QString& tablename) const; + QString formatValue(const QSqlField &field, + bool trimStrings) const; + QVariant handle() const; + QString escapeIdentifier(const QString &identifier, IdentifierType) const; + +protected: + bool beginTransaction(); + bool commitTransaction(); + bool rollbackTransaction(); +private: + QOCIDriverPrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QSQL_OCI_H diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index 9517d95fc4..a52e3ee451 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qsql_odbc.h" +#include "qsql_odbc_p.h" #include #if defined (Q_OS_WIN32) diff --git a/src/sql/drivers/odbc/qsql_odbc.h b/src/sql/drivers/odbc/qsql_odbc.h deleted file mode 100644 index 26f47e6c74..0000000000 --- a/src/sql/drivers/odbc/qsql_odbc.h +++ /dev/null @@ -1,159 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtSql module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSQL_ODBC_H -#define QSQL_ODBC_H - -#include -#include - -#if defined (Q_OS_WIN32) -#include -#endif - -#ifdef QT_PLUGIN -#define Q_EXPORT_SQLDRIVER_ODBC -#else -#define Q_EXPORT_SQLDRIVER_ODBC Q_SQL_EXPORT -#endif - -#ifdef Q_OS_UNIX -#define HAVE_LONG_LONG 1 // force UnixODBC NOT to fall back to a struct for BIGINTs -#endif - -#if defined(Q_CC_BOR) -// workaround for Borland to make sure that SQLBIGINT is defined -# define _MSC_VER 900 -#endif -#include -#if defined(Q_CC_BOR) -# undef _MSC_VER -#endif - -#include - -QT_BEGIN_NAMESPACE - -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - -class QODBCPrivate; -class QODBCDriverPrivate; -class QODBCDriver; -class QSqlRecordInfo; - -class QODBCResult : public QSqlResult -{ -public: - QODBCResult(const QODBCDriver * db, QODBCDriverPrivate* p); - virtual ~QODBCResult(); - - bool prepare(const QString& query); - bool exec(); - - QVariant handle() const; - virtual void setForwardOnly(bool forward); - -protected: - bool fetchNext(); - bool fetchFirst(); - bool fetchLast(); - bool fetchPrevious(); - bool fetch(int i); - bool reset (const QString& query); - QVariant data(int field); - bool isNull(int field); - int size(); - int numRowsAffected(); - QSqlRecord record() const; - void virtual_hook(int id, void *data); - void detachFromResultSet(); - bool nextResult(); - -private: - QODBCPrivate *d; -}; - -class Q_EXPORT_SQLDRIVER_ODBC QODBCDriver : public QSqlDriver -{ - Q_OBJECT -public: - explicit QODBCDriver(QObject *parent=0); - QODBCDriver(SQLHANDLE env, SQLHANDLE con, QObject * parent=0); - virtual ~QODBCDriver(); - bool hasFeature(DriverFeature f) const; - void close(); - QSqlResult *createResult() const; - QStringList tables(QSql::TableType) const; - QSqlRecord record(const QString& tablename) const; - QSqlIndex primaryIndex(const QString& tablename) const; - QVariant handle() const; - QString formatValue(const QSqlField &field, - bool trimStrings) const; - bool open(const QString& db, - const QString& user, - const QString& password, - const QString& host, - int port, - const QString& connOpts); - - QString escapeIdentifier(const QString &identifier, IdentifierType type) const; - - bool isIdentifierEscaped(const QString &identifier, IdentifierType type) const; - -protected: - bool beginTransaction(); - bool commitTransaction(); - bool rollbackTransaction(); - -private: - void init(); - bool endTrans(); - void cleanup(); - QODBCDriverPrivate* d; - friend class QODBCPrivate; -}; - -QT_END_NAMESPACE - -#endif // QSQL_ODBC_H diff --git a/src/sql/drivers/odbc/qsql_odbc.pri b/src/sql/drivers/odbc/qsql_odbc.pri index 19ff784a04..b206df37c3 100644 --- a/src/sql/drivers/odbc/qsql_odbc.pri +++ b/src/sql/drivers/odbc/qsql_odbc.pri @@ -1,4 +1,4 @@ -HEADERS += $$PWD/qsql_odbc.h +HEADERS += $$PWD/qsql_odbc_p.h SOURCES += $$PWD/qsql_odbc.cpp unix { diff --git a/src/sql/drivers/odbc/qsql_odbc_p.h b/src/sql/drivers/odbc/qsql_odbc_p.h new file mode 100644 index 0000000000..26f47e6c74 --- /dev/null +++ b/src/sql/drivers/odbc/qsql_odbc_p.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSql module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSQL_ODBC_H +#define QSQL_ODBC_H + +#include +#include + +#if defined (Q_OS_WIN32) +#include +#endif + +#ifdef QT_PLUGIN +#define Q_EXPORT_SQLDRIVER_ODBC +#else +#define Q_EXPORT_SQLDRIVER_ODBC Q_SQL_EXPORT +#endif + +#ifdef Q_OS_UNIX +#define HAVE_LONG_LONG 1 // force UnixODBC NOT to fall back to a struct for BIGINTs +#endif + +#if defined(Q_CC_BOR) +// workaround for Borland to make sure that SQLBIGINT is defined +# define _MSC_VER 900 +#endif +#include +#if defined(Q_CC_BOR) +# undef _MSC_VER +#endif + +#include + +QT_BEGIN_NAMESPACE + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_stop_processing +#endif + +class QODBCPrivate; +class QODBCDriverPrivate; +class QODBCDriver; +class QSqlRecordInfo; + +class QODBCResult : public QSqlResult +{ +public: + QODBCResult(const QODBCDriver * db, QODBCDriverPrivate* p); + virtual ~QODBCResult(); + + bool prepare(const QString& query); + bool exec(); + + QVariant handle() const; + virtual void setForwardOnly(bool forward); + +protected: + bool fetchNext(); + bool fetchFirst(); + bool fetchLast(); + bool fetchPrevious(); + bool fetch(int i); + bool reset (const QString& query); + QVariant data(int field); + bool isNull(int field); + int size(); + int numRowsAffected(); + QSqlRecord record() const; + void virtual_hook(int id, void *data); + void detachFromResultSet(); + bool nextResult(); + +private: + QODBCPrivate *d; +}; + +class Q_EXPORT_SQLDRIVER_ODBC QODBCDriver : public QSqlDriver +{ + Q_OBJECT +public: + explicit QODBCDriver(QObject *parent=0); + QODBCDriver(SQLHANDLE env, SQLHANDLE con, QObject * parent=0); + virtual ~QODBCDriver(); + bool hasFeature(DriverFeature f) const; + void close(); + QSqlResult *createResult() const; + QStringList tables(QSql::TableType) const; + QSqlRecord record(const QString& tablename) const; + QSqlIndex primaryIndex(const QString& tablename) const; + QVariant handle() const; + QString formatValue(const QSqlField &field, + bool trimStrings) const; + bool open(const QString& db, + const QString& user, + const QString& password, + const QString& host, + int port, + const QString& connOpts); + + QString escapeIdentifier(const QString &identifier, IdentifierType type) const; + + bool isIdentifierEscaped(const QString &identifier, IdentifierType type) const; + +protected: + bool beginTransaction(); + bool commitTransaction(); + bool rollbackTransaction(); + +private: + void init(); + bool endTrans(); + void cleanup(); + QODBCDriverPrivate* d; + friend class QODBCPrivate; +}; + +QT_END_NAMESPACE + +#endif // QSQL_ODBC_H diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp index 0eadceb1d1..95fcba4172 100644 --- a/src/sql/drivers/psql/qsql_psql.cpp +++ b/src/sql/drivers/psql/qsql_psql.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qsql_psql.h" +#include "qsql_psql_p.h" #include #include diff --git a/src/sql/drivers/psql/qsql_psql.h b/src/sql/drivers/psql/qsql_psql.h deleted file mode 100644 index d5585a45fa..0000000000 --- a/src/sql/drivers/psql/qsql_psql.h +++ /dev/null @@ -1,159 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtSql module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSQL_PSQL_H -#define QSQL_PSQL_H - -#include -#include - -#ifdef QT_PLUGIN -#define Q_EXPORT_SQLDRIVER_PSQL -#else -#define Q_EXPORT_SQLDRIVER_PSQL Q_SQL_EXPORT -#endif - -typedef struct pg_conn PGconn; -typedef struct pg_result PGresult; - -QT_BEGIN_NAMESPACE - -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - -class QPSQLResultPrivate; -class QPSQLDriverPrivate; -class QPSQLDriver; -class QSqlRecordInfo; - -class QPSQLResult : public QSqlResult -{ - friend class QPSQLResultPrivate; -public: - QPSQLResult(const QPSQLDriver* db, const QPSQLDriverPrivate* p); - ~QPSQLResult(); - - QVariant handle() const; - void virtual_hook(int id, void *data); - -protected: - void cleanup(); - bool fetch(int i); - bool fetchFirst(); - bool fetchLast(); - QVariant data(int i); - bool isNull(int field); - bool reset (const QString& query); - int size(); - int numRowsAffected(); - QSqlRecord record() const; - QVariant lastInsertId() const; - bool prepare(const QString& query); - bool exec(); - -private: - QPSQLResultPrivate *d; -}; - -class Q_EXPORT_SQLDRIVER_PSQL QPSQLDriver : public QSqlDriver -{ - Q_OBJECT -public: - enum Protocol { - VersionUnknown = -1, - Version6 = 6, - Version7 = 7, - Version71 = 8, - Version73 = 9, - Version74 = 10, - Version8 = 11, - Version81 = 12, - Version82 = 13, - Version83 = 14, - Version84 = 15, - Version9 = 16, - }; - - explicit QPSQLDriver(QObject *parent=0); - explicit QPSQLDriver(PGconn *conn, QObject *parent=0); - ~QPSQLDriver(); - bool hasFeature(DriverFeature f) const; - bool open(const QString & db, - const QString & user, - const QString & password, - const QString & host, - int port, - const QString& connOpts); - bool isOpen() const; - void close(); - QSqlResult *createResult() const; - QStringList tables(QSql::TableType) const; - QSqlIndex primaryIndex(const QString& tablename) const; - QSqlRecord record(const QString& tablename) const; - - Protocol protocol() const; - QVariant handle() const; - - QString escapeIdentifier(const QString &identifier, IdentifierType type) const; - QString formatValue(const QSqlField &field, bool trimStrings) const; - - bool subscribeToNotification(const QString &name); - bool unsubscribeFromNotification(const QString &name); - QStringList subscribedToNotifications() const; - -protected: - bool beginTransaction(); - bool commitTransaction(); - bool rollbackTransaction(); - -private Q_SLOTS: - void _q_handleNotification(int); - -private: - void init(); - QPSQLDriverPrivate *d; -}; - -QT_END_NAMESPACE - -#endif // QSQL_PSQL_H diff --git a/src/sql/drivers/psql/qsql_psql.pri b/src/sql/drivers/psql/qsql_psql.pri index 9b647d8200..d0ded5e625 100644 --- a/src/sql/drivers/psql/qsql_psql.pri +++ b/src/sql/drivers/psql/qsql_psql.pri @@ -1,4 +1,4 @@ -HEADERS += $$PWD/qsql_psql.h +HEADERS += $$PWD/qsql_psql_p.h SOURCES += $$PWD/qsql_psql.cpp unix|win32-g++* { diff --git a/src/sql/drivers/psql/qsql_psql_p.h b/src/sql/drivers/psql/qsql_psql_p.h new file mode 100644 index 0000000000..d5585a45fa --- /dev/null +++ b/src/sql/drivers/psql/qsql_psql_p.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSql module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSQL_PSQL_H +#define QSQL_PSQL_H + +#include +#include + +#ifdef QT_PLUGIN +#define Q_EXPORT_SQLDRIVER_PSQL +#else +#define Q_EXPORT_SQLDRIVER_PSQL Q_SQL_EXPORT +#endif + +typedef struct pg_conn PGconn; +typedef struct pg_result PGresult; + +QT_BEGIN_NAMESPACE + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_stop_processing +#endif + +class QPSQLResultPrivate; +class QPSQLDriverPrivate; +class QPSQLDriver; +class QSqlRecordInfo; + +class QPSQLResult : public QSqlResult +{ + friend class QPSQLResultPrivate; +public: + QPSQLResult(const QPSQLDriver* db, const QPSQLDriverPrivate* p); + ~QPSQLResult(); + + QVariant handle() const; + void virtual_hook(int id, void *data); + +protected: + void cleanup(); + bool fetch(int i); + bool fetchFirst(); + bool fetchLast(); + QVariant data(int i); + bool isNull(int field); + bool reset (const QString& query); + int size(); + int numRowsAffected(); + QSqlRecord record() const; + QVariant lastInsertId() const; + bool prepare(const QString& query); + bool exec(); + +private: + QPSQLResultPrivate *d; +}; + +class Q_EXPORT_SQLDRIVER_PSQL QPSQLDriver : public QSqlDriver +{ + Q_OBJECT +public: + enum Protocol { + VersionUnknown = -1, + Version6 = 6, + Version7 = 7, + Version71 = 8, + Version73 = 9, + Version74 = 10, + Version8 = 11, + Version81 = 12, + Version82 = 13, + Version83 = 14, + Version84 = 15, + Version9 = 16, + }; + + explicit QPSQLDriver(QObject *parent=0); + explicit QPSQLDriver(PGconn *conn, QObject *parent=0); + ~QPSQLDriver(); + bool hasFeature(DriverFeature f) const; + bool open(const QString & db, + const QString & user, + const QString & password, + const QString & host, + int port, + const QString& connOpts); + bool isOpen() const; + void close(); + QSqlResult *createResult() const; + QStringList tables(QSql::TableType) const; + QSqlIndex primaryIndex(const QString& tablename) const; + QSqlRecord record(const QString& tablename) const; + + Protocol protocol() const; + QVariant handle() const; + + QString escapeIdentifier(const QString &identifier, IdentifierType type) const; + QString formatValue(const QSqlField &field, bool trimStrings) const; + + bool subscribeToNotification(const QString &name); + bool unsubscribeFromNotification(const QString &name); + QStringList subscribedToNotifications() const; + +protected: + bool beginTransaction(); + bool commitTransaction(); + bool rollbackTransaction(); + +private Q_SLOTS: + void _q_handleNotification(int); + +private: + void init(); + QPSQLDriverPrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QSQL_PSQL_H diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp index d884bb7b11..483c640b43 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.cpp +++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qsql_sqlite.h" +#include "qsql_sqlite_p.h" #include #include diff --git a/src/sql/drivers/sqlite/qsql_sqlite.h b/src/sql/drivers/sqlite/qsql_sqlite.h deleted file mode 100644 index bd034b4d6b..0000000000 --- a/src/sql/drivers/sqlite/qsql_sqlite.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtSql module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSQL_SQLITE_H -#define QSQL_SQLITE_H - -#include -#include - -struct sqlite3; - -#ifdef QT_PLUGIN -#define Q_EXPORT_SQLDRIVER_SQLITE -#else -#define Q_EXPORT_SQLDRIVER_SQLITE Q_SQL_EXPORT -#endif - -QT_BEGIN_NAMESPACE - -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - -class QSQLiteDriverPrivate; -class QSQLiteDriver; - -class Q_EXPORT_SQLDRIVER_SQLITE QSQLiteDriver : public QSqlDriver -{ - Q_OBJECT - friend class QSQLiteResult; -public: - explicit QSQLiteDriver(QObject *parent = 0); - explicit QSQLiteDriver(sqlite3 *connection, QObject *parent = 0); - ~QSQLiteDriver(); - bool hasFeature(DriverFeature f) const; - bool open(const QString & db, - const QString & user, - const QString & password, - const QString & host, - int port, - const QString & connOpts); - void close(); - QSqlResult *createResult() const; - bool beginTransaction(); - bool commitTransaction(); - bool rollbackTransaction(); - QStringList tables(QSql::TableType) const; - - QSqlRecord record(const QString& tablename) const; - QSqlIndex primaryIndex(const QString &table) const; - QVariant handle() const; - QString escapeIdentifier(const QString &identifier, IdentifierType) const; - -private: - QSQLiteDriverPrivate* d; -}; - -QT_END_NAMESPACE - -#endif // QSQL_SQLITE_H diff --git a/src/sql/drivers/sqlite/qsql_sqlite.pri b/src/sql/drivers/sqlite/qsql_sqlite.pri index a2e80d4c74..e323f2eba5 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.pri +++ b/src/sql/drivers/sqlite/qsql_sqlite.pri @@ -1,4 +1,4 @@ -HEADERS += $$PWD/qsql_sqlite.h +HEADERS += $$PWD/qsql_sqlite_p.h SOURCES += $$PWD/qsql_sqlite.cpp !system-sqlite:!contains(LIBS, .*sqlite3.*) { diff --git a/src/sql/drivers/sqlite/qsql_sqlite_p.h b/src/sql/drivers/sqlite/qsql_sqlite_p.h new file mode 100644 index 0000000000..bd034b4d6b --- /dev/null +++ b/src/sql/drivers/sqlite/qsql_sqlite_p.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSql module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSQL_SQLITE_H +#define QSQL_SQLITE_H + +#include +#include + +struct sqlite3; + +#ifdef QT_PLUGIN +#define Q_EXPORT_SQLDRIVER_SQLITE +#else +#define Q_EXPORT_SQLDRIVER_SQLITE Q_SQL_EXPORT +#endif + +QT_BEGIN_NAMESPACE + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_stop_processing +#endif + +class QSQLiteDriverPrivate; +class QSQLiteDriver; + +class Q_EXPORT_SQLDRIVER_SQLITE QSQLiteDriver : public QSqlDriver +{ + Q_OBJECT + friend class QSQLiteResult; +public: + explicit QSQLiteDriver(QObject *parent = 0); + explicit QSQLiteDriver(sqlite3 *connection, QObject *parent = 0); + ~QSQLiteDriver(); + bool hasFeature(DriverFeature f) const; + bool open(const QString & db, + const QString & user, + const QString & password, + const QString & host, + int port, + const QString & connOpts); + void close(); + QSqlResult *createResult() const; + bool beginTransaction(); + bool commitTransaction(); + bool rollbackTransaction(); + QStringList tables(QSql::TableType) const; + + QSqlRecord record(const QString& tablename) const; + QSqlIndex primaryIndex(const QString &table) const; + QVariant handle() const; + QString escapeIdentifier(const QString &identifier, IdentifierType) const; + +private: + QSQLiteDriverPrivate* d; +}; + +QT_END_NAMESPACE + +#endif // QSQL_SQLITE_H diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp index 2666cefb72..a85a120973 100644 --- a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp +++ b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qsql_sqlite2.h" +#include "qsql_sqlite2_p.h" #include #include diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.h b/src/sql/drivers/sqlite2/qsql_sqlite2.h deleted file mode 100644 index c6a8c4cf4f..0000000000 --- a/src/sql/drivers/sqlite2/qsql_sqlite2.h +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtSql module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSQL_SQLITE2_H -#define QSQL_SQLITE2_H - -#include -#include -#include -#include - -#if defined (Q_OS_WIN32) -# include -#endif - -struct sqlite; - -QT_BEGIN_NAMESPACE - -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - -class QSQLite2DriverPrivate; -class QSQLite2Driver; - -class QSQLite2Driver : public QSqlDriver -{ - Q_OBJECT - friend class QSQLite2Result; -public: - explicit QSQLite2Driver(QObject *parent = 0); - explicit QSQLite2Driver(sqlite *connection, QObject *parent = 0); - ~QSQLite2Driver(); - bool hasFeature(DriverFeature f) const; - bool open(const QString & db, - const QString & user, - const QString & password, - const QString & host, - int port, - const QString & connOpts); - bool open(const QString & db, - const QString & user, - const QString & password, - const QString & host, - int port) { return open (db, user, password, host, port, QString()); } - void close(); - QSqlResult *createResult() const; - bool beginTransaction(); - bool commitTransaction(); - bool rollbackTransaction(); - QStringList tables(QSql::TableType) const; - - QSqlRecord record(const QString& tablename) const; - QSqlIndex primaryIndex(const QString &table) const; - QVariant handle() const; - QString escapeIdentifier(const QString &identifier, IdentifierType) const; - -private: - QSQLite2DriverPrivate* d; -}; - -QT_END_NAMESPACE - -#endif // QSQL_SQLITE2_H diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.pri b/src/sql/drivers/sqlite2/qsql_sqlite2.pri index 9a9f6cdf9e..5baba30db0 100644 --- a/src/sql/drivers/sqlite2/qsql_sqlite2.pri +++ b/src/sql/drivers/sqlite2/qsql_sqlite2.pri @@ -1,4 +1,4 @@ -HEADERS += $$PWD/qsql_sqlite2.h +HEADERS += $$PWD/qsql_sqlite2_p.h SOURCES += $$PWD/qsql_sqlite2.cpp !contains(LIBS, .*sqlite.*):LIBS += -lsqlite diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2_p.h b/src/sql/drivers/sqlite2/qsql_sqlite2_p.h new file mode 100644 index 0000000000..c6a8c4cf4f --- /dev/null +++ b/src/sql/drivers/sqlite2/qsql_sqlite2_p.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSql module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSQL_SQLITE2_H +#define QSQL_SQLITE2_H + +#include +#include +#include +#include + +#if defined (Q_OS_WIN32) +# include +#endif + +struct sqlite; + +QT_BEGIN_NAMESPACE + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_stop_processing +#endif + +class QSQLite2DriverPrivate; +class QSQLite2Driver; + +class QSQLite2Driver : public QSqlDriver +{ + Q_OBJECT + friend class QSQLite2Result; +public: + explicit QSQLite2Driver(QObject *parent = 0); + explicit QSQLite2Driver(sqlite *connection, QObject *parent = 0); + ~QSQLite2Driver(); + bool hasFeature(DriverFeature f) const; + bool open(const QString & db, + const QString & user, + const QString & password, + const QString & host, + int port, + const QString & connOpts); + bool open(const QString & db, + const QString & user, + const QString & password, + const QString & host, + int port) { return open (db, user, password, host, port, QString()); } + void close(); + QSqlResult *createResult() const; + bool beginTransaction(); + bool commitTransaction(); + bool rollbackTransaction(); + QStringList tables(QSql::TableType) const; + + QSqlRecord record(const QString& tablename) const; + QSqlIndex primaryIndex(const QString &table) const; + QVariant handle() const; + QString escapeIdentifier(const QString &identifier, IdentifierType) const; + +private: + QSQLite2DriverPrivate* d; +}; + +QT_END_NAMESPACE + +#endif // QSQL_SQLITE2_H diff --git a/src/sql/drivers/tds/qsql_tds.cpp b/src/sql/drivers/tds/qsql_tds.cpp index 22773b8eff..996a1bdd1a 100644 --- a/src/sql/drivers/tds/qsql_tds.cpp +++ b/src/sql/drivers/tds/qsql_tds.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qsql_tds.h" +#include "qsql_tds_p.h" #include #ifdef Q_OS_WIN32 // We assume that MS SQL Server is used. Set Q_USE_SYBASE to force Sybase. diff --git a/src/sql/drivers/tds/qsql_tds.h b/src/sql/drivers/tds/qsql_tds.h deleted file mode 100644 index 2bbdd0e49c..0000000000 --- a/src/sql/drivers/tds/qsql_tds.h +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtSql module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSQL_TDS_H -#define QSQL_TDS_H - -#include -#include - -#ifdef Q_OS_WIN32 -#define WIN32_LEAN_AND_MEAN -#ifndef Q_USE_SYBASE -#define DBNTWIN32 // indicates 32bit windows dblib -#endif -#include -#include -#include -#include -#define CS_PUBLIC -#else -#include -#include -#endif //Q_OS_WIN32 - -#ifdef QT_PLUGIN -#define Q_EXPORT_SQLDRIVER_TDS -#else -#define Q_EXPORT_SQLDRIVER_TDS Q_SQL_EXPORT -#endif - -QT_BEGIN_NAMESPACE - -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - -class QTDSDriverPrivate; -class QTDSDriver; - -class Q_EXPORT_SQLDRIVER_TDS QTDSDriver : public QSqlDriver -{ - Q_OBJECT - friend class QTDSResult; -public: - explicit QTDSDriver(QObject* parent = 0); - QTDSDriver(LOGINREC* rec, const QString& host, const QString &db, QObject* parent = 0); - ~QTDSDriver(); - bool hasFeature(DriverFeature f) const; - bool open(const QString & db, - const QString & user, - const QString & password, - const QString & host, - int port, - const QString& connOpts); - void close(); - QStringList tables(QSql::TableType) const; - QSqlResult *createResult() const; - QSqlRecord record(const QString& tablename) const; - QSqlIndex primaryIndex(const QString& tablename) const; - - QString formatValue(const QSqlField &field, - bool trimStrings) const; - QVariant handle() const; - - QString escapeIdentifier(const QString &identifier, IdentifierType type) const; - -protected: - bool beginTransaction(); - bool commitTransaction(); - bool rollbackTransaction(); -private: - void init(); - QTDSDriverPrivate *d; -}; - -QT_END_NAMESPACE - -#endif // QSQL_TDS_H diff --git a/src/sql/drivers/tds/qsql_tds.pri b/src/sql/drivers/tds/qsql_tds.pri index 38aab2f3e4..67d037aa6b 100644 --- a/src/sql/drivers/tds/qsql_tds.pri +++ b/src/sql/drivers/tds/qsql_tds.pri @@ -1,4 +1,4 @@ -HEADERS += $$PWD/qsql_tds.h +HEADERS += $$PWD/qsql_tds_p.h SOURCES += $$PWD/qsql_tds.cpp unix|win32-g++*: { diff --git a/src/sql/drivers/tds/qsql_tds_p.h b/src/sql/drivers/tds/qsql_tds_p.h new file mode 100644 index 0000000000..2bbdd0e49c --- /dev/null +++ b/src/sql/drivers/tds/qsql_tds_p.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtSql module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSQL_TDS_H +#define QSQL_TDS_H + +#include +#include + +#ifdef Q_OS_WIN32 +#define WIN32_LEAN_AND_MEAN +#ifndef Q_USE_SYBASE +#define DBNTWIN32 // indicates 32bit windows dblib +#endif +#include +#include +#include +#include +#define CS_PUBLIC +#else +#include +#include +#endif //Q_OS_WIN32 + +#ifdef QT_PLUGIN +#define Q_EXPORT_SQLDRIVER_TDS +#else +#define Q_EXPORT_SQLDRIVER_TDS Q_SQL_EXPORT +#endif + +QT_BEGIN_NAMESPACE + +#if 0 +#pragma qt_no_master_include +#pragma qt_sync_stop_processing +#endif + +class QTDSDriverPrivate; +class QTDSDriver; + +class Q_EXPORT_SQLDRIVER_TDS QTDSDriver : public QSqlDriver +{ + Q_OBJECT + friend class QTDSResult; +public: + explicit QTDSDriver(QObject* parent = 0); + QTDSDriver(LOGINREC* rec, const QString& host, const QString &db, QObject* parent = 0); + ~QTDSDriver(); + bool hasFeature(DriverFeature f) const; + bool open(const QString & db, + const QString & user, + const QString & password, + const QString & host, + int port, + const QString& connOpts); + void close(); + QStringList tables(QSql::TableType) const; + QSqlResult *createResult() const; + QSqlRecord record(const QString& tablename) const; + QSqlIndex primaryIndex(const QString& tablename) const; + + QString formatValue(const QSqlField &field, + bool trimStrings) const; + QVariant handle() const; + + QString escapeIdentifier(const QString &identifier, IdentifierType type) const; + +protected: + bool beginTransaction(); + bool commitTransaction(); + bool rollbackTransaction(); +private: + void init(); + QTDSDriverPrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QSQL_TDS_H diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp index 36422f5f62..0ca79fd39f 100644 --- a/src/sql/kernel/qsqldatabase.cpp +++ b/src/sql/kernel/qsqldatabase.cpp @@ -48,31 +48,31 @@ #endif #ifdef QT_SQL_PSQL -#include "../drivers/psql/qsql_psql.h" +#include "../drivers/psql/qsql_psql_p.h" #endif #ifdef QT_SQL_MYSQL -#include "../drivers/mysql/qsql_mysql.h" +#include "../drivers/mysql/qsql_mysql_p.h" #endif #ifdef QT_SQL_ODBC -#include "../drivers/odbc/qsql_odbc.h" +#include "../drivers/odbc/qsql_odbc_p.h" #endif #ifdef QT_SQL_OCI -#include "../drivers/oci/qsql_oci.h" +#include "../drivers/oci/qsql_oci_p.h" #endif #ifdef QT_SQL_TDS // conflicting RETCODE typedef between odbc and freetds #define RETCODE DBRETCODE -#include "../drivers/tds/qsql_tds.h" +#include "../drivers/tds/qsql_tds_p.h" #undef RETCODE #endif #ifdef QT_SQL_DB2 -#include "../drivers/db2/qsql_db2.h" +#include "../drivers/db2/qsql_db2_p.h" #endif #ifdef QT_SQL_SQLITE -#include "../drivers/sqlite/qsql_sqlite.h" +#include "../drivers/sqlite/qsql_sqlite_p.h" #endif #ifdef QT_SQL_SQLITE2 -#include "../drivers/sqlite2/qsql_sqlite2.h" +#include "../drivers/sqlite2/qsql_sqlite2_p.h" #endif #ifdef QT_SQL_IBASE #undef SQL_FLOAT // avoid clash with ODBC @@ -82,7 +82,7 @@ #undef SQL_TYPE_DATE #undef SQL_DATE #define SCHAR IBASE_SCHAR // avoid clash with ODBC (older versions of ibase.h with Firebird) -#include "../drivers/ibase/qsql_ibase.h" +#include "../drivers/ibase/qsql_ibase_p.h" #undef SCHAR #endif diff --git a/src/tools/uic/qclass_lib_map.h b/src/tools/uic/qclass_lib_map.h index c4d4d840a6..075b2d52e8 100644 --- a/src/tools/uic/qclass_lib_map.h +++ b/src/tools/uic/qclass_lib_map.h @@ -556,24 +556,6 @@ QT_CLASS_LIB(QSqlRelationalDelegate, QtSql, qsqlrelationaldelegate.h) QT_CLASS_LIB(QSqlRelation, QtSql, qsqlrelationaltablemodel.h) QT_CLASS_LIB(QSqlRelationalTableModel, QtSql, qsqlrelationaltablemodel.h) QT_CLASS_LIB(QSqlTableModel, QtSql, qsqltablemodel.h) -QT_CLASS_LIB(QDB2Result, QtSql, qsql_db2.h) -QT_CLASS_LIB(QDB2Driver, QtSql, qsql_db2.h) -QT_CLASS_LIB(QIBaseResult, QtSql, qsql_ibase.h) -QT_CLASS_LIB(QIBaseDriver, QtSql, qsql_ibase.h) -QT_CLASS_LIB(QMYSQLResult, QtSql, qsql_mysql.h) -QT_CLASS_LIB(QMYSQLDriver, QtSql, qsql_mysql.h) -QT_CLASS_LIB(QOCIResult, QtSql, qsql_oci.h) -QT_CLASS_LIB(QOCIDriver, QtSql, qsql_oci.h) -QT_CLASS_LIB(QODBCResult, QtSql, qsql_odbc.h) -QT_CLASS_LIB(QODBCDriver, QtSql, qsql_odbc.h) -QT_CLASS_LIB(QPSQLResult, QtSql, qsql_psql.h) -QT_CLASS_LIB(QPSQLDriver, QtSql, qsql_psql.h) -QT_CLASS_LIB(QSQLiteResult, QtSql, qsql_sqlite.h) -QT_CLASS_LIB(QSQLiteDriver, QtSql, qsql_sqlite.h) -QT_CLASS_LIB(QSQLite2Result, QtSql, qsql_sqlite2.h) -QT_CLASS_LIB(QSQLite2Driver, QtSql, qsql_sqlite2.h) -QT_CLASS_LIB(QTDSResult, QtSql, qsql_tds.h) -QT_CLASS_LIB(QTDSDriver, QtSql, qsql_tds.h) QT_CLASS_LIB(QAccessible, QtWidgets, qaccessible.h) QT_CLASS_LIB(QAccessibleInterface, QtWidgets, qaccessible.h) QT_CLASS_LIB(QAccessibleInterfaceEx, QtWidgets, qaccessible.h) -- cgit v1.2.3 From 932c50c015fe416354b08cea50581fa5fdfee86e Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 22 Feb 2013 14:01:41 -0800 Subject: Adapt the newly-renamed SQL driver headers to proper private headers Add the "We mean it" text and remove the now-unnecessary syncqt macros that used to prevent those headers from being added to the master includes. Change-Id: I03ac2a452bc6ac43ebba502bc0ecbf5ee1adf314 Reviewed-by: Friedemann Kleint Reviewed-by: Mark Brand --- src/sql/drivers/db2/qsql_db2_p.h | 16 +++++++++++----- src/sql/drivers/ibase/qsql_ibase_p.h | 16 +++++++++++----- src/sql/drivers/mysql/qsql_mysql_p.h | 16 +++++++++++----- src/sql/drivers/oci/qsql_oci_p.h | 16 +++++++++++----- src/sql/drivers/odbc/qsql_odbc_p.h | 16 +++++++++++----- src/sql/drivers/psql/qsql_psql_p.h | 16 +++++++++++----- src/sql/drivers/sqlite/qsql_sqlite_p.h | 16 +++++++++++----- src/sql/drivers/sqlite2/qsql_sqlite2_p.h | 16 +++++++++++----- src/sql/drivers/tds/qsql_tds_p.h | 16 +++++++++++----- 9 files changed, 99 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/sql/drivers/db2/qsql_db2_p.h b/src/sql/drivers/db2/qsql_db2_p.h index 5d31906096..6a5363740b 100644 --- a/src/sql/drivers/db2/qsql_db2_p.h +++ b/src/sql/drivers/db2/qsql_db2_p.h @@ -42,6 +42,17 @@ #ifndef QSQL_DB2_H #define QSQL_DB2_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #ifdef QT_PLUGIN #define Q_EXPORT_SQLDRIVER_DB2 #else @@ -53,11 +64,6 @@ QT_BEGIN_NAMESPACE -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - class QDB2Driver; class QDB2DriverPrivate; class QDB2ResultPrivate; diff --git a/src/sql/drivers/ibase/qsql_ibase_p.h b/src/sql/drivers/ibase/qsql_ibase_p.h index 781448b98a..b2560ca17c 100644 --- a/src/sql/drivers/ibase/qsql_ibase_p.h +++ b/src/sql/drivers/ibase/qsql_ibase_p.h @@ -42,17 +42,23 @@ #ifndef QSQL_IBASE_H #define QSQL_IBASE_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include #include QT_BEGIN_NAMESPACE -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - class QIBaseDriverPrivate; class QIBaseDriver; diff --git a/src/sql/drivers/mysql/qsql_mysql_p.h b/src/sql/drivers/mysql/qsql_mysql_p.h index 953216de9a..c23bcd92d7 100644 --- a/src/sql/drivers/mysql/qsql_mysql_p.h +++ b/src/sql/drivers/mysql/qsql_mysql_p.h @@ -42,6 +42,17 @@ #ifndef QSQL_MYSQL_H #define QSQL_MYSQL_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include @@ -59,11 +70,6 @@ QT_BEGIN_NAMESPACE -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - class QMYSQLDriverPrivate; class QMYSQLResultPrivate; class QMYSQLDriver; diff --git a/src/sql/drivers/oci/qsql_oci_p.h b/src/sql/drivers/oci/qsql_oci_p.h index 403de623ce..fecc828434 100644 --- a/src/sql/drivers/oci/qsql_oci_p.h +++ b/src/sql/drivers/oci/qsql_oci_p.h @@ -42,6 +42,17 @@ #ifndef QSQL_OCI_H #define QSQL_OCI_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include @@ -56,11 +67,6 @@ typedef struct OCISvcCtx OCISvcCtx; QT_BEGIN_NAMESPACE -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - class QOCIDriver; class QOCICols; struct QOCIDriverPrivate; diff --git a/src/sql/drivers/odbc/qsql_odbc_p.h b/src/sql/drivers/odbc/qsql_odbc_p.h index 26f47e6c74..c1367165f5 100644 --- a/src/sql/drivers/odbc/qsql_odbc_p.h +++ b/src/sql/drivers/odbc/qsql_odbc_p.h @@ -42,6 +42,17 @@ #ifndef QSQL_ODBC_H #define QSQL_ODBC_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include @@ -72,11 +83,6 @@ QT_BEGIN_NAMESPACE -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - class QODBCPrivate; class QODBCDriverPrivate; class QODBCDriver; diff --git a/src/sql/drivers/psql/qsql_psql_p.h b/src/sql/drivers/psql/qsql_psql_p.h index d5585a45fa..6f60a2a34f 100644 --- a/src/sql/drivers/psql/qsql_psql_p.h +++ b/src/sql/drivers/psql/qsql_psql_p.h @@ -42,6 +42,17 @@ #ifndef QSQL_PSQL_H #define QSQL_PSQL_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include @@ -56,11 +67,6 @@ typedef struct pg_result PGresult; QT_BEGIN_NAMESPACE -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - class QPSQLResultPrivate; class QPSQLDriverPrivate; class QPSQLDriver; diff --git a/src/sql/drivers/sqlite/qsql_sqlite_p.h b/src/sql/drivers/sqlite/qsql_sqlite_p.h index bd034b4d6b..548d1da97c 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite_p.h +++ b/src/sql/drivers/sqlite/qsql_sqlite_p.h @@ -42,6 +42,17 @@ #ifndef QSQL_SQLITE_H #define QSQL_SQLITE_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include @@ -55,11 +66,6 @@ struct sqlite3; QT_BEGIN_NAMESPACE -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - class QSQLiteDriverPrivate; class QSQLiteDriver; diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2_p.h b/src/sql/drivers/sqlite2/qsql_sqlite2_p.h index c6a8c4cf4f..7a075210ae 100644 --- a/src/sql/drivers/sqlite2/qsql_sqlite2_p.h +++ b/src/sql/drivers/sqlite2/qsql_sqlite2_p.h @@ -42,6 +42,17 @@ #ifndef QSQL_SQLITE2_H #define QSQL_SQLITE2_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include #include @@ -55,11 +66,6 @@ struct sqlite; QT_BEGIN_NAMESPACE -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - class QSQLite2DriverPrivate; class QSQLite2Driver; diff --git a/src/sql/drivers/tds/qsql_tds_p.h b/src/sql/drivers/tds/qsql_tds_p.h index 2bbdd0e49c..5336f183ef 100644 --- a/src/sql/drivers/tds/qsql_tds_p.h +++ b/src/sql/drivers/tds/qsql_tds_p.h @@ -42,6 +42,17 @@ #ifndef QSQL_TDS_H #define QSQL_TDS_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include #include @@ -68,11 +79,6 @@ QT_BEGIN_NAMESPACE -#if 0 -#pragma qt_no_master_include -#pragma qt_sync_stop_processing -#endif - class QTDSDriverPrivate; class QTDSDriver; -- cgit v1.2.3 From 8cbdb25ee63ad702fdd91aae264b093bf3927a5c Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 30 Oct 2012 14:55:46 +0100 Subject: iOS: copy brute-force port of Qt4 uikit plugin into Qt5. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The plugin has been renamed from uikit to ios. Other than that, the plugin will now build, but do nothing. Most of the Qt4 code is preserved, with a rough translation into the Qt5 qpa API. A lot of code has simply been commented out so far, and most lacking at the moment is the event dispatcher which will need to be rewritten, and the opengl paint device implementation. But it should suffice as a starting ground. Also: The plugin will currently not automatically build when building Qt, this needs to be enabled from configure first. Change-Id: I0d229a453a8477618e06554655bffc5505203b44 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/ios.json | 3 + src/plugins/platforms/ios/ios.pro | 27 ++ src/plugins/platforms/ios/main.mm | 69 ++++ src/plugins/platforms/ios/qiosbackingstore.h | 65 +++ src/plugins/platforms/ios/qiosbackingstore.mm | 139 +++++++ src/plugins/platforms/ios/qioseventdispatcher.h | 110 +++++ src/plugins/platforms/ios/qioseventdispatcher.mm | 154 +++++++ src/plugins/platforms/ios/qiosintegration.h | 75 ++++ src/plugins/platforms/ios/qiosintegration.mm | 106 +++++ src/plugins/platforms/ios/qiosscreen.h | 76 ++++ src/plugins/platforms/ios/qiosscreen.mm | 120 ++++++ .../platforms/ios/qiossoftwareinputhandler.h | 73 ++++ src/plugins/platforms/ios/qioswindow.h | 135 +++++++ src/plugins/platforms/ios/qioswindow.mm | 449 +++++++++++++++++++++ 14 files changed, 1601 insertions(+) create mode 100644 src/plugins/platforms/ios/ios.json create mode 100644 src/plugins/platforms/ios/ios.pro create mode 100644 src/plugins/platforms/ios/main.mm create mode 100644 src/plugins/platforms/ios/qiosbackingstore.h create mode 100644 src/plugins/platforms/ios/qiosbackingstore.mm create mode 100644 src/plugins/platforms/ios/qioseventdispatcher.h create mode 100644 src/plugins/platforms/ios/qioseventdispatcher.mm create mode 100644 src/plugins/platforms/ios/qiosintegration.h create mode 100644 src/plugins/platforms/ios/qiosintegration.mm create mode 100644 src/plugins/platforms/ios/qiosscreen.h create mode 100644 src/plugins/platforms/ios/qiosscreen.mm create mode 100644 src/plugins/platforms/ios/qiossoftwareinputhandler.h create mode 100644 src/plugins/platforms/ios/qioswindow.h create mode 100644 src/plugins/platforms/ios/qioswindow.mm (limited to 'src') diff --git a/src/plugins/platforms/ios/ios.json b/src/plugins/platforms/ios/ios.json new file mode 100644 index 0000000000..f0b766dae1 --- /dev/null +++ b/src/plugins/platforms/ios/ios.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "ios" ] +} diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro new file mode 100644 index 0000000000..39f72e9719 --- /dev/null +++ b/src/plugins/platforms/ios/ios.pro @@ -0,0 +1,27 @@ +TARGET = qios +include(../../qpluginbase.pri) +QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms + +QT += opengl +QT += core-private gui-private platformsupport-private opengl-private widgets-private +LIBS += -framework Cocoa -framework UIKit + +OBJECTIVE_SOURCES = main.mm \ + qiosintegration.mm \ + qioswindow.mm \ + qiosscreen.mm \ + qioseventdispatcher.mm \ + qiosbackingstore.mm + +OBJECTIVE_HEADERS = qiosintegration.h \ + qioswindow.h \ + qiosscreen.h \ + qioseventdispatcher.h \ + qiosbackingstore.h + +#HEADERS = qiossoftwareinputhandler.h + +#include(../fontdatabases/coretext/coretext.pri) + +target.path += $$[QT_INSTALL_PLUGINS]/platforms +INSTALLS += target diff --git a/src/plugins/platforms/ios/main.mm b/src/plugins/platforms/ios/main.mm new file mode 100644 index 0000000000..b09fbce1f4 --- /dev/null +++ b/src/plugins/platforms/ios/main.mm @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include "qiosintegration.h" + +QT_BEGIN_NAMESPACE + +class QIOSIntegrationPlugin : public QPlatformIntegrationPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.1" FILE "ios.json") + public: + QPlatformIntegration *create(const QString&, const QStringList&); +}; + +QPlatformIntegration * QIOSIntegrationPlugin::create(const QString& system, const QStringList& paramList) +{ + Q_UNUSED(paramList); + if (system.toLower() == "ios") + return new QIOSIntegration; + + return 0; +} + +QT_END_NAMESPACE + +#include "main.moc" + + diff --git a/src/plugins/platforms/ios/qiosbackingstore.h b/src/plugins/platforms/ios/qiosbackingstore.h new file mode 100644 index 0000000000..cb0e9cbedb --- /dev/null +++ b/src/plugins/platforms/ios/qiosbackingstore.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSBACKINGSTORE_H +#define QIOSBACKINGSTORE_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QIOSBackingStore : public QPlatformBackingStore +{ +public: + QIOSBackingStore(QWindow *window); + + QPaintDevice *paintDevice(); + void flush(QWindow *window, const QRegion ®ion, const QPoint &offset); + void resize(const QSize &size, const QRegion &staticContents); + +private: + QPaintDevice *mPaintDevice; +}; + +QT_END_NAMESPACE + +#endif // QIOSBACKINGSTORE_H diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm new file mode 100644 index 0000000000..32ddce38d2 --- /dev/null +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qiosbackingstore.h" +#include "qioswindow.h" + +#include +#include + +#include + +class EAGLPaintDevice; + +@interface PaintDeviceHelper : NSObject { + EAGLPaintDevice *device; +} + +@property (nonatomic, assign) EAGLPaintDevice *device; + +- (void)eaglView:(EAGLView *)view usesFramebuffer:(GLuint)buffer; + +@end + +class EAGLPaintDevice : public QGLPaintDevice +{ +public: + EAGLPaintDevice(QWindow *window) + :QGLPaintDevice(), mWindow(window) + { +#if defined(QT_OPENGL_ES_2) + helper = [[PaintDeviceHelper alloc] init]; + helper.device = this; + EAGLView *view = static_cast(window->handle())->nativeView(); + view.delegate = helper; + m_thisFBO = view.fbo; +#endif + } + + ~EAGLPaintDevice() + { +#if defined(QT_OPENGL_ES_2) + [helper release]; +#endif + } + + void setFramebuffer(GLuint buffer) { m_thisFBO = buffer; } + int devType() const { return QInternal::OpenGL; } + QSize size() const { return mWindow->geometry().size(); } + QGLContext* context() const { + // Todo: siplify this: + return QGLContext::fromOpenGLContext( + static_cast(mWindow->handle())->glContext()->context()); + } + + QPaintEngine *paintEngine() const { return qt_qgl_paint_engine(); } + +private: + QWindow *mWindow; + PaintDeviceHelper *helper; +}; + +@implementation PaintDeviceHelper +@synthesize device; + +- (void)eaglView:(EAGLView *)view usesFramebuffer:(GLuint)buffer +{ + Q_UNUSED(view) + if (device) + device->setFramebuffer(buffer); +} + +@end + +QT_BEGIN_NAMESPACE + +QIOSBackingStore::QIOSBackingStore(QWindow *window) + : QPlatformBackingStore(window), mPaintDevice(new EAGLPaintDevice(window)) +{ +} + +QPaintDevice *QIOSBackingStore::paintDevice() +{ + return mPaintDevice; +} + +void QIOSBackingStore::flush(QWindow *window, const QRegion ®ion, const QPoint &offset) +{ + Q_UNUSED(region); + Q_UNUSED(offset); + qDebug() << __FUNCTION__ << "not implemented"; + //static_cast(window->handle())->glContext()->swapBuffers(); +} + +void QIOSBackingStore::resize(const QSize &size, const QRegion &staticContents) +{ + Q_UNUSED(size); + Q_UNUSED(staticContents); + qDebug() << __FUNCTION__ << "not implemented"; +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioseventdispatcher.h b/src/plugins/platforms/ios/qioseventdispatcher.h new file mode 100644 index 0000000000..3e70397e63 --- /dev/null +++ b/src/plugins/platforms/ios/qioseventdispatcher.h @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/**************************************************************************** +** +** Copyright (c) 2007-2008, Apple, Inc. +** +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** +** * Redistributions of source code must retain the above copyright notice, +** this list of conditions and the following disclaimer. +** +** * Redistributions in binary form must reproduce the above copyright notice, +** this list of conditions and the following disclaimer in the documentation +** and/or other materials provided with the distribution. +** +** * Neither the name of Apple, Inc. nor the names of its contributors +** may be used to endorse or promote products derived from this software +** without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +****************************************************************************/ + +#ifndef QEVENTDISPATCHER_IOS_P_H +#define QEVENTDISPATCHER_IOS_P_H + +#include + +QT_BEGIN_NAMESPACE + +class QIOSEventDispatcher : public QAbstractEventDispatcher +{ + Q_OBJECT + +public: + explicit QIOSEventDispatcher(QObject *parent = 0); ~QIOSEventDispatcher(); + + bool processEvents(QEventLoop::ProcessEventsFlags flags); + bool hasPendingEvents(); + + void registerSocketNotifier(QSocketNotifier *notifier); + void unregisterSocketNotifier(QSocketNotifier *notifier); + + void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object); + bool unregisterTimer(int timerId); + bool unregisterTimers(QObject *object); + QList registeredTimers(QObject *object) const; + + int remainingTime(int timerId); + + void wakeUp(); + void interrupt(); + void flush(); +}; + +QT_END_NAMESPACE + +#endif // QEVENTDISPATCHER_IOS_P_H diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm new file mode 100644 index 0000000000..246c29adde --- /dev/null +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/**************************************************************************** +** +** Copyright (c) 2007-2008, Apple, Inc. +** +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** +** * Redistributions of source code must retain the above copyright notice, +** this list of conditions and the following disclaimer. +** +** * Redistributions in binary form must reproduce the above copyright notice, +** this list of conditions and the following disclaimer in the documentation +** and/or other materials provided with the distribution. +** +** * Neither the name of Apple, Inc. nor the names of its contributors +** may be used to endorse or promote products derived from this software +** without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +****************************************************************************/ + +#include "qioseventdispatcher.h" +#include + +QT_BEGIN_NAMESPACE +QT_USE_NAMESPACE + +QIOSEventDispatcher::QIOSEventDispatcher(QObject *parent) +{ + Q_UNUSED(parent); + qDebug() << __FUNCTION__ << "eventdispatcher not implemented"; +} + +QIOSEventDispatcher::~QIOSEventDispatcher() +{} + +bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) +{ + Q_UNUSED(flags); + return false; +} + +bool QIOSEventDispatcher::hasPendingEvents() +{ + return false; +} + +void QIOSEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier) +{ + Q_UNUSED(notifier); +} + +void QIOSEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier) +{ + Q_UNUSED(notifier); +} + +void QIOSEventDispatcher::registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object) +{ + Q_UNUSED(timerId); + Q_UNUSED(interval); + Q_UNUSED(timerType); + Q_UNUSED(object); +} + +bool QIOSEventDispatcher::unregisterTimer(int timerId) +{ + Q_UNUSED(timerId); + return false; +} + +bool QIOSEventDispatcher::unregisterTimers(QObject *object) +{ + Q_UNUSED(object); + return false; +} + +QList QIOSEventDispatcher::registeredTimers(QObject *object) const +{ + Q_UNUSED(object); + return QList(); +} + +int QIOSEventDispatcher::remainingTime(int timerId) +{ + Q_UNUSED(timerId); + return 0; +} + +void QIOSEventDispatcher::wakeUp() +{} + +void QIOSEventDispatcher::interrupt() +{} + +void QIOSEventDispatcher::flush() +{} + +QT_END_NAMESPACE + diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h new file mode 100644 index 0000000000..b71379e417 --- /dev/null +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPLATFORMINTEGRATION_UIKIT_H +#define QPLATFORMINTEGRATION_UIKIT_H + +#include + +QT_BEGIN_NAMESPACE + +class QIOSIntegration : public QPlatformIntegration +{ +public: + QIOSIntegration(); + ~QIOSIntegration(); + + static QIOSIntegration *instance(); + + QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const; + QPlatformWindow *createPlatformWindow(QWindow *window) const; + QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; + + QList screens() const; + + QPlatformFontDatabase *fontDatabase() const; + + QAbstractEventDispatcher *guiThreadEventDispatcher() const; + +private: + QList mScreens; + QPlatformFontDatabase *mFontDb; +}; + +QT_END_NAMESPACE + +#endif + diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm new file mode 100644 index 0000000000..bd63384004 --- /dev/null +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qiosIntegration.h" +#include "qioswindow.h" +#include "qiosbackingstore.h" +#include "qiosscreen.h" +#include "qioseventdispatcher.h" + +#include + +#include + +QT_BEGIN_NAMESPACE + +static QIOSIntegration *m_instance = 0; + +QIOSIntegration * QIOSIntegration::instance() +{ + return m_instance; +} + +QIOSIntegration::QIOSIntegration() + :mFontDb(new QCoreTextFontDatabase) +{ + if (!m_instance) + m_instance = this; + mScreens << new QIOSScreen(0); +} + +QIOSIntegration::~QIOSIntegration() +{ +} + +QPlatformPixmap *QIOSIntegration::createPlatformPixmap(QPlatformPixmap::PixelType type) const +{ + Q_UNUSED(type); + qDebug() << __FUNCTION__ << "not yet implemented"; + return 0; + //return new QRasterPixmapData(type); +} + +QPlatformWindow *QIOSIntegration::createPlatformWindow(QWindow *window) const +{ + return new QIOSWindow(window); +} + +QList QIOSIntegration::screens() const +{ + return mScreens; +} + +QPlatformBackingStore *QIOSIntegration::createPlatformBackingStore(QWindow *window) const +{ + return new QIOSBackingStore(window); +} + +QAbstractEventDispatcher *QIOSIntegration::guiThreadEventDispatcher() const +{ + return new QIOSEventDispatcher(); +} + +QPlatformFontDatabase * QIOSIntegration::fontDatabase() const +{ + return mFontDb; +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h new file mode 100644 index 0000000000..628d764f53 --- /dev/null +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSSCREEN_H +#define QIOSSCREEN_H + +#include + +#include + +QT_BEGIN_NAMESPACE + +class QIOSScreen : public QPlatformScreen +{ +public: + QIOSScreen(int screenIndex); + ~QIOSScreen(); + + QRect geometry() const { return m_geometry; } + int depth() const { return m_depth; } + QImage::Format format() const { return m_format; } + QSizeF physicalSize() const { return m_physicalSize; } + + UIScreen *uiScreen() const; + + void updateInterfaceOrientation(); +private: + QRect m_geometry; + int m_depth; + QImage::Format m_format; + QSize m_physicalSize; + int m_index; +}; + +QT_END_NAMESPACE + + +#endif diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm new file mode 100644 index 0000000000..5d9841734a --- /dev/null +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qiosscreen.h" +#include "qioswindow.h" + +#include + +#include + +QT_BEGIN_NAMESPACE + +QIOSScreen::QIOSScreen(int screenIndex) + : QPlatformScreen(), + m_index(screenIndex) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + CGRect bounds = [uiScreen() bounds]; + CGFloat scale = [uiScreen() scale]; + updateInterfaceOrientation(); + + m_format = QImage::Format_ARGB32_Premultiplied; + + m_depth = 24; + + const qreal inch = 25.4; + qreal unscaledDpi = 160.; + int dragDistance = 12 * scale; + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { + unscaledDpi = 132.; + dragDistance = 10 * scale; + } + m_physicalSize = QSize(qRound(bounds.size.width * inch / unscaledDpi), qRound(bounds.size.height * inch / unscaledDpi)); + + //qApp->setStartDragDistance(dragDistance); + + /* + QFont font; // system font is helvetica, so that is fine already + font.setPixelSize([UIFont systemFontSize] * scale); + qApp->setFont(font); + */ + + [pool release]; +} + +QIOSScreen::~QIOSScreen() +{ +} + +UIScreen *QIOSScreen::uiScreen() const +{ + return [[UIScreen screens] objectAtIndex:m_index]; +} + +void QIOSScreen::updateInterfaceOrientation() +{ + qDebug() << __FUNCTION__ << "not implemented"; + /* + CGRect bounds = [uiScreen() bounds]; + CGFloat scale = [uiScreen() scale]; + switch ([[UIApplication sharedApplication] statusBarOrientation]) { + case UIInterfaceOrientationPortrait: + case UIInterfaceOrientationPortraitUpsideDown: + m_geometry = QRect(bounds.origin.x * scale, bounds.origin.y * scale, + bounds.size.width * scale, bounds.size.height * scale);; + break; + case UIInterfaceOrientationLandscapeLeft: + case UIInterfaceOrientationLandscapeRight: + m_geometry = QRect(bounds.origin.x * scale, bounds.origin.y * scale, + bounds.size.height * scale, bounds.size.width * scale); + break; + } + foreach (QWidget *widget, qApp->topLevelWidgets()) { + QIOSWindow *platformWindow = static_cast(widget->platformWindow()); + if (platformWindow && platformWindow->platformScreen() == this) { + platformWindow->updateGeometryAndOrientation(); + } + } + */ +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiossoftwareinputhandler.h b/src/plugins/platforms/ios/qiossoftwareinputhandler.h new file mode 100644 index 0000000000..bbad656b93 --- /dev/null +++ b/src/plugins/platforms/ios/qiossoftwareinputhandler.h @@ -0,0 +1,73 @@ + + +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSSOFTWAREINPUTHANDLER_H +#define QIOSSOFTWAREINPUTHANDLER_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QIOSSoftwareInputHandler : public QObject +{ + Q_OBJECT + +public: + QIOSSoftwareInputHandler() : mCurrentFocusWidget(0), mCurrentFocusObject(0) {} + bool eventFilter(QObject *obj, QEvent *event); + +private slots: + void activeFocusChanged(bool focus); + +private: + bool closeSoftwareInputPanel(QWidget *widget); + + QPointer mCurrentFocusWidget; + QPointer mCurrentFocusObject; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h new file mode 100644 index 0000000000..f43f3db4f9 --- /dev/null +++ b/src/plugins/platforms/ios/qioswindow.h @@ -0,0 +1,135 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSWINDOW_H +#define QIOSWINDOW_H + +#include + +#import +#import +#import +#import +#import +#import + +@interface EAGLView : UIView +{ + QPlatformWindow *mWindow; + EAGLContext *mContext; + + GLint mFramebufferWidth; + GLint mFramebufferHeight; + + GLuint mFramebuffer, mColorRenderbuffer, mDepthRenderbuffer; + + id delegate; + // ------- Text Input ---------- + UITextAutocapitalizationType autocapitalizationType; + UITextAutocorrectionType autocorrectionType; + BOOL enablesReturnKeyAutomatically; + UIKeyboardAppearance keyboardAppearance; + UIKeyboardType keyboardType; + UIReturnKeyType returnKeyType; + BOOL secureTextEntry; +} + +- (void)setContext:(EAGLContext *)newContext; +- (void)presentFramebuffer; +- (void)deleteFramebuffer; +- (void)createFramebuffer; +- (void)makeCurrent; +- (void)setWindow:(QPlatformWindow *)window; +- (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons; + +@property (readonly,getter=fbo) GLint fbo; +@property (nonatomic, assign) id delegate; + +// ------- Text Input ---------- + +@property(nonatomic) UITextAutocapitalizationType autocapitalizationType; +@property(nonatomic) UITextAutocorrectionType autocorrectionType; +@property(nonatomic) BOOL enablesReturnKeyAutomatically; +@property(nonatomic) UIKeyboardAppearance keyboardAppearance; +@property(nonatomic) UIKeyboardType keyboardType; +@property(nonatomic) UIReturnKeyType returnKeyType; +@property(nonatomic, getter=isSecureTextEntry) BOOL secureTextEntry; + +@end + +@protocol EAGLViewDelegate +- (void)eaglView:(EAGLView *)view usesFramebuffer:(GLuint)buffer; +@end + +class EAGLPlatformContext; + +QT_BEGIN_NAMESPACE + +class QIOSScreen; + +class QIOSWindow : public QPlatformWindow +{ +public: + explicit QIOSWindow(QWindow *window); + ~QIOSWindow(); + + UIWindow *nativeWindow() const { return mWindow; } + EAGLView *nativeView() const { return mView; } + void setGeometry(const QRect &rect); + + UIWindow *ensureNativeWindow(); + + QPlatformOpenGLContext *glContext() const; + + QIOSScreen *platformScreen() const { return mScreen; } + + void updateGeometryAndOrientation(); +private: + QIOSScreen *mScreen; + UIWindow *mWindow; + CGRect mFrame; + EAGLView *mView; + mutable EAGLPlatformContext *mContext; +}; + +QT_END_NAMESPACE + +#endif // QIOSWINDOW_H diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm new file mode 100644 index 0000000000..c63c22dbaa --- /dev/null +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -0,0 +1,449 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#import + +#include "qioswindow.h" + +#include "qiosscreen.h" + +#include +#include +#include +#include + +#include + +static GLint stencilBits() +{ + static GLint bits; + static bool initialized = false; + if (!initialized) { + glGetIntegerv(GL_STENCIL_BITS, &bits); + initialized = true; + } + return bits; +} + +/* +static GLint depthBits() +{ + // we can choose between GL_DEPTH24_STENCIL8_OES and GL_DEPTH_COMPONENT16 + return stencilBits() > 0 ? 24 : 16; +} +*/ + +class EAGLPlatformContext : public QPlatformOpenGLContext +{ +public: + EAGLPlatformContext(EAGLView *view) + : mView(view) + { + /* + mFormat.setWindowApi(QPlatformWindowFormat::OpenGL); + mFormat.setDepthBufferSize(depthBits()); + mFormat.setAccumBufferSize(0); + mFormat.setRedBufferSize(8); + mFormat.setGreenBufferSize(8); + mFormat.setBlueBufferSize(8); + mFormat.setAlphaBufferSize(8); + mFormat.setStencilBufferSize(stencilBits()); + mFormat.setSamples(0); + mFormat.setSampleBuffers(false); + mFormat.setDoubleBuffer(true); + mFormat.setDepth(true); + mFormat.setRgba(true); + mFormat.setAlpha(true); + mFormat.setAccum(false); + mFormat.setStencil(stencilBits() > 0); + mFormat.setStereo(false); + mFormat.setDirectRendering(false); + */ + +#if defined(QT_OPENGL_ES_2) + EAGLContext *aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; +#else + EAGLContext *aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1]; +#endif + [mView setContext:aContext]; + } + + ~EAGLPlatformContext() { } + + bool makeCurrent(QPlatformSurface *surface) + { + Q_UNUSED(surface); + qDebug() << __FUNCTION__ << "not implemented"; + //QPlatformOpenGLContext::makeCurrent(); + //[mView makeCurrent]; + return false; + } + + void doneCurrent() + { + qDebug() << __FUNCTION__ << "not implemented"; + //QPlatformOpenGLContext::doneCurrent(); + } + + void swapBuffers(QPlatformSurface *surface) + { + Q_UNUSED(surface); + qDebug() << __FUNCTION__ << "not implemented"; + //[mView presentFramebuffer]; + } + + QFunctionPointer getProcAddress(const QByteArray& ) { return 0; } + + QSurfaceFormat format() const + { + return mFormat; + } + +private: + EAGLView *mView; + + QSurfaceFormat mFormat; +}; + +@implementation EAGLView + +@synthesize delegate; + ++ (Class)layerClass +{ + return [CAEAGLLayer class]; +} + +- (id)initWithFrame:(CGRect)frame +{ + if ((self = [super initWithFrame:frame])) { + CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; + eaglLayer.opaque = TRUE; + eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithBool:YES], kEAGLDrawablePropertyRetainedBacking, + kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, + nil]; + autocapitalizationType = UITextAutocapitalizationTypeNone; + autocorrectionType = UITextAutocorrectionTypeNo; + enablesReturnKeyAutomatically = NO; + keyboardAppearance = UIKeyboardAppearanceDefault; + keyboardType = UIKeyboardTypeDefault; + returnKeyType = UIReturnKeyDone; + secureTextEntry = NO; + } + return self; +} + +- (void)setContext:(EAGLContext *)newContext +{ + if (mContext != newContext) + { + [self deleteFramebuffer]; + [mContext release]; + mContext = [newContext retain]; + [EAGLContext setCurrentContext:nil]; + } +} + +- (void)presentFramebuffer +{ + if (mContext) { + [EAGLContext setCurrentContext:mContext]; + glBindRenderbuffer(GL_RENDERBUFFER, mColorRenderbuffer); + [mContext presentRenderbuffer:GL_RENDERBUFFER]; + } +} + +- (void)deleteFramebuffer +{ + if (mContext) + { + [EAGLContext setCurrentContext:mContext]; + if (mFramebuffer) { + glDeleteFramebuffers(1, &mFramebuffer); + mFramebuffer = 0; + } + if (mColorRenderbuffer) { + glDeleteRenderbuffers(1, &mColorRenderbuffer); + mColorRenderbuffer = 0; + } + if (mDepthRenderbuffer) { + glDeleteRenderbuffers(1, &mDepthRenderbuffer); + mDepthRenderbuffer = 0; + } + } +} + +- (void)createFramebuffer +{ + if (mContext && !mFramebuffer) + { + [EAGLContext setCurrentContext:mContext]; + glGenFramebuffers(1, &mFramebuffer); + glBindFramebuffer(GL_FRAMEBUFFER, mFramebuffer); + + glGenRenderbuffers(1, &mColorRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, mColorRenderbuffer); + [mContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer *)self.layer]; + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &mFramebufferWidth); + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &mFramebufferHeight); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, mColorRenderbuffer); + + glGenRenderbuffers(1, &mDepthRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, mDepthRenderbuffer); + if (stencilBits() > 0) { + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, mFramebufferWidth, mFramebufferHeight); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepthRenderbuffer); + } else { + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, mFramebufferWidth, mFramebufferHeight); + } + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepthRenderbuffer); + + if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) + NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER)); + if (delegate && [delegate respondsToSelector:@selector(eaglView:usesFramebuffer:)]) { + [delegate eaglView:self usesFramebuffer:mFramebuffer]; + } + } +} + +- (void)makeCurrent +{ + if (mContext) + { + [EAGLContext setCurrentContext:mContext]; + if (!mFramebuffer) + [self createFramebuffer]; + glBindFramebuffer(GL_FRAMEBUFFER, mFramebuffer); + glViewport(0, 0, mFramebufferWidth, mFramebufferHeight); + } +} + +- (GLint)fbo +{ + return mFramebuffer; +} + +- (void)setWindow:(QPlatformWindow *)window +{ + mWindow = window; +} + +- (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons +{ + UITouch *touch = [touches anyObject]; + CGPoint locationInView = [touch locationInView:self]; + CGFloat scaleFactor = [self contentScaleFactor]; + QPoint p(locationInView.x * scaleFactor, locationInView.y * scaleFactor); + // TODO handle global touch point? for status bar? + QWindowSystemInterface::handleMouseEvent(mWindow->window(), (ulong)(event.timestamp*1000), + p, p, buttons); +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::LeftButton]; +} + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::LeftButton]; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::NoButton]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::NoButton]; +} + +// ------- Text Input ---------- + +@synthesize autocapitalizationType; +@synthesize autocorrectionType; +@synthesize enablesReturnKeyAutomatically; +@synthesize keyboardAppearance; +@synthesize keyboardType; +@synthesize returnKeyType; +@synthesize secureTextEntry; + +- (BOOL)canBecomeFirstResponder +{ + return YES; +} + +- (BOOL)hasText +{ + return YES; +} + +- (void)insertText:(NSString *)text +{ + QString string = QString::fromUtf8([text UTF8String]); + int key = 0; + if ([text isEqualToString:@"\n"]) + key = (int)Qt::Key_Return; + + // Send key event to window system interface + QWindowSystemInterface::handleKeyEvent( + 0, QEvent::KeyPress, key, Qt::NoModifier, string, false, int(string.length())); + QWindowSystemInterface::handleKeyEvent( + 0, QEvent::KeyRelease, key, Qt::NoModifier, string, false, int(string.length())); +} + +- (void)deleteBackward +{ + // Send key event to window system interface + QWindowSystemInterface::handleKeyEvent( + 0, QEvent::KeyPress, (int)Qt::Key_Backspace, Qt::NoModifier); + QWindowSystemInterface::handleKeyEvent( + 0, QEvent::KeyRelease, (int)Qt::Key_Backspace, Qt::NoModifier); +} + +@end + +QT_BEGIN_NAMESPACE + +QIOSWindow::QIOSWindow(QWindow *window) : + QPlatformWindow(window), + mWindow(nil), + mContext(0) +{ + mScreen = static_cast(QPlatformScreen::platformScreenForWindow(window)); + mView = [[EAGLView alloc] init]; +} + +QIOSWindow::~QIOSWindow() +{ + delete mContext; mContext = 0; + [mView release]; + [mWindow release]; +} + +void QIOSWindow::setGeometry(const QRect &rect) +{ + // Not supported. Only a single "full screen" window is supported + QPlatformWindow::setGeometry(rect); +} + +UIWindow *QIOSWindow::ensureNativeWindow() +{ + if (!mWindow) { + mWindow = [[UIWindow alloc] init]; + updateGeometryAndOrientation(); + // window + mWindow.screen = mScreen->uiScreen(); + // for some reason setting the screen resets frame.origin, so we need to set the frame afterwards + mWindow.frame = mFrame; + + // view + [mView deleteFramebuffer]; + mView.frame = CGRectMake(0, 0, mWindow.bounds.size.width, mWindow.bounds.size.height); // fill + [mView setContentScaleFactor:[mWindow.screen scale]]; + [mView setMultipleTouchEnabled:YES]; + [mView setWindow:this]; + [mWindow addSubview:mView]; + [mWindow setNeedsDisplay]; + [mWindow makeKeyAndVisible]; + } + return mWindow; +} + +void QIOSWindow::updateGeometryAndOrientation() +{ + if (!mWindow) + return; + mFrame = [mScreen->uiScreen() applicationFrame]; + CGRect screen = [mScreen->uiScreen() bounds]; + QRect geom; + CGFloat angle = 0; + switch ([[UIApplication sharedApplication] statusBarOrientation]) { + case UIInterfaceOrientationPortrait: + geom = QRect(mFrame.origin.x, mFrame.origin.y, mFrame.size.width, mFrame.size.height); + break; + case UIInterfaceOrientationPortraitUpsideDown: + geom = QRect(screen.size.width - mFrame.origin.x - mFrame.size.width, + screen.size.height - mFrame.origin.y - mFrame.size.height, + mFrame.size.width, + mFrame.size.height); + angle = M_PI; + break; + case UIInterfaceOrientationLandscapeLeft: + geom = QRect(screen.size.height - mFrame.origin.y - mFrame.size.height, + mFrame.origin.x, + mFrame.size.height, + mFrame.size.width); + angle = -M_PI/2.; + break; + case UIInterfaceOrientationLandscapeRight: + geom = QRect(mFrame.origin.y, + screen.size.width - mFrame.origin.x - mFrame.size.width, + mFrame.size.height, + mFrame.size.width); + angle = +M_PI/2.; + break; + } + + CGFloat scale = [mScreen->uiScreen() scale]; + geom = QRect(geom.x() * scale, geom.y() * scale, + geom.width() * scale, geom.height() * scale); + + if (angle != 0) { + [mView layer].transform = CATransform3DMakeRotation(angle, 0, 0, 1.); + } else { + [mView layer].transform = CATransform3DIdentity; + } + [mView setNeedsDisplay]; + window()->setGeometry(geom); +} + +QPlatformOpenGLContext *QIOSWindow::glContext() const +{ + if (!mContext) { + mContext = new EAGLPlatformContext(mView); + } + return mContext; +} + +QT_END_NAMESPACE -- cgit v1.2.3 From 5d6c57fcba2da07551277901300f98e12eb22020 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 29 Oct 2012 13:28:10 +0100 Subject: iOS: fix build issue, dont link against cocoa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make sure the libraries dont depend on Cocoa. This will be picked up by libtool, and make all apps and examples link against cocoa too (which will ofcourse fail) Change-Id: I5654bb08c4ed376fc7ee74da422d903270a8af38 Reviewed-by: Morten Johan Sørvig --- src/gui/gui.pro | 4 +--- src/plugins/platforms/ios/qioseventdispatcher.h | 2 +- src/plugins/platforms/ios/qioseventdispatcher.mm | 2 +- src/widgets/kernel/mac.pri | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/gui.pro b/src/gui/gui.pro index 058cfe92ec..f21c7a5ce7 100644 --- a/src/gui/gui.pro +++ b/src/gui/gui.pro @@ -18,9 +18,7 @@ testcocoon { load(testcocoon) } -mac { - LIBS_PRIVATE += -framework Cocoa -} +mac:!ios: LIBS_PRIVATE += -framework Cocoa CONFIG += simd diff --git a/src/plugins/platforms/ios/qioseventdispatcher.h b/src/plugins/platforms/ios/qioseventdispatcher.h index 3e70397e63..479ec1d0a0 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.h +++ b/src/plugins/platforms/ios/qioseventdispatcher.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm index 246c29adde..12f448488e 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.mm +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. diff --git a/src/widgets/kernel/mac.pri b/src/widgets/kernel/mac.pri index 5474a41f15..4c507ae80e 100644 --- a/src/widgets/kernel/mac.pri +++ b/src/widgets/kernel/mac.pri @@ -1,4 +1,4 @@ -!x11::mac { +!x11:mac:!ios { LIBS_PRIVATE += -framework Carbon -framework Cocoa -lz *-mwerks:INCLUDEPATH += compat } -- cgit v1.2.3 From 8224e5ac7f5f69a64b6ad62bb60277a274bcc60e Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 29 Oct 2012 10:26:40 +0100 Subject: iOS: Don't reference QMacStyle from QStyleOption as we don't build it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QMacStyle is not buildt as a part of iOS. So make sure we dont reference it from QStyleOption Change-Id: I98e779c576d0607402e45a19b457144a6bdfc73b Reviewed-by: Tor Arne Vestbø --- src/widgets/styles/qstyleoption.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp index 01e51d594d..eff6837c5a 100644 --- a/src/widgets/styles/qstyleoption.cpp +++ b/src/widgets/styles/qstyleoption.cpp @@ -206,7 +206,7 @@ void QStyleOption::init(const QWidget *widget) if (!(state & QStyle::State_Active) && !qt_mac_can_clickThrough(widget)) state &= ~QStyle::State_Enabled; #endif -#ifdef Q_OS_MAC +#if defined(Q_OS_MAC) && !defined(Q_OS_IOS) switch (QMacStyle::widgetSizePolicy(widget)) { case QMacStyle::SizeSmall: state |= QStyle::State_Small; -- cgit v1.2.3 From 3bc4afc223bcd56245797a0bd3628f02a992301c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 1 Nov 2012 12:31:50 +0100 Subject: iOS: Move Q_OS_IOS out of makesespec to qsystemdetection.h We treat iOS as a variant of Mac OS, so for iOS both Q_OS_MAC and Q_OS_IOS will be defined. This matches what Apple assumes in the header file TargetConditionals.h Change-Id: I55cc851401b748297478e4c32e84e0f6e1fdfc28 Reviewed-by: Thiago Macieira --- src/corelib/global/qsystemdetection.h | 6 ++++++ src/corelib/kernel/qcore_mac_p.h | 2 ++ src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm | 2 ++ 3 files changed, 10 insertions(+) (limited to 'src') diff --git a/src/corelib/global/qsystemdetection.h b/src/corelib/global/qsystemdetection.h index eb7aa2e64f..86c724ebb5 100644 --- a/src/corelib/global/qsystemdetection.h +++ b/src/corelib/global/qsystemdetection.h @@ -50,6 +50,8 @@ The operating system, must be one of: (Q_OS_x) DARWIN - Darwin OS (synonym for Q_OS_MAC) + MAC - Mac OS X or iOS (iPhoneOS) + IOS - iOS (treated as a variant of Mac OS) MSDOS - MS-DOS and Windows OS2 - OS/2 OS2EMX - XFree86 on OS/2 (not PM) @@ -166,6 +168,10 @@ # elif defined(Q_OS_DARWIN32) # define Q_OS_MAC32 # endif +# include +# if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE +# define Q_OS_IOS +# endif #endif #if defined(Q_OS_WIN) diff --git a/src/corelib/kernel/qcore_mac_p.h b/src/corelib/kernel/qcore_mac_p.h index b833eb4962..361a6c2c67 100644 --- a/src/corelib/kernel/qcore_mac_p.h +++ b/src/corelib/kernel/qcore_mac_p.h @@ -63,6 +63,8 @@ #include #endif +#include "qglobal.h" + #ifndef Q_OS_IOS #include #endif diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index ef5bdbbf0d..fbd836f763 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -39,6 +39,8 @@ ** ****************************************************************************/ +#include "qglobal.h" + #ifndef Q_OS_IOS #import #import -- cgit v1.2.3 From c56f73cc1e8f4a0a2d55d713b152548efcc595aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Mon, 10 Dec 2012 08:16:31 +0100 Subject: QGraphicsView - add function to get RubberBand rect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In many situations it is handy to know the rubberband rect. There are many situations where we want to show something related to the rubberband. Regardless how that is done the rubberband area is needed. (Not having this is a flaw that can force people to do make a customized rubberband just to get this information) Change-Id: Ia854db4c0022b6a97b150af2b4bb78fd5e974991 Reviewed-by: Andreas Aardal Hanssen Reviewed-by: Samuel Rødal --- src/widgets/graphicsview/qgraphicsview.cpp | 23 ++++++++++++++++++++++- src/widgets/graphicsview/qgraphicsview.h | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp index 9c04a3c193..741d6658cc 100644 --- a/src/widgets/graphicsview/qgraphicsview.cpp +++ b/src/widgets/graphicsview/qgraphicsview.cpp @@ -1496,7 +1496,7 @@ void QGraphicsView::setDragMode(DragMode mode) The default value is Qt::IntersectsItemShape; all items whose shape intersects with or is contained by the rubber band are selected. - \sa dragMode, items() + \sa dragMode, items(), rubberBandRect() */ Qt::ItemSelectionMode QGraphicsView::rubberBandSelectionMode() const { @@ -1508,6 +1508,27 @@ void QGraphicsView::setRubberBandSelectionMode(Qt::ItemSelectionMode mode) Q_D(QGraphicsView); d->rubberBandSelectionMode = mode; } + +/*! + \since 5.1 + This functions returns the current rubber band area (in viewport coordinates) if the user + is currently doing an itemselection with rubber band. When the user is not using the + rubber band this functions returns (a null) QRectF(). + + Notice that part of this QRect can be outise the visual viewport. It can e.g + contain negative values. + + \sa rubberBandSelectionMode +*/ + +QRect QGraphicsView::rubberBandRect() const +{ + Q_D(const QGraphicsView); + if (d->dragMode != QGraphicsView::RubberBandDrag || !d->sceneInteractionAllowed || !d->rubberBanding) + return QRect(); + + return d->rubberBandRect; +} #endif /*! diff --git a/src/widgets/graphicsview/qgraphicsview.h b/src/widgets/graphicsview/qgraphicsview.h index 565e89995f..a2981aec27 100644 --- a/src/widgets/graphicsview/qgraphicsview.h +++ b/src/widgets/graphicsview/qgraphicsview.h @@ -146,6 +146,7 @@ public: #ifndef QT_NO_RUBBERBAND Qt::ItemSelectionMode rubberBandSelectionMode() const; void setRubberBandSelectionMode(Qt::ItemSelectionMode mode); + QRect rubberBandRect() const; #endif CacheMode cacheMode() const; -- cgit v1.2.3 From 717a0a9d043bb5052930fa990865850e96a99eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Mon, 10 Dec 2012 08:16:31 +0100 Subject: QGraphicsView - emit signal when rubber band changes. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rubberBandRect function is nice to have, but this patch makes it easier to track the rubber band by emiting a signal on change. That makes it easier (and less clumsy/hacky) to show information related to the rubber band. Change-Id: If65eb85d743a1804be3fdb823a821423411e9745 Reviewed-by: Andreas Aardal Hanssen Reviewed-by: Samuel Rødal --- src/widgets/graphicsview/qgraphicsview.cpp | 34 +++++++++++++++++++++++++++--- src/widgets/graphicsview/qgraphicsview.h | 5 +++++ src/widgets/graphicsview/qgraphicsview_p.h | 1 + 3 files changed, 37 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp index 741d6658cc..dd10c95e2a 100644 --- a/src/widgets/graphicsview/qgraphicsview.cpp +++ b/src/widgets/graphicsview/qgraphicsview.cpp @@ -256,6 +256,20 @@ static const int QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS = 503; // largest prime < \sa dragMode, QGraphicsScene::setSelectionArea() */ +/*! + \since 5.1 + + \fn void QGraphicsView::rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint) + + This signal is emitted when the rubber band rect is changed. The viewport Rect is specified by \a rubberBandRect. + The drag start position and drag end position are provided in scene points with \a fromScenePoint and \a toScenePoint. + + When rubberband selection ends this signal will be emitted with null vales. + + \sa rubberBandRect() +*/ + + #include "qgraphicsview.h" #include "qgraphicsview_p.h" @@ -727,16 +741,27 @@ void QGraphicsViewPrivate::updateRubberBand(const QMouseEvent *event) // if we didn't get the release events). if (!event->buttons()) { rubberBanding = false; - rubberBandRect = QRect(); + if (!rubberBandRect.isNull()) { + rubberBandRect = QRect(); + emit q->rubberBandChanged(rubberBandRect, QPointF(), QPointF()); + } return; } + QRect oldRubberband = rubberBandRect; + // Update rubberband position const QPoint mp = q->mapFromScene(mousePressScenePoint); const QPoint ep = event->pos(); rubberBandRect = QRect(qMin(mp.x(), ep.x()), qMin(mp.y(), ep.y()), qAbs(mp.x() - ep.x()) + 1, qAbs(mp.y() - ep.y()) + 1); + if (rubberBandRect != oldRubberband || lastRubberbandScenePoint != lastMouseMoveScenePoint) { + lastRubberbandScenePoint = lastMouseMoveScenePoint; + oldRubberband = rubberBandRect; + emit q->rubberBandChanged(rubberBandRect, mousePressScenePoint, lastRubberbandScenePoint); + } + // Update new rubberband if (viewportUpdateMode != QGraphicsView::NoViewportUpdate) { if (viewportUpdateMode != QGraphicsView::FullViewportUpdate) @@ -1518,7 +1543,7 @@ void QGraphicsView::setRubberBandSelectionMode(Qt::ItemSelectionMode mode) Notice that part of this QRect can be outise the visual viewport. It can e.g contain negative values. - \sa rubberBandSelectionMode + \sa rubberBandSelectionMode, rubberBandChanged() */ QRect QGraphicsView::rubberBandRect() const @@ -3316,7 +3341,10 @@ void QGraphicsView::mouseReleaseEvent(QMouseEvent *event) d->updateAll(); } d->rubberBanding = false; - d->rubberBandRect = QRect(); + if (!d->rubberBandRect.isNull()) { + d->rubberBandRect = QRect(); + emit rubberBandChanged(d->rubberBandRect, QPointF(), QPointF()); + } } } else #endif diff --git a/src/widgets/graphicsview/qgraphicsview.h b/src/widgets/graphicsview/qgraphicsview.h index a2981aec27..d812728237 100644 --- a/src/widgets/graphicsview/qgraphicsview.h +++ b/src/widgets/graphicsview/qgraphicsview.h @@ -227,6 +227,11 @@ public Q_SLOTS: void invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers); void updateSceneRect(const QRectF &rect); +#ifndef QT_NO_RUBBERBAND +Q_SIGNALS: + void rubberBandChanged(QRect viewportRect, QPointF fromScenePoint, QPointF toScenePoint); +#endif + protected Q_SLOTS: void setupViewport(QWidget *widget); diff --git a/src/widgets/graphicsview/qgraphicsview_p.h b/src/widgets/graphicsview/qgraphicsview_p.h index d8654ff10f..44d37ef992 100644 --- a/src/widgets/graphicsview/qgraphicsview_p.h +++ b/src/widgets/graphicsview/qgraphicsview_p.h @@ -110,6 +110,7 @@ public: QPoint mousePressViewPoint; QPoint mousePressScreenPoint; QPointF lastMouseMoveScenePoint; + QPointF lastRubberbandScenePoint; QPoint lastMouseMoveScreenPoint; QPoint dirtyScrollOffset; Qt::MouseButton mousePressButton; -- cgit v1.2.3 From f6af0dad5be9aba5b0da5a8307a67334f044ec45 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 25 Feb 2013 18:28:05 +0100 Subject: Fix typo. Change-Id: Ia3fd460e77d8da5dca634872e3f786d5ad30289d Reviewed-by: Jerome Pasion --- src/gui/kernel/qshortcutmap.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/kernel/qshortcutmap.cpp b/src/gui/kernel/qshortcutmap.cpp index 489242464b..cd822090e2 100644 --- a/src/gui/kernel/qshortcutmap.cpp +++ b/src/gui/kernel/qshortcutmap.cpp @@ -317,7 +317,7 @@ QKeySequence::SequenceMatch QShortcutMap::state() /*! \internal Uses ShortcutOverride event to see if any widgets want to override the event. If not, uses nextState(QKeyEvent) to check for a grabbed - Shortcut, and dispatchEvent() is found an identical. + Shortcut, and dispatchEvent() is found and identical. \sa nextState, dispatchEvent */ bool QShortcutMap::tryShortcutEvent(QObject *o, QKeyEvent *e) -- cgit v1.2.3 From 10aa64d74c0208ed9f42e88e6deb3000e9cad6df Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Sat, 22 Sep 2012 16:34:21 +0100 Subject: OpenGL: Add a set of version and context specific OpenGL classes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit adds part of the output of utils/glgen and some simple modifications to QOpenGLContext to allow easy access to classes containing functions specific to a given OpenGL context and version. This allows compile-time detection of mis-use of OpenGL features. For example, trying to use glBegin(GL_TRIANGLES) with an OpenGL 3.2 Core Profile context will be detected by the compiler rather than at runtime. These capabilities make it much easier to add functionality to Qt and applications that relies upon core features of OpenGL from specific versions e.g. geometry shaders. Change-Id: Ieb584a489792595f831bc77dee84935c03bb5a64 Reviewed-by: Samuel Rødal --- src/gui/kernel/qopenglcontext.cpp | 275 + src/gui/kernel/qopenglcontext.h | 63 + src/gui/kernel/qopenglcontext_p.h | 3 + src/gui/opengl/opengl.pri | 62 +- src/gui/opengl/qopengl.h | 129 + src/gui/opengl/qopenglfunctions_1_0.cpp | 141 + src/gui/opengl/qopenglfunctions_1_0.h | 1928 +++++++ src/gui/opengl/qopenglfunctions_1_1.cpp | 167 + src/gui/opengl/qopenglfunctions_1_1.h | 2118 +++++++ src/gui/opengl/qopenglfunctions_1_2.cpp | 193 + src/gui/opengl/qopenglfunctions_1_2.h | 2356 ++++++++ src/gui/opengl/qopenglfunctions_1_3.cpp | 219 + src/gui/opengl/qopenglfunctions_1_3.h | 2642 +++++++++ src/gui/opengl/qopenglfunctions_1_4.cpp | 245 + src/gui/opengl/qopenglfunctions_1_4.h | 2922 ++++++++++ src/gui/opengl/qopenglfunctions_1_5.cpp | 258 + src/gui/opengl/qopenglfunctions_1_5.h | 3045 ++++++++++ src/gui/opengl/qopenglfunctions_2_0.cpp | 284 + src/gui/opengl/qopenglfunctions_2_0.h | 3613 ++++++++++++ src/gui/opengl/qopenglfunctions_2_1.cpp | 297 + src/gui/opengl/qopenglfunctions_2_1.h | 3658 ++++++++++++ src/gui/opengl/qopenglfunctions_3_0.cpp | 323 ++ src/gui/opengl/qopenglfunctions_3_0.h | 4172 ++++++++++++++ src/gui/opengl/qopenglfunctions_3_1.cpp | 242 + src/gui/opengl/qopenglfunctions_3_1.h | 1590 ++++++ .../opengl/qopenglfunctions_3_2_compatibility.cpp | 350 ++ .../opengl/qopenglfunctions_3_2_compatibility.h | 4376 +++++++++++++++ src/gui/opengl/qopenglfunctions_3_2_core.cpp | 256 + src/gui/opengl/qopenglfunctions_3_2_core.h | 1709 ++++++ .../opengl/qopenglfunctions_3_3_compatibility.cpp | 363 ++ .../opengl/qopenglfunctions_3_3_compatibility.h | 4733 ++++++++++++++++ src/gui/opengl/qopenglfunctions_3_3_core.cpp | 269 + src/gui/opengl/qopenglfunctions_3_3_core.h | 2062 +++++++ .../opengl/qopenglfunctions_4_0_compatibility.cpp | 376 ++ .../opengl/qopenglfunctions_4_0_compatibility.h | 5018 +++++++++++++++++ src/gui/opengl/qopenglfunctions_4_0_core.cpp | 282 + src/gui/opengl/qopenglfunctions_4_0_core.h | 2343 ++++++++ .../opengl/qopenglfunctions_4_1_compatibility.cpp | 389 ++ .../opengl/qopenglfunctions_4_1_compatibility.h | 5555 +++++++++++++++++++ src/gui/opengl/qopenglfunctions_4_1_core.cpp | 295 + src/gui/opengl/qopenglfunctions_4_1_core.h | 2876 ++++++++++ .../opengl/qopenglfunctions_4_2_compatibility.cpp | 402 ++ .../opengl/qopenglfunctions_4_2_compatibility.h | 5636 +++++++++++++++++++ src/gui/opengl/qopenglfunctions_4_2_core.cpp | 308 ++ src/gui/opengl/qopenglfunctions_4_2_core.h | 2953 ++++++++++ .../opengl/qopenglfunctions_4_3_compatibility.cpp | 415 ++ .../opengl/qopenglfunctions_4_3_compatibility.h | 5843 ++++++++++++++++++++ src/gui/opengl/qopenglfunctions_4_3_core.cpp | 321 ++ src/gui/opengl/qopenglfunctions_4_3_core.h | 3156 +++++++++++ src/gui/opengl/qopenglfunctions_es2.cpp | 103 + src/gui/opengl/qopenglfunctions_es2.h | 931 ++++ src/gui/opengl/qopenglversionfunctions.cpp | 1791 ++++++ src/gui/opengl/qopenglversionfunctions.h | 1364 +++++ src/gui/opengl/qopenglversionfunctionsfactory.cpp | 153 + src/gui/opengl/qopenglversionfunctionsfactory_p.h | 73 + 55 files changed, 85644 insertions(+), 2 deletions(-) create mode 100644 src/gui/opengl/qopenglfunctions_1_0.cpp create mode 100644 src/gui/opengl/qopenglfunctions_1_0.h create mode 100644 src/gui/opengl/qopenglfunctions_1_1.cpp create mode 100644 src/gui/opengl/qopenglfunctions_1_1.h create mode 100644 src/gui/opengl/qopenglfunctions_1_2.cpp create mode 100644 src/gui/opengl/qopenglfunctions_1_2.h create mode 100644 src/gui/opengl/qopenglfunctions_1_3.cpp create mode 100644 src/gui/opengl/qopenglfunctions_1_3.h create mode 100644 src/gui/opengl/qopenglfunctions_1_4.cpp create mode 100644 src/gui/opengl/qopenglfunctions_1_4.h create mode 100644 src/gui/opengl/qopenglfunctions_1_5.cpp create mode 100644 src/gui/opengl/qopenglfunctions_1_5.h create mode 100644 src/gui/opengl/qopenglfunctions_2_0.cpp create mode 100644 src/gui/opengl/qopenglfunctions_2_0.h create mode 100644 src/gui/opengl/qopenglfunctions_2_1.cpp create mode 100644 src/gui/opengl/qopenglfunctions_2_1.h create mode 100644 src/gui/opengl/qopenglfunctions_3_0.cpp create mode 100644 src/gui/opengl/qopenglfunctions_3_0.h create mode 100644 src/gui/opengl/qopenglfunctions_3_1.cpp create mode 100644 src/gui/opengl/qopenglfunctions_3_1.h create mode 100644 src/gui/opengl/qopenglfunctions_3_2_compatibility.cpp create mode 100644 src/gui/opengl/qopenglfunctions_3_2_compatibility.h create mode 100644 src/gui/opengl/qopenglfunctions_3_2_core.cpp create mode 100644 src/gui/opengl/qopenglfunctions_3_2_core.h create mode 100644 src/gui/opengl/qopenglfunctions_3_3_compatibility.cpp create mode 100644 src/gui/opengl/qopenglfunctions_3_3_compatibility.h create mode 100644 src/gui/opengl/qopenglfunctions_3_3_core.cpp create mode 100644 src/gui/opengl/qopenglfunctions_3_3_core.h create mode 100644 src/gui/opengl/qopenglfunctions_4_0_compatibility.cpp create mode 100644 src/gui/opengl/qopenglfunctions_4_0_compatibility.h create mode 100644 src/gui/opengl/qopenglfunctions_4_0_core.cpp create mode 100644 src/gui/opengl/qopenglfunctions_4_0_core.h create mode 100644 src/gui/opengl/qopenglfunctions_4_1_compatibility.cpp create mode 100644 src/gui/opengl/qopenglfunctions_4_1_compatibility.h create mode 100644 src/gui/opengl/qopenglfunctions_4_1_core.cpp create mode 100644 src/gui/opengl/qopenglfunctions_4_1_core.h create mode 100644 src/gui/opengl/qopenglfunctions_4_2_compatibility.cpp create mode 100644 src/gui/opengl/qopenglfunctions_4_2_compatibility.h create mode 100644 src/gui/opengl/qopenglfunctions_4_2_core.cpp create mode 100644 src/gui/opengl/qopenglfunctions_4_2_core.h create mode 100644 src/gui/opengl/qopenglfunctions_4_3_compatibility.cpp create mode 100644 src/gui/opengl/qopenglfunctions_4_3_compatibility.h create mode 100644 src/gui/opengl/qopenglfunctions_4_3_core.cpp create mode 100644 src/gui/opengl/qopenglfunctions_4_3_core.h create mode 100644 src/gui/opengl/qopenglfunctions_es2.cpp create mode 100644 src/gui/opengl/qopenglfunctions_es2.h create mode 100644 src/gui/opengl/qopenglversionfunctions.cpp create mode 100644 src/gui/opengl/qopenglversionfunctions.h create mode 100644 src/gui/opengl/qopenglversionfunctionsfactory.cpp create mode 100644 src/gui/opengl/qopenglversionfunctionsfactory_p.h (limited to 'src') diff --git a/src/gui/kernel/qopenglcontext.cpp b/src/gui/kernel/qopenglcontext.cpp index 645c13a2ea..483baf0f09 100644 --- a/src/gui/kernel/qopenglcontext.cpp +++ b/src/gui/kernel/qopenglcontext.cpp @@ -54,11 +54,163 @@ #include #include +#include #include QT_BEGIN_NAMESPACE +class QOpenGLVersionProfilePrivate +{ +public: + QOpenGLVersionProfilePrivate() + : majorVersion(0), + minorVersion(0), + profile(QSurfaceFormat::NoProfile) + {} + + int majorVersion; + int minorVersion; + QSurfaceFormat::OpenGLContextProfile profile; +}; + + +/*! + \class QOpenGLVersionProfile + \inmodule QtGui + \since 5.1 + \brief The QOpenGLVersionProfile class represents the version and if applicable + the profile of an OpenGL context. + + An object of this class can be passed to QOpenGLContext::versionFunctions() to + request a functions object for a specific version and profile of OpenGL. + + It also contains some helper functions to check if a version supports profiles + or is a legacy version. +*/ + +/*! + Creates a default invalid QOpenGLVersionProfile object. +*/ +QOpenGLVersionProfile::QOpenGLVersionProfile() + : d(new QOpenGLVersionProfilePrivate) +{ +} + +/*! + Creates a QOpenGLVersionProfile object initialised with the version and profile + from \a format. +*/ +QOpenGLVersionProfile::QOpenGLVersionProfile(const QSurfaceFormat &format) + : d(new QOpenGLVersionProfilePrivate) +{ + d->majorVersion = format.majorVersion(); + d->minorVersion = format.minorVersion(); + d->profile = format.profile(); +} + +/*! + Constructs a copy of \a other. +*/ +QOpenGLVersionProfile::QOpenGLVersionProfile(const QOpenGLVersionProfile &other) + : d(new QOpenGLVersionProfilePrivate) +{ + *d = *(other.d); +} + +/*! + Destroys the QOpenGLVersionProfile object. +*/ +QOpenGLVersionProfile::~QOpenGLVersionProfile() +{ + delete d; +} + +/*! + Assigns the version and profile of \a rhs to this QOpenGLVersionProfile object. +*/ +QOpenGLVersionProfile &QOpenGLVersionProfile::operator=(const QOpenGLVersionProfile &rhs) +{ + if (this == &rhs) + return *this; + *d = *(rhs.d); + return *this; +} + +/*! + Returns a QPair where the components represent the major and minor OpenGL + version numbers respectively. + + \sa setVersion() +*/ +QPair QOpenGLVersionProfile::version() const +{ + return qMakePair( d->majorVersion, d->minorVersion); +} + +/*! + Sets the major and minor version numbers to \a majorVersion and \a minorVersion respectively. + + \sa version() +*/ +void QOpenGLVersionProfile::setVersion(int majorVersion, int minorVersion) +{ + d->majorVersion = majorVersion; + d->minorVersion = minorVersion; +} + +/*! + Returns the OpenGL profile. Only make sense if profiles are supported by this version. + + \sa setProfile(), supportsProfiles() +*/ +QSurfaceFormat::OpenGLContextProfile QOpenGLVersionProfile::profile() const +{ + return d->profile; +} + +/*! + Sets the profile. Only make sense if profiles are supported by this version. + + \sa profile(), supportsProfiles() +*/ +void QOpenGLVersionProfile::setProfile(QSurfaceFormat::OpenGLContextProfile profile) +{ + d->profile = profile; +} + +/*! + Returns true if profiles are supported by the OpenGL version returned by version(). Only + OpenGL versions >= 3.2 support profiles. + + \sa profile(), version() +*/ +bool QOpenGLVersionProfile::hasProfiles() const +{ + return ( d->majorVersion > 3 + || (d->majorVersion == 3 && d->minorVersion > 1)); +} + +/*! + Returns true is the OpenGL version returned by version() contains deprecated functions + and does not support profiles i.e. if the OpenGL version is <= 3.1. +*/ +bool QOpenGLVersionProfile::isLegacyVersion() const +{ + return (d->majorVersion < 3 || (d->majorVersion == 3 && d->minorVersion == 0)); +} + +/*! + Returns true if the version number is valid. Note that for a default constructed + QOpenGLVersionProfile object this function will return false. + + \sa setVersion(), version() +*/ +bool QOpenGLVersionProfile::isValid() const +{ + return d->majorVersion > 0 && d->minorVersion >= 0; +} + class QGuiGLThreadContext { public: @@ -367,6 +519,10 @@ void QOpenGLContext::destroy() d->platformGLContext = 0; delete d->functions; d->functions = 0; + qDeleteAll(d->versionFunctions); + d->versionFunctions.clear(); + qDeleteAll(d->versionFunctionsBackend); + d->versionFunctionsBackend.clear(); } /*! @@ -424,6 +580,97 @@ QOpenGLFunctions *QOpenGLContext::functions() const return d->functions; } +/*! + \fn T *QOpenGLContext::versionFunctions() const + + Returns a pointer to an object that provides access to all functions for + the version and profile of this context. Before using any of the functions + they must be initialized by calling QAbstractOpenGLFunctions::initializeOpenGLFunctions(). + + Usually one would use the template version of this function to automatically + have the result cast to the correct type. + + \code + QOpenGLFunctions_3_3_Core* funcs = 0; + funcs = context->versionFunctions(); + if (!funcs) { + qWarning() << "Could not obtain required OpenGL context version"; + exit(1); + } + funcs->initializeOpenGLFunctions(context); + \endcode + + It is possible to request a functions object for a different version and profile + than that for which the context was created. To do this either use the template + version of this function specifying the desired functions object type as the + template parameter or by passing in a QOpenGLVersionProfile object as an argument + to the non-template function. + + Note that requests for function objects of other versions or profiles can fail and + in doing so will return a null pointer. Situations in which creation of the functions + object can fail are if the request cannot be satisfied due to asking for functions + that are not in the version or profile of this context. For example: + + \list + \li Requesting a 3.3 core profile functions object would succeed. + \li Requesting a 3.3 compatibility profile functions object would fail. We would fail + to resolve the deprecated functions. + \li Requesting a 4.3 core profile functions object would fail. We would fail to resolve + the new core functions introduced in versions 4.0-4.3. + \li Requesting a 3.1 functions object would succeed. There is nothing in 3.1 that is not + also in 3.3 core. + \endlist + + Note that if creating a functions object via this method that the QOpenGLContext + retains ownership of the object. This is to allow the object to be cached and shared. +*/ + +/*! + Returns a pointer to an object that provides access to all functions for + the version of the current context. Before using any of the functions + they must be initialized by calling QAbstractOpenGLFunctions::initializeOpenGLFunctions(). + + Usually one would use the template version of this function to automatically + have the result cast to the correct type. + + \sa T *QOpenGLContext::versionFunctions() +*/ +QAbstractOpenGLFunctions *QOpenGLContext::versionFunctions(const QOpenGLVersionProfile &versionProfile) const +{ + Q_D(const QOpenGLContext); + const QSurfaceFormat f = format(); + + // Ensure we have a valid version and profile. Default to context's if none specified + QOpenGLVersionProfile vp = versionProfile; + if (!vp.isValid()) + vp = QOpenGLVersionProfile(f); + + // Check that context is compatible with requested version + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < vp.version()) + return 0; + + // If this context only offers core profile functions then we can't create + // function objects for legacy or compatibility profile requests + if (((vp.hasProfiles() && vp.profile() != QSurfaceFormat::CoreProfile) || vp.isLegacyVersion()) + && f.profile() == QSurfaceFormat::CoreProfile) + return 0; + + // Create object if suitable one not cached + QAbstractOpenGLFunctions* funcs = 0; + if (!d->versionFunctions.contains(vp)) { + funcs = QOpenGLVersionFunctionsFactory::create(vp); + if (funcs) { + funcs->setOwningContext(this); + d->versionFunctions.insert(vp, funcs); + } + } else { + funcs = d->versionFunctions.value(vp); + } + + return funcs; +} + /*! Returns the set of OpenGL extensions supported by this context. @@ -701,6 +948,34 @@ void QOpenGLContext::deleteQGLContext() } } +/*! + \internal +*/ +QOpenGLVersionFunctionsBackend *QOpenGLContext::functionsBackend(const QOpenGLVersionStatus &v) const +{ + Q_D(const QOpenGLContext); + return d->versionFunctionsBackend.value(v, 0); +} + +/*! + \internal +*/ +void QOpenGLContext::insertFunctionsBackend(const QOpenGLVersionStatus &v, + QOpenGLVersionFunctionsBackend *backend) +{ + Q_D(QOpenGLContext); + d->versionFunctionsBackend.insert(v, backend); +} + +/*! + \internal +*/ +void QOpenGLContext::removeFunctionsBackend(const QOpenGLVersionStatus &v) +{ + Q_D(QOpenGLContext); + d->versionFunctionsBackend.remove(v); +} + /*! \class QOpenGLContextGroup \since 5.0 diff --git a/src/gui/kernel/qopenglcontext.h b/src/gui/kernel/qopenglcontext.h index e8d04d7446..52b4a2da28 100644 --- a/src/gui/kernel/qopenglcontext.h +++ b/src/gui/kernel/qopenglcontext.h @@ -58,6 +58,10 @@ #endif #include +#include + +#include +#include QT_BEGIN_NAMESPACE @@ -69,6 +73,50 @@ class QPlatformOpenGLContext; class QScreen; class QSurface; +class QOpenGLVersionProfilePrivate; + +class Q_GUI_EXPORT QOpenGLVersionProfile +{ +public: + QOpenGLVersionProfile(); + explicit QOpenGLVersionProfile(const QSurfaceFormat &format); + QOpenGLVersionProfile(const QOpenGLVersionProfile &other); + ~QOpenGLVersionProfile(); + + QOpenGLVersionProfile &operator=(const QOpenGLVersionProfile &rhs); + + QPair version() const; + void setVersion(int majorVersion, int minorVersion); + + QSurfaceFormat::OpenGLContextProfile profile() const; + void setProfile(QSurfaceFormat::OpenGLContextProfile profile); + + bool hasProfiles() const; + bool isLegacyVersion() const; + bool isValid() const; + +private: + QOpenGLVersionProfilePrivate* d; +}; + +inline uint qHash(const QOpenGLVersionProfile &v, uint seed) +{ + return qHash(static_cast(v.profile() * 1000) + + v.version().first * 100 + v.version().second * 10, seed); +} + +inline bool operator==(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs) +{ + if (lhs.profile() != rhs.profile()) + return false; + return lhs.version() == rhs.version(); +} + +inline bool operator!=(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs) +{ + return !operator==(lhs, rhs); +} + class Q_GUI_EXPORT QOpenGLContextGroup : public QObject { Q_OBJECT @@ -127,6 +175,15 @@ public: QOpenGLFunctions *functions() const; + QAbstractOpenGLFunctions *versionFunctions(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile()) const; + + template + TYPE *versionFunctions() const + { + QOpenGLVersionProfile v = TYPE::versionProfile(); + return static_cast(versionFunctions(v)); + } + QSet extensions() const; bool hasExtension(const QByteArray &extension) const; @@ -147,11 +204,17 @@ private: friend class QOpenGL2PaintEngineExPrivate; friend class QSGDistanceFieldGlyphCache; friend class QWidgetPrivate; + friend class QAbstractOpenGLFunctionsPrivate; void *qGLContextHandle() const; void setQGLContextHandle(void *handle,void (*qGLContextDeleteFunction)(void *)); void deleteQGLContext(); + QOpenGLVersionFunctionsBackend* functionsBackend(const QOpenGLVersionStatus &v) const; + void insertFunctionsBackend(const QOpenGLVersionStatus &v, + QOpenGLVersionFunctionsBackend *backend); + void removeFunctionsBackend(const QOpenGLVersionStatus &v); + void destroy(); }; diff --git a/src/gui/kernel/qopenglcontext_p.h b/src/gui/kernel/qopenglcontext_p.h index ba5434e8ac..8a36df3e7c 100644 --- a/src/gui/kernel/qopenglcontext_p.h +++ b/src/gui/kernel/qopenglcontext_p.h @@ -213,6 +213,9 @@ public: //QWidgetPrivate::deleteTLSysExtra() } + mutable QHash versionFunctions; + mutable QHash versionFunctionsBackend; + void *qGLContextHandle; void (*qGLContextDeleteFunction)(void *handle); diff --git a/src/gui/opengl/opengl.pri b/src/gui/opengl/opengl.pri index 2256f201d2..4f4701f7f5 100644 --- a/src/gui/opengl/opengl.pri +++ b/src/gui/opengl/opengl.pri @@ -27,7 +27,9 @@ contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2) { opengl/qopenglshadercache_p.h \ opengl/qopenglshadercache_meego_p.h \ opengl/qtriangulator_p.h \ - opengl/qrbtree_p.h + opengl/qrbtree_p.h \ + opengl/qopenglversionfunctions.h \ + opengl/qopenglversionfunctionsfactory_p.h SOURCES += opengl/qopengl.cpp \ opengl/qopenglfunctions.cpp \ @@ -43,6 +45,62 @@ contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2) { opengl/qopenglcustomshaderstage.cpp \ opengl/qtriangulatingstroker.cpp \ opengl/qopengltextureglyphcache.cpp \ - opengl/qtriangulator.cpp + opengl/qtriangulator.cpp \ + opengl/qopenglversionfunctions.cpp \ + opengl/qopenglversionfunctionsfactory.cpp + + !contains(QT_CONFIG, opengles2) { + HEADERS += opengl/qopenglfunctions_1_0.h \ + opengl/qopenglfunctions_1_1.h \ + opengl/qopenglfunctions_1_2.h \ + opengl/qopenglfunctions_1_3.h \ + opengl/qopenglfunctions_1_4.h \ + opengl/qopenglfunctions_1_5.h \ + opengl/qopenglfunctions_2_0.h \ + opengl/qopenglfunctions_2_1.h \ + opengl/qopenglfunctions_3_0.h \ + opengl/qopenglfunctions_3_1.h \ + opengl/qopenglfunctions_3_2_core.h \ + opengl/qopenglfunctions_3_3_core.h \ + opengl/qopenglfunctions_4_0_core.h \ + opengl/qopenglfunctions_4_1_core.h \ + opengl/qopenglfunctions_4_2_core.h \ + opengl/qopenglfunctions_4_3_core.h \ + opengl/qopenglfunctions_3_2_compatibility.h \ + opengl/qopenglfunctions_3_3_compatibility.h \ + opengl/qopenglfunctions_4_0_compatibility.h \ + opengl/qopenglfunctions_4_1_compatibility.h \ + opengl/qopenglfunctions_4_2_compatibility.h \ + opengl/qopenglfunctions_4_3_compatibility.h + + SOURCES += opengl/qopenglfunctions_1_0.cpp \ + opengl/qopenglfunctions_1_1.cpp \ + opengl/qopenglfunctions_1_2.cpp \ + opengl/qopenglfunctions_1_3.cpp \ + opengl/qopenglfunctions_1_4.cpp \ + opengl/qopenglfunctions_1_5.cpp \ + opengl/qopenglfunctions_2_0.cpp \ + opengl/qopenglfunctions_2_1.cpp \ + opengl/qopenglfunctions_3_0.cpp \ + opengl/qopenglfunctions_3_1.cpp \ + opengl/qopenglfunctions_3_2_core.cpp \ + opengl/qopenglfunctions_3_3_core.cpp \ + opengl/qopenglfunctions_4_0_core.cpp \ + opengl/qopenglfunctions_4_1_core.cpp \ + opengl/qopenglfunctions_4_2_core.cpp \ + opengl/qopenglfunctions_4_3_core.cpp \ + opengl/qopenglfunctions_3_2_compatibility.cpp \ + opengl/qopenglfunctions_3_3_compatibility.cpp \ + opengl/qopenglfunctions_4_0_compatibility.cpp \ + opengl/qopenglfunctions_4_1_compatibility.cpp \ + opengl/qopenglfunctions_4_2_compatibility.cpp \ + opengl/qopenglfunctions_4_3_compatibility.cpp + } + + contains(QT_CONFIG, opengles2) { + HEADERS += opengl/qopenglfunctions_es2.h + + SOURCES += opengl/qopenglfunctions_es2.cpp + } } diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h index e1d36662d1..049bb23207 100644 --- a/src/gui/opengl/qopengl.h +++ b/src/gui/opengl/qopengl.h @@ -108,6 +108,135 @@ typedef GLfloat GLdouble; QT_BEGIN_NAMESPACE + +// When all else fails we provide sensible fallbacks - this is needed to +// allow compilation on OS X 10.6 +#if !defined(QT_OPENGL_ES_2) + +// OS X 10.6 doesn't define these which are needed below +// OS X 10.7 and later defien them in gl3.h +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + + +// This block is copied from glext.h and defines the types needed by +// a few extension classes. + +#include +#ifndef GL_VERSION_2_0 +/* GL type for program/shader text */ +typedef char GLchar; +#endif + +#ifndef GL_VERSION_1_5 +/* GL types for handling large vertex buffer objects */ +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; +#endif + +#ifndef GL_ARB_vertex_buffer_object +/* GL types for handling large vertex buffer objects */ +typedef ptrdiff_t GLintptrARB; +typedef ptrdiff_t GLsizeiptrARB; +#endif + +#ifndef GL_ARB_shader_objects +/* GL types for program/shader text and shader object handles */ +typedef char GLcharARB; +typedef unsigned int GLhandleARB; +#endif + +/* GL type for "half" precision (s10e5) float data in host memory */ +#ifndef GL_ARB_half_float_pixel +typedef unsigned short GLhalfARB; +#endif + +#ifndef GL_NV_half_float +typedef unsigned short GLhalfNV; +#endif + +#ifndef GLEXT_64_TYPES_DEFINED +/* This code block is duplicated in glxext.h, so must be protected */ +#define GLEXT_64_TYPES_DEFINED +/* Define int32_t, int64_t, and uint64_t types for UST/MSC */ +/* (as used in the GL_EXT_timer_query extension). */ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include +#elif defined(__sun__) || defined(__digital__) +#include +#if defined(__STDC__) +#if defined(__arch64__) || defined(_LP64) +typedef long int int64_t; +typedef unsigned long int uint64_t; +#else +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#endif /* __arch64__ */ +#endif /* __STDC__ */ +#elif defined( __VMS ) || defined(__sgi) +#include +#elif defined(__SCO__) || defined(__USLC__) +#include +#elif defined(__UNIXOS2__) || defined(__SOL64__) +typedef long int int32_t; +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#elif defined(_WIN32) && defined(__GNUC__) +#include +#elif defined(_WIN32) +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#else +/* Fallback if nothing above works */ +#include +#endif +#endif + +#ifndef GL_EXT_timer_query +typedef int64_t GLint64EXT; +typedef uint64_t GLuint64EXT; +#endif + +#ifndef GL_ARB_sync +typedef int64_t GLint64; +typedef uint64_t GLuint64; +typedef struct __GLsync *GLsync; +#endif + +#ifndef GL_ARB_cl_event +/* These incomplete types let us declare types compatible with OpenCL's cl_context and cl_event */ +struct _cl_context; +struct _cl_event; +#endif + +#ifndef GL_ARB_debug_output +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); +#endif + +#ifndef GL_AMD_debug_output +typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); +#endif + +#ifndef GL_KHR_debug +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); +#endif + +#ifndef GL_NV_vdpau_interop +typedef GLintptr GLvdpauSurfaceNV; +#endif + +// End of block copied from glext.h +#endif + + // Types that aren't defined in all system's gl.h files. typedef ptrdiff_t qopengl_GLintptr; typedef ptrdiff_t qopengl_GLsizeiptr; diff --git a/src/gui/opengl/qopenglfunctions_1_0.cpp b/src/gui/opengl/qopenglfunctions_1_0.cpp new file mode 100644 index 0000000000..84db0f2d65 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_0.cpp @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_1_0.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_1_0 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_1_0 class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_1_0::QOpenGLFunctions_1_0() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_0_Deprecated(0) +{ +} + +QOpenGLFunctions_1_0::~QOpenGLFunctions_1_0() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } +} + +bool QOpenGLFunctions_1_0::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_1_0::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_1_0::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(1, 0)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_1_0::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(1, 0); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_1_0.h b/src/gui/opengl/qopenglfunctions_1_0.h new file mode 100644 index 0000000000..398d8db9b1 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_0.h @@ -0,0 +1,1928 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_1_0_H +#define QOPENGLVERSIONFUNCTIONS_1_0_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_1_0 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_1_0(); + ~QOpenGLFunctions_1_0(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_1_0::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_0::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_0::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_0::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_0::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_1_0::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_0::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_1_0::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_0::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_0::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_0::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_0::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_1_0::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_0::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_0::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_0::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_0::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_1_0::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_1_0::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_1_0::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_1_0::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_1_0::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_1_0::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_0::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_1_0::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_1_0::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_1_0::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_0::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_0::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_0::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_0::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_0::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_0::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_1_0::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_1_0::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_1_0::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_1_0::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_1_0::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_0::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_1_0::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_1_0::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_0::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_0::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_0::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_0::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_0::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_0::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_1_0::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_0::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_1_0::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_0::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_0::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_0::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_0::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_0::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_0::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_0::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_0::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_0::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_0::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_0::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_0::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_0::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_0::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_0::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_0::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_0::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_0::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_0::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_0::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_0::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_0::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_0::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_0::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_0::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_0::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_1_0::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_0::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_0::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_0::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_0::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_0::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_1_0::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_1_0::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_1_0::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_1_0::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_1_0::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_1_0::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_1_0::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_1_0::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_1_0::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_1_0::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_0::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_0::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_0::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_0::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_0::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_0::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_0::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_0::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_0::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_0::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_0::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_0::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_0::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_0::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_0::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_0::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_0::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_0::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_0::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_0::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_0::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_0::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_0::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_0::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_0::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_0::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_0::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_0::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_0::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_0::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_0::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_0::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_0::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_0::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_0::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_0::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_0::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_0::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_0::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_0::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_0::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_1_0::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_0::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_1_0::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_0::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_1_0::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_0::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_1_0::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_0::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_1_0::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_0::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_1_0::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_1_0::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_1_0::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_1_0::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_1_0::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_1_0::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_1_0::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_1_0::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_1_0::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_0::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_0::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_1_0::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_0::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_1_0::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_1_0::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_0::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_1_0::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_0::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_1_0::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_0::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_0::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_1_0::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_1_0::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_1_1.cpp b/src/gui/opengl/qopenglfunctions_1_1.cpp new file mode 100644 index 0000000000..b4860bcec7 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_1.cpp @@ -0,0 +1,167 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_1_1.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_1_1 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_1_1 class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_1_1::QOpenGLFunctions_1_1() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) +{ +} + +QOpenGLFunctions_1_1::~QOpenGLFunctions_1_1() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } +} + +bool QOpenGLFunctions_1_1::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_1_1::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_1_1::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(1, 1)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_1_1::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(1, 1); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_1_1.h b/src/gui/opengl/qopenglfunctions_1_1.h new file mode 100644 index 0000000000..4eb065e1ee --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_1.h @@ -0,0 +1,2118 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_1_1_H +#define QOPENGLVERSIONFUNCTIONS_1_1_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_1_1 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_1_1(); + ~QOpenGLFunctions_1_1(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_1_1::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_1::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_1::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_1::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_1::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_1_1::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_1::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_1_1::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_1::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_1::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_1::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_1::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_1_1::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_1::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_1::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_1::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_1::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_1_1::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_1_1::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_1_1::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_1_1::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_1_1::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_1_1::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_1::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_1_1::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_1_1::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_1_1::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_1::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_1::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_1::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_1::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_1::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_1::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_1_1::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_1_1::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_1_1::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_1_1::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_1_1::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_1_1::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_1_1::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_1_1::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_1_1::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_1_1::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_1_1::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_1::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_1_1::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_1_1::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_1_1::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_1_1::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_1_1::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_1_1::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_1_1::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_1_1::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_1::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_1_1::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_1_1::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_1::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_1::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_1::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_1::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_1::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_1::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_1_1::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_1::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_1_1::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_1::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_1::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_1::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_1::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_1::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_1::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_1::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_1::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_1::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_1::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_1::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_1::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_1::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_1::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_1::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_1::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_1::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_1::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_1::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_1::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_1::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_1::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_1::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_1::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_1::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_1::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_1_1::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_1::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_1::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_1::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_1::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_1::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_1_1::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_1_1::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_1_1::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_1_1::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_1_1::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_1_1::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_1_1::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_1_1::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_1_1::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_1_1::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_1::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_1::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_1::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_1::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_1::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_1::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_1::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_1::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_1::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_1::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_1::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_1::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_1::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_1::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_1::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_1::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_1::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_1::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_1::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_1::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_1::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_1::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_1::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_1::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_1::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_1::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_1::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_1::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_1::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_1::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_1::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_1::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_1::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_1::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_1::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_1::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_1::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_1::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_1::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_1::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_1::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_1_1::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_1::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_1_1::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_1::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_1_1::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_1::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_1_1::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_1::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_1_1::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_1::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_1_1::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_1_1::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_1_1::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_1_1::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_1_1::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_1_1::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_1_1::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_1_1::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_1_1::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_1::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_1::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_1_1::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_1::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_1_1::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_1_1::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_1::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_1_1::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_1::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_1_1::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_1::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_1::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_1_1::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_1_1::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_1_1::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_1_1::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_1_1::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_1_1::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_1_1::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_1_1::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_1_1::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_1::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_1_2.cpp b/src/gui/opengl/qopenglfunctions_1_2.cpp new file mode 100644 index 0000000000..064980bebe --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_2.cpp @@ -0,0 +1,193 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_1_2.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_1_2 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_1_2 class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_1_2::QOpenGLFunctions_1_2() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) +{ +} + +QOpenGLFunctions_1_2::~QOpenGLFunctions_1_2() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } +} + +bool QOpenGLFunctions_1_2::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_1_2::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_1_2::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(1, 2)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_1_2::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(1, 2); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_1_2.h b/src/gui/opengl/qopenglfunctions_1_2.h new file mode 100644 index 0000000000..0288b0faf6 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_2.h @@ -0,0 +1,2356 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_1_2_H +#define QOPENGLVERSIONFUNCTIONS_1_2_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_1_2 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_1_2(); + ~QOpenGLFunctions_1_2(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_1_2::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_2::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_2::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_2::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_2::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_1_2::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_2::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_1_2::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_2::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_2::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_2::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_2::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_1_2::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_2::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_2::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_2::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_2::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_1_2::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_1_2::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_1_2::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_1_2::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_1_2::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_1_2::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_2::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_1_2::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_1_2::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_1_2::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_2::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_2::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_2::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_2::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_2::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_2::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_1_2::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_1_2::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_1_2::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_1_2::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_1_2::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_1_2::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_1_2::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_1_2::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_1_2::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_1_2::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_1_2::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_2::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_1_2::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_1_2::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_1_2::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_1_2::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_1_2::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_1_2::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_1_2::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_1_2::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_1_2::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_1_2::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_1_2::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_1_2::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_1_2::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_2::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_1_2::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_1_2::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_2::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_2::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_2::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_2::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_2::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_2::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_1_2::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_2::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_1_2::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_2::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_2::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_2::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_2::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_2::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_2::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_2::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_2::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_2::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_2::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_2::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_2::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_2::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_2::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_2::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_2::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_2::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_2::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_2::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_2::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_2::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_2::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_2::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_2::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_2::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_1_2::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_2::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_2::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_2::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_2::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_2::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_1_2::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_1_2::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_1_2::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_1_2::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_1_2::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_1_2::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_1_2::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_1_2::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_1_2::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_1_2::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_2::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_2::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_2::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_2::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_2::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_2::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_2::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_2::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_2::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_2::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_2::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_2::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_2::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_2::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_2::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_2::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_2::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_2::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_2::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_2::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_2::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_2::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_2::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_2::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_2::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_2::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_2::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_2::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_2::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_2::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_2::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_2::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_2::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_2::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_2::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_2::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_2::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_2::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_2::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_2::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_1_2::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_2::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_1_2::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_2::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_1_2::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_2::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_1_2::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_2::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_1_2::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_2::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_1_2::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_1_2::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_1_2::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_1_2::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_1_2::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_1_2::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_1_2::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_1_2::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_1_2::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_2::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_2::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_1_2::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_2::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_1_2::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_1_2::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_2::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_1_2::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_2::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_1_2::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_2::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_2::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_1_2::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_1_2::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_1_2::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_1_2::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_1_2::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_1_2::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_1_2::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_1_2::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_1_2::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_2::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_1_2::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_1_2::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_1_2::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_1_2::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_1_2::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_2::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_2::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_1_2::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_1_2::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_1_2::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_1_2::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_2::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_1_2::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_1_2::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_1_2::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_1_2::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_1_2::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_2::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_2::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_1_2::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_1_3.cpp b/src/gui/opengl/qopenglfunctions_1_3.cpp new file mode 100644 index 0000000000..ace7507e35 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_3.cpp @@ -0,0 +1,219 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_1_3.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_1_3 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_1_3 class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_1_3::QOpenGLFunctions_1_3() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) +{ +} + +QOpenGLFunctions_1_3::~QOpenGLFunctions_1_3() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } +} + +bool QOpenGLFunctions_1_3::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_1_3::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_1_3::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(1, 3)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_1_3::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(1, 3); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_1_3.h b/src/gui/opengl/qopenglfunctions_1_3.h new file mode 100644 index 0000000000..e59d6ea3c6 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_3.h @@ -0,0 +1,2642 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_1_3_H +#define QOPENGLVERSIONFUNCTIONS_1_3_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_1_3 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_1_3(); + ~QOpenGLFunctions_1_3(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_1_3::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_3::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_3::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_3::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_3::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_1_3::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_3::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_1_3::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_3::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_3::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_3::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_3::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_1_3::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_3::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_3::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_3::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_3::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_1_3::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_1_3::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_1_3::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_1_3::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_1_3::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_1_3::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_3::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_1_3::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_1_3::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_1_3::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_3::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_3::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_3::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_3::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_3::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_3::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_1_3::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_1_3::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_1_3::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_1_3::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_1_3::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_1_3::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_1_3::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_1_3::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_1_3::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_1_3::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_1_3::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_3::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_1_3::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_1_3::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_1_3::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_1_3::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_1_3::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_1_3::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_1_3::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_1_3::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_1_3::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_1_3::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_1_3::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_1_3::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_1_3::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_1_3::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_1_3::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_1_3::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_1_3::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_3::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_3::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_3::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_1_3::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_1_3::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_3::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_1_3::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_1_3::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_3::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_3::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_3::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_3::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_3::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_3::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_1_3::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_3::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_1_3::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_3::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_3::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_3::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_3::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_3::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_3::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_3::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_3::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_3::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_3::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_3::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_3::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_3::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_3::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_3::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_3::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_3::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_3::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_3::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_3::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_3::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_3::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_3::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_3::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_3::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_1_3::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_3::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_3::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_3::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_3::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_3::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_1_3::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_1_3::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_1_3::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_1_3::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_1_3::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_1_3::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_1_3::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_1_3::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_1_3::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_1_3::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_3::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_3::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_3::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_3::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_3::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_3::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_3::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_3::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_3::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_3::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_3::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_3::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_3::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_3::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_3::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_3::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_3::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_3::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_3::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_3::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_3::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_3::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_3::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_3::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_3::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_3::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_3::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_3::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_3::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_3::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_3::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_3::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_3::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_3::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_3::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_3::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_3::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_3::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_3::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_3::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_1_3::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_3::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_1_3::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_3::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_1_3::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_3::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_1_3::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_3::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_1_3::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_3::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_1_3::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_1_3::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_1_3::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_1_3::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_1_3::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_1_3::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_1_3::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_1_3::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_1_3::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_3::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_3::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_1_3::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_3::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_1_3::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_1_3::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_3::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_1_3::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_3::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_1_3::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_3::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_3::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_1_3::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_1_3::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_1_3::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_1_3::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_1_3::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_1_3::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_1_3::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_1_3::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_1_3::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_3::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_1_3::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_1_3::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_1_3::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_1_3::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_1_3::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_3::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_3::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_1_3::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_1_3::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_1_3::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_1_3::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_3::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_1_3::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_1_3::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_1_3::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_1_3::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_1_3::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_3::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_3::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_1_3::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_1_3::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_3::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_3::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_3::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_1_3::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_1_3::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_1_4.cpp b/src/gui/opengl/qopenglfunctions_1_4.cpp new file mode 100644 index 0000000000..a27b81d6d8 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_4.cpp @@ -0,0 +1,245 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_1_4.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_1_4 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_1_4 class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_1_4::QOpenGLFunctions_1_4() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) +{ +} + +QOpenGLFunctions_1_4::~QOpenGLFunctions_1_4() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } +} + +bool QOpenGLFunctions_1_4::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_1_4::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_1_4::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(1, 4)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_1_4::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(1, 4); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_1_4.h b/src/gui/opengl/qopenglfunctions_1_4.h new file mode 100644 index 0000000000..41f4c6f8ac --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_4.h @@ -0,0 +1,2922 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_1_4_H +#define QOPENGLVERSIONFUNCTIONS_1_4_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_1_4 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_1_4(); + ~QOpenGLFunctions_1_4(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_1_4::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_4::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_4::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_4::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_4::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_1_4::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_4::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_1_4::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_4::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_4::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_4::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_4::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_1_4::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_4::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_4::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_4::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_4::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_1_4::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_1_4::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_1_4::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_1_4::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_1_4::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_1_4::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_4::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_1_4::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_1_4::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_1_4::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_4::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_4::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_4::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_4::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_4::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_4::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_1_4::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_1_4::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_1_4::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_1_4::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_1_4::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_1_4::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_1_4::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_1_4::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_1_4::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_1_4::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_1_4::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_4::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_1_4::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_1_4::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_1_4::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_1_4::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_1_4::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_1_4::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_1_4::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_1_4::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_1_4::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_1_4::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_1_4::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_1_4::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_1_4::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_1_4::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_1_4::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_1_4::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_1_4::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_4::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_4::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_4::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_1_4::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_1_4::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_1_4::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_1_4::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_1_4::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_1_4::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_1_4::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_4::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_1_4::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_1_4::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_4::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_4::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_4::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_4::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_4::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_4::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_1_4::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_4::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_1_4::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_4::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_4::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_4::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_4::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_4::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_4::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_4::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_4::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_4::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_4::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_4::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_4::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_4::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_4::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_4::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_4::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_4::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_4::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_4::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_4::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_4::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_4::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_4::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_4::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_4::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_1_4::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_4::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_4::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_4::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_4::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_4::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_1_4::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_1_4::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_1_4::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_1_4::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_1_4::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_1_4::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_1_4::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_1_4::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_1_4::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_1_4::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_4::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_4::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_4::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_4::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_4::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_4::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_4::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_4::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_4::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_4::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_4::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_4::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_4::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_4::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_4::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_4::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_4::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_4::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_4::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_4::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_4::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_4::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_4::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_4::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_4::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_4::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_4::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_4::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_4::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_4::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_4::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_4::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_4::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_4::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_4::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_4::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_4::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_4::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_4::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_4::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_1_4::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_4::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_1_4::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_4::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_1_4::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_4::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_1_4::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_4::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_1_4::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_4::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_1_4::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_1_4::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_1_4::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_1_4::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_1_4::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_1_4::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_1_4::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_1_4::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_1_4::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_4::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_4::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_1_4::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_4::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_1_4::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_4::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_1_4::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_4::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_1_4::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_4::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_4::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_1_4::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_1_4::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_1_4::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_1_4::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_1_4::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_1_4::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_1_4::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_1_4::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_1_4::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_1_4::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_1_4::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_1_4::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_1_4::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_1_4::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_4::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_4::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_1_4::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_1_4::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_1_4::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_1_4::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_4::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_1_4::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_1_4::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_1_4::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_1_4::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_1_4::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_4::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_4::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_1_4::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_1_4::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_4::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_4::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_4::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_1_4::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_1_4::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_1_4::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_1_4::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_1_4::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_1_4::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_4::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_1_4::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_1_4::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_1_4::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_1_5.cpp b/src/gui/opengl/qopenglfunctions_1_5.cpp new file mode 100644 index 0000000000..ceb004b02c --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_5.cpp @@ -0,0 +1,258 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_1_5.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_1_5 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_1_5 class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_1_5::QOpenGLFunctions_1_5() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) +{ +} + +QOpenGLFunctions_1_5::~QOpenGLFunctions_1_5() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } +} + +bool QOpenGLFunctions_1_5::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_1_5::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_1_5::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(1, 5)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_1_5::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(1, 5); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_1_5.h b/src/gui/opengl/qopenglfunctions_1_5.h new file mode 100644 index 0000000000..ee444849e1 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_1_5.h @@ -0,0 +1,3045 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_1_5_H +#define QOPENGLVERSIONFUNCTIONS_1_5_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_1_5 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_1_5(); + ~QOpenGLFunctions_1_5(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + + // OpenGL 1.5 deprecated functions + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_1_5::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_1_5::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_1_5::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_1_5::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_1_5::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_1_5::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_1_5::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_1_5::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_5::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_1_5::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_1_5::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_1_5::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_1_5::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_1_5::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_1_5::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_1_5::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_1_5::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_1_5::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_1_5::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_1_5::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_1_5::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_1_5::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_1_5::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_1_5::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_1_5::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_1_5::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_1_5::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_5::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_1_5::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_1_5::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_1_5::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_1_5::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_1_5::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_1_5::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_1_5::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_1_5::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_1_5::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_1_5::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_1_5::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_1_5::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_1_5::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_1_5::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_1_5::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_1_5::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_5::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_1_5::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_1_5::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_1_5::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_1_5::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_1_5::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_1_5::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_1_5::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_1_5::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_1_5::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_1_5::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_1_5::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_1_5::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_1_5::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_1_5::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_1_5::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_1_5::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_1_5::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_5::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_5::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_1_5::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_1_5::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_1_5::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_1_5::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_1_5::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_1_5::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_1_5::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_1_5::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_1_5::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_1_5::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_1_5::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_1_5::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_1_5::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_1_5::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_1_5::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_1_5::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_1_5::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_1_5::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_1_5::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_1_5::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_1_5::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_1_5::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_1_5::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_1_5::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_1_5::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_1_5::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_1_5::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_1_5::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_1_5::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_1_5::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_1_5::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_1_5::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_1_5::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_1_5::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_1_5::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_5::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_1_5::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_1_5::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_1_5::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_1_5::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_1_5::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_1_5::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_5::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_1_5::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_1_5::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_5::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_5::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_1_5::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_1_5::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_1_5::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_1_5::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_1_5::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_1_5::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_1_5::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_1_5::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_1_5::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_1_5::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_5::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_1_5::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_1_5::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_1_5::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_5::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_1_5::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_5::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_1_5::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_1_5::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_1_5::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_1_5::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_1_5::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_1_5::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_1_5::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_1_5::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_1_5::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_1_5::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_1_5::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_1_5::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_1_5::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_1_5::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_1_5::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_1_5::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_1_5::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_1_5::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_1_5::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_1_5::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_1_5::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_1_5::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_1_5::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_1_5::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_1_5::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_1_5::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_1_5::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_1_5::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_1_5::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_1_5::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_1_5::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_1_5::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_1_5::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_1_5::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_1_5::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_1_5::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_1_5::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_1_5::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_1_5::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_1_5::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_1_5::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_1_5::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_1_5::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_1_5::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_5::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_1_5::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_5::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_1_5::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_5::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_1_5::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_1_5::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_1_5::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_1_5::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_5::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_1_5::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_5::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_1_5::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_5::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_1_5::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_5::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_1_5::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_1_5::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_1_5::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_1_5::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_1_5::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_1_5::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_1_5::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_1_5::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_1_5::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_1_5::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_1_5::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_1_5::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_1_5::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_1_5::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_1_5::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_1_5::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_1_5::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_1_5::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_1_5::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_1_5::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_1_5::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_1_5::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_1_5::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_1_5::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_1_5::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_1_5::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_1_5::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_1_5::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_1_5::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_1_5::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_1_5::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_1_5::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_1_5::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_1_5::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_1_5::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_1_5::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_5::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_1_5::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_1_5::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_1_5::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_1_5::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_1_5::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_5::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_1_5::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_1_5::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_1_5::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_1_5::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_1_5::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_1_5::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_1_5::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_1_5::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_1_5::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_5::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_5::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_1_5::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_1_5::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_1_5::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_1_5::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_1_5::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_1_5::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_1_5::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_1_5::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_1_5::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_1_5::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_1_5::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_2_0.cpp b/src/gui/opengl/qopenglfunctions_2_0.cpp new file mode 100644 index 0000000000..15c042177d --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_2_0.cpp @@ -0,0 +1,284 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_2_0.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_2_0 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_2_0 class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_2_0::QOpenGLFunctions_2_0() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) + , d_2_0_Deprecated(0) +{ +} + +QOpenGLFunctions_2_0::~QOpenGLFunctions_2_0() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } + if (d_2_0_Deprecated && !d_2_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Deprecated->context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + delete d_2_0_Deprecated; + } +} + +bool QOpenGLFunctions_2_0::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_2_0::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus(), d); + } + d_2_0_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_2_0::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(2, 0)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_2_0::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(2, 0); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_2_0.h b/src/gui/opengl/qopenglfunctions_2_0.h new file mode 100644 index 0000000000..915d35e963 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_2_0.h @@ -0,0 +1,3613 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_2_0_H +#define QOPENGLVERSIONFUNCTIONS_2_0_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_2_0 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_2_0(); + ~QOpenGLFunctions_2_0(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + + // OpenGL 1.5 deprecated functions + + // OpenGL 2.0 deprecated functions + void glVertexAttrib4usv(GLuint index, const GLushort *v); + void glVertexAttrib4uiv(GLuint index, const GLuint *v); + void glVertexAttrib4ubv(GLuint index, const GLubyte *v); + void glVertexAttrib4sv(GLuint index, const GLshort *v); + void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4iv(GLuint index, const GLint *v); + void glVertexAttrib4fv(GLuint index, const GLfloat *v); + void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dv(GLuint index, const GLdouble *v); + void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib4bv(GLuint index, const GLbyte *v); + void glVertexAttrib4Nusv(GLuint index, const GLushort *v); + void glVertexAttrib4Nuiv(GLuint index, const GLuint *v); + void glVertexAttrib4Nubv(GLuint index, const GLubyte *v); + void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4Nsv(GLuint index, const GLshort *v); + void glVertexAttrib4Niv(GLuint index, const GLint *v); + void glVertexAttrib4Nbv(GLuint index, const GLbyte *v); + void glVertexAttrib3sv(GLuint index, const GLshort *v); + void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fv(GLuint index, const GLfloat *v); + void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dv(GLuint index, const GLdouble *v); + void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2sv(GLuint index, const GLshort *v); + void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fv(GLuint index, const GLfloat *v); + void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dv(GLuint index, const GLdouble *v); + void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1sv(GLuint index, const GLshort *v); + void glVertexAttrib1s(GLuint index, GLshort x); + void glVertexAttrib1fv(GLuint index, const GLfloat *v); + void glVertexAttrib1f(GLuint index, GLfloat x); + void glVertexAttrib1dv(GLuint index, const GLdouble *v); + void glVertexAttrib1d(GLuint index, GLdouble x); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; + QOpenGLFunctions_2_0_DeprecatedBackend* d_2_0_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_2_0::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_2_0::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_2_0::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_2_0::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_2_0::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_2_0::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_2_0::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_2_0::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_2_0::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_2_0::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_2_0::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_2_0::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_2_0::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_2_0::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_2_0::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_2_0::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_2_0::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_2_0::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_2_0::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_2_0::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_2_0::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_2_0::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_2_0::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_2_0::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_2_0::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_2_0::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_2_0::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_2_0::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_2_0::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_2_0::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_2_0::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_2_0::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_2_0::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_2_0::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_2_0::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_2_0::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_2_0::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_2_0::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_2_0::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_2_0::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_2_0::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_2_0::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_2_0::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_2_0::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_2_0::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_2_0::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_2_0::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_2_0::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_2_0::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_2_0::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_2_0::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_2_0::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_2_0::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_2_0::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_2_0::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_2_0::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_2_0::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_2_0::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_2_0::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_2_0::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_2_0::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_2_0::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_2_0::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_2_0::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_2_0::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_2_0::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_2_0::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_2_0::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_2_0::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_2_0::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_2_0::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_2_0::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_2_0::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_2_0::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_2_0::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_2_0::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_2_0::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_2_0::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_2_0::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_2_0::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_2_0::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_2_0::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_2_0::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_2_0::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_0::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_0::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_0::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_2_0::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_2_0::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_2_0::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_2_0::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_2_0::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_2_0::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_2_0::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_2_0::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_2_0::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_2_0::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_2_0::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_2_0::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_2_0::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_2_0::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_2_0::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_2_0::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_2_0::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_2_0::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_2_0::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_2_0::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_2_0::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_2_0::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_2_0::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_2_0::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_2_0::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_2_0::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_2_0::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_2_0::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_2_0::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_2_0::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_2_0::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_2_0::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_2_0::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_2_0::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_2_0::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_2_0::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_2_0::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_2_0::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_2_0::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_2_0::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_2_0::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_2_0::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_2_0::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_2_0::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_2_0::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_2_0::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_2_0::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_2_0::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_2_0::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_2_0::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_2_0::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_2_0::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_2_0::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_2_0::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_2_0::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_2_0::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_2_0::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_2_0::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_2_0::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_2_0::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_2_0::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_0::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_0::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_0::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_2_0::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_2_0::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_2_0::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_2_0::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_2_0::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_2_0::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_2_0::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_2_0::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_2_0::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_2_0::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_2_0::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_2_0::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_2_0::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_2_0::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_2_0::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_2_0::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_2_0::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_2_0::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_2_0::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_2_0::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_2_0::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_2_0::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_2_0::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_2_0::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_2_0::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_2_0::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_2_0::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_2_0::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_2_0::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_2_0::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_2_0::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_2_0::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_2_0::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_2_0::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_2_0::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_2_0::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_2_0::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_2_0::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_2_0::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_2_0::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_2_0::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_2_0::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_2_0::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_2_0::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_2_0::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_2_0::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_2_0::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_2_0::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_2_0::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_2_0::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_2_0::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_2_0::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_2_0::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_2_0::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_2_0::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_2_0::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_2_0::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_2_0::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_2_0::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_2_0::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_0::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_2_0::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_0::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_2_0::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_0::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_2_0::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_2_0::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_2_0::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_2_0::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_0::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_2_0::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_0::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_2_0::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_0::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_2_0::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_0::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_2_0::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_0::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_2_0::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_2_0::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_2_0::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_2_0::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_2_0::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_2_0::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_2_0::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_2_0::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_2_0::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_2_0::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_2_0::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_2_0::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_0::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_2_0::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_2_0::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_2_0::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_2_0::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_2_0::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_2_0::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_2_0::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_2_0::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_2_0::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_2_0::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_2_0::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_2_0::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_2_0::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_2_0::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_2_0::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_2_0::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_2_0::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_2_0::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_2_0::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_2_0::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_2_0::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_2_0::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_2_0::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_2_0::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_2_0::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_2_0::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_2_0::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_2_0::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_2_0::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_2_0::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_2_0::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_2_0::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_2_0::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_2_0::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_0::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_2_0::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_2_0::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_2_0::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_2_0::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_2_0::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_2_0::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_2_0::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_2_0::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_2_0::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_2_0::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_2_0::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_0::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_2_0::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_2_0::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_2_0::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions +inline void QOpenGLFunctions_2_0::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Deprecated->VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Deprecated->VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Deprecated->VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Deprecated->VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Deprecated->VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Deprecated->VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Deprecated->VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Deprecated->VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Deprecated->VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Deprecated->VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Deprecated->VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Deprecated->VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_2_0::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Deprecated->VertexAttrib1d(index, x); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_2_1.cpp b/src/gui/opengl/qopenglfunctions_2_1.cpp new file mode 100644 index 0000000000..143ac206ed --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_2_1.cpp @@ -0,0 +1,297 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_2_1.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_2_1 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_2_1 class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_2_1::QOpenGLFunctions_2_1() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) + , d_2_0_Deprecated(0) +{ +} + +QOpenGLFunctions_2_1::~QOpenGLFunctions_2_1() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } + if (d_2_0_Deprecated && !d_2_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Deprecated->context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + delete d_2_0_Deprecated; + } +} + +bool QOpenGLFunctions_2_1::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_2_1::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus(), d); + } + d_2_0_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_2_1::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(2, 1)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_2_1::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(2, 1); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_2_1.h b/src/gui/opengl/qopenglfunctions_2_1.h new file mode 100644 index 0000000000..fc009001ab --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_2_1.h @@ -0,0 +1,3658 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_2_1_H +#define QOPENGLVERSIONFUNCTIONS_2_1_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_2_1 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_2_1(); + ~QOpenGLFunctions_2_1(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + + // OpenGL 1.5 deprecated functions + + // OpenGL 2.0 deprecated functions + void glVertexAttrib4usv(GLuint index, const GLushort *v); + void glVertexAttrib4uiv(GLuint index, const GLuint *v); + void glVertexAttrib4ubv(GLuint index, const GLubyte *v); + void glVertexAttrib4sv(GLuint index, const GLshort *v); + void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4iv(GLuint index, const GLint *v); + void glVertexAttrib4fv(GLuint index, const GLfloat *v); + void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dv(GLuint index, const GLdouble *v); + void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib4bv(GLuint index, const GLbyte *v); + void glVertexAttrib4Nusv(GLuint index, const GLushort *v); + void glVertexAttrib4Nuiv(GLuint index, const GLuint *v); + void glVertexAttrib4Nubv(GLuint index, const GLubyte *v); + void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4Nsv(GLuint index, const GLshort *v); + void glVertexAttrib4Niv(GLuint index, const GLint *v); + void glVertexAttrib4Nbv(GLuint index, const GLbyte *v); + void glVertexAttrib3sv(GLuint index, const GLshort *v); + void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fv(GLuint index, const GLfloat *v); + void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dv(GLuint index, const GLdouble *v); + void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2sv(GLuint index, const GLshort *v); + void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fv(GLuint index, const GLfloat *v); + void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dv(GLuint index, const GLdouble *v); + void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1sv(GLuint index, const GLshort *v); + void glVertexAttrib1s(GLuint index, GLshort x); + void glVertexAttrib1fv(GLuint index, const GLfloat *v); + void glVertexAttrib1f(GLuint index, GLfloat x); + void glVertexAttrib1dv(GLuint index, const GLdouble *v); + void glVertexAttrib1d(GLuint index, GLdouble x); + + // OpenGL 2.1 deprecated functions + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; + QOpenGLFunctions_2_0_DeprecatedBackend* d_2_0_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_2_1::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_2_1::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_2_1::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_2_1::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_2_1::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_2_1::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_2_1::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_2_1::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_2_1::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_2_1::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_2_1::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_2_1::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_2_1::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_2_1::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_2_1::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_2_1::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_2_1::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_2_1::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_2_1::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_2_1::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_2_1::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_2_1::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_2_1::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_2_1::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_2_1::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_2_1::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_2_1::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_2_1::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_2_1::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_2_1::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_2_1::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_2_1::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_2_1::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_2_1::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_2_1::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_2_1::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_2_1::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_2_1::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_2_1::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_2_1::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_2_1::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_2_1::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_2_1::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_2_1::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_2_1::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_2_1::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_2_1::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_2_1::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_2_1::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_2_1::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_2_1::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_2_1::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_2_1::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_2_1::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_2_1::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_2_1::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_2_1::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_2_1::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_2_1::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_2_1::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_2_1::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_2_1::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_2_1::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_2_1::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_2_1::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_2_1::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_2_1::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_2_1::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_2_1::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_2_1::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_2_1::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_2_1::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_2_1::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_2_1::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_2_1::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_2_1::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_2_1::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_2_1::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_2_1::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_2_1::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_2_1::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_2_1::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_2_1::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_2_1::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_2_1::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_2_1::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_2_1::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_2_1::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_2_1::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_2_1::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_2_1::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_2_1::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_2_1::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_2_1::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_2_1::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_2_1::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_2_1::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_2_1::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_2_1::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_2_1::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_2_1::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_2_1::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_2_1::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_2_1::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_2_1::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_2_1::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_2_1::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_2_1::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_2_1::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_2_1::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_2_1::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_2_1::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_2_1::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_2_1::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_2_1::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_2_1::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_2_1::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_2_1::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_2_1::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_2_1::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_2_1::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_2_1::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_2_1::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_2_1::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_2_1::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_2_1::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_2_1::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_2_1::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_2_1::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_2_1::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_2_1::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_2_1::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_2_1::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_2_1::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_2_1::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_2_1::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_2_1::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_2_1::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_2_1::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_2_1::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_2_1::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_2_1::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_2_1::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_2_1::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_2_1::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_2_1::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_1::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_1::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_2_1::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_2_1::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_2_1::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_2_1::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_2_1::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_2_1::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_2_1::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_2_1::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_2_1::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_2_1::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_2_1::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_2_1::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_2_1::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_2_1::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_2_1::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_2_1::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_2_1::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_2_1::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_2_1::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_2_1::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_2_1::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_2_1::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_2_1::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_2_1::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_2_1::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_2_1::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_2_1::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_2_1::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_2_1::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_2_1::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_2_1::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_2_1::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_2_1::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_2_1::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_2_1::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_2_1::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_2_1::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_2_1::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_2_1::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_2_1::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_2_1::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_2_1::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_2_1::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_2_1::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_2_1::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_2_1::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_2_1::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_2_1::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_2_1::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_2_1::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_2_1::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_2_1::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_2_1::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_2_1::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_2_1::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_2_1::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_2_1::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_2_1::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_2_1::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_2_1::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_2_1::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_1::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_2_1::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_1::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_2_1::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_1::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_2_1::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_2_1::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_2_1::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_2_1::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_1::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_2_1::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_1::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_2_1::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_1::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_2_1::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_1::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_2_1::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_2_1::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_2_1::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_2_1::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_2_1::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_2_1::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_2_1::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_2_1::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_2_1::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_2_1::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_2_1::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_2_1::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_2_1::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_2_1::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_2_1::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_2_1::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_2_1::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_2_1::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_2_1::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_2_1::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_2_1::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_2_1::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_2_1::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_2_1::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_2_1::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_2_1::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_2_1::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_2_1::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_2_1::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_2_1::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_2_1::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_2_1::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_2_1::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_2_1::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_2_1::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_2_1::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_2_1::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_2_1::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_2_1::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_2_1::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_2_1::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_2_1::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_2_1::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_2_1::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_2_1::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_2_1::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_2_1::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_2_1::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_2_1::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_2_1::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_2_1::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_2_1::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_2_1::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_2_1::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_2_1::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_2_1::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_2_1::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_2_1::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_2_1::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_2_1::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_2_1::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_2_1::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_2_1::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_2_1::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_2_1::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions +inline void QOpenGLFunctions_2_1::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Deprecated->VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Deprecated->VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Deprecated->VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Deprecated->VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Deprecated->VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Deprecated->VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Deprecated->VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Deprecated->VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Deprecated->VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Deprecated->VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Deprecated->VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Deprecated->VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_2_1::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Deprecated->VertexAttrib1d(index, x); +} + + +// OpenGL 2.1 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_3_0.cpp b/src/gui/opengl/qopenglfunctions_3_0.cpp new file mode 100644 index 0000000000..e13122e683 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_0.cpp @@ -0,0 +1,323 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_3_0.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_3_0 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_3_0 class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_3_0::QOpenGLFunctions_3_0() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) + , d_2_0_Deprecated(0) + , d_3_0_Deprecated(0) +{ +} + +QOpenGLFunctions_3_0::~QOpenGLFunctions_3_0() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } + if (d_2_0_Deprecated && !d_2_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Deprecated->context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + delete d_2_0_Deprecated; + } + if (d_3_0_Deprecated && !d_3_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Deprecated->context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + delete d_3_0_Deprecated; + } +} + +bool QOpenGLFunctions_3_0::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_3_0::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus(), d); + } + d_2_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus(), d); + } + d_3_0_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_3_0::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(3, 0)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_3_0::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(3, 0); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_3_0.h b/src/gui/opengl/qopenglfunctions_3_0.h new file mode 100644 index 0000000000..767e88ba7a --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_0.h @@ -0,0 +1,4172 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_3_0_H +#define QOPENGLVERSIONFUNCTIONS_3_0_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_3_0 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_3_0(); + ~QOpenGLFunctions_3_0(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + + // OpenGL 1.5 deprecated functions + + // OpenGL 2.0 deprecated functions + void glVertexAttrib4usv(GLuint index, const GLushort *v); + void glVertexAttrib4uiv(GLuint index, const GLuint *v); + void glVertexAttrib4ubv(GLuint index, const GLubyte *v); + void glVertexAttrib4sv(GLuint index, const GLshort *v); + void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4iv(GLuint index, const GLint *v); + void glVertexAttrib4fv(GLuint index, const GLfloat *v); + void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dv(GLuint index, const GLdouble *v); + void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib4bv(GLuint index, const GLbyte *v); + void glVertexAttrib4Nusv(GLuint index, const GLushort *v); + void glVertexAttrib4Nuiv(GLuint index, const GLuint *v); + void glVertexAttrib4Nubv(GLuint index, const GLubyte *v); + void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4Nsv(GLuint index, const GLshort *v); + void glVertexAttrib4Niv(GLuint index, const GLint *v); + void glVertexAttrib4Nbv(GLuint index, const GLbyte *v); + void glVertexAttrib3sv(GLuint index, const GLshort *v); + void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fv(GLuint index, const GLfloat *v); + void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dv(GLuint index, const GLdouble *v); + void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2sv(GLuint index, const GLshort *v); + void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fv(GLuint index, const GLfloat *v); + void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dv(GLuint index, const GLdouble *v); + void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1sv(GLuint index, const GLshort *v); + void glVertexAttrib1s(GLuint index, GLshort x); + void glVertexAttrib1fv(GLuint index, const GLfloat *v); + void glVertexAttrib1f(GLuint index, GLfloat x); + void glVertexAttrib1dv(GLuint index, const GLdouble *v); + void glVertexAttrib1d(GLuint index, GLdouble x); + + // OpenGL 2.1 deprecated functions + + // OpenGL 3.0 deprecated functions + void glVertexAttribI4usv(GLuint index, const GLushort *v); + void glVertexAttribI4ubv(GLuint index, const GLubyte *v); + void glVertexAttribI4sv(GLuint index, const GLshort *v); + void glVertexAttribI4bv(GLuint index, const GLbyte *v); + void glVertexAttribI4uiv(GLuint index, const GLuint *v); + void glVertexAttribI3uiv(GLuint index, const GLuint *v); + void glVertexAttribI2uiv(GLuint index, const GLuint *v); + void glVertexAttribI1uiv(GLuint index, const GLuint *v); + void glVertexAttribI4iv(GLuint index, const GLint *v); + void glVertexAttribI3iv(GLuint index, const GLint *v); + void glVertexAttribI2iv(GLuint index, const GLint *v); + void glVertexAttribI1iv(GLuint index, const GLint *v); + void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z); + void glVertexAttribI2ui(GLuint index, GLuint x, GLuint y); + void glVertexAttribI1ui(GLuint index, GLuint x); + void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + void glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z); + void glVertexAttribI2i(GLuint index, GLint x, GLint y); + void glVertexAttribI1i(GLuint index, GLint x); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; + QOpenGLFunctions_2_0_DeprecatedBackend* d_2_0_Deprecated; + QOpenGLFunctions_3_0_DeprecatedBackend* d_3_0_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_3_0::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_0::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_0::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_0::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_3_0::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_0::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_3_0::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_0::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_0::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_0::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_0::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_3_0::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_0::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_0::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_0::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_0::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_3_0::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_3_0::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_3_0::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_3_0::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_3_0::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_3_0::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_0::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_3_0::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_3_0::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_3_0::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_0::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_0::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_0::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_0::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_0::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_0::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_3_0::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_3_0::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_3_0::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_3_0::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_0::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_3_0::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_3_0::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_0::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_0::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_3_0::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_0::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_3_0::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_0::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_3_0::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_3_0::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_0::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_0::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_0::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_3_0::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_0::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_3_0::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_0::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_0::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_3_0::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_3_0::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_0::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_0::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_0::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_0::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_0::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_0::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_0::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_0::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_0::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_3_0::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_3_0::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_0::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_3_0::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_0::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_0::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_0::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_0::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_0::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_0::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_0::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_0::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_0::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_3_0::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_3_0::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_0::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_3_0::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_0::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_0::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_0::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_0::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_0::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_0::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_0::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_0::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_3_0::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_0::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_0::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_0::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_0::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_0::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_0::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_0::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_0::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_0::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_3_0::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_0::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_0::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_0::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_0::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_0::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_0::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_0::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_0::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_3_0::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_3_0::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_0::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_0::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_0::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_0::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_0::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_0::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_3_0::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_0::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_0::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_0::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_0::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_0::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_0::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_0::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_3_0::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_3_0::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_0::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_0::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_0::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_0::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_3_0::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_3_0::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_3_0::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_0::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_0::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_0::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_0::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_0::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_0::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_0::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_0::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_0::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_0::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_0::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_0::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_0::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_0::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_0::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_0::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_0::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_0::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_0::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_0::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_0::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_0::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_0::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_3_0::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_0::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_0::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_3_0::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_0::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_0::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_0::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_3_0::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_3_0::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_0::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_3_0::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_3_0::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_3_0::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_3_0::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_3_0::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_3_0::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_3_0::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_3_0::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_3_0::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_3_0::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_3_0::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_3_0::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_3_0::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_0::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_3_0::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_3_0::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_3_0::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_3_0::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_3_0::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_3_0::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_3_0::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_0::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_3_0::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_0::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_0::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_0::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_3_0::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_3_0::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_3_0::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_3_0::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_3_0::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_3_0::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_3_0::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_3_0::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_3_0::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_3_0::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_3_0::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_3_0::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_3_0::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_3_0::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_3_0::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_3_0::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_3_0::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_3_0::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_3_0::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_3_0::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_3_0::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_3_0::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_3_0::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_3_0::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_3_0::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_3_0::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_3_0::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_3_0::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_3_0::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_3_0::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_3_0::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_3_0::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_3_0::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_3_0::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_3_0::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_3_0::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_0::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_0::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_3_0::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_0::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_3_0::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_3_0::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_3_0::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_3_0::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_0::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_3_0::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_0::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_3_0::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_3_0::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_3_0::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_3_0::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_3_0::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_3_0::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_3_0::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_3_0::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_3_0::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_3_0::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_3_0::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_3_0::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_3_0::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_0::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_3_0::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_0::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_3_0::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_0::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_3_0::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_3_0::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_3_0::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_3_0::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_0::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_3_0::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_0::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_3_0::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_0::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_3_0::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_0::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_3_0::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_0::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_3_0::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_3_0::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_3_0::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_3_0::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_3_0::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_3_0::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_3_0::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_3_0::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_3_0::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_3_0::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_3_0::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_3_0::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_0::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_3_0::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_3_0::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_3_0::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_3_0::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_3_0::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_3_0::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_3_0::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_3_0::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_3_0::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_3_0::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_3_0::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_3_0::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_3_0::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_3_0::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_3_0::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_3_0::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_3_0::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_3_0::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_3_0::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_3_0::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_3_0::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_3_0::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_3_0::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_3_0::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_3_0::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_3_0::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_3_0::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_0::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_3_0::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_3_0::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_3_0::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_3_0::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_3_0::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_0::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_0::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_3_0::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_3_0::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_0::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_0::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_0::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_3_0::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_3_0::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_3_0::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_3_0::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_3_0::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_3_0::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_0::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_3_0::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_3_0::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_3_0::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions +inline void QOpenGLFunctions_3_0::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Deprecated->VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Deprecated->VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Deprecated->VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Deprecated->VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Deprecated->VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Deprecated->VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Deprecated->VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Deprecated->VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Deprecated->VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Deprecated->VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Deprecated->VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Deprecated->VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Deprecated->VertexAttrib1d(index, x); +} + + +// OpenGL 2.1 deprecated functions + +// OpenGL 3.0 deprecated functions +inline void QOpenGLFunctions_3_0::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Deprecated->VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Deprecated->VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Deprecated->VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Deprecated->VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Deprecated->VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Deprecated->VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Deprecated->VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Deprecated->VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Deprecated->VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Deprecated->VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Deprecated->VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_3_0::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Deprecated->VertexAttribI1i(index, x); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_3_1.cpp b/src/gui/opengl/qopenglfunctions_3_1.cpp new file mode 100644 index 0000000000..104029177c --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_1.cpp @@ -0,0 +1,242 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_3_1.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_3_1 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_3_1 class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_3_1::QOpenGLFunctions_3_1() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) +{ +} + +QOpenGLFunctions_3_1::~QOpenGLFunctions_3_1() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } +} + +bool QOpenGLFunctions_3_1::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_3_1::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_3_1::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(3, 1)) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_3_1::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(3, 1); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_3_1.h b/src/gui/opengl/qopenglfunctions_3_1.h new file mode 100644 index 0000000000..1fd1867d33 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_1.h @@ -0,0 +1,1590 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_3_1_H +#define QOPENGLVERSIONFUNCTIONS_3_1_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_3_1 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_3_1(); + ~QOpenGLFunctions_3_1(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_3_1::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_1::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_1::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_1::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_3_1::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_1::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_3_1::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_3_1::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_1::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_1::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_1::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_1::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_3_1::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_1::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_1::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_1::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_1::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_3_1::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_3_1::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_3_1::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_3_1::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_3_1::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_1::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_3_1::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_1::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_3_1::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_1::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_3_1::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_3_1::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_1::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_1::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_1::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_1::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_1::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_1::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_3_1::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_3_1::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_3_1::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_3_1::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_1::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_3_1::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_3_1::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_1::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_1::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_3_1::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_1::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_3_1::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_1::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_3_1::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_3_1::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_1::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_1::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_3_1::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_1::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_3_1::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_1::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_3_1::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_1::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_1::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_3_1::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_3_1::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_1::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_1::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_1::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_1::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_1::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_1::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_1::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_1::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_1::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_1::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_1::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_3_1::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_3_1::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_1::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_3_1::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_1::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_1::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_1::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_1::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_1::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_1::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_1::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_1::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_1::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_3_1::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_3_1::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_1::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_3_1::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_1::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_1::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_1::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_1::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_1::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_1::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_1::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_1::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_1::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_3_1::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_1::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_1::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_1::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_1::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_1::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_1::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_1::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_1::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_1::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_3_1::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_1::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_1::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_1::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_1::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_1::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_1::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_1::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_1::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_3_1::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_3_1::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_1::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_1::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_1::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_1::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_1::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_1::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_3_1::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_1::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_1::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_1::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_1::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_1::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_1::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_1::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_3_1::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_3_1::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_1::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_1::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_1::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_1::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_3_1::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_3_1::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_3_1::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_1::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_1::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_1::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_1::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_1::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_1::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_1::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_1::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_1::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_1::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_1::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_1::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_1::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_1::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_1::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_1::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_1::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_1::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_1::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_1::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_1::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_1::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_1::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_1::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_1::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_1::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_3_1::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_1::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_1::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_3_1::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_1::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_1::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_1::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_1::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_3_1::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_3_1::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_1::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_3_1::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_3_1::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_3_1::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_3_1::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_3_1::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_3_1::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_3_1::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_3_1::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_3_1::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_3_1::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_3_1::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_3_1::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_3_1::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_3_2_compatibility.cpp b/src/gui/opengl/qopenglfunctions_3_2_compatibility.cpp new file mode 100644 index 0000000000..f808f2e6dd --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_2_compatibility.cpp @@ -0,0 +1,350 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_3_2_compatibility.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_3_2_Compatibility + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_3_2_Compatibility class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_3_2_Compatibility::QOpenGLFunctions_3_2_Compatibility() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) + , d_2_0_Deprecated(0) + , d_3_0_Deprecated(0) +{ +} + +QOpenGLFunctions_3_2_Compatibility::~QOpenGLFunctions_3_2_Compatibility() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } + if (d_2_0_Deprecated && !d_2_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Deprecated->context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + delete d_2_0_Deprecated; + } + if (d_3_0_Deprecated && !d_3_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Deprecated->context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + delete d_3_0_Deprecated; + } +} + +bool QOpenGLFunctions_3_2_Compatibility::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_3_2_Compatibility::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus(), d); + } + d_2_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus(), d); + } + d_3_0_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_3_2_Compatibility::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(3, 2)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_3_2_Compatibility::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(3, 2); + v.setProfile(QSurfaceFormat::CompatibilityProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_3_2_compatibility.h b/src/gui/opengl/qopenglfunctions_3_2_compatibility.h new file mode 100644 index 0000000000..cfa5cd1406 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_2_compatibility.h @@ -0,0 +1,4376 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_3_2_COMPATIBILITY_H +#define QOPENGLVERSIONFUNCTIONS_3_2_COMPATIBILITY_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_3_2_Compatibility : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_3_2_Compatibility(); + ~QOpenGLFunctions_3_2_Compatibility(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + + // OpenGL 1.5 deprecated functions + + // OpenGL 2.0 deprecated functions + void glVertexAttrib4usv(GLuint index, const GLushort *v); + void glVertexAttrib4uiv(GLuint index, const GLuint *v); + void glVertexAttrib4ubv(GLuint index, const GLubyte *v); + void glVertexAttrib4sv(GLuint index, const GLshort *v); + void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4iv(GLuint index, const GLint *v); + void glVertexAttrib4fv(GLuint index, const GLfloat *v); + void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dv(GLuint index, const GLdouble *v); + void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib4bv(GLuint index, const GLbyte *v); + void glVertexAttrib4Nusv(GLuint index, const GLushort *v); + void glVertexAttrib4Nuiv(GLuint index, const GLuint *v); + void glVertexAttrib4Nubv(GLuint index, const GLubyte *v); + void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4Nsv(GLuint index, const GLshort *v); + void glVertexAttrib4Niv(GLuint index, const GLint *v); + void glVertexAttrib4Nbv(GLuint index, const GLbyte *v); + void glVertexAttrib3sv(GLuint index, const GLshort *v); + void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fv(GLuint index, const GLfloat *v); + void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dv(GLuint index, const GLdouble *v); + void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2sv(GLuint index, const GLshort *v); + void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fv(GLuint index, const GLfloat *v); + void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dv(GLuint index, const GLdouble *v); + void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1sv(GLuint index, const GLshort *v); + void glVertexAttrib1s(GLuint index, GLshort x); + void glVertexAttrib1fv(GLuint index, const GLfloat *v); + void glVertexAttrib1f(GLuint index, GLfloat x); + void glVertexAttrib1dv(GLuint index, const GLdouble *v); + void glVertexAttrib1d(GLuint index, GLdouble x); + + // OpenGL 2.1 deprecated functions + + // OpenGL 3.0 deprecated functions + void glVertexAttribI4usv(GLuint index, const GLushort *v); + void glVertexAttribI4ubv(GLuint index, const GLubyte *v); + void glVertexAttribI4sv(GLuint index, const GLshort *v); + void glVertexAttribI4bv(GLuint index, const GLbyte *v); + void glVertexAttribI4uiv(GLuint index, const GLuint *v); + void glVertexAttribI3uiv(GLuint index, const GLuint *v); + void glVertexAttribI2uiv(GLuint index, const GLuint *v); + void glVertexAttribI1uiv(GLuint index, const GLuint *v); + void glVertexAttribI4iv(GLuint index, const GLint *v); + void glVertexAttribI3iv(GLuint index, const GLint *v); + void glVertexAttribI2iv(GLuint index, const GLint *v); + void glVertexAttribI1iv(GLuint index, const GLint *v); + void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z); + void glVertexAttribI2ui(GLuint index, GLuint x, GLuint y); + void glVertexAttribI1ui(GLuint index, GLuint x); + void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + void glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z); + void glVertexAttribI2i(GLuint index, GLint x, GLint y); + void glVertexAttribI1i(GLuint index, GLint x); + + // OpenGL 3.1 deprecated functions + + // OpenGL 3.2 deprecated functions + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; + QOpenGLFunctions_2_0_DeprecatedBackend* d_2_0_Deprecated; + QOpenGLFunctions_3_0_DeprecatedBackend* d_3_0_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_2_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_2_Compatibility::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_2_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_2_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_2_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_2_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_2_Compatibility::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_2_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_2_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_2_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_2_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_3_2_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_3_2_Compatibility::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_3_2_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_3_2_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_3_2_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_3_2_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_3_2_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Deprecated->VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Deprecated->VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Deprecated->VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Deprecated->VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Deprecated->VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Deprecated->VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Deprecated->VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Deprecated->VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Deprecated->VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Deprecated->VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Deprecated->VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Deprecated->VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Deprecated->VertexAttrib1d(index, x); +} + + +// OpenGL 2.1 deprecated functions + +// OpenGL 3.0 deprecated functions +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Deprecated->VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Deprecated->VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Deprecated->VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Deprecated->VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Deprecated->VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Deprecated->VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Deprecated->VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Deprecated->VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Deprecated->VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Deprecated->VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Deprecated->VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Deprecated->VertexAttribI1i(index, x); +} + + +// OpenGL 3.1 deprecated functions + +// OpenGL 3.2 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_3_2_core.cpp b/src/gui/opengl/qopenglfunctions_3_2_core.cpp new file mode 100644 index 0000000000..0e1af4c28b --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_2_core.cpp @@ -0,0 +1,256 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_3_2_core.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_3_2_Core + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_3_2_Core class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_3_2_Core::QOpenGLFunctions_3_2_Core() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) +{ +} + +QOpenGLFunctions_3_2_Core::~QOpenGLFunctions_3_2_Core() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } +} + +bool QOpenGLFunctions_3_2_Core::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_3_2_Core::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_3_2_Core::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(3, 2)) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_3_2_Core::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(3, 2); + v.setProfile(QSurfaceFormat::CoreProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_3_2_core.h b/src/gui/opengl/qopenglfunctions_3_2_core.h new file mode 100644 index 0000000000..8e25643c09 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_2_core.h @@ -0,0 +1,1709 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_3_2_CORE_H +#define QOPENGLVERSIONFUNCTIONS_3_2_CORE_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_3_2_Core : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_3_2_Core(); + ~QOpenGLFunctions_3_2_Core(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_3_2_Core::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_2_Core::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_3_2_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_2_Core::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_3_2_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_2_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_2_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_2_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_2_Core::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_3_2_Core::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_3_2_Core::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_3_2_Core::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_3_2_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_3_2_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_3_2_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_2_Core::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_3_2_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_2_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_3_2_Core::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Core::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_2_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_3_2_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_3_2_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_3_2_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_3_2_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_2_Core::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_3_2_Core::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_3_2_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_2_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_3_2_Core::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Core::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Core::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Core::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_3_2_Core::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_3_2_Core::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_2_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_2_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_3_2_Core::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_2_Core::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_2_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_2_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_3_2_Core::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_3_2_Core::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Core::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Core::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Core::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Core::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Core::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_2_Core::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_2_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_2_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_3_2_Core::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_3_2_Core::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_2_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_3_2_Core::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_2_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_2_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_2_Core::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_2_Core::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_2_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_2_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_2_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_3_2_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_2_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_3_2_Core::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_2_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_3_2_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_2_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_2_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_2_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_2_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_2_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_2_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_3_2_Core::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_2_Core::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_2_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_2_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_2_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_2_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_2_Core::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_3_2_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_3_2_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_2_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_2_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_2_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_3_2_Core::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_2_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_2_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_2_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_2_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_2_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_3_2_Core::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_3_2_Core::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_2_Core::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_2_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_2_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_3_2_Core::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_3_2_Core::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_3_2_Core::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_2_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_2_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_2_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_2_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_2_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_2_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_2_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_2_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_2_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_2_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_2_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_2_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_2_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_2_Core::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_2_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_2_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_3_2_Core::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_2_Core::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_2_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_3_2_Core::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_2_Core::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_2_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_2_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_3_2_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_3_2_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_2_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_3_2_Core::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_3_2_Core::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_3_2_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_3_2_Core::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_3_2_Core::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_3_2_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_3_2_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_3_2_Core::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_3_2_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_3_2_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_3_2_Core::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_3_2_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_3_2_Core::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_3_2_Core::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_3_2_Core::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_3_2_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_3_2_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_3_2_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_3_2_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_3_2_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_3_2_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_3_2_Core::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_3_2_Core::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_3_2_Core::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_3_2_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_3_2_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_3_3_compatibility.cpp b/src/gui/opengl/qopenglfunctions_3_3_compatibility.cpp new file mode 100644 index 0000000000..aa53b7d03b --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_3_compatibility.cpp @@ -0,0 +1,363 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_3_3_compatibility.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_3_3_Compatibility + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_3_3_Compatibility class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_3_3_Compatibility::QOpenGLFunctions_3_3_Compatibility() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_3_3_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) + , d_2_0_Deprecated(0) + , d_3_0_Deprecated(0) +{ +} + +QOpenGLFunctions_3_3_Compatibility::~QOpenGLFunctions_3_3_Compatibility() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_3_3_Core && !d_3_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + delete d_3_3_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } + if (d_2_0_Deprecated && !d_2_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Deprecated->context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + delete d_2_0_Deprecated; + } + if (d_3_0_Deprecated && !d_3_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Deprecated->context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + delete d_3_0_Deprecated; + } +} + +bool QOpenGLFunctions_3_3_Compatibility::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_3_3_Compatibility::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d); + } + d_3_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus(), d); + } + d_2_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus(), d); + } + d_3_0_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_3_3_Compatibility::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(3, 3)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_3_3_Compatibility::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(3, 3); + v.setProfile(QSurfaceFormat::CompatibilityProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_3_3_compatibility.h b/src/gui/opengl/qopenglfunctions_3_3_compatibility.h new file mode 100644 index 0000000000..b2371a1445 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_3_compatibility.h @@ -0,0 +1,4733 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_3_3_COMPATIBILITY_H +#define QOPENGLVERSIONFUNCTIONS_3_3_COMPATIBILITY_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_3_3_Compatibility : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_3_3_Compatibility(); + ~QOpenGLFunctions_3_3_Compatibility(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 3.3 core functions + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + + // OpenGL 1.5 deprecated functions + + // OpenGL 2.0 deprecated functions + void glVertexAttrib4usv(GLuint index, const GLushort *v); + void glVertexAttrib4uiv(GLuint index, const GLuint *v); + void glVertexAttrib4ubv(GLuint index, const GLubyte *v); + void glVertexAttrib4sv(GLuint index, const GLshort *v); + void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4iv(GLuint index, const GLint *v); + void glVertexAttrib4fv(GLuint index, const GLfloat *v); + void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dv(GLuint index, const GLdouble *v); + void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib4bv(GLuint index, const GLbyte *v); + void glVertexAttrib4Nusv(GLuint index, const GLushort *v); + void glVertexAttrib4Nuiv(GLuint index, const GLuint *v); + void glVertexAttrib4Nubv(GLuint index, const GLubyte *v); + void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4Nsv(GLuint index, const GLshort *v); + void glVertexAttrib4Niv(GLuint index, const GLint *v); + void glVertexAttrib4Nbv(GLuint index, const GLbyte *v); + void glVertexAttrib3sv(GLuint index, const GLshort *v); + void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fv(GLuint index, const GLfloat *v); + void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dv(GLuint index, const GLdouble *v); + void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2sv(GLuint index, const GLshort *v); + void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fv(GLuint index, const GLfloat *v); + void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dv(GLuint index, const GLdouble *v); + void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1sv(GLuint index, const GLshort *v); + void glVertexAttrib1s(GLuint index, GLshort x); + void glVertexAttrib1fv(GLuint index, const GLfloat *v); + void glVertexAttrib1f(GLuint index, GLfloat x); + void glVertexAttrib1dv(GLuint index, const GLdouble *v); + void glVertexAttrib1d(GLuint index, GLdouble x); + + // OpenGL 2.1 deprecated functions + + // OpenGL 3.0 deprecated functions + void glVertexAttribI4usv(GLuint index, const GLushort *v); + void glVertexAttribI4ubv(GLuint index, const GLubyte *v); + void glVertexAttribI4sv(GLuint index, const GLshort *v); + void glVertexAttribI4bv(GLuint index, const GLbyte *v); + void glVertexAttribI4uiv(GLuint index, const GLuint *v); + void glVertexAttribI3uiv(GLuint index, const GLuint *v); + void glVertexAttribI2uiv(GLuint index, const GLuint *v); + void glVertexAttribI1uiv(GLuint index, const GLuint *v); + void glVertexAttribI4iv(GLuint index, const GLint *v); + void glVertexAttribI3iv(GLuint index, const GLint *v); + void glVertexAttribI2iv(GLuint index, const GLint *v); + void glVertexAttribI1iv(GLuint index, const GLint *v); + void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z); + void glVertexAttribI2ui(GLuint index, GLuint x, GLuint y); + void glVertexAttribI1ui(GLuint index, GLuint x); + void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + void glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z); + void glVertexAttribI2i(GLuint index, GLint x, GLint y); + void glVertexAttribI1i(GLuint index, GLint x); + + // OpenGL 3.1 deprecated functions + + // OpenGL 3.2 deprecated functions + + // OpenGL 3.3 deprecated functions + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_3_3_CoreBackend* d_3_3_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; + QOpenGLFunctions_2_0_DeprecatedBackend* d_2_0_Deprecated; + QOpenGLFunctions_3_0_DeprecatedBackend* d_3_0_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_3_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_3_Compatibility::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_3_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_3_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_3_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_3_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_3_Compatibility::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_3_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_3_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_3_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_3_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_3_3_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_3_3_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_3_3_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->QueryCounter(id, target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->IsSampler(sampler); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_3_3_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->VertexAttribDivisor(index, divisor); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_3_3_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_3_3_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_3_3_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Deprecated->VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Deprecated->VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Deprecated->VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Deprecated->VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Deprecated->VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Deprecated->VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Deprecated->VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Deprecated->VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Deprecated->VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Deprecated->VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Deprecated->VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Deprecated->VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Deprecated->VertexAttrib1d(index, x); +} + + +// OpenGL 2.1 deprecated functions + +// OpenGL 3.0 deprecated functions +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Deprecated->VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Deprecated->VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Deprecated->VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Deprecated->VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Deprecated->VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Deprecated->VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Deprecated->VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Deprecated->VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Deprecated->VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Deprecated->VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Deprecated->VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Deprecated->VertexAttribI1i(index, x); +} + + +// OpenGL 3.1 deprecated functions + +// OpenGL 3.2 deprecated functions + +// OpenGL 3.3 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_3_3_core.cpp b/src/gui/opengl/qopenglfunctions_3_3_core.cpp new file mode 100644 index 0000000000..d355a466c1 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_3_core.cpp @@ -0,0 +1,269 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_3_3_core.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_3_3_Core + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_3_3_Core class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_3_3_Core::QOpenGLFunctions_3_3_Core() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_3_3_Core(0) +{ +} + +QOpenGLFunctions_3_3_Core::~QOpenGLFunctions_3_3_Core() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_3_3_Core && !d_3_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + delete d_3_3_Core; + } +} + +bool QOpenGLFunctions_3_3_Core::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_3_3_Core::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d); + } + d_3_3_Core = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_3_3_Core::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(3, 3)) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_3_3_Core::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(3, 3); + v.setProfile(QSurfaceFormat::CoreProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_3_3_core.h b/src/gui/opengl/qopenglfunctions_3_3_core.h new file mode 100644 index 0000000000..58e7fa0ba3 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_3_3_core.h @@ -0,0 +1,2062 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_3_3_CORE_H +#define QOPENGLVERSIONFUNCTIONS_3_3_CORE_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_3_3_Core : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_3_3_Core(); + ~QOpenGLFunctions_3_3_Core(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 3.3 core functions + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_3_3_CoreBackend* d_3_3_Core; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_3_3_Core::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_3_3_Core::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_3_3_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_3_3_Core::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_3_3_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_3_3_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_3_3_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_3_3_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_3_3_Core::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_3_3_Core::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_3_3_Core::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_3_3_Core::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_3_3_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_3_3_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_3_3_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_3_3_Core::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_3_3_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_3_3_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_3_3_Core::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Core::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_3_3_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_3_3_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_3_3_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_3_3_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_3_3_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_3_3_Core::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_3_3_Core::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_3_3_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_3_3_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_3_3_Core::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Core::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Core::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Core::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_3_3_Core::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_3_3_Core::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_3_3_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_3_3_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_3_3_Core::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_3_3_Core::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_3_3_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_3_3_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_3_3_Core::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_3_3_Core::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Core::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Core::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Core::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Core::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Core::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_3_3_Core::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_3_3_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_3_3_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_3_3_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_3_3_Core::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_3_3_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_3_3_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_3_Core::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_3_3_Core::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_3_3_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_3_3_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_3_3_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_3_3_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_3_3_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_3_3_Core::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_3_3_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_3_3_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_3_3_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_3_3_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_3_3_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_3_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_3_3_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_3_3_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_3_3_Core::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_3_Core::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_3_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_3_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_3_3_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_3_3_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_3_3_Core::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_3_3_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_3_3_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_3_3_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_3_3_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_3_3_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_3_3_Core::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_3_3_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_3_3_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_3_3_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_3_3_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_3_3_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_3_3_Core::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_3_3_Core::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_3_Core::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_3_3_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_3_3_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_3_3_Core::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_3_3_Core::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_3_3_Core::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_3_3_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_3_3_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_3_3_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_3_3_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_3_3_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_3_3_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_3_3_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_3_3_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_3_3_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_3_3_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_3_3_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_3_3_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_3_3_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_3_3_Core::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_3_3_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_3_3_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_3_3_Core::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_3_3_Core::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_3_3_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_3_3_Core::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_3_3_Core::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_3_3_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_3_3_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_3_3_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_3_3_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_3_3_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_3_3_Core::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_3_3_Core::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_3_3_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_3_3_Core::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_3_3_Core::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_3_3_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_3_3_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_3_3_Core::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_3_3_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_3_3_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_3_3_Core::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_3_3_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_3_3_Core::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_3_3_Core::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_3_3_Core::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_3_3_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_3_3_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_3_3_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_3_3_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_3_3_Core::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_3_3_Core::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_3_3_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_3_3_Core::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_3_3_Core::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_3_3_Core::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_3_3_Core::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_3_3_Core::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_3_3_Core::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_3_3_Core::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_3_3_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->QueryCounter(id, target); +} + +inline void QOpenGLFunctions_3_3_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_3_3_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_3_3_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->IsSampler(sampler); +} + +inline void QOpenGLFunctions_3_3_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_3_3_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_3_3_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_3_3_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_3_3_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->VertexAttribDivisor(index, divisor); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_4_0_compatibility.cpp b/src/gui/opengl/qopenglfunctions_4_0_compatibility.cpp new file mode 100644 index 0000000000..af5d3eccc1 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_0_compatibility.cpp @@ -0,0 +1,376 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_4_0_compatibility.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_4_0_Compatibility + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_4_0_Compatibility class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_4_0_Compatibility::QOpenGLFunctions_4_0_Compatibility() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_3_3_Core(0) + , d_4_0_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) + , d_2_0_Deprecated(0) + , d_3_0_Deprecated(0) +{ +} + +QOpenGLFunctions_4_0_Compatibility::~QOpenGLFunctions_4_0_Compatibility() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_3_3_Core && !d_3_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + delete d_3_3_Core; + } + if (d_4_0_Core && !d_4_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_0_Core->context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + delete d_4_0_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } + if (d_2_0_Deprecated && !d_2_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Deprecated->context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + delete d_2_0_Deprecated; + } + if (d_3_0_Deprecated && !d_3_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Deprecated->context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + delete d_3_0_Deprecated; + } +} + +bool QOpenGLFunctions_4_0_Compatibility::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_4_0_Compatibility::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d); + } + d_3_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus(), d); + } + d_4_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus(), d); + } + d_2_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus(), d); + } + d_3_0_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_4_0_Compatibility::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(4, 0)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_4_0_Compatibility::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(4, 0); + v.setProfile(QSurfaceFormat::CompatibilityProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_4_0_compatibility.h b/src/gui/opengl/qopenglfunctions_4_0_compatibility.h new file mode 100644 index 0000000000..7fce72a130 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_0_compatibility.h @@ -0,0 +1,5018 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_4_0_COMPATIBILITY_H +#define QOPENGLVERSIONFUNCTIONS_4_0_COMPATIBILITY_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_4_0_Compatibility : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_0_Compatibility(); + ~QOpenGLFunctions_4_0_Compatibility(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 3.3 core functions + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + + // OpenGL 4.0 core functions + void glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params); + void glEndQueryIndexed(GLenum target, GLuint index); + void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + void glDrawTransformFeedback(GLenum mode, GLuint id); + void glResumeTransformFeedback(); + void glPauseTransformFeedback(); + GLboolean glIsTransformFeedback(GLuint id); + void glGenTransformFeedbacks(GLsizei n, GLuint *ids); + void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); + void glBindTransformFeedback(GLenum target, GLuint id); + void glPatchParameterfv(GLenum pname, const GLfloat *values); + void glPatchParameteri(GLenum pname, GLint value); + void glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params); + void glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices); + void glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name); + GLint glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name); + void glGetUniformdv(GLuint program, GLint location, GLdouble *params); + void glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniform4dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform3dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform2dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform1dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + void glUniform2d(GLint location, GLdouble x, GLdouble y); + void glUniform1d(GLint location, GLdouble x); + void glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect); + void glDrawArraysIndirect(GLenum mode, const GLvoid *indirect); + void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBlendFunci(GLuint buf, GLenum src, GLenum dst); + void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void glBlendEquationi(GLuint buf, GLenum mode); + void glMinSampleShading(GLfloat value); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + + // OpenGL 1.5 deprecated functions + + // OpenGL 2.0 deprecated functions + void glVertexAttrib4usv(GLuint index, const GLushort *v); + void glVertexAttrib4uiv(GLuint index, const GLuint *v); + void glVertexAttrib4ubv(GLuint index, const GLubyte *v); + void glVertexAttrib4sv(GLuint index, const GLshort *v); + void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4iv(GLuint index, const GLint *v); + void glVertexAttrib4fv(GLuint index, const GLfloat *v); + void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dv(GLuint index, const GLdouble *v); + void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib4bv(GLuint index, const GLbyte *v); + void glVertexAttrib4Nusv(GLuint index, const GLushort *v); + void glVertexAttrib4Nuiv(GLuint index, const GLuint *v); + void glVertexAttrib4Nubv(GLuint index, const GLubyte *v); + void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4Nsv(GLuint index, const GLshort *v); + void glVertexAttrib4Niv(GLuint index, const GLint *v); + void glVertexAttrib4Nbv(GLuint index, const GLbyte *v); + void glVertexAttrib3sv(GLuint index, const GLshort *v); + void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fv(GLuint index, const GLfloat *v); + void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dv(GLuint index, const GLdouble *v); + void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2sv(GLuint index, const GLshort *v); + void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fv(GLuint index, const GLfloat *v); + void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dv(GLuint index, const GLdouble *v); + void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1sv(GLuint index, const GLshort *v); + void glVertexAttrib1s(GLuint index, GLshort x); + void glVertexAttrib1fv(GLuint index, const GLfloat *v); + void glVertexAttrib1f(GLuint index, GLfloat x); + void glVertexAttrib1dv(GLuint index, const GLdouble *v); + void glVertexAttrib1d(GLuint index, GLdouble x); + + // OpenGL 2.1 deprecated functions + + // OpenGL 3.0 deprecated functions + void glVertexAttribI4usv(GLuint index, const GLushort *v); + void glVertexAttribI4ubv(GLuint index, const GLubyte *v); + void glVertexAttribI4sv(GLuint index, const GLshort *v); + void glVertexAttribI4bv(GLuint index, const GLbyte *v); + void glVertexAttribI4uiv(GLuint index, const GLuint *v); + void glVertexAttribI3uiv(GLuint index, const GLuint *v); + void glVertexAttribI2uiv(GLuint index, const GLuint *v); + void glVertexAttribI1uiv(GLuint index, const GLuint *v); + void glVertexAttribI4iv(GLuint index, const GLint *v); + void glVertexAttribI3iv(GLuint index, const GLint *v); + void glVertexAttribI2iv(GLuint index, const GLint *v); + void glVertexAttribI1iv(GLuint index, const GLint *v); + void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z); + void glVertexAttribI2ui(GLuint index, GLuint x, GLuint y); + void glVertexAttribI1ui(GLuint index, GLuint x); + void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + void glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z); + void glVertexAttribI2i(GLuint index, GLint x, GLint y); + void glVertexAttribI1i(GLuint index, GLint x); + + // OpenGL 3.1 deprecated functions + + // OpenGL 3.2 deprecated functions + + // OpenGL 3.3 deprecated functions + + // OpenGL 4.0 deprecated functions + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_3_3_CoreBackend* d_3_3_Core; + QOpenGLFunctions_4_0_CoreBackend* d_4_0_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; + QOpenGLFunctions_2_0_DeprecatedBackend* d_2_0_Deprecated; + QOpenGLFunctions_3_0_DeprecatedBackend* d_3_0_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_0_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_0_Compatibility::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_0_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_0_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_0_Compatibility::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_0_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_0_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_0_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_0_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_0_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_0_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->VertexAttribDivisor(index, divisor); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_0_Compatibility::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glResumeTransformFeedback() +{ + d_4_0_Core->ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPauseTransformFeedback() +{ + d_4_0_Core->PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_0_Compatibility::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->MinSampleShading(value); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_4_0_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_4_0_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_4_0_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Deprecated->VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Deprecated->VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Deprecated->VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Deprecated->VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Deprecated->VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Deprecated->VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Deprecated->VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Deprecated->VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Deprecated->VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Deprecated->VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Deprecated->VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Deprecated->VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Deprecated->VertexAttrib1d(index, x); +} + + +// OpenGL 2.1 deprecated functions + +// OpenGL 3.0 deprecated functions +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Deprecated->VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Deprecated->VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Deprecated->VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Deprecated->VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Deprecated->VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Deprecated->VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Deprecated->VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Deprecated->VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Deprecated->VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Deprecated->VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Deprecated->VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Deprecated->VertexAttribI1i(index, x); +} + + +// OpenGL 3.1 deprecated functions + +// OpenGL 3.2 deprecated functions + +// OpenGL 3.3 deprecated functions + +// OpenGL 4.0 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_4_0_core.cpp b/src/gui/opengl/qopenglfunctions_4_0_core.cpp new file mode 100644 index 0000000000..b018531b37 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_0_core.cpp @@ -0,0 +1,282 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_4_0_core.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_4_0_Core + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_4_0_Core class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_4_0_Core::QOpenGLFunctions_4_0_Core() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_3_3_Core(0) + , d_4_0_Core(0) +{ +} + +QOpenGLFunctions_4_0_Core::~QOpenGLFunctions_4_0_Core() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_3_3_Core && !d_3_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + delete d_3_3_Core; + } + if (d_4_0_Core && !d_4_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_0_Core->context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + delete d_4_0_Core; + } +} + +bool QOpenGLFunctions_4_0_Core::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_4_0_Core::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d); + } + d_3_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus(), d); + } + d_4_0_Core = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_4_0_Core::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(4, 0)) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_4_0_Core::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(4, 0); + v.setProfile(QSurfaceFormat::CoreProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_4_0_core.h b/src/gui/opengl/qopenglfunctions_4_0_core.h new file mode 100644 index 0000000000..a3004817f5 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_0_core.h @@ -0,0 +1,2343 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_4_0_CORE_H +#define QOPENGLVERSIONFUNCTIONS_4_0_CORE_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_4_0_Core : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_0_Core(); + ~QOpenGLFunctions_4_0_Core(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 3.3 core functions + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + + // OpenGL 4.0 core functions + void glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params); + void glEndQueryIndexed(GLenum target, GLuint index); + void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + void glDrawTransformFeedback(GLenum mode, GLuint id); + void glResumeTransformFeedback(); + void glPauseTransformFeedback(); + GLboolean glIsTransformFeedback(GLuint id); + void glGenTransformFeedbacks(GLsizei n, GLuint *ids); + void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); + void glBindTransformFeedback(GLenum target, GLuint id); + void glPatchParameterfv(GLenum pname, const GLfloat *values); + void glPatchParameteri(GLenum pname, GLint value); + void glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params); + void glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices); + void glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name); + GLint glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name); + void glGetUniformdv(GLuint program, GLint location, GLdouble *params); + void glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniform4dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform3dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform2dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform1dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + void glUniform2d(GLint location, GLdouble x, GLdouble y); + void glUniform1d(GLint location, GLdouble x); + void glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect); + void glDrawArraysIndirect(GLenum mode, const GLvoid *indirect); + void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBlendFunci(GLuint buf, GLenum src, GLenum dst); + void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void glBlendEquationi(GLuint buf, GLenum mode); + void glMinSampleShading(GLfloat value); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_3_3_CoreBackend* d_3_3_Core; + QOpenGLFunctions_4_0_CoreBackend* d_4_0_Core; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_0_Core::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_0_Core::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_0_Core::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_4_0_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_0_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_0_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_0_Core::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_4_0_Core::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_4_0_Core::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_4_0_Core::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_4_0_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_4_0_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_4_0_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_0_Core::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_4_0_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_0_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_4_0_Core::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Core::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_0_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_4_0_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_4_0_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_4_0_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_4_0_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_0_Core::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_4_0_Core::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_4_0_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_0_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_0_Core::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Core::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Core::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Core::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_0_Core::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_0_Core::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_0_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_0_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_0_Core::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_0_Core::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_0_Core::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_0_Core::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Core::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Core::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Core::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Core::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Core::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_0_Core::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_0_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_0_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_0_Core::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_0_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_0_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_0_Core::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_0_Core::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_0_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_0_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_0_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_4_0_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_0_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_0_Core::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_0_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_4_0_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_0_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_0_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_0_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_0_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_0_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_0_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_4_0_Core::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_0_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_0_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_0_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_0_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_0_Core::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_4_0_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_4_0_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_0_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_0_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_0_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_0_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_0_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_0_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_0_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_0_Core::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_0_Core::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_0_Core::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_0_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_0_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_0_Core::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_0_Core::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_0_Core::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_0_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_0_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_0_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_0_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_0_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_0_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_0_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_0_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_0_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_0_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_0_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_0_Core::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_0_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_0_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_0_Core::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_0_Core::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_0_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_0_Core::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_0_Core::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_0_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_0_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_4_0_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_4_0_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_0_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_0_Core::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_0_Core::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_0_Core::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_0_Core::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_0_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_0_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_0_Core::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_0_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_0_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_0_Core::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_0_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_0_Core::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_0_Core::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_0_Core::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_0_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_0_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_0_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_0_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_0_Core::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_0_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_0_Core::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_0_Core::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_0_Core::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_0_Core::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_0_Core::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_0_Core::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_0_Core::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_0_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_0_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_0_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_0_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_0_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_0_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_0_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->VertexAttribDivisor(index, divisor); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_0_Core::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_0_Core::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_0_Core::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_0_Core::glResumeTransformFeedback() +{ + d_4_0_Core->ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_0_Core::glPauseTransformFeedback() +{ + d_4_0_Core->PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_0_Core::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_0_Core::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_0_Core::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_0_Core::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_0_Core::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_0_Core::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_0_Core::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_0_Core::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_0_Core::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_0_Core::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_0_Core::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_0_Core::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_0_Core::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_0_Core::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_0_Core::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->MinSampleShading(value); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_4_1_compatibility.cpp b/src/gui/opengl/qopenglfunctions_4_1_compatibility.cpp new file mode 100644 index 0000000000..27c90adc5a --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_1_compatibility.cpp @@ -0,0 +1,389 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_4_1_compatibility.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_4_1_Compatibility + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_4_1_Compatibility class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_4_1_Compatibility::QOpenGLFunctions_4_1_Compatibility() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_3_3_Core(0) + , d_4_0_Core(0) + , d_4_1_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) + , d_2_0_Deprecated(0) + , d_3_0_Deprecated(0) +{ +} + +QOpenGLFunctions_4_1_Compatibility::~QOpenGLFunctions_4_1_Compatibility() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_3_3_Core && !d_3_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + delete d_3_3_Core; + } + if (d_4_0_Core && !d_4_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_0_Core->context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + delete d_4_0_Core; + } + if (d_4_1_Core && !d_4_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_1_Core->context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + delete d_4_1_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } + if (d_2_0_Deprecated && !d_2_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Deprecated->context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + delete d_2_0_Deprecated; + } + if (d_3_0_Deprecated && !d_3_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Deprecated->context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + delete d_3_0_Deprecated; + } +} + +bool QOpenGLFunctions_4_1_Compatibility::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_4_1_Compatibility::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d); + } + d_3_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus(), d); + } + d_4_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus(), d); + } + d_4_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus(), d); + } + d_2_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus(), d); + } + d_3_0_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_4_1_Compatibility::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(4, 1)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_4_1_Compatibility::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(4, 1); + v.setProfile(QSurfaceFormat::CompatibilityProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_4_1_compatibility.h b/src/gui/opengl/qopenglfunctions_4_1_compatibility.h new file mode 100644 index 0000000000..555e3e1e97 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_1_compatibility.h @@ -0,0 +1,5555 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_4_1_COMPATIBILITY_H +#define QOPENGLVERSIONFUNCTIONS_4_1_COMPATIBILITY_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_4_1_Compatibility : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_1_Compatibility(); + ~QOpenGLFunctions_4_1_Compatibility(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 3.3 core functions + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + + // OpenGL 4.0 core functions + void glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params); + void glEndQueryIndexed(GLenum target, GLuint index); + void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + void glDrawTransformFeedback(GLenum mode, GLuint id); + void glResumeTransformFeedback(); + void glPauseTransformFeedback(); + GLboolean glIsTransformFeedback(GLuint id); + void glGenTransformFeedbacks(GLsizei n, GLuint *ids); + void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); + void glBindTransformFeedback(GLenum target, GLuint id); + void glPatchParameterfv(GLenum pname, const GLfloat *values); + void glPatchParameteri(GLenum pname, GLint value); + void glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params); + void glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices); + void glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name); + GLint glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name); + void glGetUniformdv(GLuint program, GLint location, GLdouble *params); + void glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniform4dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform3dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform2dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform1dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + void glUniform2d(GLint location, GLdouble x, GLdouble y); + void glUniform1d(GLint location, GLdouble x); + void glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect); + void glDrawArraysIndirect(GLenum mode, const GLvoid *indirect); + void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBlendFunci(GLuint buf, GLenum src, GLenum dst); + void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void glBlendEquationi(GLuint buf, GLenum mode); + void glMinSampleShading(GLfloat value); + + // OpenGL 4.1 core functions + void glGetDoublei_v(GLenum target, GLuint index, GLdouble *data); + void glGetFloati_v(GLenum target, GLuint index, GLfloat *data); + void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); + void glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v); + void glScissorIndexedv(GLuint index, const GLint *v); + void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + void glScissorArrayv(GLuint first, GLsizei count, const GLint *v); + void glViewportIndexedfv(GLuint index, const GLfloat *v); + void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + void glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v); + void glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params); + void glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glVertexAttribL4dv(GLuint index, const GLdouble *v); + void glVertexAttribL3dv(GLuint index, const GLdouble *v); + void glVertexAttribL2dv(GLuint index, const GLdouble *v); + void glVertexAttribL1dv(GLuint index, const GLdouble *v); + void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttribL1d(GLuint index, GLdouble x); + void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glValidateProgramPipeline(GLuint pipeline); + void glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); + void glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); + void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); + void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); + void glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform1d(GLuint program, GLint location, GLdouble v0); + void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); + void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform1i(GLuint program, GLint location, GLint v0); + void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params); + GLboolean glIsProgramPipeline(GLuint pipeline); + void glGenProgramPipelines(GLsizei n, GLuint *pipelines); + void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines); + void glBindProgramPipeline(GLuint pipeline); + GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings); + void glActiveShaderProgram(GLuint pipeline, GLuint program); + void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + void glProgramParameteri(GLuint program, GLenum pname, GLint value); + void glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); + void glClearDepthf(GLfloat dd); + void glDepthRangef(GLfloat n, GLfloat f); + void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); + void glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); + void glReleaseShaderCompiler(); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + + // OpenGL 1.5 deprecated functions + + // OpenGL 2.0 deprecated functions + void glVertexAttrib4usv(GLuint index, const GLushort *v); + void glVertexAttrib4uiv(GLuint index, const GLuint *v); + void glVertexAttrib4ubv(GLuint index, const GLubyte *v); + void glVertexAttrib4sv(GLuint index, const GLshort *v); + void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4iv(GLuint index, const GLint *v); + void glVertexAttrib4fv(GLuint index, const GLfloat *v); + void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dv(GLuint index, const GLdouble *v); + void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib4bv(GLuint index, const GLbyte *v); + void glVertexAttrib4Nusv(GLuint index, const GLushort *v); + void glVertexAttrib4Nuiv(GLuint index, const GLuint *v); + void glVertexAttrib4Nubv(GLuint index, const GLubyte *v); + void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4Nsv(GLuint index, const GLshort *v); + void glVertexAttrib4Niv(GLuint index, const GLint *v); + void glVertexAttrib4Nbv(GLuint index, const GLbyte *v); + void glVertexAttrib3sv(GLuint index, const GLshort *v); + void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fv(GLuint index, const GLfloat *v); + void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dv(GLuint index, const GLdouble *v); + void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2sv(GLuint index, const GLshort *v); + void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fv(GLuint index, const GLfloat *v); + void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dv(GLuint index, const GLdouble *v); + void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1sv(GLuint index, const GLshort *v); + void glVertexAttrib1s(GLuint index, GLshort x); + void glVertexAttrib1fv(GLuint index, const GLfloat *v); + void glVertexAttrib1f(GLuint index, GLfloat x); + void glVertexAttrib1dv(GLuint index, const GLdouble *v); + void glVertexAttrib1d(GLuint index, GLdouble x); + + // OpenGL 2.1 deprecated functions + + // OpenGL 3.0 deprecated functions + void glVertexAttribI4usv(GLuint index, const GLushort *v); + void glVertexAttribI4ubv(GLuint index, const GLubyte *v); + void glVertexAttribI4sv(GLuint index, const GLshort *v); + void glVertexAttribI4bv(GLuint index, const GLbyte *v); + void glVertexAttribI4uiv(GLuint index, const GLuint *v); + void glVertexAttribI3uiv(GLuint index, const GLuint *v); + void glVertexAttribI2uiv(GLuint index, const GLuint *v); + void glVertexAttribI1uiv(GLuint index, const GLuint *v); + void glVertexAttribI4iv(GLuint index, const GLint *v); + void glVertexAttribI3iv(GLuint index, const GLint *v); + void glVertexAttribI2iv(GLuint index, const GLint *v); + void glVertexAttribI1iv(GLuint index, const GLint *v); + void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z); + void glVertexAttribI2ui(GLuint index, GLuint x, GLuint y); + void glVertexAttribI1ui(GLuint index, GLuint x); + void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + void glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z); + void glVertexAttribI2i(GLuint index, GLint x, GLint y); + void glVertexAttribI1i(GLuint index, GLint x); + + // OpenGL 3.1 deprecated functions + + // OpenGL 3.2 deprecated functions + + // OpenGL 3.3 deprecated functions + + // OpenGL 4.0 deprecated functions + + // OpenGL 4.1 deprecated functions + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_3_3_CoreBackend* d_3_3_Core; + QOpenGLFunctions_4_0_CoreBackend* d_4_0_Core; + QOpenGLFunctions_4_1_CoreBackend* d_4_1_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; + QOpenGLFunctions_2_0_DeprecatedBackend* d_2_0_Deprecated; + QOpenGLFunctions_3_0_DeprecatedBackend* d_3_0_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_1_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_1_Compatibility::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_1_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_1_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_1_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_1_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_1_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_1_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->VertexAttribDivisor(index, divisor); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glResumeTransformFeedback() +{ + d_4_0_Core->ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPauseTransformFeedback() +{ + d_4_0_Core->PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->MinSampleShading(value); +} + + +// OpenGL 4.1 core functions +inline void QOpenGLFunctions_4_1_Compatibility::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + d_4_1_Core->GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_4_1_Core->VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_1_Core->VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_4_1_Core->ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + d_4_1_Core->ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_4_1_Core->ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_4_1_Core->ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_4_1_Core->ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + d_4_1_Core->ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_4_1_Core->ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + d_4_1_Core->ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) +{ + d_4_1_Core->GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glReleaseShaderCompiler() +{ + d_4_1_Core->ReleaseShaderCompiler(); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_4_1_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_4_1_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_4_1_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Deprecated->VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Deprecated->VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Deprecated->VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Deprecated->VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Deprecated->VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Deprecated->VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Deprecated->VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Deprecated->VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Deprecated->VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Deprecated->VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Deprecated->VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Deprecated->VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Deprecated->VertexAttrib1d(index, x); +} + + +// OpenGL 2.1 deprecated functions + +// OpenGL 3.0 deprecated functions +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Deprecated->VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Deprecated->VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Deprecated->VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Deprecated->VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Deprecated->VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Deprecated->VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Deprecated->VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Deprecated->VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Deprecated->VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Deprecated->VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Deprecated->VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Deprecated->VertexAttribI1i(index, x); +} + + +// OpenGL 3.1 deprecated functions + +// OpenGL 3.2 deprecated functions + +// OpenGL 3.3 deprecated functions + +// OpenGL 4.0 deprecated functions + +// OpenGL 4.1 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_4_1_core.cpp b/src/gui/opengl/qopenglfunctions_4_1_core.cpp new file mode 100644 index 0000000000..b36cb0de94 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_1_core.cpp @@ -0,0 +1,295 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_4_1_core.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_4_1_Core + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_4_1_Core class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_4_1_Core::QOpenGLFunctions_4_1_Core() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_3_3_Core(0) + , d_4_0_Core(0) + , d_4_1_Core(0) +{ +} + +QOpenGLFunctions_4_1_Core::~QOpenGLFunctions_4_1_Core() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_3_3_Core && !d_3_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + delete d_3_3_Core; + } + if (d_4_0_Core && !d_4_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_0_Core->context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + delete d_4_0_Core; + } + if (d_4_1_Core && !d_4_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_1_Core->context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + delete d_4_1_Core; + } +} + +bool QOpenGLFunctions_4_1_Core::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_4_1_Core::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d); + } + d_3_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus(), d); + } + d_4_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus(), d); + } + d_4_1_Core = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_4_1_Core::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(4, 1)) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_4_1_Core::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(4, 1); + v.setProfile(QSurfaceFormat::CoreProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_4_1_core.h b/src/gui/opengl/qopenglfunctions_4_1_core.h new file mode 100644 index 0000000000..045b49c14b --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_1_core.h @@ -0,0 +1,2876 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_4_1_CORE_H +#define QOPENGLVERSIONFUNCTIONS_4_1_CORE_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_4_1_Core : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_1_Core(); + ~QOpenGLFunctions_4_1_Core(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 3.3 core functions + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + + // OpenGL 4.0 core functions + void glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params); + void glEndQueryIndexed(GLenum target, GLuint index); + void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + void glDrawTransformFeedback(GLenum mode, GLuint id); + void glResumeTransformFeedback(); + void glPauseTransformFeedback(); + GLboolean glIsTransformFeedback(GLuint id); + void glGenTransformFeedbacks(GLsizei n, GLuint *ids); + void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); + void glBindTransformFeedback(GLenum target, GLuint id); + void glPatchParameterfv(GLenum pname, const GLfloat *values); + void glPatchParameteri(GLenum pname, GLint value); + void glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params); + void glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices); + void glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name); + GLint glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name); + void glGetUniformdv(GLuint program, GLint location, GLdouble *params); + void glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniform4dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform3dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform2dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform1dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + void glUniform2d(GLint location, GLdouble x, GLdouble y); + void glUniform1d(GLint location, GLdouble x); + void glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect); + void glDrawArraysIndirect(GLenum mode, const GLvoid *indirect); + void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBlendFunci(GLuint buf, GLenum src, GLenum dst); + void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void glBlendEquationi(GLuint buf, GLenum mode); + void glMinSampleShading(GLfloat value); + + // OpenGL 4.1 core functions + void glGetDoublei_v(GLenum target, GLuint index, GLdouble *data); + void glGetFloati_v(GLenum target, GLuint index, GLfloat *data); + void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); + void glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v); + void glScissorIndexedv(GLuint index, const GLint *v); + void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + void glScissorArrayv(GLuint first, GLsizei count, const GLint *v); + void glViewportIndexedfv(GLuint index, const GLfloat *v); + void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + void glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v); + void glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params); + void glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glVertexAttribL4dv(GLuint index, const GLdouble *v); + void glVertexAttribL3dv(GLuint index, const GLdouble *v); + void glVertexAttribL2dv(GLuint index, const GLdouble *v); + void glVertexAttribL1dv(GLuint index, const GLdouble *v); + void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttribL1d(GLuint index, GLdouble x); + void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glValidateProgramPipeline(GLuint pipeline); + void glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); + void glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); + void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); + void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); + void glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform1d(GLuint program, GLint location, GLdouble v0); + void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); + void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform1i(GLuint program, GLint location, GLint v0); + void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params); + GLboolean glIsProgramPipeline(GLuint pipeline); + void glGenProgramPipelines(GLsizei n, GLuint *pipelines); + void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines); + void glBindProgramPipeline(GLuint pipeline); + GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings); + void glActiveShaderProgram(GLuint pipeline, GLuint program); + void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + void glProgramParameteri(GLuint program, GLenum pname, GLint value); + void glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); + void glClearDepthf(GLfloat dd); + void glDepthRangef(GLfloat n, GLfloat f); + void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); + void glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); + void glReleaseShaderCompiler(); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_3_3_CoreBackend* d_3_3_Core; + QOpenGLFunctions_4_0_CoreBackend* d_4_0_Core; + QOpenGLFunctions_4_1_CoreBackend* d_4_1_Core; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_1_Core::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_1_Core::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_1_Core::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_4_1_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_1_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_1_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_1_Core::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_4_1_Core::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_4_1_Core::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_4_1_Core::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_4_1_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_4_1_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_1_Core::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_4_1_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_1_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_4_1_Core::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Core::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_1_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_4_1_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_4_1_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_4_1_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_4_1_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_1_Core::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_4_1_Core::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_4_1_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_1_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_1_Core::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Core::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Core::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_1_Core::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_1_Core::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_1_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_1_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_1_Core::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_1_Core::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_1_Core::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Core::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Core::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Core::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Core::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Core::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_1_Core::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_1_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_1_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_1_Core::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_1_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_1_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_1_Core::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_1_Core::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_1_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_1_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_1_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_4_1_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_1_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_1_Core::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_4_1_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_1_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_1_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_1_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_1_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_4_1_Core::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_1_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_1_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_1_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_1_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_1_Core::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_4_1_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_4_1_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_1_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_1_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_1_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_1_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_1_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_1_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_1_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_1_Core::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_1_Core::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_1_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_1_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_1_Core::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_1_Core::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_1_Core::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_1_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_1_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_1_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_1_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_1_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_1_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_1_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_1_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_1_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_1_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Core::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_1_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_1_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_1_Core::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_1_Core::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_1_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_1_Core::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_1_Core::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_1_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_1_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_4_1_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_4_1_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Core::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_1_Core::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_1_Core::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_1_Core::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_1_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_1_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_1_Core::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_1_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_1_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_1_Core::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_1_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_1_Core::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_1_Core::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_1_Core::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_1_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_1_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_1_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_1_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_1_Core::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_1_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_1_Core::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_1_Core::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_1_Core::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_1_Core::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_1_Core::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_1_Core::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_1_Core::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_1_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_1_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_1_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_1_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_1_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_1_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->VertexAttribDivisor(index, divisor); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_1_Core::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_1_Core::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_1_Core::glResumeTransformFeedback() +{ + d_4_0_Core->ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_1_Core::glPauseTransformFeedback() +{ + d_4_0_Core->PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_1_Core::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_1_Core::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_1_Core::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_1_Core::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_1_Core::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_1_Core::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_1_Core::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_1_Core::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_1_Core::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_1_Core::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_1_Core::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_1_Core::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->MinSampleShading(value); +} + + +// OpenGL 4.1 core functions +inline void QOpenGLFunctions_4_1_Core::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + d_4_1_Core->GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Core::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Core::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_1_Core::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Core::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_1_Core::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_1_Core::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_4_1_Core->VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_1_Core->VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_1_Core::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_1_Core::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_4_1_Core->ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + d_4_1_Core->ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_4_1_Core->ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_4_1_Core->ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_4_1_Core->ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + d_4_1_Core->ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_4_1_Core->ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + d_4_1_Core->ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_1_Core::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_1_Core::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_1_Core::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_1_Core::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_1_Core::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_1_Core::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_1_Core::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_1_Core::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLFunctions_4_1_Core::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) +{ + d_4_1_Core->GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_1_Core::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_1_Core::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_1_Core::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_4_1_Core::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_1_Core::glReleaseShaderCompiler() +{ + d_4_1_Core->ReleaseShaderCompiler(); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_4_2_compatibility.cpp b/src/gui/opengl/qopenglfunctions_4_2_compatibility.cpp new file mode 100644 index 0000000000..a415b24f33 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_2_compatibility.cpp @@ -0,0 +1,402 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_4_2_compatibility.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_4_2_Compatibility + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_4_2_Compatibility class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_4_2_Compatibility::QOpenGLFunctions_4_2_Compatibility() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_3_3_Core(0) + , d_4_0_Core(0) + , d_4_1_Core(0) + , d_4_2_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) + , d_2_0_Deprecated(0) + , d_3_0_Deprecated(0) +{ +} + +QOpenGLFunctions_4_2_Compatibility::~QOpenGLFunctions_4_2_Compatibility() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_3_3_Core && !d_3_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + delete d_3_3_Core; + } + if (d_4_0_Core && !d_4_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_0_Core->context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + delete d_4_0_Core; + } + if (d_4_1_Core && !d_4_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_1_Core->context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + delete d_4_1_Core; + } + if (d_4_2_Core && !d_4_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_2_Core->context, QOpenGLFunctions_4_2_CoreBackend::versionStatus()); + delete d_4_2_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } + if (d_2_0_Deprecated && !d_2_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Deprecated->context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + delete d_2_0_Deprecated; + } + if (d_3_0_Deprecated && !d_3_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Deprecated->context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + delete d_3_0_Deprecated; + } +} + +bool QOpenGLFunctions_4_2_Compatibility::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_4_2_Compatibility::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d); + } + d_3_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus(), d); + } + d_4_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus(), d); + } + d_4_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_2_CoreBackend::versionStatus(), d); + } + d_4_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus(), d); + } + d_2_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus(), d); + } + d_3_0_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_4_2_Compatibility::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(4, 2)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_4_2_Compatibility::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(4, 2); + v.setProfile(QSurfaceFormat::CompatibilityProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_4_2_compatibility.h b/src/gui/opengl/qopenglfunctions_4_2_compatibility.h new file mode 100644 index 0000000000..8a9d56978b --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_2_compatibility.h @@ -0,0 +1,5636 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_4_2_COMPATIBILITY_H +#define QOPENGLVERSIONFUNCTIONS_4_2_COMPATIBILITY_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_4_2_Compatibility : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_2_Compatibility(); + ~QOpenGLFunctions_4_2_Compatibility(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 3.3 core functions + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + + // OpenGL 4.0 core functions + void glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params); + void glEndQueryIndexed(GLenum target, GLuint index); + void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + void glDrawTransformFeedback(GLenum mode, GLuint id); + void glResumeTransformFeedback(); + void glPauseTransformFeedback(); + GLboolean glIsTransformFeedback(GLuint id); + void glGenTransformFeedbacks(GLsizei n, GLuint *ids); + void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); + void glBindTransformFeedback(GLenum target, GLuint id); + void glPatchParameterfv(GLenum pname, const GLfloat *values); + void glPatchParameteri(GLenum pname, GLint value); + void glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params); + void glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices); + void glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name); + GLint glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name); + void glGetUniformdv(GLuint program, GLint location, GLdouble *params); + void glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniform4dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform3dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform2dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform1dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + void glUniform2d(GLint location, GLdouble x, GLdouble y); + void glUniform1d(GLint location, GLdouble x); + void glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect); + void glDrawArraysIndirect(GLenum mode, const GLvoid *indirect); + void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBlendFunci(GLuint buf, GLenum src, GLenum dst); + void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void glBlendEquationi(GLuint buf, GLenum mode); + void glMinSampleShading(GLfloat value); + + // OpenGL 4.1 core functions + void glGetDoublei_v(GLenum target, GLuint index, GLdouble *data); + void glGetFloati_v(GLenum target, GLuint index, GLfloat *data); + void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); + void glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v); + void glScissorIndexedv(GLuint index, const GLint *v); + void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + void glScissorArrayv(GLuint first, GLsizei count, const GLint *v); + void glViewportIndexedfv(GLuint index, const GLfloat *v); + void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + void glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v); + void glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params); + void glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glVertexAttribL4dv(GLuint index, const GLdouble *v); + void glVertexAttribL3dv(GLuint index, const GLdouble *v); + void glVertexAttribL2dv(GLuint index, const GLdouble *v); + void glVertexAttribL1dv(GLuint index, const GLdouble *v); + void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttribL1d(GLuint index, GLdouble x); + void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glValidateProgramPipeline(GLuint pipeline); + void glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); + void glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); + void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); + void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); + void glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform1d(GLuint program, GLint location, GLdouble v0); + void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); + void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform1i(GLuint program, GLint location, GLint v0); + void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params); + GLboolean glIsProgramPipeline(GLuint pipeline); + void glGenProgramPipelines(GLsizei n, GLuint *pipelines); + void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines); + void glBindProgramPipeline(GLuint pipeline); + GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings); + void glActiveShaderProgram(GLuint pipeline, GLuint program); + void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + void glProgramParameteri(GLuint program, GLenum pname, GLint value); + void glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); + void glClearDepthf(GLfloat dd); + void glDepthRangef(GLfloat n, GLfloat f); + void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); + void glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); + void glReleaseShaderCompiler(); + + // OpenGL 4.2 core functions + void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + void glMemoryBarrier(GLbitfield barriers); + void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); + void glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); + void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); + void glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + void glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); + void glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); + void glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + + // OpenGL 1.5 deprecated functions + + // OpenGL 2.0 deprecated functions + void glVertexAttrib4usv(GLuint index, const GLushort *v); + void glVertexAttrib4uiv(GLuint index, const GLuint *v); + void glVertexAttrib4ubv(GLuint index, const GLubyte *v); + void glVertexAttrib4sv(GLuint index, const GLshort *v); + void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4iv(GLuint index, const GLint *v); + void glVertexAttrib4fv(GLuint index, const GLfloat *v); + void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dv(GLuint index, const GLdouble *v); + void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib4bv(GLuint index, const GLbyte *v); + void glVertexAttrib4Nusv(GLuint index, const GLushort *v); + void glVertexAttrib4Nuiv(GLuint index, const GLuint *v); + void glVertexAttrib4Nubv(GLuint index, const GLubyte *v); + void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4Nsv(GLuint index, const GLshort *v); + void glVertexAttrib4Niv(GLuint index, const GLint *v); + void glVertexAttrib4Nbv(GLuint index, const GLbyte *v); + void glVertexAttrib3sv(GLuint index, const GLshort *v); + void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fv(GLuint index, const GLfloat *v); + void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dv(GLuint index, const GLdouble *v); + void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2sv(GLuint index, const GLshort *v); + void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fv(GLuint index, const GLfloat *v); + void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dv(GLuint index, const GLdouble *v); + void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1sv(GLuint index, const GLshort *v); + void glVertexAttrib1s(GLuint index, GLshort x); + void glVertexAttrib1fv(GLuint index, const GLfloat *v); + void glVertexAttrib1f(GLuint index, GLfloat x); + void glVertexAttrib1dv(GLuint index, const GLdouble *v); + void glVertexAttrib1d(GLuint index, GLdouble x); + + // OpenGL 2.1 deprecated functions + + // OpenGL 3.0 deprecated functions + void glVertexAttribI4usv(GLuint index, const GLushort *v); + void glVertexAttribI4ubv(GLuint index, const GLubyte *v); + void glVertexAttribI4sv(GLuint index, const GLshort *v); + void glVertexAttribI4bv(GLuint index, const GLbyte *v); + void glVertexAttribI4uiv(GLuint index, const GLuint *v); + void glVertexAttribI3uiv(GLuint index, const GLuint *v); + void glVertexAttribI2uiv(GLuint index, const GLuint *v); + void glVertexAttribI1uiv(GLuint index, const GLuint *v); + void glVertexAttribI4iv(GLuint index, const GLint *v); + void glVertexAttribI3iv(GLuint index, const GLint *v); + void glVertexAttribI2iv(GLuint index, const GLint *v); + void glVertexAttribI1iv(GLuint index, const GLint *v); + void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z); + void glVertexAttribI2ui(GLuint index, GLuint x, GLuint y); + void glVertexAttribI1ui(GLuint index, GLuint x); + void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + void glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z); + void glVertexAttribI2i(GLuint index, GLint x, GLint y); + void glVertexAttribI1i(GLuint index, GLint x); + + // OpenGL 3.1 deprecated functions + + // OpenGL 3.2 deprecated functions + + // OpenGL 3.3 deprecated functions + + // OpenGL 4.0 deprecated functions + + // OpenGL 4.1 deprecated functions + + // OpenGL 4.2 deprecated functions + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_3_3_CoreBackend* d_3_3_Core; + QOpenGLFunctions_4_0_CoreBackend* d_4_0_Core; + QOpenGLFunctions_4_1_CoreBackend* d_4_1_Core; + QOpenGLFunctions_4_2_CoreBackend* d_4_2_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; + QOpenGLFunctions_2_0_DeprecatedBackend* d_2_0_Deprecated; + QOpenGLFunctions_3_0_DeprecatedBackend* d_3_0_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_2_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_2_Compatibility::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_2_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_2_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_2_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_2_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_2_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_2_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->VertexAttribDivisor(index, divisor); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glResumeTransformFeedback() +{ + d_4_0_Core->ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPauseTransformFeedback() +{ + d_4_0_Core->PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->MinSampleShading(value); +} + + +// OpenGL 4.1 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + d_4_1_Core->GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_4_1_Core->VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_1_Core->VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_4_1_Core->ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + d_4_1_Core->ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_4_1_Core->ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_4_1_Core->ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_4_1_Core->ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + d_4_1_Core->ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_4_1_Core->ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + d_4_1_Core->ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) +{ + d_4_1_Core->GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glReleaseShaderCompiler() +{ + d_4_1_Core->ReleaseShaderCompiler(); +} + + +// OpenGL 4.2 core functions +inline void QOpenGLFunctions_4_2_Compatibility::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_2_Core->TexStorage3D(target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_2_Core->TexStorage2D(target, levels, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + d_4_2_Core->TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->MemoryBarrier(barriers); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) +{ + d_4_2_Core->BindImageTexture(unit, texture, level, layered, layer, access, format); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) +{ + d_4_2_Core->GetActiveAtomicCounterBufferiv(program, bufferIndex, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) +{ + d_4_2_Core->GetInternalformativ(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) +{ + d_4_2_Core->DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->DrawTransformFeedbackInstanced(mode, id, instancecount); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) +{ + d_4_2_Core->DrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->DrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->DrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_4_2_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_4_2_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_4_2_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Deprecated->VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Deprecated->VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Deprecated->VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Deprecated->VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Deprecated->VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Deprecated->VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Deprecated->VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Deprecated->VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Deprecated->VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Deprecated->VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Deprecated->VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Deprecated->VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Deprecated->VertexAttrib1d(index, x); +} + + +// OpenGL 2.1 deprecated functions + +// OpenGL 3.0 deprecated functions +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Deprecated->VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Deprecated->VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Deprecated->VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Deprecated->VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Deprecated->VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Deprecated->VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Deprecated->VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Deprecated->VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Deprecated->VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Deprecated->VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Deprecated->VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Deprecated->VertexAttribI1i(index, x); +} + + +// OpenGL 3.1 deprecated functions + +// OpenGL 3.2 deprecated functions + +// OpenGL 3.3 deprecated functions + +// OpenGL 4.0 deprecated functions + +// OpenGL 4.1 deprecated functions + +// OpenGL 4.2 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_4_2_core.cpp b/src/gui/opengl/qopenglfunctions_4_2_core.cpp new file mode 100644 index 0000000000..3600c20a41 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_2_core.cpp @@ -0,0 +1,308 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_4_2_core.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_4_2_Core + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_4_2_Core class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_4_2_Core::QOpenGLFunctions_4_2_Core() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_3_3_Core(0) + , d_4_0_Core(0) + , d_4_1_Core(0) + , d_4_2_Core(0) +{ +} + +QOpenGLFunctions_4_2_Core::~QOpenGLFunctions_4_2_Core() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_3_3_Core && !d_3_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + delete d_3_3_Core; + } + if (d_4_0_Core && !d_4_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_0_Core->context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + delete d_4_0_Core; + } + if (d_4_1_Core && !d_4_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_1_Core->context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + delete d_4_1_Core; + } + if (d_4_2_Core && !d_4_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_2_Core->context, QOpenGLFunctions_4_2_CoreBackend::versionStatus()); + delete d_4_2_Core; + } +} + +bool QOpenGLFunctions_4_2_Core::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_4_2_Core::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d); + } + d_3_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus(), d); + } + d_4_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus(), d); + } + d_4_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_2_CoreBackend::versionStatus(), d); + } + d_4_2_Core = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_4_2_Core::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(4, 2)) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_4_2_Core::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(4, 2); + v.setProfile(QSurfaceFormat::CoreProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_4_2_core.h b/src/gui/opengl/qopenglfunctions_4_2_core.h new file mode 100644 index 0000000000..40f24eaf25 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_2_core.h @@ -0,0 +1,2953 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_4_2_CORE_H +#define QOPENGLVERSIONFUNCTIONS_4_2_CORE_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_4_2_Core : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_2_Core(); + ~QOpenGLFunctions_4_2_Core(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 3.3 core functions + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + + // OpenGL 4.0 core functions + void glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params); + void glEndQueryIndexed(GLenum target, GLuint index); + void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + void glDrawTransformFeedback(GLenum mode, GLuint id); + void glResumeTransformFeedback(); + void glPauseTransformFeedback(); + GLboolean glIsTransformFeedback(GLuint id); + void glGenTransformFeedbacks(GLsizei n, GLuint *ids); + void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); + void glBindTransformFeedback(GLenum target, GLuint id); + void glPatchParameterfv(GLenum pname, const GLfloat *values); + void glPatchParameteri(GLenum pname, GLint value); + void glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params); + void glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices); + void glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name); + GLint glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name); + void glGetUniformdv(GLuint program, GLint location, GLdouble *params); + void glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniform4dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform3dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform2dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform1dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + void glUniform2d(GLint location, GLdouble x, GLdouble y); + void glUniform1d(GLint location, GLdouble x); + void glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect); + void glDrawArraysIndirect(GLenum mode, const GLvoid *indirect); + void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBlendFunci(GLuint buf, GLenum src, GLenum dst); + void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void glBlendEquationi(GLuint buf, GLenum mode); + void glMinSampleShading(GLfloat value); + + // OpenGL 4.1 core functions + void glGetDoublei_v(GLenum target, GLuint index, GLdouble *data); + void glGetFloati_v(GLenum target, GLuint index, GLfloat *data); + void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); + void glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v); + void glScissorIndexedv(GLuint index, const GLint *v); + void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + void glScissorArrayv(GLuint first, GLsizei count, const GLint *v); + void glViewportIndexedfv(GLuint index, const GLfloat *v); + void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + void glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v); + void glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params); + void glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glVertexAttribL4dv(GLuint index, const GLdouble *v); + void glVertexAttribL3dv(GLuint index, const GLdouble *v); + void glVertexAttribL2dv(GLuint index, const GLdouble *v); + void glVertexAttribL1dv(GLuint index, const GLdouble *v); + void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttribL1d(GLuint index, GLdouble x); + void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glValidateProgramPipeline(GLuint pipeline); + void glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); + void glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); + void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); + void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); + void glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform1d(GLuint program, GLint location, GLdouble v0); + void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); + void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform1i(GLuint program, GLint location, GLint v0); + void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params); + GLboolean glIsProgramPipeline(GLuint pipeline); + void glGenProgramPipelines(GLsizei n, GLuint *pipelines); + void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines); + void glBindProgramPipeline(GLuint pipeline); + GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings); + void glActiveShaderProgram(GLuint pipeline, GLuint program); + void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + void glProgramParameteri(GLuint program, GLenum pname, GLint value); + void glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); + void glClearDepthf(GLfloat dd); + void glDepthRangef(GLfloat n, GLfloat f); + void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); + void glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); + void glReleaseShaderCompiler(); + + // OpenGL 4.2 core functions + void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + void glMemoryBarrier(GLbitfield barriers); + void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); + void glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); + void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); + void glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + void glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); + void glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); + void glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_3_3_CoreBackend* d_3_3_Core; + QOpenGLFunctions_4_0_CoreBackend* d_4_0_Core; + QOpenGLFunctions_4_1_CoreBackend* d_4_1_Core; + QOpenGLFunctions_4_2_CoreBackend* d_4_2_Core; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_2_Core::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_2_Core::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_2_Core::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_4_2_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_2_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_2_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_2_Core::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_4_2_Core::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_4_2_Core::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_4_2_Core::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_4_2_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_4_2_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_2_Core::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_4_2_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_2_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_4_2_Core::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Core::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_2_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_4_2_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_4_2_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_4_2_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_4_2_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_2_Core::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_4_2_Core::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_4_2_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_2_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_2_Core::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Core::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Core::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_2_Core::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_2_Core::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_2_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_2_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_2_Core::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_2_Core::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_2_Core::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Core::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Core::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Core::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Core::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Core::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_2_Core::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_2_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_2_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_2_Core::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_2_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_2_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_2_Core::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_2_Core::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_2_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_2_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_2_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_4_2_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_2_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_2_Core::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_4_2_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_2_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_2_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_2_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_2_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_2_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_2_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_2_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_2_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_2_Core::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_4_2_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_4_2_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_2_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_2_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_2_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_2_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_2_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_2_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_2_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_2_Core::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_2_Core::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_2_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_2_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_2_Core::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_2_Core::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_2_Core::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_2_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_2_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_2_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_2_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_2_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_2_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_2_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_2_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_2_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_2_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Core::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_2_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_2_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_2_Core::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_2_Core::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_2_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_2_Core::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_2_Core::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_2_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_2_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_4_2_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_4_2_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Core::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_2_Core::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_2_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_2_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_2_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_2_Core::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_2_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_2_Core::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_2_Core::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_2_Core::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_2_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_2_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_2_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_2_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_2_Core::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_2_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_2_Core::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_2_Core::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_2_Core::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_2_Core::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_2_Core::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_2_Core::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_2_Core::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_2_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_2_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_2_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_2_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_2_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_2_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->VertexAttribDivisor(index, divisor); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_2_Core::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_2_Core::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_2_Core::glResumeTransformFeedback() +{ + d_4_0_Core->ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_2_Core::glPauseTransformFeedback() +{ + d_4_0_Core->PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_2_Core::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_2_Core::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_2_Core::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_2_Core::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_2_Core::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_2_Core::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_2_Core::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_2_Core::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_2_Core::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_2_Core::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->MinSampleShading(value); +} + + +// OpenGL 4.1 core functions +inline void QOpenGLFunctions_4_2_Core::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + d_4_1_Core->GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Core::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Core::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Core::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_2_Core::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_2_Core::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_4_1_Core->VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_1_Core->VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_2_Core::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_2_Core::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_4_1_Core->ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + d_4_1_Core->ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_4_1_Core->ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_4_1_Core->ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_4_1_Core->ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + d_4_1_Core->ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_4_1_Core->ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + d_4_1_Core->ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_2_Core::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_2_Core::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_2_Core::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_2_Core::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_2_Core::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_2_Core::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_2_Core::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_2_Core::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLFunctions_4_2_Core::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) +{ + d_4_1_Core->GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_2_Core::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_2_Core::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_2_Core::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_4_2_Core::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_2_Core::glReleaseShaderCompiler() +{ + d_4_1_Core->ReleaseShaderCompiler(); +} + + +// OpenGL 4.2 core functions +inline void QOpenGLFunctions_4_2_Core::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_2_Core->TexStorage3D(target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLFunctions_4_2_Core::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_2_Core->TexStorage2D(target, levels, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_2_Core::glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + d_4_2_Core->TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_2_Core::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->MemoryBarrier(barriers); +} + +inline void QOpenGLFunctions_4_2_Core::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) +{ + d_4_2_Core->BindImageTexture(unit, texture, level, layered, layer, access, format); +} + +inline void QOpenGLFunctions_4_2_Core::glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) +{ + d_4_2_Core->GetActiveAtomicCounterBufferiv(program, bufferIndex, pname, params); +} + +inline void QOpenGLFunctions_4_2_Core::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) +{ + d_4_2_Core->GetInternalformativ(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) +{ + d_4_2_Core->DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->DrawTransformFeedbackInstanced(mode, id, instancecount); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) +{ + d_4_2_Core->DrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->DrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); +} + +inline void QOpenGLFunctions_4_2_Core::glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->DrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_4_3_compatibility.cpp b/src/gui/opengl/qopenglfunctions_4_3_compatibility.cpp new file mode 100644 index 0000000000..75bcef1562 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_3_compatibility.cpp @@ -0,0 +1,415 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_4_3_compatibility.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_4_3_Compatibility + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_4_3_Compatibility class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_4_3_Compatibility::QOpenGLFunctions_4_3_Compatibility() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_3_3_Core(0) + , d_4_0_Core(0) + , d_4_1_Core(0) + , d_4_2_Core(0) + , d_4_3_Core(0) + , d_1_0_Deprecated(0) + , d_1_1_Deprecated(0) + , d_1_2_Deprecated(0) + , d_1_3_Deprecated(0) + , d_1_4_Deprecated(0) + , d_2_0_Deprecated(0) + , d_3_0_Deprecated(0) +{ +} + +QOpenGLFunctions_4_3_Compatibility::~QOpenGLFunctions_4_3_Compatibility() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_3_3_Core && !d_3_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + delete d_3_3_Core; + } + if (d_4_0_Core && !d_4_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_0_Core->context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + delete d_4_0_Core; + } + if (d_4_1_Core && !d_4_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_1_Core->context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + delete d_4_1_Core; + } + if (d_4_2_Core && !d_4_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_2_Core->context, QOpenGLFunctions_4_2_CoreBackend::versionStatus()); + delete d_4_2_Core; + } + if (d_4_3_Core && !d_4_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_3_Core->context, QOpenGLFunctions_4_3_CoreBackend::versionStatus()); + delete d_4_3_Core; + } + if (d_1_0_Deprecated && !d_1_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Deprecated->context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + delete d_1_0_Deprecated; + } + if (d_1_1_Deprecated && !d_1_1_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Deprecated->context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + delete d_1_1_Deprecated; + } + if (d_1_2_Deprecated && !d_1_2_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Deprecated->context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + delete d_1_2_Deprecated; + } + if (d_1_3_Deprecated && !d_1_3_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Deprecated->context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + delete d_1_3_Deprecated; + } + if (d_1_4_Deprecated && !d_1_4_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Deprecated->context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + delete d_1_4_Deprecated; + } + if (d_2_0_Deprecated && !d_2_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Deprecated->context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + delete d_2_0_Deprecated; + } + if (d_3_0_Deprecated && !d_3_0_Deprecated->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Deprecated->context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + delete d_3_0_Deprecated; + } +} + +bool QOpenGLFunctions_4_3_Compatibility::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_4_3_Compatibility::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d); + } + d_3_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus(), d); + } + d_4_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus(), d); + } + d_4_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_2_CoreBackend::versionStatus(), d); + } + d_4_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_3_CoreBackend::versionStatus(), d); + } + d_4_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus(), d); + } + d_1_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus(), d); + } + d_1_1_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus(), d); + } + d_1_2_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus(), d); + } + d_1_3_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus(), d); + } + d_1_4_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus(), d); + } + d_2_0_Deprecated = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_DeprecatedBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus(), d); + } + d_3_0_Deprecated = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_4_3_Compatibility::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(4, 3)) + return false; + + if (f.profile() == QSurfaceFormat::CoreProfile) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_4_3_Compatibility::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(4, 3); + v.setProfile(QSurfaceFormat::CompatibilityProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_4_3_compatibility.h b/src/gui/opengl/qopenglfunctions_4_3_compatibility.h new file mode 100644 index 0000000000..0dcf16e503 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_3_compatibility.h @@ -0,0 +1,5843 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_4_3_COMPATIBILITY_H +#define QOPENGLVERSIONFUNCTIONS_4_3_COMPATIBILITY_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_4_3_Compatibility : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_3_Compatibility(); + ~QOpenGLFunctions_4_3_Compatibility(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 3.3 core functions + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + + // OpenGL 4.0 core functions + void glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params); + void glEndQueryIndexed(GLenum target, GLuint index); + void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + void glDrawTransformFeedback(GLenum mode, GLuint id); + void glResumeTransformFeedback(); + void glPauseTransformFeedback(); + GLboolean glIsTransformFeedback(GLuint id); + void glGenTransformFeedbacks(GLsizei n, GLuint *ids); + void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); + void glBindTransformFeedback(GLenum target, GLuint id); + void glPatchParameterfv(GLenum pname, const GLfloat *values); + void glPatchParameteri(GLenum pname, GLint value); + void glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params); + void glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices); + void glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name); + GLint glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name); + void glGetUniformdv(GLuint program, GLint location, GLdouble *params); + void glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniform4dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform3dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform2dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform1dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + void glUniform2d(GLint location, GLdouble x, GLdouble y); + void glUniform1d(GLint location, GLdouble x); + void glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect); + void glDrawArraysIndirect(GLenum mode, const GLvoid *indirect); + void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBlendFunci(GLuint buf, GLenum src, GLenum dst); + void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void glBlendEquationi(GLuint buf, GLenum mode); + void glMinSampleShading(GLfloat value); + + // OpenGL 4.1 core functions + void glGetDoublei_v(GLenum target, GLuint index, GLdouble *data); + void glGetFloati_v(GLenum target, GLuint index, GLfloat *data); + void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); + void glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v); + void glScissorIndexedv(GLuint index, const GLint *v); + void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + void glScissorArrayv(GLuint first, GLsizei count, const GLint *v); + void glViewportIndexedfv(GLuint index, const GLfloat *v); + void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + void glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v); + void glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params); + void glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glVertexAttribL4dv(GLuint index, const GLdouble *v); + void glVertexAttribL3dv(GLuint index, const GLdouble *v); + void glVertexAttribL2dv(GLuint index, const GLdouble *v); + void glVertexAttribL1dv(GLuint index, const GLdouble *v); + void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttribL1d(GLuint index, GLdouble x); + void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glValidateProgramPipeline(GLuint pipeline); + void glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); + void glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); + void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); + void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); + void glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform1d(GLuint program, GLint location, GLdouble v0); + void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); + void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform1i(GLuint program, GLint location, GLint v0); + void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params); + GLboolean glIsProgramPipeline(GLuint pipeline); + void glGenProgramPipelines(GLsizei n, GLuint *pipelines); + void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines); + void glBindProgramPipeline(GLuint pipeline); + GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings); + void glActiveShaderProgram(GLuint pipeline, GLuint program); + void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + void glProgramParameteri(GLuint program, GLenum pname, GLint value); + void glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); + void glClearDepthf(GLfloat dd); + void glDepthRangef(GLfloat n, GLfloat f); + void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); + void glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); + void glReleaseShaderCompiler(); + + // OpenGL 4.2 core functions + void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + void glMemoryBarrier(GLbitfield barriers); + void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); + void glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); + void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); + void glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + void glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); + void glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); + void glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); + + // OpenGL 4.3 core functions + void glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); + GLint glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name); + GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name); + void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); + void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); + GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name); + void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params); + void glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); + void glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); + void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); + void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments); + void glInvalidateBufferData(GLuint buffer); + void glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length); + void glInvalidateTexImage(GLuint texture, GLint level); + void glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); + void glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); + void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glFramebufferParameteri(GLenum target, GLenum pname, GLint param); + void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor); + void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex); + void glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + void glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); + void glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); + void glDispatchComputeIndirect(GLintptr indirect); + void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + void glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + void glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); + + // OpenGL 1.0 deprecated functions + void glTranslatef(GLfloat x, GLfloat y, GLfloat z); + void glTranslated(GLdouble x, GLdouble y, GLdouble z); + void glScalef(GLfloat x, GLfloat y, GLfloat z); + void glScaled(GLdouble x, GLdouble y, GLdouble z); + void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glPushMatrix(); + void glPopMatrix(); + void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMultMatrixd(const GLdouble *m); + void glMultMatrixf(const GLfloat *m); + void glMatrixMode(GLenum mode); + void glLoadMatrixd(const GLdouble *m); + void glLoadMatrixf(const GLfloat *m); + void glLoadIdentity(); + void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean glIsList(GLuint list); + void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); + void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params); + void glGetTexEnviv(GLenum target, GLenum pname, GLint *params); + void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params); + void glGetPolygonStipple(GLubyte *mask); + void glGetPixelMapusv(GLenum map, GLushort *values); + void glGetPixelMapuiv(GLenum map, GLuint *values); + void glGetPixelMapfv(GLenum map, GLfloat *values); + void glGetMaterialiv(GLenum face, GLenum pname, GLint *params); + void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params); + void glGetMapiv(GLenum target, GLenum query, GLint *v); + void glGetMapfv(GLenum target, GLenum query, GLfloat *v); + void glGetMapdv(GLenum target, GLenum query, GLdouble *v); + void glGetLightiv(GLenum light, GLenum pname, GLint *params); + void glGetLightfv(GLenum light, GLenum pname, GLfloat *params); + void glGetClipPlane(GLenum plane, GLdouble *equation); + void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values); + void glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values); + void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); + void glPixelTransferi(GLenum pname, GLint param); + void glPixelTransferf(GLenum pname, GLfloat param); + void glPixelZoom(GLfloat xfactor, GLfloat yfactor); + void glAlphaFunc(GLenum func, GLfloat ref); + void glEvalPoint2(GLint i, GLint j); + void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void glEvalPoint1(GLint i); + void glEvalMesh1(GLenum mode, GLint i1, GLint i2); + void glEvalCoord2fv(const GLfloat *u); + void glEvalCoord2f(GLfloat u, GLfloat v); + void glEvalCoord2dv(const GLdouble *u); + void glEvalCoord2d(GLdouble u, GLdouble v); + void glEvalCoord1fv(const GLfloat *u); + void glEvalCoord1f(GLfloat u); + void glEvalCoord1dv(const GLdouble *u); + void glEvalCoord1d(GLdouble u); + void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void glPushAttrib(GLbitfield mask); + void glPopAttrib(); + void glAccum(GLenum op, GLfloat value); + void glIndexMask(GLuint mask); + void glClearIndex(GLfloat c); + void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glPushName(GLuint name); + void glPopName(); + void glPassThrough(GLfloat token); + void glLoadName(GLuint name); + void glInitNames(); + GLint glRenderMode(GLenum mode); + void glSelectBuffer(GLsizei size, GLuint *buffer); + void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer); + void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); + void glTexGeni(GLenum coord, GLenum pname, GLint param); + void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + void glTexGenf(GLenum coord, GLenum pname, GLfloat param); + void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params); + void glTexGend(GLenum coord, GLenum pname, GLdouble param); + void glTexEnviv(GLenum target, GLenum pname, const GLint *params); + void glTexEnvi(GLenum target, GLenum pname, GLint param); + void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexEnvf(GLenum target, GLenum pname, GLfloat param); + void glShadeModel(GLenum mode); + void glPolygonStipple(const GLubyte *mask); + void glMaterialiv(GLenum face, GLenum pname, const GLint *params); + void glMateriali(GLenum face, GLenum pname, GLint param); + void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); + void glMaterialf(GLenum face, GLenum pname, GLfloat param); + void glLineStipple(GLint factor, GLushort pattern); + void glLightModeliv(GLenum pname, const GLint *params); + void glLightModeli(GLenum pname, GLint param); + void glLightModelfv(GLenum pname, const GLfloat *params); + void glLightModelf(GLenum pname, GLfloat param); + void glLightiv(GLenum light, GLenum pname, const GLint *params); + void glLighti(GLenum light, GLenum pname, GLint param); + void glLightfv(GLenum light, GLenum pname, const GLfloat *params); + void glLightf(GLenum light, GLenum pname, GLfloat param); + void glFogiv(GLenum pname, const GLint *params); + void glFogi(GLenum pname, GLint param); + void glFogfv(GLenum pname, const GLfloat *params); + void glFogf(GLenum pname, GLfloat param); + void glColorMaterial(GLenum face, GLenum mode); + void glClipPlane(GLenum plane, const GLdouble *equation); + void glVertex4sv(const GLshort *v); + void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glVertex4iv(const GLint *v); + void glVertex4i(GLint x, GLint y, GLint z, GLint w); + void glVertex4fv(const GLfloat *v); + void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertex4dv(const GLdouble *v); + void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertex3sv(const GLshort *v); + void glVertex3s(GLshort x, GLshort y, GLshort z); + void glVertex3iv(const GLint *v); + void glVertex3i(GLint x, GLint y, GLint z); + void glVertex3fv(const GLfloat *v); + void glVertex3f(GLfloat x, GLfloat y, GLfloat z); + void glVertex3dv(const GLdouble *v); + void glVertex3d(GLdouble x, GLdouble y, GLdouble z); + void glVertex2sv(const GLshort *v); + void glVertex2s(GLshort x, GLshort y); + void glVertex2iv(const GLint *v); + void glVertex2i(GLint x, GLint y); + void glVertex2fv(const GLfloat *v); + void glVertex2f(GLfloat x, GLfloat y); + void glVertex2dv(const GLdouble *v); + void glVertex2d(GLdouble x, GLdouble y); + void glTexCoord4sv(const GLshort *v); + void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + void glTexCoord4iv(const GLint *v); + void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + void glTexCoord4fv(const GLfloat *v); + void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glTexCoord4dv(const GLdouble *v); + void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glTexCoord3sv(const GLshort *v); + void glTexCoord3s(GLshort s, GLshort t, GLshort r); + void glTexCoord3iv(const GLint *v); + void glTexCoord3i(GLint s, GLint t, GLint r); + void glTexCoord3fv(const GLfloat *v); + void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + void glTexCoord3dv(const GLdouble *v); + void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + void glTexCoord2sv(const GLshort *v); + void glTexCoord2s(GLshort s, GLshort t); + void glTexCoord2iv(const GLint *v); + void glTexCoord2i(GLint s, GLint t); + void glTexCoord2fv(const GLfloat *v); + void glTexCoord2f(GLfloat s, GLfloat t); + void glTexCoord2dv(const GLdouble *v); + void glTexCoord2d(GLdouble s, GLdouble t); + void glTexCoord1sv(const GLshort *v); + void glTexCoord1s(GLshort s); + void glTexCoord1iv(const GLint *v); + void glTexCoord1i(GLint s); + void glTexCoord1fv(const GLfloat *v); + void glTexCoord1f(GLfloat s); + void glTexCoord1dv(const GLdouble *v); + void glTexCoord1d(GLdouble s); + void glRectsv(const GLshort *v1, const GLshort *v2); + void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void glRectiv(const GLint *v1, const GLint *v2); + void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + void glRectfv(const GLfloat *v1, const GLfloat *v2); + void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void glRectdv(const GLdouble *v1, const GLdouble *v2); + void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void glRasterPos4sv(const GLshort *v); + void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + void glRasterPos4iv(const GLint *v); + void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + void glRasterPos4fv(const GLfloat *v); + void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glRasterPos4dv(const GLdouble *v); + void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glRasterPos3sv(const GLshort *v); + void glRasterPos3s(GLshort x, GLshort y, GLshort z); + void glRasterPos3iv(const GLint *v); + void glRasterPos3i(GLint x, GLint y, GLint z); + void glRasterPos3fv(const GLfloat *v); + void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + void glRasterPos3dv(const GLdouble *v); + void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + void glRasterPos2sv(const GLshort *v); + void glRasterPos2s(GLshort x, GLshort y); + void glRasterPos2iv(const GLint *v); + void glRasterPos2i(GLint x, GLint y); + void glRasterPos2fv(const GLfloat *v); + void glRasterPos2f(GLfloat x, GLfloat y); + void glRasterPos2dv(const GLdouble *v); + void glRasterPos2d(GLdouble x, GLdouble y); + void glNormal3sv(const GLshort *v); + void glNormal3s(GLshort nx, GLshort ny, GLshort nz); + void glNormal3iv(const GLint *v); + void glNormal3i(GLint nx, GLint ny, GLint nz); + void glNormal3fv(const GLfloat *v); + void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + void glNormal3dv(const GLdouble *v); + void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + void glNormal3bv(const GLbyte *v); + void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + void glIndexsv(const GLshort *c); + void glIndexs(GLshort c); + void glIndexiv(const GLint *c); + void glIndexi(GLint c); + void glIndexfv(const GLfloat *c); + void glIndexf(GLfloat c); + void glIndexdv(const GLdouble *c); + void glIndexd(GLdouble c); + void glEnd(); + void glEdgeFlagv(const GLboolean *flag); + void glEdgeFlag(GLboolean flag); + void glColor4usv(const GLushort *v); + void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void glColor4uiv(const GLuint *v); + void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glColor4ubv(const GLubyte *v); + void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void glColor4sv(const GLshort *v); + void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void glColor4iv(const GLint *v); + void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + void glColor4fv(const GLfloat *v); + void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glColor4dv(const GLdouble *v); + void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void glColor4bv(const GLbyte *v); + void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void glColor3usv(const GLushort *v); + void glColor3us(GLushort red, GLushort green, GLushort blue); + void glColor3uiv(const GLuint *v); + void glColor3ui(GLuint red, GLuint green, GLuint blue); + void glColor3ubv(const GLubyte *v); + void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glColor3sv(const GLshort *v); + void glColor3s(GLshort red, GLshort green, GLshort blue); + void glColor3iv(const GLint *v); + void glColor3i(GLint red, GLint green, GLint blue); + void glColor3fv(const GLfloat *v); + void glColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glColor3dv(const GLdouble *v); + void glColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glColor3bv(const GLbyte *v); + void glColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void glBegin(GLenum mode); + void glListBase(GLuint base); + GLuint glGenLists(GLsizei range); + void glDeleteLists(GLuint list, GLsizei range); + void glCallLists(GLsizei n, GLenum type, const GLvoid *lists); + void glCallList(GLuint list); + void glEndList(); + void glNewList(GLuint list, GLenum mode); + + // OpenGL 1.1 deprecated functions + void glPushClientAttrib(GLbitfield mask); + void glPopClientAttrib(); + void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); + void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); + void glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glEnableClientState(GLenum array); + void glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer); + void glDisableClientState(GLenum array); + void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glArrayElement(GLint i); + + // OpenGL 1.2 deprecated functions + void glResetMinmax(GLenum target); + void glResetHistogram(GLenum target); + void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + + // OpenGL 1.3 deprecated functions + void glMultTransposeMatrixd(const GLdouble *m); + void glMultTransposeMatrixf(const GLfloat *m); + void glLoadTransposeMatrixd(const GLdouble *m); + void glLoadTransposeMatrixf(const GLfloat *m); + void glMultiTexCoord4sv(GLenum target, const GLshort *v); + void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4iv(GLenum target, const GLint *v); + void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fv(GLenum target, const GLfloat *v); + void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dv(GLenum target, const GLdouble *v); + void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3sv(GLenum target, const GLshort *v); + void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3iv(GLenum target, const GLint *v); + void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fv(GLenum target, const GLfloat *v); + void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dv(GLenum target, const GLdouble *v); + void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2sv(GLenum target, const GLshort *v); + void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2iv(GLenum target, const GLint *v); + void glMultiTexCoord2i(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fv(GLenum target, const GLfloat *v); + void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dv(GLenum target, const GLdouble *v); + void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1sv(GLenum target, const GLshort *v); + void glMultiTexCoord1s(GLenum target, GLshort s); + void glMultiTexCoord1iv(GLenum target, const GLint *v); + void glMultiTexCoord1i(GLenum target, GLint s); + void glMultiTexCoord1fv(GLenum target, const GLfloat *v); + void glMultiTexCoord1f(GLenum target, GLfloat s); + void glMultiTexCoord1dv(GLenum target, const GLdouble *v); + void glMultiTexCoord1d(GLenum target, GLdouble s); + void glClientActiveTexture(GLenum texture); + + // OpenGL 1.4 deprecated functions + void glWindowPos3sv(const GLshort *v); + void glWindowPos3s(GLshort x, GLshort y, GLshort z); + void glWindowPos3iv(const GLint *v); + void glWindowPos3i(GLint x, GLint y, GLint z); + void glWindowPos3fv(const GLfloat *v); + void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dv(const GLdouble *v); + void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2sv(const GLshort *v); + void glWindowPos2s(GLshort x, GLshort y); + void glWindowPos2iv(const GLint *v); + void glWindowPos2i(GLint x, GLint y); + void glWindowPos2fv(const GLfloat *v); + void glWindowPos2f(GLfloat x, GLfloat y); + void glWindowPos2dv(const GLdouble *v); + void glWindowPos2d(GLdouble x, GLdouble y); + void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usv(const GLushort *v); + void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uiv(const GLuint *v); + void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubv(const GLubyte *v); + void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3sv(const GLshort *v); + void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3iv(const GLint *v); + void glSecondaryColor3i(GLint red, GLint green, GLint blue); + void glSecondaryColor3fv(const GLfloat *v); + void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dv(const GLdouble *v); + void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bv(const GLbyte *v); + void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + void glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddv(const GLdouble *coord); + void glFogCoordd(GLdouble coord); + void glFogCoordfv(const GLfloat *coord); + void glFogCoordf(GLfloat coord); + + // OpenGL 1.5 deprecated functions + + // OpenGL 2.0 deprecated functions + void glVertexAttrib4usv(GLuint index, const GLushort *v); + void glVertexAttrib4uiv(GLuint index, const GLuint *v); + void glVertexAttrib4ubv(GLuint index, const GLubyte *v); + void glVertexAttrib4sv(GLuint index, const GLshort *v); + void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4iv(GLuint index, const GLint *v); + void glVertexAttrib4fv(GLuint index, const GLfloat *v); + void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dv(GLuint index, const GLdouble *v); + void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib4bv(GLuint index, const GLbyte *v); + void glVertexAttrib4Nusv(GLuint index, const GLushort *v); + void glVertexAttrib4Nuiv(GLuint index, const GLuint *v); + void glVertexAttrib4Nubv(GLuint index, const GLubyte *v); + void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4Nsv(GLuint index, const GLshort *v); + void glVertexAttrib4Niv(GLuint index, const GLint *v); + void glVertexAttrib4Nbv(GLuint index, const GLbyte *v); + void glVertexAttrib3sv(GLuint index, const GLshort *v); + void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fv(GLuint index, const GLfloat *v); + void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dv(GLuint index, const GLdouble *v); + void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2sv(GLuint index, const GLshort *v); + void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fv(GLuint index, const GLfloat *v); + void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dv(GLuint index, const GLdouble *v); + void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1sv(GLuint index, const GLshort *v); + void glVertexAttrib1s(GLuint index, GLshort x); + void glVertexAttrib1fv(GLuint index, const GLfloat *v); + void glVertexAttrib1f(GLuint index, GLfloat x); + void glVertexAttrib1dv(GLuint index, const GLdouble *v); + void glVertexAttrib1d(GLuint index, GLdouble x); + + // OpenGL 2.1 deprecated functions + + // OpenGL 3.0 deprecated functions + void glVertexAttribI4usv(GLuint index, const GLushort *v); + void glVertexAttribI4ubv(GLuint index, const GLubyte *v); + void glVertexAttribI4sv(GLuint index, const GLshort *v); + void glVertexAttribI4bv(GLuint index, const GLbyte *v); + void glVertexAttribI4uiv(GLuint index, const GLuint *v); + void glVertexAttribI3uiv(GLuint index, const GLuint *v); + void glVertexAttribI2uiv(GLuint index, const GLuint *v); + void glVertexAttribI1uiv(GLuint index, const GLuint *v); + void glVertexAttribI4iv(GLuint index, const GLint *v); + void glVertexAttribI3iv(GLuint index, const GLint *v); + void glVertexAttribI2iv(GLuint index, const GLint *v); + void glVertexAttribI1iv(GLuint index, const GLint *v); + void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z); + void glVertexAttribI2ui(GLuint index, GLuint x, GLuint y); + void glVertexAttribI1ui(GLuint index, GLuint x); + void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + void glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z); + void glVertexAttribI2i(GLuint index, GLint x, GLint y); + void glVertexAttribI1i(GLuint index, GLint x); + + // OpenGL 3.1 deprecated functions + + // OpenGL 3.2 deprecated functions + + // OpenGL 3.3 deprecated functions + + // OpenGL 4.0 deprecated functions + + // OpenGL 4.1 deprecated functions + + // OpenGL 4.2 deprecated functions + + // OpenGL 4.3 deprecated functions + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_3_3_CoreBackend* d_3_3_Core; + QOpenGLFunctions_4_0_CoreBackend* d_4_0_Core; + QOpenGLFunctions_4_1_CoreBackend* d_4_1_Core; + QOpenGLFunctions_4_2_CoreBackend* d_4_2_Core; + QOpenGLFunctions_4_3_CoreBackend* d_4_3_Core; + QOpenGLFunctions_1_0_DeprecatedBackend* d_1_0_Deprecated; + QOpenGLFunctions_1_1_DeprecatedBackend* d_1_1_Deprecated; + QOpenGLFunctions_1_2_DeprecatedBackend* d_1_2_Deprecated; + QOpenGLFunctions_1_3_DeprecatedBackend* d_1_3_Deprecated; + QOpenGLFunctions_1_4_DeprecatedBackend* d_1_4_Deprecated; + QOpenGLFunctions_2_0_DeprecatedBackend* d_2_0_Deprecated; + QOpenGLFunctions_3_0_DeprecatedBackend* d_3_0_Deprecated; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_3_Compatibility::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_3_Compatibility::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_3_Compatibility::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_3_Compatibility::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_3_Compatibility::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_3_Compatibility::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_3_Compatibility::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_3_Compatibility::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->VertexAttribDivisor(index, divisor); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glResumeTransformFeedback() +{ + d_4_0_Core->ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPauseTransformFeedback() +{ + d_4_0_Core->PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->MinSampleShading(value); +} + + +// OpenGL 4.1 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + d_4_1_Core->GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_4_1_Core->VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_1_Core->VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_4_1_Core->ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + d_4_1_Core->ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_4_1_Core->ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_4_1_Core->ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_4_1_Core->ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + d_4_1_Core->ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_4_1_Core->ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + d_4_1_Core->ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) +{ + d_4_1_Core->GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glReleaseShaderCompiler() +{ + d_4_1_Core->ReleaseShaderCompiler(); +} + + +// OpenGL 4.2 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_2_Core->TexStorage3D(target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_2_Core->TexStorage2D(target, levels, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + d_4_2_Core->TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->MemoryBarrier(barriers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) +{ + d_4_2_Core->BindImageTexture(unit, texture, level, layered, layer, access, format); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) +{ + d_4_2_Core->GetActiveAtomicCounterBufferiv(program, bufferIndex, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) +{ + d_4_2_Core->GetInternalformativ(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) +{ + d_4_2_Core->DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->DrawTransformFeedbackInstanced(mode, id, instancecount); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) +{ + d_4_2_Core->DrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->DrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->DrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); +} + + +// OpenGL 4.3 core functions +inline void QOpenGLFunctions_4_3_Compatibility::glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_4_3_Core->TexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_4_3_Core->TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_4_3_Core->TexBufferRange(target, internalformat, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) +{ + d_4_3_Core->ShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->GetProgramResourceLocationIndex(program, programInterface, name); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->GetProgramResourceLocation(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params) +{ + d_4_3_Core->GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name) +{ + d_4_3_Core->GetProgramResourceName(program, programInterface, index, bufSize, length, name); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->GetProgramResourceIndex(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) +{ + d_4_3_Core->GetProgramInterfaceiv(program, programInterface, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->MultiDrawElementsIndirect(mode, type, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->MultiDrawArraysIndirect(mode, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_3_Core->InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments) +{ + d_4_3_Core->InvalidateFramebuffer(target, numAttachments, attachments); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInvalidateBufferData(GLuint buffer) +{ + d_4_3_Core->InvalidateBufferData(buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) +{ + d_4_3_Core->InvalidateBufferSubData(buffer, offset, length); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInvalidateTexImage(GLuint texture, GLint level) +{ + d_4_3_Core->InvalidateTexImage(texture, level); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_3_Core->InvalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params) +{ + d_4_3_Core->GetInternalformati64v(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_4_3_Core->GetFramebufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + d_4_3_Core->FramebufferParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) +{ + d_4_3_Core->VertexBindingDivisor(bindingindex, divisor); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) +{ + d_4_3_Core->VertexAttribBinding(attribindex, bindingindex); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->VertexAttribLFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->VertexAttribIFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + d_4_3_Core->VertexAttribFormat(attribindex, size, type, normalized, relativeoffset); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + d_4_3_Core->BindVertexBuffer(bindingindex, buffer, offset, stride); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) +{ + d_4_3_Core->TextureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) +{ + d_4_3_Core->CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDispatchComputeIndirect(GLintptr indirect) +{ + d_4_3_Core->DispatchComputeIndirect(indirect); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) +{ + d_4_3_Core->DispatchCompute(num_groups_x, num_groups_y, num_groups_z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->ClearBufferSubData(target, internalformat, offset, size, format, type, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->ClearBufferData(target, internalformat, format, type, data); +} + + +// OpenGL 1.0 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glTranslatef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Translatef(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTranslated(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Translated(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScalef(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Scalef(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glScaled(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Scaled(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Rotatef(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Rotated(angle, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPushMatrix() +{ + d_1_0_Deprecated->PushMatrix(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPopMatrix() +{ + d_1_0_Deprecated->PopMatrix(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Ortho(left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->MultMatrixd(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->MultMatrixf(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMatrixMode(GLenum mode) +{ + d_1_0_Deprecated->MatrixMode(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadMatrixd(const GLdouble *m) +{ + d_1_0_Deprecated->LoadMatrixd(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadMatrixf(const GLfloat *m) +{ + d_1_0_Deprecated->LoadMatrixf(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadIdentity() +{ + d_1_0_Deprecated->LoadIdentity(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + d_1_0_Deprecated->Frustum(left, right, bottom, top, zNear, zFar); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glIsList(GLuint list) +{ + return d_1_0_Deprecated->IsList(list); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexGeniv(GLenum coord, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) +{ + d_1_0_Deprecated->GetTexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexEnviv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetTexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetTexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetPolygonStipple(GLubyte *mask) +{ + d_1_0_Deprecated->GetPolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetPixelMapusv(GLenum map, GLushort *values) +{ + d_1_0_Deprecated->GetPixelMapusv(map, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetPixelMapuiv(GLenum map, GLuint *values) +{ + d_1_0_Deprecated->GetPixelMapuiv(map, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetPixelMapfv(GLenum map, GLfloat *values) +{ + d_1_0_Deprecated->GetPixelMapfv(map, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMaterialiv(GLenum face, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetMaterialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetMaterialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMapiv(GLenum target, GLenum query, GLint *v) +{ + d_1_0_Deprecated->GetMapiv(target, query, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMapfv(GLenum target, GLenum query, GLfloat *v) +{ + d_1_0_Deprecated->GetMapfv(target, query, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMapdv(GLenum target, GLenum query, GLdouble *v) +{ + d_1_0_Deprecated->GetMapdv(target, query, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetLightiv(GLenum light, GLenum pname, GLint *params) +{ + d_1_0_Deprecated->GetLightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetLightfv(GLenum light, GLenum pname, GLfloat *params) +{ + d_1_0_Deprecated->GetLightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetClipPlane(GLenum plane, GLdouble *equation) +{ + d_1_0_Deprecated->GetClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Deprecated->DrawPixels(width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) +{ + d_1_0_Deprecated->CopyPixels(x, y, width, height, type); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values) +{ + d_1_0_Deprecated->PixelMapusv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values) +{ + d_1_0_Deprecated->PixelMapuiv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values) +{ + d_1_0_Deprecated->PixelMapfv(map, mapsize, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelTransferi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->PixelTransferi(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelTransferf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->PixelTransferf(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPixelZoom(GLfloat xfactor, GLfloat yfactor) +{ + d_1_0_Deprecated->PixelZoom(xfactor, yfactor); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glAlphaFunc(GLenum func, GLfloat ref) +{ + d_1_0_Deprecated->AlphaFunc(func, ref); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalPoint2(GLint i, GLint j) +{ + d_1_0_Deprecated->EvalPoint2(i, j); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) +{ + d_1_0_Deprecated->EvalMesh2(mode, i1, i2, j1, j2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalPoint1(GLint i) +{ + d_1_0_Deprecated->EvalPoint1(i); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalMesh1(GLenum mode, GLint i1, GLint i2) +{ + d_1_0_Deprecated->EvalMesh1(mode, i1, i2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord2fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord2fv(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord2f(GLfloat u, GLfloat v) +{ + d_1_0_Deprecated->EvalCoord2f(u, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord2dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord2dv(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord2d(GLdouble u, GLdouble v) +{ + d_1_0_Deprecated->EvalCoord2d(u, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord1fv(const GLfloat *u) +{ + d_1_0_Deprecated->EvalCoord1fv(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord1f(GLfloat u) +{ + d_1_0_Deprecated->EvalCoord1f(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord1dv(const GLdouble *u) +{ + d_1_0_Deprecated->EvalCoord1dv(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEvalCoord1d(GLdouble u) +{ + d_1_0_Deprecated->EvalCoord1d(u); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) +{ + d_1_0_Deprecated->MapGrid2f(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) +{ + d_1_0_Deprecated->MapGrid2d(un, u1, u2, vn, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMapGrid1f(GLint un, GLfloat u1, GLfloat u2) +{ + d_1_0_Deprecated->MapGrid1f(un, u1, u2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMapGrid1d(GLint un, GLdouble u1, GLdouble u2) +{ + d_1_0_Deprecated->MapGrid1d(un, u1, u2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + d_1_0_Deprecated->Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + d_1_0_Deprecated->Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + d_1_0_Deprecated->Map1f(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + d_1_0_Deprecated->Map1d(target, u1, u2, stride, order, points); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPushAttrib(GLbitfield mask) +{ + d_1_0_Deprecated->PushAttrib(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPopAttrib() +{ + d_1_0_Deprecated->PopAttrib(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glAccum(GLenum op, GLfloat value) +{ + d_1_0_Deprecated->Accum(op, value); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexMask(GLuint mask) +{ + d_1_0_Deprecated->IndexMask(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearIndex(GLfloat c) +{ + d_1_0_Deprecated->ClearIndex(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->ClearAccum(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPushName(GLuint name) +{ + d_1_0_Deprecated->PushName(name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPopName() +{ + d_1_0_Deprecated->PopName(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPassThrough(GLfloat token) +{ + d_1_0_Deprecated->PassThrough(token); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadName(GLuint name) +{ + d_1_0_Deprecated->LoadName(name); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInitNames() +{ + d_1_0_Deprecated->InitNames(); +} + +inline GLint QOpenGLFunctions_4_3_Compatibility::glRenderMode(GLenum mode) +{ + return d_1_0_Deprecated->RenderMode(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSelectBuffer(GLsizei size, GLuint *buffer) +{ + d_1_0_Deprecated->SelectBuffer(size, buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) +{ + d_1_0_Deprecated->FeedbackBuffer(size, type, buffer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGeniv(GLenum coord, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexGeniv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGeni(GLenum coord, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexGeni(coord, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexGenfv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexGenf(coord, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGendv(GLenum coord, GLenum pname, const GLdouble *params) +{ + d_1_0_Deprecated->TexGendv(coord, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexGend(GLenum coord, GLenum pname, GLdouble param) +{ + d_1_0_Deprecated->TexGend(coord, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexEnviv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->TexEnviv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexEnvi(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Deprecated->TexEnvi(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->TexEnvfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexEnvf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->TexEnvf(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glShadeModel(GLenum mode) +{ + d_1_0_Deprecated->ShadeModel(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPolygonStipple(const GLubyte *mask) +{ + d_1_0_Deprecated->PolygonStipple(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMaterialiv(GLenum face, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Materialiv(face, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMateriali(GLenum face, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Materiali(face, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Materialfv(face, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMaterialf(GLenum face, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Materialf(face, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLineStipple(GLint factor, GLushort pattern) +{ + d_1_0_Deprecated->LineStipple(factor, pattern); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightModeliv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->LightModeliv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightModeli(GLenum pname, GLint param) +{ + d_1_0_Deprecated->LightModeli(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightModelfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->LightModelfv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightModelf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->LightModelf(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightiv(GLenum light, GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Lightiv(light, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLighti(GLenum light, GLenum pname, GLint param) +{ + d_1_0_Deprecated->Lighti(light, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightfv(GLenum light, GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Lightfv(light, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLightf(GLenum light, GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Lightf(light, pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogiv(GLenum pname, const GLint *params) +{ + d_1_0_Deprecated->Fogiv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogi(GLenum pname, GLint param) +{ + d_1_0_Deprecated->Fogi(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogfv(GLenum pname, const GLfloat *params) +{ + d_1_0_Deprecated->Fogfv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogf(GLenum pname, GLfloat param) +{ + d_1_0_Deprecated->Fogf(pname, param); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorMaterial(GLenum face, GLenum mode) +{ + d_1_0_Deprecated->ColorMaterial(face, mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClipPlane(GLenum plane, const GLdouble *equation) +{ + d_1_0_Deprecated->ClipPlane(plane, equation); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex4sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->Vertex4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex4iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->Vertex4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex4fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->Vertex4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex4dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->Vertex4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->Vertex3s(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->Vertex3i(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->Vertex3f(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->Vertex3d(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2sv(const GLshort *v) +{ + d_1_0_Deprecated->Vertex2sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->Vertex2s(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2iv(const GLint *v) +{ + d_1_0_Deprecated->Vertex2iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2i(GLint x, GLint y) +{ + d_1_0_Deprecated->Vertex2i(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2fv(const GLfloat *v) +{ + d_1_0_Deprecated->Vertex2fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->Vertex2f(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2dv(const GLdouble *v) +{ + d_1_0_Deprecated->Vertex2dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertex2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->Vertex2d(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord4sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_0_Deprecated->TexCoord4s(s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord4iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4i(GLint s, GLint t, GLint r, GLint q) +{ + d_1_0_Deprecated->TexCoord4i(s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord4fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_0_Deprecated->TexCoord4f(s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord4dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_0_Deprecated->TexCoord4d(s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3s(GLshort s, GLshort t, GLshort r) +{ + d_1_0_Deprecated->TexCoord3s(s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3i(GLint s, GLint t, GLint r) +{ + d_1_0_Deprecated->TexCoord3i(s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3f(GLfloat s, GLfloat t, GLfloat r) +{ + d_1_0_Deprecated->TexCoord3f(s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord3d(GLdouble s, GLdouble t, GLdouble r) +{ + d_1_0_Deprecated->TexCoord3d(s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord2sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2s(GLshort s, GLshort t) +{ + d_1_0_Deprecated->TexCoord2s(s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord2iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2i(GLint s, GLint t) +{ + d_1_0_Deprecated->TexCoord2i(s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord2fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2f(GLfloat s, GLfloat t) +{ + d_1_0_Deprecated->TexCoord2f(s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord2dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord2d(GLdouble s, GLdouble t) +{ + d_1_0_Deprecated->TexCoord2d(s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1sv(const GLshort *v) +{ + d_1_0_Deprecated->TexCoord1sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1s(GLshort s) +{ + d_1_0_Deprecated->TexCoord1s(s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1iv(const GLint *v) +{ + d_1_0_Deprecated->TexCoord1iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1i(GLint s) +{ + d_1_0_Deprecated->TexCoord1i(s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1fv(const GLfloat *v) +{ + d_1_0_Deprecated->TexCoord1fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1f(GLfloat s) +{ + d_1_0_Deprecated->TexCoord1f(s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1dv(const GLdouble *v) +{ + d_1_0_Deprecated->TexCoord1dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoord1d(GLdouble s) +{ + d_1_0_Deprecated->TexCoord1d(s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectsv(const GLshort *v1, const GLshort *v2) +{ + d_1_0_Deprecated->Rectsv(v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) +{ + d_1_0_Deprecated->Rects(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectiv(const GLint *v1, const GLint *v2) +{ + d_1_0_Deprecated->Rectiv(v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRecti(GLint x1, GLint y1, GLint x2, GLint y2) +{ + d_1_0_Deprecated->Recti(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectfv(const GLfloat *v1, const GLfloat *v2) +{ + d_1_0_Deprecated->Rectfv(v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) +{ + d_1_0_Deprecated->Rectf(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectdv(const GLdouble *v1, const GLdouble *v2) +{ + d_1_0_Deprecated->Rectdv(v1, v2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) +{ + d_1_0_Deprecated->Rectd(x1, y1, x2, y2); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos4sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_1_0_Deprecated->RasterPos4s(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos4iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4i(GLint x, GLint y, GLint z, GLint w) +{ + d_1_0_Deprecated->RasterPos4i(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos4fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_1_0_Deprecated->RasterPos4f(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos4dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_1_0_Deprecated->RasterPos4d(x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_0_Deprecated->RasterPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3i(GLint x, GLint y, GLint z) +{ + d_1_0_Deprecated->RasterPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_0_Deprecated->RasterPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_0_Deprecated->RasterPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2sv(const GLshort *v) +{ + d_1_0_Deprecated->RasterPos2sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2s(GLshort x, GLshort y) +{ + d_1_0_Deprecated->RasterPos2s(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2iv(const GLint *v) +{ + d_1_0_Deprecated->RasterPos2iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2i(GLint x, GLint y) +{ + d_1_0_Deprecated->RasterPos2i(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2fv(const GLfloat *v) +{ + d_1_0_Deprecated->RasterPos2fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2f(GLfloat x, GLfloat y) +{ + d_1_0_Deprecated->RasterPos2f(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2dv(const GLdouble *v) +{ + d_1_0_Deprecated->RasterPos2dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glRasterPos2d(GLdouble x, GLdouble y) +{ + d_1_0_Deprecated->RasterPos2d(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3sv(const GLshort *v) +{ + d_1_0_Deprecated->Normal3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3s(GLshort nx, GLshort ny, GLshort nz) +{ + d_1_0_Deprecated->Normal3s(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3iv(const GLint *v) +{ + d_1_0_Deprecated->Normal3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3i(GLint nx, GLint ny, GLint nz) +{ + d_1_0_Deprecated->Normal3i(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Normal3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) +{ + d_1_0_Deprecated->Normal3f(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Normal3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) +{ + d_1_0_Deprecated->Normal3d(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Normal3bv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) +{ + d_1_0_Deprecated->Normal3b(nx, ny, nz); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexsv(const GLshort *c) +{ + d_1_0_Deprecated->Indexsv(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexs(GLshort c) +{ + d_1_0_Deprecated->Indexs(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexiv(const GLint *c) +{ + d_1_0_Deprecated->Indexiv(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexi(GLint c) +{ + d_1_0_Deprecated->Indexi(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexfv(const GLfloat *c) +{ + d_1_0_Deprecated->Indexfv(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexf(GLfloat c) +{ + d_1_0_Deprecated->Indexf(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexdv(const GLdouble *c) +{ + d_1_0_Deprecated->Indexdv(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexd(GLdouble c) +{ + d_1_0_Deprecated->Indexd(c); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEnd() +{ + d_1_0_Deprecated->End(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEdgeFlagv(const GLboolean *flag) +{ + d_1_0_Deprecated->EdgeFlagv(flag); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEdgeFlag(GLboolean flag) +{ + d_1_0_Deprecated->EdgeFlag(flag); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4usv(const GLushort *v) +{ + d_1_0_Deprecated->Color4usv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) +{ + d_1_0_Deprecated->Color4us(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color4uiv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + d_1_0_Deprecated->Color4ui(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color4ubv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) +{ + d_1_0_Deprecated->Color4ub(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4sv(const GLshort *v) +{ + d_1_0_Deprecated->Color4sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) +{ + d_1_0_Deprecated->Color4s(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4iv(const GLint *v) +{ + d_1_0_Deprecated->Color4iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4i(GLint red, GLint green, GLint blue, GLint alpha) +{ + d_1_0_Deprecated->Color4i(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color4fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Deprecated->Color4f(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color4dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + d_1_0_Deprecated->Color4d(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color4bv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) +{ + d_1_0_Deprecated->Color4b(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3usv(const GLushort *v) +{ + d_1_0_Deprecated->Color3usv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_0_Deprecated->Color3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3uiv(const GLuint *v) +{ + d_1_0_Deprecated->Color3uiv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_0_Deprecated->Color3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3ubv(const GLubyte *v) +{ + d_1_0_Deprecated->Color3ubv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_0_Deprecated->Color3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3sv(const GLshort *v) +{ + d_1_0_Deprecated->Color3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_0_Deprecated->Color3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3iv(const GLint *v) +{ + d_1_0_Deprecated->Color3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3i(GLint red, GLint green, GLint blue) +{ + d_1_0_Deprecated->Color3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3fv(const GLfloat *v) +{ + d_1_0_Deprecated->Color3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_0_Deprecated->Color3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3dv(const GLdouble *v) +{ + d_1_0_Deprecated->Color3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_0_Deprecated->Color3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3bv(const GLbyte *v) +{ + d_1_0_Deprecated->Color3bv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_0_Deprecated->Color3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) +{ + d_1_0_Deprecated->Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glBegin(GLenum mode) +{ + d_1_0_Deprecated->Begin(mode); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glListBase(GLuint base) +{ + d_1_0_Deprecated->ListBase(base); +} + +inline GLuint QOpenGLFunctions_4_3_Compatibility::glGenLists(GLsizei range) +{ + return d_1_0_Deprecated->GenLists(range); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDeleteLists(GLuint list, GLsizei range) +{ + d_1_0_Deprecated->DeleteLists(list, range); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCallLists(GLsizei n, GLenum type, const GLvoid *lists) +{ + d_1_0_Deprecated->CallLists(n, type, lists); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCallList(GLuint list) +{ + d_1_0_Deprecated->CallList(list); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEndList() +{ + d_1_0_Deprecated->EndList(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNewList(GLuint list, GLenum mode) +{ + d_1_0_Deprecated->NewList(list, mode); +} + + +// OpenGL 1.1 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glPushClientAttrib(GLbitfield mask) +{ + d_1_1_Deprecated->PushClientAttrib(mask); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPopClientAttrib() +{ + d_1_1_Deprecated->PopClientAttrib(); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLfloat *priorities) +{ + d_1_1_Deprecated->PrioritizeTextures(n, textures, priorities); +} + +inline GLboolean QOpenGLFunctions_4_3_Compatibility::glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + return d_1_1_Deprecated->AreTexturesResident(n, textures, residences); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->VertexPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->TexCoordPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->NormalPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->InterleavedArrays(format, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->IndexPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEnableClientState(GLenum array) +{ + d_1_1_Deprecated->EnableClientState(array); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->EdgeFlagPointer(stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glDisableClientState(GLenum array) +{ + d_1_1_Deprecated->DisableClientState(array); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_1_Deprecated->ColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glArrayElement(GLint i) +{ + d_1_1_Deprecated->ArrayElement(i); +} + + +// OpenGL 1.2 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glResetMinmax(GLenum target) +{ + d_1_2_Deprecated->ResetMinmax(target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glResetHistogram(GLenum target) +{ + d_1_2_Deprecated->ResetHistogram(target); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMinmax(GLenum target, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Minmax(target, internalformat, sink); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + d_1_2_Deprecated->Histogram(target, width, internalformat, sink); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetMinmaxParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetMinmaxParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetMinmax(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetHistogramParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetHistogramParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + d_1_2_Deprecated->GetHistogram(target, reset, format, type, values); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + d_1_2_Deprecated->SeparableFilter2D(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + d_1_2_Deprecated->GetSeparableFilter(target, format, type, row, column, span); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + d_1_2_Deprecated->GetConvolutionFilter(target, format, type, image); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Deprecated->CopyConvolutionFilter2D(target, internalformat, x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyConvolutionFilter1D(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ConvolutionParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glConvolutionParameteri(GLenum target, GLenum pname, GLint params) +{ + d_1_2_Deprecated->ConvolutionParameteri(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ConvolutionParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) +{ + d_1_2_Deprecated->ConvolutionParameterf(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter2D(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + d_1_2_Deprecated->ConvolutionFilter1D(target, internalformat, width, format, type, image); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorSubTable(target, start, x, y, width); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + d_1_2_Deprecated->ColorSubTable(target, start, count, format, type, data); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_2_Deprecated->GetColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_2_Deprecated->GetColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + d_1_2_Deprecated->GetColorTable(target, format, type, table); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + d_1_2_Deprecated->CopyColorTable(target, internalformat, x, y, width); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_2_Deprecated->ColorTableParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_2_Deprecated->ColorTableParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + d_1_2_Deprecated->ColorTable(target, internalformat, width, format, type, table); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Deprecated->TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + + +// OpenGL 1.3 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glMultTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->MultTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->MultTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadTransposeMatrixd(const GLdouble *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixd(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glLoadTransposeMatrixf(const GLfloat *m) +{ + d_1_3_Deprecated->LoadTransposeMatrixf(m); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord4sv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + d_1_3_Deprecated->MultiTexCoord4s(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord4iv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + d_1_3_Deprecated->MultiTexCoord4i(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord4fv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + d_1_3_Deprecated->MultiTexCoord4f(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord4dv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + d_1_3_Deprecated->MultiTexCoord4d(target, s, t, r, q); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord3sv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) +{ + d_1_3_Deprecated->MultiTexCoord3s(target, s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord3iv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) +{ + d_1_3_Deprecated->MultiTexCoord3i(target, s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord3fv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + d_1_3_Deprecated->MultiTexCoord3f(target, s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord3dv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + d_1_3_Deprecated->MultiTexCoord3d(target, s, t, r); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord2sv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) +{ + d_1_3_Deprecated->MultiTexCoord2s(target, s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord2iv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2i(GLenum target, GLint s, GLint t) +{ + d_1_3_Deprecated->MultiTexCoord2i(target, s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord2fv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) +{ + d_1_3_Deprecated->MultiTexCoord2f(target, s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord2dv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) +{ + d_1_3_Deprecated->MultiTexCoord2d(target, s, t); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1sv(GLenum target, const GLshort *v) +{ + d_1_3_Deprecated->MultiTexCoord1sv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1s(GLenum target, GLshort s) +{ + d_1_3_Deprecated->MultiTexCoord1s(target, s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1iv(GLenum target, const GLint *v) +{ + d_1_3_Deprecated->MultiTexCoord1iv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1i(GLenum target, GLint s) +{ + d_1_3_Deprecated->MultiTexCoord1i(target, s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1fv(GLenum target, const GLfloat *v) +{ + d_1_3_Deprecated->MultiTexCoord1fv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1f(GLenum target, GLfloat s) +{ + d_1_3_Deprecated->MultiTexCoord1f(target, s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1dv(GLenum target, const GLdouble *v) +{ + d_1_3_Deprecated->MultiTexCoord1dv(target, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glMultiTexCoord1d(GLenum target, GLdouble s) +{ + d_1_3_Deprecated->MultiTexCoord1d(target, s); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glClientActiveTexture(GLenum texture) +{ + d_1_3_Deprecated->ClientActiveTexture(texture); +} + + +// OpenGL 1.4 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3s(GLshort x, GLshort y, GLshort z) +{ + d_1_4_Deprecated->WindowPos3s(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3i(GLint x, GLint y, GLint z) +{ + d_1_4_Deprecated->WindowPos3i(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) +{ + d_1_4_Deprecated->WindowPos3f(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) +{ + d_1_4_Deprecated->WindowPos3d(x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2sv(const GLshort *v) +{ + d_1_4_Deprecated->WindowPos2sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2s(GLshort x, GLshort y) +{ + d_1_4_Deprecated->WindowPos2s(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2iv(const GLint *v) +{ + d_1_4_Deprecated->WindowPos2iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2i(GLint x, GLint y) +{ + d_1_4_Deprecated->WindowPos2i(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2fv(const GLfloat *v) +{ + d_1_4_Deprecated->WindowPos2fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2f(GLfloat x, GLfloat y) +{ + d_1_4_Deprecated->WindowPos2f(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2dv(const GLdouble *v) +{ + d_1_4_Deprecated->WindowPos2dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glWindowPos2d(GLdouble x, GLdouble y) +{ + d_1_4_Deprecated->WindowPos2d(x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->SecondaryColorPointer(size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3usv(const GLushort *v) +{ + d_1_4_Deprecated->SecondaryColor3usv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) +{ + d_1_4_Deprecated->SecondaryColor3us(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3uiv(const GLuint *v) +{ + d_1_4_Deprecated->SecondaryColor3uiv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) +{ + d_1_4_Deprecated->SecondaryColor3ui(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3ubv(const GLubyte *v) +{ + d_1_4_Deprecated->SecondaryColor3ubv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) +{ + d_1_4_Deprecated->SecondaryColor3ub(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3sv(const GLshort *v) +{ + d_1_4_Deprecated->SecondaryColor3sv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) +{ + d_1_4_Deprecated->SecondaryColor3s(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3iv(const GLint *v) +{ + d_1_4_Deprecated->SecondaryColor3iv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3i(GLint red, GLint green, GLint blue) +{ + d_1_4_Deprecated->SecondaryColor3i(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3fv(const GLfloat *v) +{ + d_1_4_Deprecated->SecondaryColor3fv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) +{ + d_1_4_Deprecated->SecondaryColor3f(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3dv(const GLdouble *v) +{ + d_1_4_Deprecated->SecondaryColor3dv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) +{ + d_1_4_Deprecated->SecondaryColor3d(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3bv(const GLbyte *v) +{ + d_1_4_Deprecated->SecondaryColor3bv(v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) +{ + d_1_4_Deprecated->SecondaryColor3b(red, green, blue); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_1_4_Deprecated->FogCoordPointer(type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogCoorddv(const GLdouble *coord) +{ + d_1_4_Deprecated->FogCoorddv(coord); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogCoordd(GLdouble coord) +{ + d_1_4_Deprecated->FogCoordd(coord); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogCoordfv(const GLfloat *coord) +{ + d_1_4_Deprecated->FogCoordfv(coord); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glFogCoordf(GLfloat coord) +{ + d_1_4_Deprecated->FogCoordf(coord); +} + + +// OpenGL 1.5 deprecated functions + +// OpenGL 2.0 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4usv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4usv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4uiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4uiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4ubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4ubv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4sv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + d_2_0_Deprecated->VertexAttrib4s(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4iv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4iv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib4fv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + d_2_0_Deprecated->VertexAttrib4f(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib4dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_2_0_Deprecated->VertexAttrib4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4bv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4bv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nusv(GLuint index, const GLushort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nusv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nuiv(GLuint index, const GLuint *v) +{ + d_2_0_Deprecated->VertexAttrib4Nuiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nubv(GLuint index, const GLubyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nubv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + d_2_0_Deprecated->VertexAttrib4Nub(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nsv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib4Nsv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Niv(GLuint index, const GLint *v) +{ + d_2_0_Deprecated->VertexAttrib4Niv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib4Nbv(GLuint index, const GLbyte *v) +{ + d_2_0_Deprecated->VertexAttrib4Nbv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib3sv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) +{ + d_2_0_Deprecated->VertexAttrib3s(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib3fv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + d_2_0_Deprecated->VertexAttrib3f(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib3dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_2_0_Deprecated->VertexAttrib3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib2sv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2s(GLuint index, GLshort x, GLshort y) +{ + d_2_0_Deprecated->VertexAttrib2s(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib2fv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) +{ + d_2_0_Deprecated->VertexAttrib2f(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib2dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) +{ + d_2_0_Deprecated->VertexAttrib2d(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1sv(GLuint index, const GLshort *v) +{ + d_2_0_Deprecated->VertexAttrib1sv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1s(GLuint index, GLshort x) +{ + d_2_0_Deprecated->VertexAttrib1s(index, x); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1fv(GLuint index, const GLfloat *v) +{ + d_2_0_Deprecated->VertexAttrib1fv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1f(GLuint index, GLfloat x) +{ + d_2_0_Deprecated->VertexAttrib1f(index, x); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1dv(GLuint index, const GLdouble *v) +{ + d_2_0_Deprecated->VertexAttrib1dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttrib1d(GLuint index, GLdouble x) +{ + d_2_0_Deprecated->VertexAttrib1d(index, x); +} + + +// OpenGL 2.1 deprecated functions + +// OpenGL 3.0 deprecated functions +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4usv(GLuint index, const GLushort *v) +{ + d_3_0_Deprecated->VertexAttribI4usv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4ubv(GLuint index, const GLubyte *v) +{ + d_3_0_Deprecated->VertexAttribI4ubv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4sv(GLuint index, const GLshort *v) +{ + d_3_0_Deprecated->VertexAttribI4sv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4bv(GLuint index, const GLbyte *v) +{ + d_3_0_Deprecated->VertexAttribI4bv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI4uiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI3uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI3uiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI2uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI2uiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI1uiv(GLuint index, const GLuint *v) +{ + d_3_0_Deprecated->VertexAttribI1uiv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI4iv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI3iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI3iv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI2iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI2iv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI1iv(GLuint index, const GLint *v) +{ + d_3_0_Deprecated->VertexAttribI1iv(index, v); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + d_3_0_Deprecated->VertexAttribI4ui(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) +{ + d_3_0_Deprecated->VertexAttribI3ui(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) +{ + d_3_0_Deprecated->VertexAttribI2ui(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI1ui(GLuint index, GLuint x) +{ + d_3_0_Deprecated->VertexAttribI1ui(index, x); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + d_3_0_Deprecated->VertexAttribI4i(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) +{ + d_3_0_Deprecated->VertexAttribI3i(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI2i(GLuint index, GLint x, GLint y) +{ + d_3_0_Deprecated->VertexAttribI2i(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI1i(GLuint index, GLint x) +{ + d_3_0_Deprecated->VertexAttribI1i(index, x); +} + + +// OpenGL 3.1 deprecated functions + +// OpenGL 3.2 deprecated functions + +// OpenGL 3.3 deprecated functions + +// OpenGL 4.0 deprecated functions + +// OpenGL 4.1 deprecated functions + +// OpenGL 4.2 deprecated functions + +// OpenGL 4.3 deprecated functions + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_4_3_core.cpp b/src/gui/opengl/qopenglfunctions_4_3_core.cpp new file mode 100644 index 0000000000..bfe1bcc9c4 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_3_core.cpp @@ -0,0 +1,321 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglfunctions_4_3_core.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_4_3_Core + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_4_3_Core class provides all functions for this version and profile of OpenGL. + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_4_3_Core::QOpenGLFunctions_4_3_Core() + : QAbstractOpenGLFunctions() + , d_1_0_Core(0) + , d_1_1_Core(0) + , d_1_2_Core(0) + , d_1_3_Core(0) + , d_1_4_Core(0) + , d_1_5_Core(0) + , d_2_0_Core(0) + , d_2_1_Core(0) + , d_3_0_Core(0) + , d_3_1_Core(0) + , d_3_2_Core(0) + , d_3_3_Core(0) + , d_4_0_Core(0) + , d_4_1_Core(0) + , d_4_2_Core(0) + , d_4_3_Core(0) +{ +} + +QOpenGLFunctions_4_3_Core::~QOpenGLFunctions_4_3_Core() +{ + if (d_1_0_Core && !d_1_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_0_Core->context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + delete d_1_0_Core; + } + if (d_1_1_Core && !d_1_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_1_Core->context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + delete d_1_1_Core; + } + if (d_1_2_Core && !d_1_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_2_Core->context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + delete d_1_2_Core; + } + if (d_1_3_Core && !d_1_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_3_Core->context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + delete d_1_3_Core; + } + if (d_1_4_Core && !d_1_4_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_4_Core->context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + delete d_1_4_Core; + } + if (d_1_5_Core && !d_1_5_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_1_5_Core->context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + delete d_1_5_Core; + } + if (d_2_0_Core && !d_2_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_0_Core->context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + delete d_2_0_Core; + } + if (d_2_1_Core && !d_2_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_2_1_Core->context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + delete d_2_1_Core; + } + if (d_3_0_Core && !d_3_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_0_Core->context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + delete d_3_0_Core; + } + if (d_3_1_Core && !d_3_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_1_Core->context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + delete d_3_1_Core; + } + if (d_3_2_Core && !d_3_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_2_Core->context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + delete d_3_2_Core; + } + if (d_3_3_Core && !d_3_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_3_3_Core->context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + delete d_3_3_Core; + } + if (d_4_0_Core && !d_4_0_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_0_Core->context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + delete d_4_0_Core; + } + if (d_4_1_Core && !d_4_1_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_1_Core->context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + delete d_4_1_Core; + } + if (d_4_2_Core && !d_4_2_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_2_Core->context, QOpenGLFunctions_4_2_CoreBackend::versionStatus()); + delete d_4_2_Core; + } + if (d_4_3_Core && !d_4_3_Core->refs.deref()) { + QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(d_4_3_Core->context, QOpenGLFunctions_4_3_CoreBackend::versionStatus()); + delete d_4_3_Core; + } +} + +bool QOpenGLFunctions_4_3_Core::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is capable of resolving all needed functions + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_4_3_Core::isContextCompatible(context)) + { + // Associate with private implementation, creating if necessary + // Function pointers in the backends are resolved at creation time + QOpenGLVersionFunctionsBackend* d = 0; + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus(), d); + } + d_1_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_1_CoreBackend::versionStatus(), d); + } + d_1_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_2_CoreBackend::versionStatus(), d); + } + d_1_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_3_CoreBackend::versionStatus(), d); + } + d_1_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_4_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_4_CoreBackend::versionStatus(), d); + } + d_1_4_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_1_5_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_1_5_CoreBackend::versionStatus(), d); + } + d_1_5_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_0_CoreBackend::versionStatus(), d); + } + d_2_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_2_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_2_1_CoreBackend::versionStatus(), d); + } + d_2_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_0_CoreBackend::versionStatus(), d); + } + d_3_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_1_CoreBackend::versionStatus(), d); + } + d_3_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_2_CoreBackend::versionStatus(), d); + } + d_3_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_3_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_3_3_CoreBackend::versionStatus(), d); + } + d_3_3_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_0_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_0_CoreBackend::versionStatus(), d); + } + d_4_0_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_1_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_1_CoreBackend::versionStatus(), d); + } + d_4_1_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_2_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_2_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_2_CoreBackend::versionStatus(), d); + } + d_4_2_Core = static_cast(d); + d->refs.ref(); + + d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_4_3_CoreBackend::versionStatus()); + if (!d) { + d = new QOpenGLFunctions_4_3_CoreBackend(context); + QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, QOpenGLFunctions_4_3_CoreBackend::versionStatus(), d); + } + d_4_3_Core = static_cast(d); + d->refs.ref(); + + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_4_3_Core::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(4, 3)) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_4_3_Core::versionProfile() +{ + QOpenGLVersionProfile v; + v.setVersion(4, 3); + v.setProfile(QSurfaceFormat::CoreProfile); + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_4_3_core.h b/src/gui/opengl/qopenglfunctions_4_3_core.h new file mode 100644 index 0000000000..036fb2c51e --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_4_3_core.h @@ -0,0 +1,3156 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_4_3_CORE_H +#define QOPENGLVERSIONFUNCTIONS_4_3_CORE_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QOpenGLFunctions_4_3_Core : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_4_3_Core(); + ~QOpenGLFunctions_4_3_Core(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL 1.0 core functions + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + void glDepthRange(GLdouble nearVal, GLdouble farVal); + GLboolean glIsEnabled(GLenum cap); + void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params); + void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * glGetString(GLenum name); + void glGetIntegerv(GLenum pname, GLint *params); + void glGetFloatv(GLenum pname, GLfloat *params); + GLenum glGetError(); + void glGetDoublev(GLenum pname, GLdouble *params); + void glGetBooleanv(GLenum pname, GLboolean *params); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void glReadBuffer(GLenum mode); + void glPixelStorei(GLenum pname, GLint param); + void glPixelStoref(GLenum pname, GLfloat param); + void glDepthFunc(GLenum func); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glLogicOp(GLenum opcode); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glFlush(); + void glFinish(); + void glEnable(GLenum cap); + void glDisable(GLenum cap); + void glDepthMask(GLboolean flag); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glStencilMask(GLuint mask); + void glClearDepth(GLdouble depth); + void glClearStencil(GLint s); + void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void glClear(GLbitfield mask); + void glDrawBuffer(GLenum mode); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTexParameteriv(GLenum target, GLenum pname, const GLint *params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glPolygonMode(GLenum face, GLenum mode); + void glPointSize(GLfloat size); + void glLineWidth(GLfloat width); + void glHint(GLenum target, GLenum mode); + void glFrontFace(GLenum mode); + void glCullFace(GLenum mode); + + // OpenGL 1.1 core functions + void glIndexubv(const GLubyte *c); + void glIndexub(GLubyte c); + GLboolean glIsTexture(GLuint texture); + void glGenTextures(GLsizei n, GLuint *textures); + void glDeleteTextures(GLsizei n, const GLuint *textures); + void glBindTexture(GLenum target, GLuint texture); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glGetPointerv(GLenum pname, GLvoid* *params); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + + // OpenGL 1.2 core functions + void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void glBlendEquation(GLenum mode); + void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + // OpenGL 1.3 core functions + void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void glSampleCoverage(GLfloat value, GLboolean invert); + void glActiveTexture(GLenum texture); + + // OpenGL 1.4 core functions + void glPointParameteriv(GLenum pname, const GLint *params); + void glPointParameteri(GLenum pname, GLint param); + void glPointParameterfv(GLenum pname, const GLfloat *params); + void glPointParameterf(GLenum pname, GLfloat param); + void glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + + // OpenGL 1.5 core functions + void glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBuffer(GLenum target); + GLvoid* glMapBuffer(GLenum target, GLenum access); + void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean glIsBuffer(GLuint buffer); + void glGenBuffers(GLsizei n, GLuint *buffers); + void glDeleteBuffers(GLsizei n, const GLuint *buffers); + void glBindBuffer(GLenum target, GLuint buffer); + void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params); + void glGetQueryiv(GLenum target, GLenum pname, GLint *params); + void glEndQuery(GLenum target); + void glBeginQuery(GLenum target, GLuint id); + GLboolean glIsQuery(GLuint id); + void glDeleteQueries(GLsizei n, const GLuint *ids); + void glGenQueries(GLsizei n, GLuint *ids); + + // OpenGL 2.0 core functions + void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glValidateProgram(GLuint program); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4iv(GLint location, GLsizei count, const GLint *value); + void glUniform3iv(GLint location, GLsizei count, const GLint *value); + void glUniform2iv(GLint location, GLsizei count, const GLint *value); + void glUniform1iv(GLint location, GLsizei count, const GLint *value); + void glUniform4fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fv(GLint location, GLsizei count, const GLfloat *value); + void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2i(GLint location, GLint v0, GLint v1); + void glUniform1i(GLint location, GLint v0); + void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2f(GLint location, GLfloat v0, GLfloat v1); + void glUniform1f(GLint location, GLfloat v0); + void glUseProgram(GLuint program); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void glLinkProgram(GLuint program); + GLboolean glIsShader(GLuint shader); + GLboolean glIsProgram(GLuint program); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); + void glGetUniformiv(GLuint program, GLint location, GLint *params); + void glGetUniformfv(GLuint program, GLint location, GLfloat *params); + GLint glGetUniformLocation(GLuint program, const GLchar *name); + void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); + void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glGetProgramiv(GLuint program, GLenum pname, GLint *params); + GLint glGetAttribLocation(GLuint program, const GLchar *name); + void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void glEnableVertexAttribArray(GLuint index); + void glDisableVertexAttribArray(GLuint index); + void glDetachShader(GLuint program, GLuint shader); + void glDeleteShader(GLuint shader); + void glDeleteProgram(GLuint program); + GLuint glCreateShader(GLenum type); + GLuint glCreateProgram(); + void glCompileShader(GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); + void glAttachShader(GLuint program, GLuint shader); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void glDrawBuffers(GLsizei n, const GLenum *bufs); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + + // OpenGL 2.1 core functions + void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + + // OpenGL 3.0 core functions + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + const GLubyte * glGetStringi(GLenum name, GLuint index); + void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value); + void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value); + void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params); + void glUniform4uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform3uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform2uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform1uiv(GLint location, GLsizei count, const GLuint *value); + void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2ui(GLint location, GLuint v0, GLuint v1); + void glUniform1ui(GLint location, GLuint v0); + GLint glGetFragDataLocation(GLuint program, const GLchar *name); + void glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuiv(GLuint program, GLint location, GLuint *params); + void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glEndConditionalRender(); + void glBeginConditionalRender(GLuint id, GLenum mode); + void glClampColor(GLenum target, GLenum clamp); + void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedback(); + void glBeginTransformFeedback(GLenum primitiveMode); + GLboolean glIsEnabledi(GLenum target, GLuint index); + void glDisablei(GLenum target, GLuint index); + void glEnablei(GLenum target, GLuint index); + void glGetIntegeri_v(GLenum target, GLuint index, GLint *data); + void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data); + void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + + // OpenGL 3.1 core functions + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void glPrimitiveRestartIndex(GLuint index); + void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + + // OpenGL 3.2 core functions + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + void glProvokingVertex(GLenum mode); + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params); + void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data); + + // OpenGL 3.3 core functions + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void glVertexAttribDivisor(GLuint index, GLuint divisor); + + // OpenGL 4.0 core functions + void glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params); + void glEndQueryIndexed(GLenum target, GLuint index); + void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + void glDrawTransformFeedback(GLenum mode, GLuint id); + void glResumeTransformFeedback(); + void glPauseTransformFeedback(); + GLboolean glIsTransformFeedback(GLuint id); + void glGenTransformFeedbacks(GLsizei n, GLuint *ids); + void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); + void glBindTransformFeedback(GLenum target, GLuint id); + void glPatchParameterfv(GLenum pname, const GLfloat *values); + void glPatchParameteri(GLenum pname, GLint value); + void glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params); + void glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices); + void glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name); + GLint glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name); + void glGetUniformdv(GLuint program, GLint location, GLdouble *params); + void glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniform4dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform3dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform2dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform1dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + void glUniform2d(GLint location, GLdouble x, GLdouble y); + void glUniform1d(GLint location, GLdouble x); + void glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect); + void glDrawArraysIndirect(GLenum mode, const GLvoid *indirect); + void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBlendFunci(GLuint buf, GLenum src, GLenum dst); + void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void glBlendEquationi(GLuint buf, GLenum mode); + void glMinSampleShading(GLfloat value); + + // OpenGL 4.1 core functions + void glGetDoublei_v(GLenum target, GLuint index, GLdouble *data); + void glGetFloati_v(GLenum target, GLuint index, GLfloat *data); + void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); + void glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v); + void glScissorIndexedv(GLuint index, const GLint *v); + void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + void glScissorArrayv(GLuint first, GLsizei count, const GLint *v); + void glViewportIndexedfv(GLuint index, const GLfloat *v); + void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + void glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v); + void glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params); + void glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glVertexAttribL4dv(GLuint index, const GLdouble *v); + void glVertexAttribL3dv(GLuint index, const GLdouble *v); + void glVertexAttribL2dv(GLuint index, const GLdouble *v); + void glVertexAttribL1dv(GLuint index, const GLdouble *v); + void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttribL1d(GLuint index, GLdouble x); + void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glValidateProgramPipeline(GLuint pipeline); + void glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); + void glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); + void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); + void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); + void glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform1d(GLuint program, GLint location, GLdouble v0); + void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); + void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform1i(GLuint program, GLint location, GLint v0); + void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params); + GLboolean glIsProgramPipeline(GLuint pipeline); + void glGenProgramPipelines(GLsizei n, GLuint *pipelines); + void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines); + void glBindProgramPipeline(GLuint pipeline); + GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings); + void glActiveShaderProgram(GLuint pipeline, GLuint program); + void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + void glProgramParameteri(GLuint program, GLenum pname, GLint value); + void glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); + void glClearDepthf(GLfloat dd); + void glDepthRangef(GLfloat n, GLfloat f); + void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); + void glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); + void glReleaseShaderCompiler(); + + // OpenGL 4.2 core functions + void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + void glMemoryBarrier(GLbitfield barriers); + void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); + void glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); + void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); + void glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + void glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); + void glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); + void glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); + + // OpenGL 4.3 core functions + void glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); + GLint glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name); + GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name); + void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); + void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); + GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name); + void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params); + void glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); + void glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); + void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); + void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments); + void glInvalidateBufferData(GLuint buffer); + void glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length); + void glInvalidateTexImage(GLuint texture, GLint level); + void glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); + void glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); + void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glFramebufferParameteri(GLenum target, GLenum pname, GLint param); + void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor); + void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex); + void glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + void glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); + void glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); + void glDispatchComputeIndirect(GLintptr indirect); + void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + void glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + void glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + QOpenGLFunctions_1_0_CoreBackend* d_1_0_Core; + QOpenGLFunctions_1_1_CoreBackend* d_1_1_Core; + QOpenGLFunctions_1_2_CoreBackend* d_1_2_Core; + QOpenGLFunctions_1_3_CoreBackend* d_1_3_Core; + QOpenGLFunctions_1_4_CoreBackend* d_1_4_Core; + QOpenGLFunctions_1_5_CoreBackend* d_1_5_Core; + QOpenGLFunctions_2_0_CoreBackend* d_2_0_Core; + QOpenGLFunctions_2_1_CoreBackend* d_2_1_Core; + QOpenGLFunctions_3_0_CoreBackend* d_3_0_Core; + QOpenGLFunctions_3_1_CoreBackend* d_3_1_Core; + QOpenGLFunctions_3_2_CoreBackend* d_3_2_Core; + QOpenGLFunctions_3_3_CoreBackend* d_3_3_Core; + QOpenGLFunctions_4_0_CoreBackend* d_4_0_Core; + QOpenGLFunctions_4_1_CoreBackend* d_4_1_Core; + QOpenGLFunctions_4_2_CoreBackend* d_4_2_Core; + QOpenGLFunctions_4_3_CoreBackend* d_4_3_Core; +}; + +// OpenGL 1.0 core functions +inline void QOpenGLFunctions_4_3_Core::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Viewport(x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthRange(GLdouble nearVal, GLdouble farVal) +{ + d_1_0_Core->DepthRange(nearVal, farVal); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsEnabled(GLenum cap) +{ + return d_1_0_Core->IsEnabled(cap); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexLevelParameteriv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexLevelParameterfv(target, level, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_0_Core->GetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->GetTexImage(target, level, format, type, pixels); +} + +inline const GLubyte * QOpenGLFunctions_4_3_Core::glGetString(GLenum name) +{ + return d_1_0_Core->GetString(name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetIntegerv(GLenum pname, GLint *params) +{ + d_1_0_Core->GetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetFloatv(GLenum pname, GLfloat *params) +{ + d_1_0_Core->GetFloatv(pname, params); +} + +inline GLenum QOpenGLFunctions_4_3_Core::glGetError() +{ + return d_1_0_Core->GetError(); +} + +inline void QOpenGLFunctions_4_3_Core::glGetDoublev(GLenum pname, GLdouble *params) +{ + d_1_0_Core->GetDoublev(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetBooleanv(GLenum pname, GLboolean *params) +{ + d_1_0_Core->GetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) +{ + d_1_0_Core->ReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Core::glReadBuffer(GLenum mode) +{ + d_1_0_Core->ReadBuffer(mode); +} + +inline void QOpenGLFunctions_4_3_Core::glPixelStorei(GLenum pname, GLint param) +{ + d_1_0_Core->PixelStorei(pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glPixelStoref(GLenum pname, GLfloat param) +{ + d_1_0_Core->PixelStoref(pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthFunc(GLenum func) +{ + d_1_0_Core->DepthFunc(func); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + d_1_0_Core->StencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + d_1_0_Core->StencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_4_3_Core::glLogicOp(GLenum opcode) +{ + d_1_0_Core->LogicOp(opcode); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + d_1_0_Core->BlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_4_3_Core::glFlush() +{ + d_1_0_Core->Flush(); +} + +inline void QOpenGLFunctions_4_3_Core::glFinish() +{ + d_1_0_Core->Finish(); +} + +inline void QOpenGLFunctions_4_3_Core::glEnable(GLenum cap) +{ + d_1_0_Core->Enable(cap); +} + +inline void QOpenGLFunctions_4_3_Core::glDisable(GLenum cap) +{ + d_1_0_Core->Disable(cap); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthMask(GLboolean flag) +{ + d_1_0_Core->DepthMask(flag); +} + +inline void QOpenGLFunctions_4_3_Core::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + d_1_0_Core->ColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilMask(GLuint mask) +{ + d_1_0_Core->StencilMask(mask); +} + +inline void QOpenGLFunctions_4_3_Core::glClearDepth(GLdouble depth) +{ + d_1_0_Core->ClearDepth(depth); +} + +inline void QOpenGLFunctions_4_3_Core::glClearStencil(GLint s) +{ + d_1_0_Core->ClearStencil(s); +} + +inline void QOpenGLFunctions_4_3_Core::glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_0_Core->ClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_4_3_Core::glClear(GLbitfield mask) +{ + d_1_0_Core->Clear(mask); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawBuffer(GLenum mode) +{ + d_1_0_Core->DrawBuffer(mode); +} + +inline void QOpenGLFunctions_4_3_Core::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Core::glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_0_Core->TexImage1D(target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameteriv(GLenum target, GLenum pname, const GLint *params) +{ + d_1_0_Core->TexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + d_1_0_Core->TexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) +{ + d_1_0_Core->TexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + d_1_0_Core->TexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_0_Core->Scissor(x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glPolygonMode(GLenum face, GLenum mode) +{ + d_1_0_Core->PolygonMode(face, mode); +} + +inline void QOpenGLFunctions_4_3_Core::glPointSize(GLfloat size) +{ + d_1_0_Core->PointSize(size); +} + +inline void QOpenGLFunctions_4_3_Core::glLineWidth(GLfloat width) +{ + d_1_0_Core->LineWidth(width); +} + +inline void QOpenGLFunctions_4_3_Core::glHint(GLenum target, GLenum mode) +{ + d_1_0_Core->Hint(target, mode); +} + +inline void QOpenGLFunctions_4_3_Core::glFrontFace(GLenum mode) +{ + d_1_0_Core->FrontFace(mode); +} + +inline void QOpenGLFunctions_4_3_Core::glCullFace(GLenum mode) +{ + d_1_0_Core->CullFace(mode); +} + + +// OpenGL 1.1 core functions +inline void QOpenGLFunctions_4_3_Core::glIndexubv(const GLubyte *c) +{ + d_1_1_Core->Indexubv(c); +} + +inline void QOpenGLFunctions_4_3_Core::glIndexub(GLubyte c) +{ + d_1_1_Core->Indexub(c); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsTexture(GLuint texture) +{ + return d_1_1_Core->IsTexture(texture); +} + +inline void QOpenGLFunctions_4_3_Core::glGenTextures(GLsizei n, GLuint *textures) +{ + d_1_1_Core->GenTextures(n, textures); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteTextures(GLsizei n, const GLuint *textures) +{ + d_1_1_Core->DeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_4_3_Core::glBindTexture(GLenum target, GLuint texture) +{ + d_1_1_Core->BindTexture(target, texture); +} + +inline void QOpenGLFunctions_4_3_Core::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Core::glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_1_Core->TexSubImage1D(target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Core::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_1_Core->CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + d_1_1_Core->CopyTexSubImage1D(target, level, xoffset, x, y, width); +} + +inline void QOpenGLFunctions_4_3_Core::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + d_1_1_Core->CopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_4_3_Core::glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + d_1_1_Core->CopyTexImage1D(target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLFunctions_4_3_Core::glPolygonOffset(GLfloat factor, GLfloat units) +{ + d_1_1_Core->PolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_4_3_Core::glGetPointerv(GLenum pname, GLvoid* *params) +{ + d_1_1_Core->GetPointerv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_1_Core->DrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + d_1_1_Core->DrawArrays(mode, first, count); +} + + +// OpenGL 1.2 core functions +inline void QOpenGLFunctions_4_3_Core::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_1_2_Core->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + d_1_2_Core->TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + d_1_2_Core->DrawRangeElements(mode, start, end, count, type, indices); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendEquation(GLenum mode) +{ + d_1_2_Core->BlendEquation(mode); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + d_1_2_Core->BlendColor(red, green, blue, alpha); +} + + +// OpenGL 1.3 core functions +inline void QOpenGLFunctions_4_3_Core::glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img) +{ + d_1_3_Core->GetCompressedTexImage(target, level, img); +} + +inline void QOpenGLFunctions_4_3_Core::glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Core::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Core::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Core::glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Core::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Core::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + d_1_3_Core->CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLFunctions_4_3_Core::glSampleCoverage(GLfloat value, GLboolean invert) +{ + d_1_3_Core->SampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_4_3_Core::glActiveTexture(GLenum texture) +{ + d_1_3_Core->ActiveTexture(texture); +} + + +// OpenGL 1.4 core functions +inline void QOpenGLFunctions_4_3_Core::glPointParameteriv(GLenum pname, const GLint *params) +{ + d_1_4_Core->PointParameteriv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glPointParameteri(GLenum pname, GLint param) +{ + d_1_4_Core->PointParameteri(pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glPointParameterfv(GLenum pname, const GLfloat *params) +{ + d_1_4_Core->PointParameterfv(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glPointParameterf(GLenum pname, GLfloat param) +{ + d_1_4_Core->PointParameterf(pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawElements(mode, count, type, indices, drawcount); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount) +{ + d_1_4_Core->MultiDrawArrays(mode, first, count, drawcount); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + d_1_4_Core->BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + + +// OpenGL 1.5 core functions +inline void QOpenGLFunctions_4_3_Core::glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params) +{ + d_1_5_Core->GetBufferPointerv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetBufferParameteriv(target, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glUnmapBuffer(GLenum target) +{ + return d_1_5_Core->UnmapBuffer(target); +} + +inline GLvoid* QOpenGLFunctions_4_3_Core::glMapBuffer(GLenum target, GLenum access) +{ + return d_1_5_Core->MapBuffer(target, access); +} + +inline void QOpenGLFunctions_4_3_Core::glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + d_1_5_Core->GetBufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_3_Core::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + d_1_5_Core->BufferSubData(target, offset, size, data); +} + +inline void QOpenGLFunctions_4_3_Core::glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + d_1_5_Core->BufferData(target, size, data, usage); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsBuffer(GLuint buffer) +{ + return d_1_5_Core->IsBuffer(buffer); +} + +inline void QOpenGLFunctions_4_3_Core::glGenBuffers(GLsizei n, GLuint *buffers) +{ + d_1_5_Core->GenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteBuffers(GLsizei n, const GLuint *buffers) +{ + d_1_5_Core->DeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_4_3_Core::glBindBuffer(GLenum target, GLuint buffer) +{ + d_1_5_Core->BindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_4_3_Core::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) +{ + d_1_5_Core->GetQueryObjectuiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryObjectiv(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetQueryiv(GLenum target, GLenum pname, GLint *params) +{ + d_1_5_Core->GetQueryiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glEndQuery(GLenum target) +{ + d_1_5_Core->EndQuery(target); +} + +inline void QOpenGLFunctions_4_3_Core::glBeginQuery(GLenum target, GLuint id) +{ + d_1_5_Core->BeginQuery(target, id); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsQuery(GLuint id) +{ + return d_1_5_Core->IsQuery(id); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteQueries(GLsizei n, const GLuint *ids) +{ + d_1_5_Core->DeleteQueries(n, ids); +} + +inline void QOpenGLFunctions_4_3_Core::glGenQueries(GLsizei n, GLuint *ids) +{ + d_1_5_Core->GenQueries(n, ids); +} + + +// OpenGL 2.0 core functions +inline void QOpenGLFunctions_4_3_Core::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + d_2_0_Core->VertexAttribPointer(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Core::glValidateProgram(GLuint program) +{ + d_2_0_Core->ValidateProgram(program); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_0_Core->UniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform4iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform3iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform2iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1iv(GLint location, GLsizei count, const GLint *value) +{ + d_2_0_Core->Uniform1iv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform4fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform3fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform2fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1fv(GLint location, GLsizei count, const GLfloat *value) +{ + d_2_0_Core->Uniform1fv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_2_0_Core->Uniform4i(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) +{ + d_2_0_Core->Uniform3i(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2i(GLint location, GLint v0, GLint v1) +{ + d_2_0_Core->Uniform2i(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1i(GLint location, GLint v0) +{ + d_2_0_Core->Uniform1i(location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_2_0_Core->Uniform4f(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_2_0_Core->Uniform3f(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2f(GLint location, GLfloat v0, GLfloat v1) +{ + d_2_0_Core->Uniform2f(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1f(GLint location, GLfloat v0) +{ + d_2_0_Core->Uniform1f(location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glUseProgram(GLuint program) +{ + d_2_0_Core->UseProgram(program); +} + +inline void QOpenGLFunctions_4_3_Core::glShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length) +{ + d_2_0_Core->ShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_4_3_Core::glLinkProgram(GLuint program) +{ + d_2_0_Core->LinkProgram(program); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsShader(GLuint shader) +{ + return d_2_0_Core->IsShader(shader); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsProgram(GLuint program) +{ + return d_2_0_Core->IsProgram(program); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer) +{ + d_2_0_Core->GetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params) +{ + d_2_0_Core->GetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params) +{ + d_2_0_Core->GetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_2_0_Core->GetVertexAttribdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformiv(GLuint program, GLint location, GLint *params) +{ + d_2_0_Core->GetUniformiv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformfv(GLuint program, GLint location, GLfloat *params) +{ + d_2_0_Core->GetUniformfv(program, location, params); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetUniformLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) +{ + d_2_0_Core->GetShaderSource(shader, bufSize, length, source); +} + +inline void QOpenGLFunctions_4_3_Core::glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetShaderInfoLog(shader, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Core::glGetShaderiv(GLuint shader, GLenum pname, GLint *params) +{ + d_2_0_Core->GetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_2_0_Core->GetProgramInfoLog(program, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramiv(GLuint program, GLenum pname, GLint *params) +{ + d_2_0_Core->GetProgramiv(program, pname, params); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return d_2_0_Core->GetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj) +{ + d_2_0_Core->GetAttachedShaders(program, maxCount, count, obj); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveUniform(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + d_2_0_Core->GetActiveAttrib(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_3_Core::glEnableVertexAttribArray(GLuint index) +{ + d_2_0_Core->EnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_3_Core::glDisableVertexAttribArray(GLuint index) +{ + d_2_0_Core->DisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_4_3_Core::glDetachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->DetachShader(program, shader); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteShader(GLuint shader) +{ + d_2_0_Core->DeleteShader(shader); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteProgram(GLuint program) +{ + d_2_0_Core->DeleteProgram(program); +} + +inline GLuint QOpenGLFunctions_4_3_Core::glCreateShader(GLenum type) +{ + return d_2_0_Core->CreateShader(type); +} + +inline GLuint QOpenGLFunctions_4_3_Core::glCreateProgram() +{ + return d_2_0_Core->CreateProgram(); +} + +inline void QOpenGLFunctions_4_3_Core::glCompileShader(GLuint shader) +{ + d_2_0_Core->CompileShader(shader); +} + +inline void QOpenGLFunctions_4_3_Core::glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) +{ + d_2_0_Core->BindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_4_3_Core::glAttachShader(GLuint program, GLuint shader) +{ + d_2_0_Core->AttachShader(program, shader); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + d_2_0_Core->StencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + d_2_0_Core->StencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_4_3_Core::glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + d_2_0_Core->StencilOpSeparate(face, sfail, dpfail, dppass); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawBuffers(GLsizei n, const GLenum *bufs) +{ + d_2_0_Core->DrawBuffers(n, bufs); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + d_2_0_Core->BlendEquationSeparate(modeRGB, modeAlpha); +} + + +// OpenGL 2.1 core functions +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix4x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix3x2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_2_1_Core->UniformMatrix2x3fv(location, count, transpose, value); +} + + +// OpenGL 3.0 core functions +inline GLboolean QOpenGLFunctions_4_3_Core::glIsVertexArray(GLuint array) +{ + return d_3_0_Core->IsVertexArray(array); +} + +inline void QOpenGLFunctions_4_3_Core::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + d_3_0_Core->GenVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + d_3_0_Core->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLFunctions_4_3_Core::glBindVertexArray(GLuint array) +{ + d_3_0_Core->BindVertexArray(array); +} + +inline void QOpenGLFunctions_4_3_Core::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + d_3_0_Core->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLFunctions_4_3_Core::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + return d_3_0_Core->MapBufferRange(target, offset, length, access); +} + +inline void QOpenGLFunctions_4_3_Core::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + d_3_0_Core->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLFunctions_4_3_Core::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + d_3_0_Core->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLFunctions_4_3_Core::glGenerateMipmap(GLenum target) +{ + d_3_0_Core->GenerateMipmap(target); +} + +inline void QOpenGLFunctions_4_3_Core::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + d_3_0_Core->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + d_3_0_Core->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_4_3_Core::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + d_3_0_Core->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLFunctions_4_3_Core::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_4_3_Core::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + d_3_0_Core->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLFunctions_4_3_Core::glCheckFramebufferStatus(GLenum target) +{ + return d_3_0_Core->CheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_4_3_Core::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + d_3_0_Core->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + d_3_0_Core->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_4_3_Core::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + d_3_0_Core->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsFramebuffer(GLuint framebuffer) +{ + return d_3_0_Core->IsFramebuffer(framebuffer); +} + +inline void QOpenGLFunctions_4_3_Core::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_3_0_Core->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + d_3_0_Core->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + d_3_0_Core->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_4_3_Core::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + d_3_0_Core->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsRenderbuffer(GLuint renderbuffer) +{ + return d_3_0_Core->IsRenderbuffer(renderbuffer); +} + +inline const GLubyte * QOpenGLFunctions_4_3_Core::glGetStringi(GLenum name, GLuint index) +{ + return d_3_0_Core->GetStringi(name, index); +} + +inline void QOpenGLFunctions_4_3_Core::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) +{ + d_3_0_Core->ClearBufferfi(buffer, drawbuffer, depth, stencil); +} + +inline void QOpenGLFunctions_4_3_Core::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) +{ + d_3_0_Core->ClearBufferfv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Core::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) +{ + d_3_0_Core->ClearBufferuiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Core::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) +{ + d_3_0_Core->ClearBufferiv(buffer, drawbuffer, value); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetTexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params) +{ + d_3_0_Core->GetTexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) +{ + d_3_0_Core->TexParameterIuiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glTexParameterIiv(GLenum target, GLenum pname, const GLint *params) +{ + d_3_0_Core->TexParameterIiv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform4uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform3uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform2uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1uiv(GLint location, GLsizei count, const GLuint *value) +{ + d_3_0_Core->Uniform1uiv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_3_0_Core->Uniform4ui(location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_3_0_Core->Uniform3ui(location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2ui(GLint location, GLuint v0, GLuint v1) +{ + d_3_0_Core->Uniform2ui(location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1ui(GLint location, GLuint v0) +{ + d_3_0_Core->Uniform1ui(location, v0); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetFragDataLocation(GLuint program, const GLchar *name) +{ + return d_3_0_Core->GetFragDataLocation(program, name); +} + +inline void QOpenGLFunctions_4_3_Core::glBindFragDataLocation(GLuint program, GLuint color, const GLchar *name) +{ + d_3_0_Core->BindFragDataLocation(program, color, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformuiv(GLuint program, GLint location, GLuint *params) +{ + d_3_0_Core->GetUniformuiv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params) +{ + d_3_0_Core->GetVertexAttribIuiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params) +{ + d_3_0_Core->GetVertexAttribIiv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_3_0_Core->VertexAttribIPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Core::glEndConditionalRender() +{ + d_3_0_Core->EndConditionalRender(); +} + +inline void QOpenGLFunctions_4_3_Core::glBeginConditionalRender(GLuint id, GLenum mode) +{ + d_3_0_Core->BeginConditionalRender(id, mode); +} + +inline void QOpenGLFunctions_4_3_Core::glClampColor(GLenum target, GLenum clamp) +{ + d_3_0_Core->ClampColor(target, clamp); +} + +inline void QOpenGLFunctions_4_3_Core::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + d_3_0_Core->GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLFunctions_4_3_Core::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode) +{ + d_3_0_Core->TransformFeedbackVaryings(program, count, varyings, bufferMode); +} + +inline void QOpenGLFunctions_4_3_Core::glBindBufferBase(GLenum target, GLuint index, GLuint buffer) +{ + d_3_0_Core->BindBufferBase(target, index, buffer); +} + +inline void QOpenGLFunctions_4_3_Core::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_3_0_Core->BindBufferRange(target, index, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_3_Core::glEndTransformFeedback() +{ + d_3_0_Core->EndTransformFeedback(); +} + +inline void QOpenGLFunctions_4_3_Core::glBeginTransformFeedback(GLenum primitiveMode) +{ + d_3_0_Core->BeginTransformFeedback(primitiveMode); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsEnabledi(GLenum target, GLuint index) +{ + return d_3_0_Core->IsEnabledi(target, index); +} + +inline void QOpenGLFunctions_4_3_Core::glDisablei(GLenum target, GLuint index) +{ + d_3_0_Core->Disablei(target, index); +} + +inline void QOpenGLFunctions_4_3_Core::glEnablei(GLenum target, GLuint index) +{ + d_3_0_Core->Enablei(target, index); +} + +inline void QOpenGLFunctions_4_3_Core::glGetIntegeri_v(GLenum target, GLuint index, GLint *data) +{ + d_3_0_Core->GetIntegeri_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Core::glGetBooleani_v(GLenum target, GLuint index, GLboolean *data) +{ + d_3_0_Core->GetBooleani_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Core::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + d_3_0_Core->ColorMaski(index, r, g, b, a); +} + + +// OpenGL 3.1 core functions +inline void QOpenGLFunctions_4_3_Core::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + d_3_1_Core->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + d_3_1_Core->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + d_3_1_Core->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLFunctions_4_3_Core::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return d_3_1_Core->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + d_3_1_Core->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + d_3_1_Core->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + d_3_1_Core->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +inline void QOpenGLFunctions_4_3_Core::glPrimitiveRestartIndex(GLuint index) +{ + d_3_1_Core->PrimitiveRestartIndex(index); +} + +inline void QOpenGLFunctions_4_3_Core::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) +{ + d_3_1_Core->TexBuffer(target, internalformat, buffer); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount) +{ + d_3_1_Core->DrawElementsInstanced(mode, count, type, indices, instancecount); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) +{ + d_3_1_Core->DrawArraysInstanced(mode, first, count, instancecount); +} + + +// OpenGL 3.2 core functions +inline void QOpenGLFunctions_4_3_Core::glSampleMaski(GLuint index, GLbitfield mask) +{ + d_3_2_Core->SampleMaski(index, mask); +} + +inline void QOpenGLFunctions_4_3_Core::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + d_3_2_Core->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLFunctions_4_3_Core::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_3_Core::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_3_2_Core->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_3_Core::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + d_3_2_Core->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLFunctions_4_3_Core::glGetInteger64v(GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetInteger64v(pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + d_3_2_Core->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLFunctions_4_3_Core::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + return d_3_2_Core->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteSync(GLsync sync) +{ + d_3_2_Core->DeleteSync(sync); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsSync(GLsync sync) +{ + return d_3_2_Core->IsSync(sync); +} + +inline GLsync QOpenGLFunctions_4_3_Core::glFenceSync(GLenum condition, GLbitfield flags) +{ + return d_3_2_Core->FenceSync(condition, flags); +} + +inline void QOpenGLFunctions_4_3_Core::glProvokingVertex(GLenum mode) +{ + d_3_2_Core->ProvokingVertex(mode); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + d_3_2_Core->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + d_3_2_Core->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + d_3_2_Core->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +inline void QOpenGLFunctions_4_3_Core::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + d_3_2_Core->FramebufferTexture(target, attachment, texture, level); +} + +inline void QOpenGLFunctions_4_3_Core::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) +{ + d_3_2_Core->GetBufferParameteri64v(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data) +{ + d_3_2_Core->GetInteger64i_v(target, index, data); +} + + +// OpenGL 3.3 core functions +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + d_3_3_Core->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + d_3_3_Core->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLFunctions_4_3_Core::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_3_Core::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_3_Core::glColorP4uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP4uiv(type, color); +} + +inline void QOpenGLFunctions_4_3_Core::glColorP4ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP4ui(type, color); +} + +inline void QOpenGLFunctions_4_3_Core::glColorP3uiv(GLenum type, const GLuint *color) +{ + d_3_3_Core->ColorP3uiv(type, color); +} + +inline void QOpenGLFunctions_4_3_Core::glColorP3ui(GLenum type, GLuint color) +{ + d_3_3_Core->ColorP3ui(type, color); +} + +inline void QOpenGLFunctions_4_3_Core::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->NormalP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glNormalP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->NormalP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + d_3_3_Core->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + d_3_3_Core->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP4ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP4ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP3ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP3ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP2ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP2ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + d_3_3_Core->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glTexCoordP1ui(GLenum type, GLuint coords) +{ + d_3_3_Core->TexCoordP1ui(type, coords); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP4uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP4uiv(type, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP4ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP4ui(type, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP3uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP3uiv(type, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP3ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP3ui(type, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP2uiv(GLenum type, const GLuint *value) +{ + d_3_3_Core->VertexP2uiv(type, value); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexP2ui(GLenum type, GLuint value) +{ + d_3_3_Core->VertexP2ui(type, value); +} + +inline void QOpenGLFunctions_4_3_Core::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + d_3_3_Core->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + d_3_3_Core->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glQueryCounter(GLuint id, GLenum target) +{ + d_3_3_Core->QueryCounter(id, target); +} + +inline void QOpenGLFunctions_4_3_Core::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + d_3_3_Core->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + d_3_3_Core->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + d_3_3_Core->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + d_3_3_Core->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + d_3_3_Core->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + d_3_3_Core->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + d_3_3_Core->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + d_3_3_Core->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glBindSampler(GLuint unit, GLuint sampler) +{ + d_3_3_Core->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsSampler(GLuint sampler) +{ + return d_3_3_Core->IsSampler(sampler); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + d_3_3_Core->DeleteSamplers(count, samplers); +} + +inline void QOpenGLFunctions_4_3_Core::glGenSamplers(GLsizei count, GLuint *samplers) +{ + d_3_3_Core->GenSamplers(count, samplers); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + return d_3_3_Core->GetFragDataIndex(program, name); +} + +inline void QOpenGLFunctions_4_3_Core::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + d_3_3_Core->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribDivisor(GLuint index, GLuint divisor) +{ + d_3_3_Core->VertexAttribDivisor(index, divisor); +} + + +// OpenGL 4.0 core functions +inline void QOpenGLFunctions_4_3_Core::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + d_4_0_Core->GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glEndQueryIndexed(GLenum target, GLuint index) +{ + d_4_0_Core->EndQueryIndexed(target, index); +} + +inline void QOpenGLFunctions_4_3_Core::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + d_4_0_Core->BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + d_4_0_Core->DrawTransformFeedbackStream(mode, id, stream); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + d_4_0_Core->DrawTransformFeedback(mode, id); +} + +inline void QOpenGLFunctions_4_3_Core::glResumeTransformFeedback() +{ + d_4_0_Core->ResumeTransformFeedback(); +} + +inline void QOpenGLFunctions_4_3_Core::glPauseTransformFeedback() +{ + d_4_0_Core->PauseTransformFeedback(); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsTransformFeedback(GLuint id) +{ + return d_4_0_Core->IsTransformFeedback(id); +} + +inline void QOpenGLFunctions_4_3_Core::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + d_4_0_Core->GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + d_4_0_Core->DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLFunctions_4_3_Core::glBindTransformFeedback(GLenum target, GLuint id) +{ + d_4_0_Core->BindTransformFeedback(target, id); +} + +inline void QOpenGLFunctions_4_3_Core::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + d_4_0_Core->PatchParameterfv(pname, values); +} + +inline void QOpenGLFunctions_4_3_Core::glPatchParameteri(GLenum pname, GLint value) +{ + d_4_0_Core->PatchParameteri(pname, value); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + d_4_0_Core->GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + d_4_0_Core->GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + d_4_0_Core->UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + d_4_0_Core->GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + d_4_0_Core->GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLFunctions_4_3_Core::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + return d_4_0_Core->GetSubroutineUniformLocation(program, shadertype, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + d_4_0_Core->GetUniformdv(program, location, params); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_0_Core->UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform4dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform3dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform2dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + d_4_0_Core->Uniform1dv(location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_0_Core->Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_0_Core->Uniform3d(location, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + d_4_0_Core->Uniform2d(location, x, y); +} + +inline void QOpenGLFunctions_4_3_Core::glUniform1d(GLint location, GLdouble x) +{ + d_4_0_Core->Uniform1d(location, x); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + d_4_0_Core->DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + d_4_0_Core->DrawArraysIndirect(mode, indirect); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + d_4_0_Core->BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendFunci(GLuint buf, GLenum src, GLenum dst) +{ + d_4_0_Core->BlendFunci(buf, src, dst); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + d_4_0_Core->BlendEquationSeparatei(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_4_3_Core::glBlendEquationi(GLuint buf, GLenum mode) +{ + d_4_0_Core->BlendEquationi(buf, mode); +} + +inline void QOpenGLFunctions_4_3_Core::glMinSampleShading(GLfloat value) +{ + d_4_0_Core->MinSampleShading(value); +} + + +// OpenGL 4.1 core functions +inline void QOpenGLFunctions_4_3_Core::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + d_4_1_Core->GetDoublei_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Core::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + d_4_1_Core->GetFloati_v(target, index, data); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + d_4_1_Core->DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + d_4_1_Core->DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Core::glScissorIndexedv(GLuint index, const GLint *v) +{ + d_4_1_Core->ScissorIndexedv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + d_4_1_Core->ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + d_4_1_Core->ScissorArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Core::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + d_4_1_Core->ViewportIndexedfv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + d_4_1_Core->ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLFunctions_4_3_Core::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + d_4_1_Core->ViewportArrayv(first, count, v); +} + +inline void QOpenGLFunctions_4_3_Core::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + d_4_1_Core->GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + d_4_1_Core->VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL4dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL3dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL2dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + d_4_1_Core->VertexAttribL1dv(index, v); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + d_4_1_Core->VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + d_4_1_Core->VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + d_4_1_Core->VertexAttribL2d(index, x, y); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribL1d(GLuint index, GLdouble x) +{ + d_4_1_Core->VertexAttribL1d(index, x); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + d_4_1_Core->GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLFunctions_4_3_Core::glValidateProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + d_4_1_Core->ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + d_4_1_Core->ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + d_4_1_Core->ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + d_4_1_Core->ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + d_4_1_Core->ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + d_4_1_Core->ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + d_4_1_Core->ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + d_4_1_Core->ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + d_4_1_Core->ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + d_4_1_Core->ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + d_4_1_Core->ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + d_4_1_Core->ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + d_4_1_Core->ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + d_4_1_Core->ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + d_4_1_Core->ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + d_4_1_Core->ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + d_4_1_Core->ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + d_4_1_Core->ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + d_4_1_Core->ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + d_4_1_Core->ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + d_4_1_Core->ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + d_4_1_Core->ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + d_4_1_Core->GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLFunctions_4_3_Core::glIsProgramPipeline(GLuint pipeline) +{ + return d_4_1_Core->IsProgramPipeline(pipeline); +} + +inline void QOpenGLFunctions_4_3_Core::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + d_4_1_Core->GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_3_Core::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + d_4_1_Core->DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLFunctions_4_3_Core::glBindProgramPipeline(GLuint pipeline) +{ + d_4_1_Core->BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLFunctions_4_3_Core::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + return d_4_1_Core->CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLFunctions_4_3_Core::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + d_4_1_Core->ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLFunctions_4_3_Core::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + d_4_1_Core->UseProgramStages(pipeline, stages, program); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + d_4_1_Core->ProgramParameteri(program, pname, value); +} + +inline void QOpenGLFunctions_4_3_Core::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) +{ + d_4_1_Core->GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLFunctions_4_3_Core::glClearDepthf(GLfloat dd) +{ + d_4_1_Core->ClearDepthf(dd); +} + +inline void QOpenGLFunctions_4_3_Core::glDepthRangef(GLfloat n, GLfloat f) +{ + d_4_1_Core->DepthRangef(n, f); +} + +inline void QOpenGLFunctions_4_3_Core::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + d_4_1_Core->GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_4_3_Core::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length) +{ + d_4_1_Core->ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_4_3_Core::glReleaseShaderCompiler() +{ + d_4_1_Core->ReleaseShaderCompiler(); +} + + +// OpenGL 4.2 core functions +inline void QOpenGLFunctions_4_3_Core::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_2_Core->TexStorage3D(target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLFunctions_4_3_Core::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + d_4_2_Core->TexStorage2D(target, levels, internalformat, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + d_4_2_Core->TexStorage1D(target, levels, internalformat, width); +} + +inline void QOpenGLFunctions_4_3_Core::glMemoryBarrier(GLbitfield barriers) +{ + d_4_2_Core->MemoryBarrier(barriers); +} + +inline void QOpenGLFunctions_4_3_Core::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) +{ + d_4_2_Core->BindImageTexture(unit, texture, level, layered, layer, access, format); +} + +inline void QOpenGLFunctions_4_3_Core::glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) +{ + d_4_2_Core->GetActiveAtomicCounterBufferiv(program, bufferIndex, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) +{ + d_4_2_Core->GetInternalformativ(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) +{ + d_4_2_Core->DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + d_4_2_Core->DrawTransformFeedbackInstanced(mode, id, instancecount); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) +{ + d_4_2_Core->DrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->DrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); +} + +inline void QOpenGLFunctions_4_3_Core::glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) +{ + d_4_2_Core->DrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); +} + + +// OpenGL 4.3 core functions +inline void QOpenGLFunctions_4_3_Core::glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + d_4_3_Core->TexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_3_Core::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + d_4_3_Core->TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLFunctions_4_3_Core::glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + d_4_3_Core->TexBufferRange(target, internalformat, buffer, offset, size); +} + +inline void QOpenGLFunctions_4_3_Core::glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) +{ + d_4_3_Core->ShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->GetProgramResourceLocationIndex(program, programInterface, name); +} + +inline GLint QOpenGLFunctions_4_3_Core::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->GetProgramResourceLocation(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params) +{ + d_4_3_Core->GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name) +{ + d_4_3_Core->GetProgramResourceName(program, programInterface, index, bufSize, length, name); +} + +inline GLuint QOpenGLFunctions_4_3_Core::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + return d_4_3_Core->GetProgramResourceIndex(program, programInterface, name); +} + +inline void QOpenGLFunctions_4_3_Core::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) +{ + d_4_3_Core->GetProgramInterfaceiv(program, programInterface, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->MultiDrawElementsIndirect(mode, type, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_3_Core::glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + d_4_3_Core->MultiDrawArraysIndirect(mode, indirect, drawcount, stride); +} + +inline void QOpenGLFunctions_4_3_Core::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) +{ + d_4_3_Core->InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); +} + +inline void QOpenGLFunctions_4_3_Core::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments) +{ + d_4_3_Core->InvalidateFramebuffer(target, numAttachments, attachments); +} + +inline void QOpenGLFunctions_4_3_Core::glInvalidateBufferData(GLuint buffer) +{ + d_4_3_Core->InvalidateBufferData(buffer); +} + +inline void QOpenGLFunctions_4_3_Core::glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) +{ + d_4_3_Core->InvalidateBufferSubData(buffer, offset, length); +} + +inline void QOpenGLFunctions_4_3_Core::glInvalidateTexImage(GLuint texture, GLint level) +{ + d_4_3_Core->InvalidateTexImage(texture, level); +} + +inline void QOpenGLFunctions_4_3_Core::glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) +{ + d_4_3_Core->InvalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth); +} + +inline void QOpenGLFunctions_4_3_Core::glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params) +{ + d_4_3_Core->GetInternalformati64v(target, internalformat, pname, bufSize, params); +} + +inline void QOpenGLFunctions_4_3_Core::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + d_4_3_Core->GetFramebufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_4_3_Core::glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + d_4_3_Core->FramebufferParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) +{ + d_4_3_Core->VertexBindingDivisor(bindingindex, divisor); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) +{ + d_4_3_Core->VertexAttribBinding(attribindex, bindingindex); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->VertexAttribLFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + d_4_3_Core->VertexAttribIFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLFunctions_4_3_Core::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + d_4_3_Core->VertexAttribFormat(attribindex, size, type, normalized, relativeoffset); +} + +inline void QOpenGLFunctions_4_3_Core::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + d_4_3_Core->BindVertexBuffer(bindingindex, buffer, offset, stride); +} + +inline void QOpenGLFunctions_4_3_Core::glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) +{ + d_4_3_Core->TextureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); +} + +inline void QOpenGLFunctions_4_3_Core::glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) +{ + d_4_3_Core->CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); +} + +inline void QOpenGLFunctions_4_3_Core::glDispatchComputeIndirect(GLintptr indirect) +{ + d_4_3_Core->DispatchComputeIndirect(indirect); +} + +inline void QOpenGLFunctions_4_3_Core::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) +{ + d_4_3_Core->DispatchCompute(num_groups_x, num_groups_y, num_groups_z); +} + +inline void QOpenGLFunctions_4_3_Core::glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->ClearBufferSubData(target, internalformat, offset, size, format, type, data); +} + +inline void QOpenGLFunctions_4_3_Core::glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data) +{ + d_4_3_Core->ClearBufferData(target, internalformat, format, type, data); +} + + + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglfunctions_es2.cpp b/src/gui/opengl/qopenglfunctions_es2.cpp new file mode 100644 index 0000000000..afac017d53 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_es2.cpp @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qopenglfunctions_es2.h" +#include "qopenglcontext.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLFunctions_ES2 + \inmodule QtGui + \since 5.1 + \brief The QOpenGLFunctions_ES2 class provides all functions for OpenGL ES 2 + + \sa QAbstractOpenGLFunctions +*/ + +QOpenGLFunctions_ES2::QOpenGLFunctions_ES2() + : QAbstractOpenGLFunctions() + , d_es2(0) +{ +} + +QOpenGLFunctions_ES2::~QOpenGLFunctions_ES2() +{ +} + +bool QOpenGLFunctions_ES2::initializeOpenGLFunctions() +{ + if ( isInitialized() ) + return true; + + QOpenGLContext* context = QOpenGLContext::currentContext(); + + // If owned by a context object make sure it is current. + // Also check that current context is compatible + if (((owningContext() && owningContext() == context) || !owningContext()) + && QOpenGLFunctions_ES2::isContextCompatible(context)) + { + // Nothing to do, just flag that we are initialized + QAbstractOpenGLFunctions::initializeOpenGLFunctions(); + } + return isInitialized(); +} + +bool QOpenGLFunctions_ES2::isContextCompatible(QOpenGLContext *context) +{ + Q_ASSERT(context); + QSurfaceFormat f = context->format(); + const QPair v = qMakePair(f.majorVersion(), f.minorVersion()); + if (v < qMakePair(2, 0)) + return false; + if (f.renderableType() != QSurfaceFormat::OpenGLES) + return false; + + return true; +} + +QOpenGLVersionProfile QOpenGLFunctions_ES2::versionProfile() +{ + QOpenGLVersionProfile v; + return v; +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglfunctions_es2.h b/src/gui/opengl/qopenglfunctions_es2.h new file mode 100644 index 0000000000..c040f2cf82 --- /dev/null +++ b/src/gui/opengl/qopenglfunctions_es2.h @@ -0,0 +1,931 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_ES2_H +#define QOPENGLVERSIONFUNCTIONS_ES2_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLFunctions_ES2Private; + +class Q_GUI_EXPORT QOpenGLFunctions_ES2 : public QAbstractOpenGLFunctions +{ +public: + QOpenGLFunctions_ES2(); + ~QOpenGLFunctions_ES2(); + + bool initializeOpenGLFunctions() Q_DECL_OVERRIDE; + + // OpenGL ES2 core functions + void glActiveTexture(GLenum texture); + void glAttachShader(GLuint program, GLuint shader); + void glBindAttribLocation(GLuint program, GLuint index, const GLchar* name); + void glBindBuffer(GLenum target, GLuint buffer); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + void glBindTexture(GLenum target, GLuint texture); + void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + void glBlendEquation(GLenum mode); + void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + void glBlendFunc(GLenum sfactor, GLenum dfactor); + void glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); + void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); + GLenum glCheckFramebufferStatus(GLenum target); + void glClear(GLbitfield mask); + void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + void glClearDepthf(GLclampf depth); + void glClearStencil(GLint s); + void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void glCompileShader(GLuint shader); + void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data); + void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data); + void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + GLuint glCreateProgram(void); + GLuint glCreateShader(GLenum type); + void glCullFace(GLenum mode); + void glDeleteBuffers(GLsizei n, const GLuint* buffers); + void glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers); + void glDeleteProgram(GLuint program); + void glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers); + void glDeleteShader(GLuint shader); + void glDeleteTextures(GLsizei n, const GLuint* textures); + void glDepthFunc(GLenum func); + void glDepthMask(GLboolean flag); + void glDepthRangef(GLclampf zNear, GLclampf zFar); + void glDetachShader(GLuint program, GLuint shader); + void glDisable(GLenum cap); + void glDisableVertexAttribArray(GLuint index); + void glDrawArrays(GLenum mode, GLint first, GLsizei count); + void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); + void glEnable(GLenum cap); + void glEnableVertexAttribArray(GLuint index); + void glFinish(void); + void glFlush(void); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFrontFace(GLenum mode); + void glGenBuffers(GLsizei n, GLuint* buffers); + void glGenerateMipmap(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint* framebuffers); + void glGenRenderbuffers(GLsizei n, GLuint* renderbuffers); + void glGenTextures(GLsizei n, GLuint* textures); + void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); + void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); + void glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); + int glGetAttribLocation(GLuint program, const GLchar* name); + void glGetBooleanv(GLenum pname, GLboolean* params); + void glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params); + GLenum glGetError(void); + void glGetFloatv(GLenum pname, GLfloat* params); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params); + void glGetIntegerv(GLenum pname, GLint* params); + void glGetProgramiv(GLuint program, GLenum pname, GLint* params); + void glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params); + void glGetShaderiv(GLuint shader, GLenum pname, GLint* params); + void glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog); + void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); + void glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); + const GLubyte* glGetString(GLenum name); + void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params); + void glGetTexParameteriv(GLenum target, GLenum pname, GLint* params); + void glGetUniformfv(GLuint program, GLint location, GLfloat* params); + void glGetUniformiv(GLuint program, GLint location, GLint* params); + int glGetUniformLocation(GLuint program, const GLchar* name); + void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params); + void glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params); + void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer); + void glHint(GLenum target, GLenum mode); + GLboolean glIsBuffer(GLuint buffer); + GLboolean glIsEnabled(GLenum cap); + GLboolean glIsFramebuffer(GLuint framebuffer); + GLboolean glIsProgram(GLuint program); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + GLboolean glIsShader(GLuint shader); + GLboolean glIsTexture(GLuint texture); + void glLineWidth(GLfloat width); + void glLinkProgram(GLuint program); + void glPixelStorei(GLenum pname, GLint param); + void glPolygonOffset(GLfloat factor, GLfloat units); + void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); + void glReleaseShaderCompiler(void); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glSampleCoverage(GLclampf value, GLboolean invert); + void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + void glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length); + void glShaderSource(GLuint shader, GLsizei count, const GLchar* *string, const GLint* length); + void glStencilFunc(GLenum func, GLint ref, GLuint mask); + void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + void glStencilMask(GLuint mask); + void glStencilMaskSeparate(GLenum face, GLuint mask); + void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + void glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); + void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); + void glTexParameterf(GLenum target, GLenum pname, GLfloat param); + void glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params); + void glTexParameteri(GLenum target, GLenum pname, GLint param); + void glTexParameteriv(GLenum target, GLenum pname, const GLint* params); + void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); + void glUniform1f(GLint location, GLfloat x); + void glUniform1fv(GLint location, GLsizei count, const GLfloat* v); + void glUniform1i(GLint location, GLint x); + void glUniform1iv(GLint location, GLsizei count, const GLint* v); + void glUniform2f(GLint location, GLfloat x, GLfloat y); + void glUniform2fv(GLint location, GLsizei count, const GLfloat* v); + void glUniform2i(GLint location, GLint x, GLint y); + void glUniform2iv(GLint location, GLsizei count, const GLint* v); + void glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z); + void glUniform3fv(GLint location, GLsizei count, const GLfloat* v); + void glUniform3i(GLint location, GLint x, GLint y, GLint z); + void glUniform3iv(GLint location, GLsizei count, const GLint* v); + void glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glUniform4fv(GLint location, GLsizei count, const GLfloat* v); + void glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w); + void glUniform4iv(GLint location, GLsizei count, const GLint* v); + void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + void glUseProgram(GLuint program); + void glValidateProgram(GLuint program); + void glVertexAttrib1f(GLuint indx, GLfloat x); + void glVertexAttrib1fv(GLuint indx, const GLfloat* values); + void glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); + void glVertexAttrib2fv(GLuint indx, const GLfloat* values); + void glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3fv(GLuint indx, const GLfloat* values); + void glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4fv(GLuint indx, const GLfloat* values); + void glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr); + void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + +private: + friend class QOpenGLContext; + + static bool isContextCompatible(QOpenGLContext *context); + static QOpenGLVersionProfile versionProfile(); + + // For future expansion - not used + QOpenGLFunctions_ES2Private* d_es2; +}; + +// OpenGL ES2 core functions +inline void QOpenGLFunctions_ES2::glActiveTexture(GLenum texture) +{ + ::glActiveTexture(texture); +} + +inline void QOpenGLFunctions_ES2::glAttachShader(GLuint program, GLuint shader) +{ + ::glAttachShader(program, shader); +} + +inline void QOpenGLFunctions_ES2::glBindAttribLocation(GLuint program, GLuint index, const GLchar* name) +{ + ::glBindAttribLocation(program, index, name); +} + +inline void QOpenGLFunctions_ES2::glBindBuffer(GLenum target, GLuint buffer) +{ + ::glBindBuffer(target, buffer); +} + +inline void QOpenGLFunctions_ES2::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + ::glBindFramebuffer(target, framebuffer); +} + +inline void QOpenGLFunctions_ES2::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + ::glBindRenderbuffer(target, renderbuffer); +} + +inline void QOpenGLFunctions_ES2::glBindTexture(GLenum target, GLuint texture) +{ + ::glBindTexture(target, texture); +} + +inline void QOpenGLFunctions_ES2::glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) +{ + ::glBlendColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_ES2::glBlendEquation(GLenum mode) +{ + ::glBlendEquation(mode); +} + +inline void QOpenGLFunctions_ES2::glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) +{ + ::glBlendEquationSeparate(modeRGB, modeAlpha); +} + +inline void QOpenGLFunctions_ES2::glBlendFunc(GLenum sfactor, GLenum dfactor) +{ + ::glBlendFunc(sfactor, dfactor); +} + +inline void QOpenGLFunctions_ES2::glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + ::glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLFunctions_ES2::glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) +{ + ::glBufferData(target, size, data, usage); +} + +inline void QOpenGLFunctions_ES2::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) +{ + ::glBufferSubData(target, offset, size, data); +} + +inline GLenum QOpenGLFunctions_ES2::glCheckFramebufferStatus(GLenum target) +{ + return ::glCheckFramebufferStatus(target); +} + +inline void QOpenGLFunctions_ES2::glClear(GLbitfield mask) +{ + ::glClear(mask); +} + +inline void QOpenGLFunctions_ES2::glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) +{ + ::glClearColor(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_ES2::glClearDepthf(GLclampf depth) +{ + ::glClearDepthf(depth); +} + +inline void QOpenGLFunctions_ES2::glClearStencil(GLint s) +{ + ::glClearStencil(s); +} + +inline void QOpenGLFunctions_ES2::glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + ::glColorMask(red, green, blue, alpha); +} + +inline void QOpenGLFunctions_ES2::glCompileShader(GLuint shader) +{ + ::glCompileShader(shader); +} + +inline void QOpenGLFunctions_ES2::glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data) +{ + ::glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLFunctions_ES2::glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data) +{ + ::glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLFunctions_ES2::glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + ::glCopyTexImage2D(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLFunctions_ES2::glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + ::glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); +} + +inline GLuint QOpenGLFunctions_ES2::glCreateProgram(void) +{ + return ::glCreateProgram(); +} + +inline GLuint QOpenGLFunctions_ES2::glCreateShader(GLenum type) +{ + return ::glCreateShader(type); +} + +inline void QOpenGLFunctions_ES2::glCullFace(GLenum mode) +{ + ::glCullFace(mode); +} + +inline void QOpenGLFunctions_ES2::glDeleteBuffers(GLsizei n, const GLuint* buffers) +{ + ::glDeleteBuffers(n, buffers); +} + +inline void QOpenGLFunctions_ES2::glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) +{ + ::glDeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_ES2::glDeleteProgram(GLuint program) +{ + ::glDeleteProgram(program); +} + +inline void QOpenGLFunctions_ES2::glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) +{ + ::glDeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_ES2::glDeleteShader(GLuint shader) +{ + ::glDeleteShader(shader); +} + +inline void QOpenGLFunctions_ES2::glDeleteTextures(GLsizei n, const GLuint* textures) +{ + ::glDeleteTextures(n, textures); +} + +inline void QOpenGLFunctions_ES2::glDepthFunc(GLenum func) +{ + ::glDepthFunc(func); +} + +inline void QOpenGLFunctions_ES2::glDepthMask(GLboolean flag) +{ + ::glDepthMask(flag); +} + +inline void QOpenGLFunctions_ES2::glDepthRangef(GLclampf zNear, GLclampf zFar) +{ + ::glDepthRangef(zNear, zFar); +} + +inline void QOpenGLFunctions_ES2::glDetachShader(GLuint program, GLuint shader) +{ + ::glDetachShader(program, shader); +} + +inline void QOpenGLFunctions_ES2::glDisable(GLenum cap) +{ + ::glDisable(cap); +} + +inline void QOpenGLFunctions_ES2::glDisableVertexAttribArray(GLuint index) +{ + ::glDisableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_ES2::glDrawArrays(GLenum mode, GLint first, GLsizei count) +{ + ::glDrawArrays(mode, first, count); +} + +inline void QOpenGLFunctions_ES2::glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices) +{ + ::glDrawElements(mode, count, type, indices); +} + +inline void QOpenGLFunctions_ES2::glEnable(GLenum cap) +{ + ::glEnable(cap); +} + +inline void QOpenGLFunctions_ES2::glEnableVertexAttribArray(GLuint index) +{ + ::glEnableVertexAttribArray(index); +} + +inline void QOpenGLFunctions_ES2::glFinish(void) +{ + ::glFinish(); +} + +inline void QOpenGLFunctions_ES2::glFlush(void) +{ + ::glFlush(); +} + +inline void QOpenGLFunctions_ES2::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + ::glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLFunctions_ES2::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + ::glFramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLFunctions_ES2::glFrontFace(GLenum mode) +{ + ::glFrontFace(mode); +} + +inline void QOpenGLFunctions_ES2::glGenBuffers(GLsizei n, GLuint* buffers) +{ + ::glGenBuffers(n, buffers); +} + +inline void QOpenGLFunctions_ES2::glGenerateMipmap(GLenum target) +{ + ::glGenerateMipmap(target); +} + +inline void QOpenGLFunctions_ES2::glGenFramebuffers(GLsizei n, GLuint* framebuffers) +{ + ::glGenFramebuffers(n, framebuffers); +} + +inline void QOpenGLFunctions_ES2::glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) +{ + ::glGenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLFunctions_ES2::glGenTextures(GLsizei n, GLuint* textures) +{ + ::glGenTextures(n, textures); +} + +inline void QOpenGLFunctions_ES2::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) +{ + ::glGetActiveAttrib(program, index, bufsize, length, size, type, name); +} + +inline void QOpenGLFunctions_ES2::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) +{ + ::glGetActiveUniform(program, index, bufsize, length, size, type, name); +} + +inline void QOpenGLFunctions_ES2::glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) +{ + ::glGetAttachedShaders(program, maxcount, count, shaders); +} + +inline int QOpenGLFunctions_ES2::glGetAttribLocation(GLuint program, const GLchar* name) +{ + return ::glGetAttribLocation(program, name); +} + +inline void QOpenGLFunctions_ES2::glGetBooleanv(GLenum pname, GLboolean* params) +{ + ::glGetBooleanv(pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params) +{ + ::glGetBufferParameteriv(target, pname, params); +} + +inline GLenum QOpenGLFunctions_ES2::glGetError(void) +{ + return ::glGetError(); +} + +inline void QOpenGLFunctions_ES2::glGetFloatv(GLenum pname, GLfloat* params) +{ + ::glGetFloatv(pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params) +{ + ::glGetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetIntegerv(GLenum pname, GLint* params) +{ + ::glGetIntegerv(pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetProgramiv(GLuint program, GLenum pname, GLint* params) +{ + ::glGetProgramiv(program, pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog) +{ + ::glGetProgramInfoLog(program, bufsize, length, infolog); +} + +inline void QOpenGLFunctions_ES2::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params) +{ + ::glGetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetShaderiv(GLuint shader, GLenum pname, GLint* params) +{ + ::glGetShaderiv(shader, pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog) +{ + ::glGetShaderInfoLog(shader, bufsize, length, infolog); +} + +inline void QOpenGLFunctions_ES2::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) +{ + ::glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLFunctions_ES2::glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) +{ + ::glGetShaderSource(shader, bufsize, length, source); +} + +inline const GLubyte* QOpenGLFunctions_ES2::glGetString(GLenum name) +{ + return ::glGetString(name); +} + +inline void QOpenGLFunctions_ES2::glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) +{ + ::glGetTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) +{ + ::glGetTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetUniformfv(GLuint program, GLint location, GLfloat* params) +{ + ::glGetUniformfv(program, location, params); +} + +inline void QOpenGLFunctions_ES2::glGetUniformiv(GLuint program, GLint location, GLint* params) +{ + ::glGetUniformiv(program, location, params); +} + +inline int QOpenGLFunctions_ES2::glGetUniformLocation(GLuint program, const GLchar* name) +{ + return ::glGetUniformLocation(program, name); +} + +inline void QOpenGLFunctions_ES2::glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params) +{ + ::glGetVertexAttribfv(index, pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params) +{ + ::glGetVertexAttribiv(index, pname, params); +} + +inline void QOpenGLFunctions_ES2::glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer) +{ + ::glGetVertexAttribPointerv(index, pname, pointer); +} + +inline void QOpenGLFunctions_ES2::glHint(GLenum target, GLenum mode) +{ + ::glHint(target, mode); +} + +inline GLboolean QOpenGLFunctions_ES2::glIsBuffer(GLuint buffer) +{ + return ::glIsBuffer(buffer); +} + +inline GLboolean QOpenGLFunctions_ES2::glIsEnabled(GLenum cap) +{ + return ::glIsEnabled(cap); +} + +inline GLboolean QOpenGLFunctions_ES2::glIsFramebuffer(GLuint framebuffer) +{ + return ::glIsFramebuffer(framebuffer); +} + +inline GLboolean QOpenGLFunctions_ES2::glIsProgram(GLuint program) +{ + return ::glIsProgram(program); +} + +inline GLboolean QOpenGLFunctions_ES2::glIsRenderbuffer(GLuint renderbuffer) +{ + return ::glIsRenderbuffer(renderbuffer); +} + +inline GLboolean QOpenGLFunctions_ES2::glIsShader(GLuint shader) +{ + return ::glIsShader(shader); +} + +inline GLboolean QOpenGLFunctions_ES2::glIsTexture(GLuint texture) +{ + return ::glIsTexture(texture); +} + +inline void QOpenGLFunctions_ES2::glLineWidth(GLfloat width) +{ + ::glLineWidth(width); +} + +inline void QOpenGLFunctions_ES2::glLinkProgram(GLuint program) +{ + ::glLinkProgram(program); +} + +inline void QOpenGLFunctions_ES2::glPixelStorei(GLenum pname, GLint param) +{ + ::glPixelStorei(pname, param); +} + +inline void QOpenGLFunctions_ES2::glPolygonOffset(GLfloat factor, GLfloat units) +{ + ::glPolygonOffset(factor, units); +} + +inline void QOpenGLFunctions_ES2::glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) +{ + ::glReadPixels(x, y, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_ES2::glReleaseShaderCompiler(void) +{ + ::glReleaseShaderCompiler(); +} + +inline void QOpenGLFunctions_ES2::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + ::glRenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLFunctions_ES2::glSampleCoverage(GLclampf value, GLboolean invert) +{ + ::glSampleCoverage(value, invert); +} + +inline void QOpenGLFunctions_ES2::glScissor(GLint x, GLint y, GLsizei width, GLsizei height) +{ + ::glScissor(x, y, width, height); +} + +inline void QOpenGLFunctions_ES2::glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length) +{ + ::glShaderBinary(n, shaders, binaryformat, binary, length); +} + +inline void QOpenGLFunctions_ES2::glShaderSource(GLuint shader, GLsizei count, const GLchar* *string, const GLint* length) +{ + ::glShaderSource(shader, count, string, length); +} + +inline void QOpenGLFunctions_ES2::glStencilFunc(GLenum func, GLint ref, GLuint mask) +{ + ::glStencilFunc(func, ref, mask); +} + +inline void QOpenGLFunctions_ES2::glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) +{ + ::glStencilFuncSeparate(face, func, ref, mask); +} + +inline void QOpenGLFunctions_ES2::glStencilMask(GLuint mask) +{ + ::glStencilMask(mask); +} + +inline void QOpenGLFunctions_ES2::glStencilMaskSeparate(GLenum face, GLuint mask) +{ + ::glStencilMaskSeparate(face, mask); +} + +inline void QOpenGLFunctions_ES2::glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) +{ + ::glStencilOp(fail, zfail, zpass); +} + +inline void QOpenGLFunctions_ES2::glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) +{ + ::glStencilOpSeparate(face, fail, zfail, zpass); +} + +inline void QOpenGLFunctions_ES2::glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels) +{ + ::glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLFunctions_ES2::glTexParameterf(GLenum target, GLenum pname, GLfloat param) +{ + ::glTexParameterf(target, pname, param); +} + +inline void QOpenGLFunctions_ES2::glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params) +{ + ::glTexParameterfv(target, pname, params); +} + +inline void QOpenGLFunctions_ES2::glTexParameteri(GLenum target, GLenum pname, GLint param) +{ + ::glTexParameteri(target, pname, param); +} + +inline void QOpenGLFunctions_ES2::glTexParameteriv(GLenum target, GLenum pname, const GLint* params) +{ + ::glTexParameteriv(target, pname, params); +} + +inline void QOpenGLFunctions_ES2::glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels) +{ + ::glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLFunctions_ES2::glUniform1f(GLint location, GLfloat x) +{ + ::glUniform1f(location, x); +} + +inline void QOpenGLFunctions_ES2::glUniform1fv(GLint location, GLsizei count, const GLfloat* v) +{ + ::glUniform1fv(location, count, v); +} + +inline void QOpenGLFunctions_ES2::glUniform1i(GLint location, GLint x) +{ + ::glUniform1i(location, x); +} + +inline void QOpenGLFunctions_ES2::glUniform1iv(GLint location, GLsizei count, const GLint* v) +{ + ::glUniform1iv(location, count, v); +} + +inline void QOpenGLFunctions_ES2::glUniform2f(GLint location, GLfloat x, GLfloat y) +{ + ::glUniform2f(location, x, y); +} + +inline void QOpenGLFunctions_ES2::glUniform2fv(GLint location, GLsizei count, const GLfloat* v) +{ + ::glUniform2fv(location, count, v); +} + +inline void QOpenGLFunctions_ES2::glUniform2i(GLint location, GLint x, GLint y) +{ + ::glUniform2i(location, x, y); +} + +inline void QOpenGLFunctions_ES2::glUniform2iv(GLint location, GLsizei count, const GLint* v) +{ + ::glUniform2iv(location, count, v); +} + +inline void QOpenGLFunctions_ES2::glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) +{ + ::glUniform3f(location, x, y, z); +} + +inline void QOpenGLFunctions_ES2::glUniform3fv(GLint location, GLsizei count, const GLfloat* v) +{ + ::glUniform3fv(location, count, v); +} + +inline void QOpenGLFunctions_ES2::glUniform3i(GLint location, GLint x, GLint y, GLint z) +{ + ::glUniform3i(location, x, y, z); +} + +inline void QOpenGLFunctions_ES2::glUniform3iv(GLint location, GLsizei count, const GLint* v) +{ + ::glUniform3iv(location, count, v); +} + +inline void QOpenGLFunctions_ES2::glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + ::glUniform4f(location, x, y, z, w); +} + +inline void QOpenGLFunctions_ES2::glUniform4fv(GLint location, GLsizei count, const GLfloat* v) +{ + ::glUniform4fv(location, count, v); +} + +inline void QOpenGLFunctions_ES2::glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) +{ + ::glUniform4i(location, x, y, z, w); +} + +inline void QOpenGLFunctions_ES2::glUniform4iv(GLint location, GLsizei count, const GLint* v) +{ + ::glUniform4iv(location, count, v); +} + +inline void QOpenGLFunctions_ES2::glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) +{ + ::glUniformMatrix2fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_ES2::glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) +{ + ::glUniformMatrix3fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_ES2::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) +{ + ::glUniformMatrix4fv(location, count, transpose, value); +} + +inline void QOpenGLFunctions_ES2::glUseProgram(GLuint program) +{ + ::glUseProgram(program); +} + +inline void QOpenGLFunctions_ES2::glValidateProgram(GLuint program) +{ + ::glValidateProgram(program); +} + +inline void QOpenGLFunctions_ES2::glVertexAttrib1f(GLuint indx, GLfloat x) +{ + ::glVertexAttrib1f(indx, x); +} + +inline void QOpenGLFunctions_ES2::glVertexAttrib1fv(GLuint indx, const GLfloat* values) +{ + ::glVertexAttrib1fv(indx, values); +} + +inline void QOpenGLFunctions_ES2::glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) +{ + ::glVertexAttrib2f(indx, x, y); +} + +inline void QOpenGLFunctions_ES2::glVertexAttrib2fv(GLuint indx, const GLfloat* values) +{ + ::glVertexAttrib2fv(indx, values); +} + +inline void QOpenGLFunctions_ES2::glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) +{ + ::glVertexAttrib3f(indx, x, y, z); +} + +inline void QOpenGLFunctions_ES2::glVertexAttrib3fv(GLuint indx, const GLfloat* values) +{ + ::glVertexAttrib3fv(indx, values); +} + +inline void QOpenGLFunctions_ES2::glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + ::glVertexAttrib4f(indx, x, y, z, w); +} + +inline void QOpenGLFunctions_ES2::glVertexAttrib4fv(GLuint indx, const GLfloat* values) +{ + ::glVertexAttrib4fv(indx, values); +} + +inline void QOpenGLFunctions_ES2::glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr) +{ + ::glVertexAttribPointer(indx, size, type, normalized, stride, ptr); +} + +inline void QOpenGLFunctions_ES2::glViewport(GLint x, GLint y, GLsizei width, GLsizei height) +{ + ::glViewport(x, y, width, height); +} + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglversionfunctions.cpp b/src/gui/opengl/qopenglversionfunctions.cpp new file mode 100644 index 0000000000..d39ecd9d4c --- /dev/null +++ b/src/gui/opengl/qopenglversionfunctions.cpp @@ -0,0 +1,1791 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglversionfunctions.h" +#include "qopenglcontext.h" +#include "qdebug.h" + +QT_BEGIN_NAMESPACE + +QOpenGLVersionFunctionsBackend *QAbstractOpenGLFunctionsPrivate::functionsBackend(QOpenGLContext *context, + const QOpenGLVersionStatus &v) +{ + Q_ASSERT(context); + return context->functionsBackend(v); +} + +void QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(QOpenGLContext *context, + const QOpenGLVersionStatus &v, + QOpenGLVersionFunctionsBackend *backend) +{ + Q_ASSERT(context); + context->insertFunctionsBackend(v, backend); +} + +void QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(QOpenGLContext *context, const QOpenGLVersionStatus &v) +{ + Q_ASSERT(context); + context->removeFunctionsBackend(v); +} + + +/*! + \class QAbstractOpenGLFunctions + \inmodule QtGui + \since 5.1 + \brief The QAbstractOpenGLFunctions class is the base class of a family of + classes that expose all functions for each OpenGL version and + profile. + + OpenGL implementations on different platforms are able to link to a variable + number of OpenGL functions depending upon the OpenGL ABI on that platform. + For example, on Microsoft Windows only functions up to those in OpenGL 1.1 + can be linked to at build time. All other functions must be resolved at + runtime. The traditional solution to this has been to use either + QOpenGLContext::getProcAddress() or QOpenGLFunctions. The former is tedious + and error prone and means dealing directly with function pointers. The + latter only exposes those functions common to OpenGL ES 2 and desktop + OpenGL. There is however much new OpenGL functionality that is useful when + writing real world OpenGL applications. + + Qt now provides a family of classes which all inherit from + QAbstractOpenGLFunctions which expose every core OpenGL function by way of a + corresponding member function. There is a class for every valid combination + of OpenGL version and profile. Each class follows the naming convention + QOpenGLFunctions__[_PROFILE]. + + For OpenGL versions 1.0 through to 3.0 there are no profiles, leading to the + classes: + + \list + \li QOpenGLFunctions_1_0 + \li QOpenGLFunctions_1_1 + \li QOpenGLFunctions_1_2 + \li QOpenGLFunctions_1_3 + \li QOpenGLFunctions_1_4 + \li QOpenGLFunctions_1_5 + \li QOpenGLFunctions_2_0 + \li QOpenGLFunctions_2_1 + \li QOpenGLFunctions_3_0 + \endlist + + where each class inherits from QAbstractOpenGLFunctions. + + OpenGL version 3.1 removed many deprecated functions leading to a much + simpler and generic API. + + With OpenGL 3.2 the concept of profiles was introduced. Two profiles are + currently defined for OpenGL: Core and Compatibility. + + The Core profile does not include any of the functions that were removed + in OpenGL 3.1. The Compatibility profile contains all functions in the + Core profile of the same version plus all of the functions that were + removed in OpenGL 3.1. In this way the Compatibility profile classes allow + use of newer OpenGL functionality but also allows you to keep using your + legacy OpenGL code. For new OpenGL code the Core profile should be + preferred. + + Please note that some vendors, notably Apple, do not implement the + Compatibility profile. Therefore if you wish to target new OpenGL features + on OS X then you should ensure that you request a Core profile context via + QSurfaceFormat::setProfile(). + + Qt provides classes for all version and Core and Compatibility profile + combinations. The classes for OpenGL versions 3.1 through to 4.3 are: + + \list + \li QOpenGLFunctions_3_1 + \li QOpenGLFunctions_3_2_Core + \li QOpenGLFunctions_3_2_Compatibility + \li QOpenGLFunctions_3_3_Core + \li QOpenGLFunctions_3_3_Compatibility + \li QOpenGLFunctions_4_0_Core + \li QOpenGLFunctions_4_0_Compatibility + \li QOpenGLFunctions_4_1_Core + \li QOpenGLFunctions_4_1_Compatibility + \li QOpenGLFunctions_4_2_Core + \li QOpenGLFunctions_4_2_Compatibility + \li QOpenGLFunctions_4_3_Core + \li QOpenGLFunctions_4_3_Compatibility + \endlist + + where each class inherits from QAbstractOpenGLFunctions. + + A pointer to an object of the class corresponding to the version and + profile of OpenGL in use can be obtained from + QOpenGLFunctions::versionFunctions(). If obtained in this way, note that + the QOpenGLContext retains ownership of the object. This is so that only + one instance need be created. + + Before calling any of the exposed OpenGL functions you must ensure that the + object has resolved the function pointers to the OpenGL functions. This + only needs to be done once per instance with initializeOpenGLFunctions(). + Once initialized, the object can be used to call any OpenGL function for + the corresponding version and profile. Note that initializeOpenGLFunctions() + can fail in some circumstances so check the return value. Situations in + which initialization can fail are if you have a functions object for a version + or profile that contains functions that are not part of the context being + used to resolve the function pointers. + + If you exclusively use function objects then you will get compile time + errors if you attempt to use a function not included in that version and + profile. This is obviously a lot easier to debug than undefined behavior + at run time. + + \sa QOpenGLContext::versionFunctions() +*/ +QAbstractOpenGLFunctions::QAbstractOpenGLFunctions() + : d_ptr(new QAbstractOpenGLFunctionsPrivate) +{ +} + +QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions() +{ + delete d_ptr; +} + +bool QAbstractOpenGLFunctions::initializeOpenGLFunctions() +{ + Q_D(QAbstractOpenGLFunctions); + d->initialized = true; + return true; +} + +bool QAbstractOpenGLFunctions::isInitialized() const +{ + Q_D(const QAbstractOpenGLFunctions); + return d->initialized; +} + +void QAbstractOpenGLFunctions::setOwningContext(const QOpenGLContext *context) +{ + Q_D(QAbstractOpenGLFunctions); + d->owningContext = const_cast(context); +} + +QOpenGLContext *QAbstractOpenGLFunctions::owningContext() const +{ + Q_D(const QAbstractOpenGLFunctions); + return d->owningContext; +} + +#if !defined(QT_OPENGL_ES_2) + +QOpenGLFunctions_1_0_CoreBackend::QOpenGLFunctions_1_0_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.0 core functions +#if defined(Q_OS_WIN) + HMODULE handle = GetModuleHandleA("opengl32.dll"); + Viewport = reinterpret_cast(GetProcAddress(handle, "glViewport")); + DepthRange = reinterpret_cast(GetProcAddress(handle, "glDepthRange")); + IsEnabled = reinterpret_cast(GetProcAddress(handle, "glIsEnabled")); + GetTexLevelParameteriv = reinterpret_cast(GetProcAddress(handle, "glGetTexLevelParameteriv")); + GetTexLevelParameterfv = reinterpret_cast(GetProcAddress(handle, "glGetTexLevelParameterfv")); + GetTexParameteriv = reinterpret_cast(GetProcAddress(handle, "glGetTexParameteriv")); + GetTexParameterfv = reinterpret_cast(GetProcAddress(handle, "glGetTexParameterfv")); + GetTexImage = reinterpret_cast(GetProcAddress(handle, "glGetTexImage")); + GetString = reinterpret_cast(GetProcAddress(handle, "glGetString")); + GetIntegerv = reinterpret_cast(GetProcAddress(handle, "glGetIntegerv")); + GetFloatv = reinterpret_cast(GetProcAddress(handle, "glGetFloatv")); + GetError = reinterpret_cast(GetProcAddress(handle, "glGetError")); + GetDoublev = reinterpret_cast(GetProcAddress(handle, "glGetDoublev")); + GetBooleanv = reinterpret_cast(GetProcAddress(handle, "glGetBooleanv")); + ReadPixels = reinterpret_cast(GetProcAddress(handle, "glReadPixels")); + ReadBuffer = reinterpret_cast(GetProcAddress(handle, "glReadBuffer")); + PixelStorei = reinterpret_cast(GetProcAddress(handle, "glPixelStorei")); + PixelStoref = reinterpret_cast(GetProcAddress(handle, "glPixelStoref")); + DepthFunc = reinterpret_cast(GetProcAddress(handle, "glDepthFunc")); + StencilOp = reinterpret_cast(GetProcAddress(handle, "glStencilOp")); + StencilFunc = reinterpret_cast(GetProcAddress(handle, "glStencilFunc")); + LogicOp = reinterpret_cast(GetProcAddress(handle, "glLogicOp")); + BlendFunc = reinterpret_cast(GetProcAddress(handle, "glBlendFunc")); + Flush = reinterpret_cast(GetProcAddress(handle, "glFlush")); + Finish = reinterpret_cast(GetProcAddress(handle, "glFinish")); + Enable = reinterpret_cast(GetProcAddress(handle, "glEnable")); + Disable = reinterpret_cast(GetProcAddress(handle, "glDisable")); + DepthMask = reinterpret_cast(GetProcAddress(handle, "glDepthMask")); + ColorMask = reinterpret_cast(GetProcAddress(handle, "glColorMask")); + StencilMask = reinterpret_cast(GetProcAddress(handle, "glStencilMask")); + ClearDepth = reinterpret_cast(GetProcAddress(handle, "glClearDepth")); + ClearStencil = reinterpret_cast(GetProcAddress(handle, "glClearStencil")); + ClearColor = reinterpret_cast(GetProcAddress(handle, "glClearColor")); + Clear = reinterpret_cast(GetProcAddress(handle, "glClear")); + DrawBuffer = reinterpret_cast(GetProcAddress(handle, "glDrawBuffer")); + TexImage2D = reinterpret_cast(GetProcAddress(handle, "glTexImage2D")); + TexImage1D = reinterpret_cast(GetProcAddress(handle, "glTexImage1D")); + TexParameteriv = reinterpret_cast(GetProcAddress(handle, "glTexParameteriv")); + TexParameteri = reinterpret_cast(GetProcAddress(handle, "glTexParameteri")); + TexParameterfv = reinterpret_cast(GetProcAddress(handle, "glTexParameterfv")); + TexParameterf = reinterpret_cast(GetProcAddress(handle, "glTexParameterf")); + Scissor = reinterpret_cast(GetProcAddress(handle, "glScissor")); + PolygonMode = reinterpret_cast(GetProcAddress(handle, "glPolygonMode")); + PointSize = reinterpret_cast(GetProcAddress(handle, "glPointSize")); + LineWidth = reinterpret_cast(GetProcAddress(handle, "glLineWidth")); + Hint = reinterpret_cast(GetProcAddress(handle, "glHint")); + FrontFace = reinterpret_cast(GetProcAddress(handle, "glFrontFace")); + CullFace = reinterpret_cast(GetProcAddress(handle, "glCullFace")); +#else + Viewport = reinterpret_cast(context->getProcAddress("glViewport")); + DepthRange = reinterpret_cast(context->getProcAddress("glDepthRange")); + IsEnabled = reinterpret_cast(context->getProcAddress("glIsEnabled")); + GetTexLevelParameteriv = reinterpret_cast(context->getProcAddress("glGetTexLevelParameteriv")); + GetTexLevelParameterfv = reinterpret_cast(context->getProcAddress("glGetTexLevelParameterfv")); + GetTexParameteriv = reinterpret_cast(context->getProcAddress("glGetTexParameteriv")); + GetTexParameterfv = reinterpret_cast(context->getProcAddress("glGetTexParameterfv")); + GetTexImage = reinterpret_cast(context->getProcAddress("glGetTexImage")); + GetString = reinterpret_cast(context->getProcAddress("glGetString")); + GetIntegerv = reinterpret_cast(context->getProcAddress("glGetIntegerv")); + GetFloatv = reinterpret_cast(context->getProcAddress("glGetFloatv")); + GetError = reinterpret_cast(context->getProcAddress("glGetError")); + GetDoublev = reinterpret_cast(context->getProcAddress("glGetDoublev")); + GetBooleanv = reinterpret_cast(context->getProcAddress("glGetBooleanv")); + ReadPixels = reinterpret_cast(context->getProcAddress("glReadPixels")); + ReadBuffer = reinterpret_cast(context->getProcAddress("glReadBuffer")); + PixelStorei = reinterpret_cast(context->getProcAddress("glPixelStorei")); + PixelStoref = reinterpret_cast(context->getProcAddress("glPixelStoref")); + DepthFunc = reinterpret_cast(context->getProcAddress("glDepthFunc")); + StencilOp = reinterpret_cast(context->getProcAddress("glStencilOp")); + StencilFunc = reinterpret_cast(context->getProcAddress("glStencilFunc")); + LogicOp = reinterpret_cast(context->getProcAddress("glLogicOp")); + BlendFunc = reinterpret_cast(context->getProcAddress("glBlendFunc")); + Flush = reinterpret_cast(context->getProcAddress("glFlush")); + Finish = reinterpret_cast(context->getProcAddress("glFinish")); + Enable = reinterpret_cast(context->getProcAddress("glEnable")); + Disable = reinterpret_cast(context->getProcAddress("glDisable")); + DepthMask = reinterpret_cast(context->getProcAddress("glDepthMask")); + ColorMask = reinterpret_cast(context->getProcAddress("glColorMask")); + StencilMask = reinterpret_cast(context->getProcAddress("glStencilMask")); + ClearDepth = reinterpret_cast(context->getProcAddress("glClearDepth")); + ClearStencil = reinterpret_cast(context->getProcAddress("glClearStencil")); + ClearColor = reinterpret_cast(context->getProcAddress("glClearColor")); + Clear = reinterpret_cast(context->getProcAddress("glClear")); + DrawBuffer = reinterpret_cast(context->getProcAddress("glDrawBuffer")); + TexImage2D = reinterpret_cast(context->getProcAddress("glTexImage2D")); + TexImage1D = reinterpret_cast(context->getProcAddress("glTexImage1D")); + TexParameteriv = reinterpret_cast(context->getProcAddress("glTexParameteriv")); + TexParameteri = reinterpret_cast(context->getProcAddress("glTexParameteri")); + TexParameterfv = reinterpret_cast(context->getProcAddress("glTexParameterfv")); + TexParameterf = reinterpret_cast(context->getProcAddress("glTexParameterf")); + Scissor = reinterpret_cast(context->getProcAddress("glScissor")); + PolygonMode = reinterpret_cast(context->getProcAddress("glPolygonMode")); + PointSize = reinterpret_cast(context->getProcAddress("glPointSize")); + LineWidth = reinterpret_cast(context->getProcAddress("glLineWidth")); + Hint = reinterpret_cast(context->getProcAddress("glHint")); + FrontFace = reinterpret_cast(context->getProcAddress("glFrontFace")); + CullFace = reinterpret_cast(context->getProcAddress("glCullFace")); +#endif + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_0_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 0, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_1_1_CoreBackend::QOpenGLFunctions_1_1_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.1 core functions +#if defined(Q_OS_WIN) + HMODULE handle = GetModuleHandleA("opengl32.dll"); + Indexubv = reinterpret_cast(GetProcAddress(handle, "glIndexubv")); + Indexub = reinterpret_cast(GetProcAddress(handle, "glIndexub")); + IsTexture = reinterpret_cast(GetProcAddress(handle, "glIsTexture")); + GenTextures = reinterpret_cast(GetProcAddress(handle, "glGenTextures")); + DeleteTextures = reinterpret_cast(GetProcAddress(handle, "glDeleteTextures")); + BindTexture = reinterpret_cast(GetProcAddress(handle, "glBindTexture")); + TexSubImage2D = reinterpret_cast(GetProcAddress(handle, "glTexSubImage2D")); + TexSubImage1D = reinterpret_cast(GetProcAddress(handle, "glTexSubImage1D")); + CopyTexSubImage2D = reinterpret_cast(GetProcAddress(handle, "glCopyTexSubImage2D")); + CopyTexSubImage1D = reinterpret_cast(GetProcAddress(handle, "glCopyTexSubImage1D")); + CopyTexImage2D = reinterpret_cast(GetProcAddress(handle, "glCopyTexImage2D")); + CopyTexImage1D = reinterpret_cast(GetProcAddress(handle, "glCopyTexImage1D")); + PolygonOffset = reinterpret_cast(GetProcAddress(handle, "glPolygonOffset")); + GetPointerv = reinterpret_cast(GetProcAddress(handle, "glGetPointerv")); + DrawElements = reinterpret_cast(GetProcAddress(handle, "glDrawElements")); + DrawArrays = reinterpret_cast(GetProcAddress(handle, "glDrawArrays")); +#else + Indexubv = reinterpret_cast(context->getProcAddress("glIndexubv")); + Indexub = reinterpret_cast(context->getProcAddress("glIndexub")); + IsTexture = reinterpret_cast(context->getProcAddress("glIsTexture")); + GenTextures = reinterpret_cast(context->getProcAddress("glGenTextures")); + DeleteTextures = reinterpret_cast(context->getProcAddress("glDeleteTextures")); + BindTexture = reinterpret_cast(context->getProcAddress("glBindTexture")); + TexSubImage2D = reinterpret_cast(context->getProcAddress("glTexSubImage2D")); + TexSubImage1D = reinterpret_cast(context->getProcAddress("glTexSubImage1D")); + CopyTexSubImage2D = reinterpret_cast(context->getProcAddress("glCopyTexSubImage2D")); + CopyTexSubImage1D = reinterpret_cast(context->getProcAddress("glCopyTexSubImage1D")); + CopyTexImage2D = reinterpret_cast(context->getProcAddress("glCopyTexImage2D")); + CopyTexImage1D = reinterpret_cast(context->getProcAddress("glCopyTexImage1D")); + PolygonOffset = reinterpret_cast(context->getProcAddress("glPolygonOffset")); + GetPointerv = reinterpret_cast(context->getProcAddress("glGetPointerv")); + DrawElements = reinterpret_cast(context->getProcAddress("glDrawElements")); + DrawArrays = reinterpret_cast(context->getProcAddress("glDrawArrays")); +#endif + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_1_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 1, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_1_2_CoreBackend::QOpenGLFunctions_1_2_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.2 core functions + CopyTexSubImage3D = reinterpret_cast(context->getProcAddress("glCopyTexSubImage3D")); + TexSubImage3D = reinterpret_cast(context->getProcAddress("glTexSubImage3D")); + DrawRangeElements = reinterpret_cast(context->getProcAddress("glDrawRangeElements")); + BlendEquation = reinterpret_cast(context->getProcAddress("glBlendEquation")); + BlendColor = reinterpret_cast(context->getProcAddress("glBlendColor")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_2_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 2, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_1_3_CoreBackend::QOpenGLFunctions_1_3_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.3 core functions + GetCompressedTexImage = reinterpret_cast(context->getProcAddress("glGetCompressedTexImage")); + CompressedTexSubImage1D = reinterpret_cast(context->getProcAddress("glCompressedTexSubImage1D")); + CompressedTexSubImage2D = reinterpret_cast(context->getProcAddress("glCompressedTexSubImage2D")); + CompressedTexSubImage3D = reinterpret_cast(context->getProcAddress("glCompressedTexSubImage3D")); + CompressedTexImage1D = reinterpret_cast(context->getProcAddress("glCompressedTexImage1D")); + CompressedTexImage2D = reinterpret_cast(context->getProcAddress("glCompressedTexImage2D")); + CompressedTexImage3D = reinterpret_cast(context->getProcAddress("glCompressedTexImage3D")); + SampleCoverage = reinterpret_cast(context->getProcAddress("glSampleCoverage")); + ActiveTexture = reinterpret_cast(context->getProcAddress("glActiveTexture")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_3_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 3, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_1_4_CoreBackend::QOpenGLFunctions_1_4_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.4 core functions + PointParameteriv = reinterpret_cast(context->getProcAddress("glPointParameteriv")); + PointParameteri = reinterpret_cast(context->getProcAddress("glPointParameteri")); + PointParameterfv = reinterpret_cast(context->getProcAddress("glPointParameterfv")); + PointParameterf = reinterpret_cast(context->getProcAddress("glPointParameterf")); + MultiDrawElements = reinterpret_cast(context->getProcAddress("glMultiDrawElements")); + MultiDrawArrays = reinterpret_cast(context->getProcAddress("glMultiDrawArrays")); + BlendFuncSeparate = reinterpret_cast(context->getProcAddress("glBlendFuncSeparate")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_4_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 4, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_1_5_CoreBackend::QOpenGLFunctions_1_5_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.5 core functions + GetBufferPointerv = reinterpret_cast(context->getProcAddress("glGetBufferPointerv")); + GetBufferParameteriv = reinterpret_cast(context->getProcAddress("glGetBufferParameteriv")); + UnmapBuffer = reinterpret_cast(context->getProcAddress("glUnmapBuffer")); + MapBuffer = reinterpret_cast(context->getProcAddress("glMapBuffer")); + GetBufferSubData = reinterpret_cast(context->getProcAddress("glGetBufferSubData")); + BufferSubData = reinterpret_cast(context->getProcAddress("glBufferSubData")); + BufferData = reinterpret_cast(context->getProcAddress("glBufferData")); + IsBuffer = reinterpret_cast(context->getProcAddress("glIsBuffer")); + GenBuffers = reinterpret_cast(context->getProcAddress("glGenBuffers")); + DeleteBuffers = reinterpret_cast(context->getProcAddress("glDeleteBuffers")); + BindBuffer = reinterpret_cast(context->getProcAddress("glBindBuffer")); + GetQueryObjectuiv = reinterpret_cast(context->getProcAddress("glGetQueryObjectuiv")); + GetQueryObjectiv = reinterpret_cast(context->getProcAddress("glGetQueryObjectiv")); + GetQueryiv = reinterpret_cast(context->getProcAddress("glGetQueryiv")); + EndQuery = reinterpret_cast(context->getProcAddress("glEndQuery")); + BeginQuery = reinterpret_cast(context->getProcAddress("glBeginQuery")); + IsQuery = reinterpret_cast(context->getProcAddress("glIsQuery")); + DeleteQueries = reinterpret_cast(context->getProcAddress("glDeleteQueries")); + GenQueries = reinterpret_cast(context->getProcAddress("glGenQueries")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_5_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 5, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_2_0_CoreBackend::QOpenGLFunctions_2_0_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 2.0 core functions + VertexAttribPointer = reinterpret_cast(context->getProcAddress("glVertexAttribPointer")); + ValidateProgram = reinterpret_cast(context->getProcAddress("glValidateProgram")); + UniformMatrix4fv = reinterpret_cast(context->getProcAddress("glUniformMatrix4fv")); + UniformMatrix3fv = reinterpret_cast(context->getProcAddress("glUniformMatrix3fv")); + UniformMatrix2fv = reinterpret_cast(context->getProcAddress("glUniformMatrix2fv")); + Uniform4iv = reinterpret_cast(context->getProcAddress("glUniform4iv")); + Uniform3iv = reinterpret_cast(context->getProcAddress("glUniform3iv")); + Uniform2iv = reinterpret_cast(context->getProcAddress("glUniform2iv")); + Uniform1iv = reinterpret_cast(context->getProcAddress("glUniform1iv")); + Uniform4fv = reinterpret_cast(context->getProcAddress("glUniform4fv")); + Uniform3fv = reinterpret_cast(context->getProcAddress("glUniform3fv")); + Uniform2fv = reinterpret_cast(context->getProcAddress("glUniform2fv")); + Uniform1fv = reinterpret_cast(context->getProcAddress("glUniform1fv")); + Uniform4i = reinterpret_cast(context->getProcAddress("glUniform4i")); + Uniform3i = reinterpret_cast(context->getProcAddress("glUniform3i")); + Uniform2i = reinterpret_cast(context->getProcAddress("glUniform2i")); + Uniform1i = reinterpret_cast(context->getProcAddress("glUniform1i")); + Uniform4f = reinterpret_cast(context->getProcAddress("glUniform4f")); + Uniform3f = reinterpret_cast(context->getProcAddress("glUniform3f")); + Uniform2f = reinterpret_cast(context->getProcAddress("glUniform2f")); + Uniform1f = reinterpret_cast(context->getProcAddress("glUniform1f")); + UseProgram = reinterpret_cast(context->getProcAddress("glUseProgram")); + ShaderSource = reinterpret_cast(context->getProcAddress("glShaderSource")); + LinkProgram = reinterpret_cast(context->getProcAddress("glLinkProgram")); + IsShader = reinterpret_cast(context->getProcAddress("glIsShader")); + IsProgram = reinterpret_cast(context->getProcAddress("glIsProgram")); + GetVertexAttribPointerv = reinterpret_cast(context->getProcAddress("glGetVertexAttribPointerv")); + GetVertexAttribiv = reinterpret_cast(context->getProcAddress("glGetVertexAttribiv")); + GetVertexAttribfv = reinterpret_cast(context->getProcAddress("glGetVertexAttribfv")); + GetVertexAttribdv = reinterpret_cast(context->getProcAddress("glGetVertexAttribdv")); + GetUniformiv = reinterpret_cast(context->getProcAddress("glGetUniformiv")); + GetUniformfv = reinterpret_cast(context->getProcAddress("glGetUniformfv")); + GetUniformLocation = reinterpret_cast(context->getProcAddress("glGetUniformLocation")); + GetShaderSource = reinterpret_cast(context->getProcAddress("glGetShaderSource")); + GetShaderInfoLog = reinterpret_cast(context->getProcAddress("glGetShaderInfoLog")); + GetShaderiv = reinterpret_cast(context->getProcAddress("glGetShaderiv")); + GetProgramInfoLog = reinterpret_cast(context->getProcAddress("glGetProgramInfoLog")); + GetProgramiv = reinterpret_cast(context->getProcAddress("glGetProgramiv")); + GetAttribLocation = reinterpret_cast(context->getProcAddress("glGetAttribLocation")); + GetAttachedShaders = reinterpret_cast(context->getProcAddress("glGetAttachedShaders")); + GetActiveUniform = reinterpret_cast(context->getProcAddress("glGetActiveUniform")); + GetActiveAttrib = reinterpret_cast(context->getProcAddress("glGetActiveAttrib")); + EnableVertexAttribArray = reinterpret_cast(context->getProcAddress("glEnableVertexAttribArray")); + DisableVertexAttribArray = reinterpret_cast(context->getProcAddress("glDisableVertexAttribArray")); + DetachShader = reinterpret_cast(context->getProcAddress("glDetachShader")); + DeleteShader = reinterpret_cast(context->getProcAddress("glDeleteShader")); + DeleteProgram = reinterpret_cast(context->getProcAddress("glDeleteProgram")); + CreateShader = reinterpret_cast(context->getProcAddress("glCreateShader")); + CreateProgram = reinterpret_cast(context->getProcAddress("glCreateProgram")); + CompileShader = reinterpret_cast(context->getProcAddress("glCompileShader")); + BindAttribLocation = reinterpret_cast(context->getProcAddress("glBindAttribLocation")); + AttachShader = reinterpret_cast(context->getProcAddress("glAttachShader")); + StencilMaskSeparate = reinterpret_cast(context->getProcAddress("glStencilMaskSeparate")); + StencilFuncSeparate = reinterpret_cast(context->getProcAddress("glStencilFuncSeparate")); + StencilOpSeparate = reinterpret_cast(context->getProcAddress("glStencilOpSeparate")); + DrawBuffers = reinterpret_cast(context->getProcAddress("glDrawBuffers")); + BlendEquationSeparate = reinterpret_cast(context->getProcAddress("glBlendEquationSeparate")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_2_0_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(2, 0, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_2_1_CoreBackend::QOpenGLFunctions_2_1_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 2.1 core functions + UniformMatrix4x3fv = reinterpret_cast(context->getProcAddress("glUniformMatrix4x3fv")); + UniformMatrix3x4fv = reinterpret_cast(context->getProcAddress("glUniformMatrix3x4fv")); + UniformMatrix4x2fv = reinterpret_cast(context->getProcAddress("glUniformMatrix4x2fv")); + UniformMatrix2x4fv = reinterpret_cast(context->getProcAddress("glUniformMatrix2x4fv")); + UniformMatrix3x2fv = reinterpret_cast(context->getProcAddress("glUniformMatrix3x2fv")); + UniformMatrix2x3fv = reinterpret_cast(context->getProcAddress("glUniformMatrix2x3fv")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_2_1_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(2, 1, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_3_0_CoreBackend::QOpenGLFunctions_3_0_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 3.0 core functions + IsVertexArray = reinterpret_cast(context->getProcAddress("glIsVertexArray")); + GenVertexArrays = reinterpret_cast(context->getProcAddress("glGenVertexArrays")); + DeleteVertexArrays = reinterpret_cast(context->getProcAddress("glDeleteVertexArrays")); + BindVertexArray = reinterpret_cast(context->getProcAddress("glBindVertexArray")); + FlushMappedBufferRange = reinterpret_cast(context->getProcAddress("glFlushMappedBufferRange")); + MapBufferRange = reinterpret_cast(context->getProcAddress("glMapBufferRange")); + FramebufferTextureLayer = reinterpret_cast(context->getProcAddress("glFramebufferTextureLayer")); + RenderbufferStorageMultisample = reinterpret_cast(context->getProcAddress("glRenderbufferStorageMultisample")); + BlitFramebuffer = reinterpret_cast(context->getProcAddress("glBlitFramebuffer")); + GenerateMipmap = reinterpret_cast(context->getProcAddress("glGenerateMipmap")); + GetFramebufferAttachmentParameteriv = reinterpret_cast(context->getProcAddress("glGetFramebufferAttachmentParameteriv")); + FramebufferRenderbuffer = reinterpret_cast(context->getProcAddress("glFramebufferRenderbuffer")); + FramebufferTexture3D = reinterpret_cast(context->getProcAddress("glFramebufferTexture3D")); + FramebufferTexture2D = reinterpret_cast(context->getProcAddress("glFramebufferTexture2D")); + FramebufferTexture1D = reinterpret_cast(context->getProcAddress("glFramebufferTexture1D")); + CheckFramebufferStatus = reinterpret_cast(context->getProcAddress("glCheckFramebufferStatus")); + GenFramebuffers = reinterpret_cast(context->getProcAddress("glGenFramebuffers")); + DeleteFramebuffers = reinterpret_cast(context->getProcAddress("glDeleteFramebuffers")); + BindFramebuffer = reinterpret_cast(context->getProcAddress("glBindFramebuffer")); + IsFramebuffer = reinterpret_cast(context->getProcAddress("glIsFramebuffer")); + GetRenderbufferParameteriv = reinterpret_cast(context->getProcAddress("glGetRenderbufferParameteriv")); + RenderbufferStorage = reinterpret_cast(context->getProcAddress("glRenderbufferStorage")); + GenRenderbuffers = reinterpret_cast(context->getProcAddress("glGenRenderbuffers")); + DeleteRenderbuffers = reinterpret_cast(context->getProcAddress("glDeleteRenderbuffers")); + BindRenderbuffer = reinterpret_cast(context->getProcAddress("glBindRenderbuffer")); + IsRenderbuffer = reinterpret_cast(context->getProcAddress("glIsRenderbuffer")); + GetStringi = reinterpret_cast(context->getProcAddress("glGetStringi")); + ClearBufferfi = reinterpret_cast(context->getProcAddress("glClearBufferfi")); + ClearBufferfv = reinterpret_cast(context->getProcAddress("glClearBufferfv")); + ClearBufferuiv = reinterpret_cast(context->getProcAddress("glClearBufferuiv")); + ClearBufferiv = reinterpret_cast(context->getProcAddress("glClearBufferiv")); + GetTexParameterIuiv = reinterpret_cast(context->getProcAddress("glGetTexParameterIuiv")); + GetTexParameterIiv = reinterpret_cast(context->getProcAddress("glGetTexParameterIiv")); + TexParameterIuiv = reinterpret_cast(context->getProcAddress("glTexParameterIuiv")); + TexParameterIiv = reinterpret_cast(context->getProcAddress("glTexParameterIiv")); + Uniform4uiv = reinterpret_cast(context->getProcAddress("glUniform4uiv")); + Uniform3uiv = reinterpret_cast(context->getProcAddress("glUniform3uiv")); + Uniform2uiv = reinterpret_cast(context->getProcAddress("glUniform2uiv")); + Uniform1uiv = reinterpret_cast(context->getProcAddress("glUniform1uiv")); + Uniform4ui = reinterpret_cast(context->getProcAddress("glUniform4ui")); + Uniform3ui = reinterpret_cast(context->getProcAddress("glUniform3ui")); + Uniform2ui = reinterpret_cast(context->getProcAddress("glUniform2ui")); + Uniform1ui = reinterpret_cast(context->getProcAddress("glUniform1ui")); + GetFragDataLocation = reinterpret_cast(context->getProcAddress("glGetFragDataLocation")); + BindFragDataLocation = reinterpret_cast(context->getProcAddress("glBindFragDataLocation")); + GetUniformuiv = reinterpret_cast(context->getProcAddress("glGetUniformuiv")); + GetVertexAttribIuiv = reinterpret_cast(context->getProcAddress("glGetVertexAttribIuiv")); + GetVertexAttribIiv = reinterpret_cast(context->getProcAddress("glGetVertexAttribIiv")); + VertexAttribIPointer = reinterpret_cast(context->getProcAddress("glVertexAttribIPointer")); + EndConditionalRender = reinterpret_cast(context->getProcAddress("glEndConditionalRender")); + BeginConditionalRender = reinterpret_cast(context->getProcAddress("glBeginConditionalRender")); + ClampColor = reinterpret_cast(context->getProcAddress("glClampColor")); + GetTransformFeedbackVarying = reinterpret_cast(context->getProcAddress("glGetTransformFeedbackVarying")); + TransformFeedbackVaryings = reinterpret_cast(context->getProcAddress("glTransformFeedbackVaryings")); + BindBufferBase = reinterpret_cast(context->getProcAddress("glBindBufferBase")); + BindBufferRange = reinterpret_cast(context->getProcAddress("glBindBufferRange")); + EndTransformFeedback = reinterpret_cast(context->getProcAddress("glEndTransformFeedback")); + BeginTransformFeedback = reinterpret_cast(context->getProcAddress("glBeginTransformFeedback")); + IsEnabledi = reinterpret_cast(context->getProcAddress("glIsEnabledi")); + Disablei = reinterpret_cast(context->getProcAddress("glDisablei")); + Enablei = reinterpret_cast(context->getProcAddress("glEnablei")); + GetIntegeri_v = reinterpret_cast(context->getProcAddress("glGetIntegeri_v")); + GetBooleani_v = reinterpret_cast(context->getProcAddress("glGetBooleani_v")); + ColorMaski = reinterpret_cast(context->getProcAddress("glColorMaski")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_3_0_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(3, 0, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_3_1_CoreBackend::QOpenGLFunctions_3_1_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 3.1 core functions + CopyBufferSubData = reinterpret_cast(context->getProcAddress("glCopyBufferSubData")); + UniformBlockBinding = reinterpret_cast(context->getProcAddress("glUniformBlockBinding")); + GetActiveUniformBlockName = reinterpret_cast(context->getProcAddress("glGetActiveUniformBlockName")); + GetActiveUniformBlockiv = reinterpret_cast(context->getProcAddress("glGetActiveUniformBlockiv")); + GetUniformBlockIndex = reinterpret_cast(context->getProcAddress("glGetUniformBlockIndex")); + GetActiveUniformName = reinterpret_cast(context->getProcAddress("glGetActiveUniformName")); + GetActiveUniformsiv = reinterpret_cast(context->getProcAddress("glGetActiveUniformsiv")); + GetUniformIndices = reinterpret_cast(context->getProcAddress("glGetUniformIndices")); + PrimitiveRestartIndex = reinterpret_cast(context->getProcAddress("glPrimitiveRestartIndex")); + TexBuffer = reinterpret_cast(context->getProcAddress("glTexBuffer")); + DrawElementsInstanced = reinterpret_cast(context->getProcAddress("glDrawElementsInstanced")); + DrawArraysInstanced = reinterpret_cast(context->getProcAddress("glDrawArraysInstanced")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_3_1_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(3, 1, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_3_2_CoreBackend::QOpenGLFunctions_3_2_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 3.2 core functions + SampleMaski = reinterpret_cast(context->getProcAddress("glSampleMaski")); + GetMultisamplefv = reinterpret_cast(context->getProcAddress("glGetMultisamplefv")); + TexImage3DMultisample = reinterpret_cast(context->getProcAddress("glTexImage3DMultisample")); + TexImage2DMultisample = reinterpret_cast(context->getProcAddress("glTexImage2DMultisample")); + GetSynciv = reinterpret_cast(context->getProcAddress("glGetSynciv")); + GetInteger64v = reinterpret_cast(context->getProcAddress("glGetInteger64v")); + WaitSync = reinterpret_cast(context->getProcAddress("glWaitSync")); + ClientWaitSync = reinterpret_cast(context->getProcAddress("glClientWaitSync")); + DeleteSync = reinterpret_cast(context->getProcAddress("glDeleteSync")); + IsSync = reinterpret_cast(context->getProcAddress("glIsSync")); + FenceSync = reinterpret_cast(context->getProcAddress("glFenceSync")); + ProvokingVertex = reinterpret_cast(context->getProcAddress("glProvokingVertex")); + MultiDrawElementsBaseVertex = reinterpret_cast(context->getProcAddress("glMultiDrawElementsBaseVertex")); + DrawElementsInstancedBaseVertex = reinterpret_cast(context->getProcAddress("glDrawElementsInstancedBaseVertex")); + DrawRangeElementsBaseVertex = reinterpret_cast(context->getProcAddress("glDrawRangeElementsBaseVertex")); + DrawElementsBaseVertex = reinterpret_cast(context->getProcAddress("glDrawElementsBaseVertex")); + FramebufferTexture = reinterpret_cast(context->getProcAddress("glFramebufferTexture")); + GetBufferParameteri64v = reinterpret_cast(context->getProcAddress("glGetBufferParameteri64v")); + GetInteger64i_v = reinterpret_cast(context->getProcAddress("glGetInteger64i_v")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_3_2_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(3, 2, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_3_3_CoreBackend::QOpenGLFunctions_3_3_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 3.3 core functions + VertexAttribP4uiv = reinterpret_cast(context->getProcAddress("glVertexAttribP4uiv")); + VertexAttribP4ui = reinterpret_cast(context->getProcAddress("glVertexAttribP4ui")); + VertexAttribP3uiv = reinterpret_cast(context->getProcAddress("glVertexAttribP3uiv")); + VertexAttribP3ui = reinterpret_cast(context->getProcAddress("glVertexAttribP3ui")); + VertexAttribP2uiv = reinterpret_cast(context->getProcAddress("glVertexAttribP2uiv")); + VertexAttribP2ui = reinterpret_cast(context->getProcAddress("glVertexAttribP2ui")); + VertexAttribP1uiv = reinterpret_cast(context->getProcAddress("glVertexAttribP1uiv")); + VertexAttribP1ui = reinterpret_cast(context->getProcAddress("glVertexAttribP1ui")); + SecondaryColorP3uiv = reinterpret_cast(context->getProcAddress("glSecondaryColorP3uiv")); + SecondaryColorP3ui = reinterpret_cast(context->getProcAddress("glSecondaryColorP3ui")); + ColorP4uiv = reinterpret_cast(context->getProcAddress("glColorP4uiv")); + ColorP4ui = reinterpret_cast(context->getProcAddress("glColorP4ui")); + ColorP3uiv = reinterpret_cast(context->getProcAddress("glColorP3uiv")); + ColorP3ui = reinterpret_cast(context->getProcAddress("glColorP3ui")); + NormalP3uiv = reinterpret_cast(context->getProcAddress("glNormalP3uiv")); + NormalP3ui = reinterpret_cast(context->getProcAddress("glNormalP3ui")); + MultiTexCoordP4uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP4uiv")); + MultiTexCoordP4ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP4ui")); + MultiTexCoordP3uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP3uiv")); + MultiTexCoordP3ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP3ui")); + MultiTexCoordP2uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP2uiv")); + MultiTexCoordP2ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP2ui")); + MultiTexCoordP1uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP1uiv")); + MultiTexCoordP1ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP1ui")); + TexCoordP4uiv = reinterpret_cast(context->getProcAddress("glTexCoordP4uiv")); + TexCoordP4ui = reinterpret_cast(context->getProcAddress("glTexCoordP4ui")); + TexCoordP3uiv = reinterpret_cast(context->getProcAddress("glTexCoordP3uiv")); + TexCoordP3ui = reinterpret_cast(context->getProcAddress("glTexCoordP3ui")); + TexCoordP2uiv = reinterpret_cast(context->getProcAddress("glTexCoordP2uiv")); + TexCoordP2ui = reinterpret_cast(context->getProcAddress("glTexCoordP2ui")); + TexCoordP1uiv = reinterpret_cast(context->getProcAddress("glTexCoordP1uiv")); + TexCoordP1ui = reinterpret_cast(context->getProcAddress("glTexCoordP1ui")); + VertexP4uiv = reinterpret_cast(context->getProcAddress("glVertexP4uiv")); + VertexP4ui = reinterpret_cast(context->getProcAddress("glVertexP4ui")); + VertexP3uiv = reinterpret_cast(context->getProcAddress("glVertexP3uiv")); + VertexP3ui = reinterpret_cast(context->getProcAddress("glVertexP3ui")); + VertexP2uiv = reinterpret_cast(context->getProcAddress("glVertexP2uiv")); + VertexP2ui = reinterpret_cast(context->getProcAddress("glVertexP2ui")); + GetQueryObjectui64v = reinterpret_cast(context->getProcAddress("glGetQueryObjectui64v")); + GetQueryObjecti64v = reinterpret_cast(context->getProcAddress("glGetQueryObjecti64v")); + QueryCounter = reinterpret_cast(context->getProcAddress("glQueryCounter")); + GetSamplerParameterIuiv = reinterpret_cast(context->getProcAddress("glGetSamplerParameterIuiv")); + GetSamplerParameterfv = reinterpret_cast(context->getProcAddress("glGetSamplerParameterfv")); + GetSamplerParameterIiv = reinterpret_cast(context->getProcAddress("glGetSamplerParameterIiv")); + GetSamplerParameteriv = reinterpret_cast(context->getProcAddress("glGetSamplerParameteriv")); + SamplerParameterIuiv = reinterpret_cast(context->getProcAddress("glSamplerParameterIuiv")); + SamplerParameterIiv = reinterpret_cast(context->getProcAddress("glSamplerParameterIiv")); + SamplerParameterfv = reinterpret_cast(context->getProcAddress("glSamplerParameterfv")); + SamplerParameterf = reinterpret_cast(context->getProcAddress("glSamplerParameterf")); + SamplerParameteriv = reinterpret_cast(context->getProcAddress("glSamplerParameteriv")); + SamplerParameteri = reinterpret_cast(context->getProcAddress("glSamplerParameteri")); + BindSampler = reinterpret_cast(context->getProcAddress("glBindSampler")); + IsSampler = reinterpret_cast(context->getProcAddress("glIsSampler")); + DeleteSamplers = reinterpret_cast(context->getProcAddress("glDeleteSamplers")); + GenSamplers = reinterpret_cast(context->getProcAddress("glGenSamplers")); + GetFragDataIndex = reinterpret_cast(context->getProcAddress("glGetFragDataIndex")); + BindFragDataLocationIndexed = reinterpret_cast(context->getProcAddress("glBindFragDataLocationIndexed")); + VertexAttribDivisor = reinterpret_cast(context->getProcAddress("glVertexAttribDivisor")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_3_3_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(3, 3, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_4_0_CoreBackend::QOpenGLFunctions_4_0_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 4.0 core functions + GetQueryIndexediv = reinterpret_cast(context->getProcAddress("glGetQueryIndexediv")); + EndQueryIndexed = reinterpret_cast(context->getProcAddress("glEndQueryIndexed")); + BeginQueryIndexed = reinterpret_cast(context->getProcAddress("glBeginQueryIndexed")); + DrawTransformFeedbackStream = reinterpret_cast(context->getProcAddress("glDrawTransformFeedbackStream")); + DrawTransformFeedback = reinterpret_cast(context->getProcAddress("glDrawTransformFeedback")); + ResumeTransformFeedback = reinterpret_cast(context->getProcAddress("glResumeTransformFeedback")); + PauseTransformFeedback = reinterpret_cast(context->getProcAddress("glPauseTransformFeedback")); + IsTransformFeedback = reinterpret_cast(context->getProcAddress("glIsTransformFeedback")); + GenTransformFeedbacks = reinterpret_cast(context->getProcAddress("glGenTransformFeedbacks")); + DeleteTransformFeedbacks = reinterpret_cast(context->getProcAddress("glDeleteTransformFeedbacks")); + BindTransformFeedback = reinterpret_cast(context->getProcAddress("glBindTransformFeedback")); + PatchParameterfv = reinterpret_cast(context->getProcAddress("glPatchParameterfv")); + PatchParameteri = reinterpret_cast(context->getProcAddress("glPatchParameteri")); + GetProgramStageiv = reinterpret_cast(context->getProcAddress("glGetProgramStageiv")); + GetUniformSubroutineuiv = reinterpret_cast(context->getProcAddress("glGetUniformSubroutineuiv")); + UniformSubroutinesuiv = reinterpret_cast(context->getProcAddress("glUniformSubroutinesuiv")); + GetActiveSubroutineName = reinterpret_cast(context->getProcAddress("glGetActiveSubroutineName")); + GetActiveSubroutineUniformName = reinterpret_cast(context->getProcAddress("glGetActiveSubroutineUniformName")); + GetActiveSubroutineUniformiv = reinterpret_cast(context->getProcAddress("glGetActiveSubroutineUniformiv")); + GetSubroutineIndex = reinterpret_cast(context->getProcAddress("glGetSubroutineIndex")); + GetSubroutineUniformLocation = reinterpret_cast(context->getProcAddress("glGetSubroutineUniformLocation")); + GetUniformdv = reinterpret_cast(context->getProcAddress("glGetUniformdv")); + UniformMatrix4x3dv = reinterpret_cast(context->getProcAddress("glUniformMatrix4x3dv")); + UniformMatrix4x2dv = reinterpret_cast(context->getProcAddress("glUniformMatrix4x2dv")); + UniformMatrix3x4dv = reinterpret_cast(context->getProcAddress("glUniformMatrix3x4dv")); + UniformMatrix3x2dv = reinterpret_cast(context->getProcAddress("glUniformMatrix3x2dv")); + UniformMatrix2x4dv = reinterpret_cast(context->getProcAddress("glUniformMatrix2x4dv")); + UniformMatrix2x3dv = reinterpret_cast(context->getProcAddress("glUniformMatrix2x3dv")); + UniformMatrix4dv = reinterpret_cast(context->getProcAddress("glUniformMatrix4dv")); + UniformMatrix3dv = reinterpret_cast(context->getProcAddress("glUniformMatrix3dv")); + UniformMatrix2dv = reinterpret_cast(context->getProcAddress("glUniformMatrix2dv")); + Uniform4dv = reinterpret_cast(context->getProcAddress("glUniform4dv")); + Uniform3dv = reinterpret_cast(context->getProcAddress("glUniform3dv")); + Uniform2dv = reinterpret_cast(context->getProcAddress("glUniform2dv")); + Uniform1dv = reinterpret_cast(context->getProcAddress("glUniform1dv")); + Uniform4d = reinterpret_cast(context->getProcAddress("glUniform4d")); + Uniform3d = reinterpret_cast(context->getProcAddress("glUniform3d")); + Uniform2d = reinterpret_cast(context->getProcAddress("glUniform2d")); + Uniform1d = reinterpret_cast(context->getProcAddress("glUniform1d")); + DrawElementsIndirect = reinterpret_cast(context->getProcAddress("glDrawElementsIndirect")); + DrawArraysIndirect = reinterpret_cast(context->getProcAddress("glDrawArraysIndirect")); + BlendFuncSeparatei = reinterpret_cast(context->getProcAddress("glBlendFuncSeparatei")); + BlendFunci = reinterpret_cast(context->getProcAddress("glBlendFunci")); + BlendEquationSeparatei = reinterpret_cast(context->getProcAddress("glBlendEquationSeparatei")); + BlendEquationi = reinterpret_cast(context->getProcAddress("glBlendEquationi")); + MinSampleShading = reinterpret_cast(context->getProcAddress("glMinSampleShading")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_4_0_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(4, 0, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_4_1_CoreBackend::QOpenGLFunctions_4_1_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 4.1 core functions + GetDoublei_v = reinterpret_cast(context->getProcAddress("glGetDoublei_v")); + GetFloati_v = reinterpret_cast(context->getProcAddress("glGetFloati_v")); + DepthRangeIndexed = reinterpret_cast(context->getProcAddress("glDepthRangeIndexed")); + DepthRangeArrayv = reinterpret_cast(context->getProcAddress("glDepthRangeArrayv")); + ScissorIndexedv = reinterpret_cast(context->getProcAddress("glScissorIndexedv")); + ScissorIndexed = reinterpret_cast(context->getProcAddress("glScissorIndexed")); + ScissorArrayv = reinterpret_cast(context->getProcAddress("glScissorArrayv")); + ViewportIndexedfv = reinterpret_cast(context->getProcAddress("glViewportIndexedfv")); + ViewportIndexedf = reinterpret_cast(context->getProcAddress("glViewportIndexedf")); + ViewportArrayv = reinterpret_cast(context->getProcAddress("glViewportArrayv")); + GetVertexAttribLdv = reinterpret_cast(context->getProcAddress("glGetVertexAttribLdv")); + VertexAttribLPointer = reinterpret_cast(context->getProcAddress("glVertexAttribLPointer")); + VertexAttribL4dv = reinterpret_cast(context->getProcAddress("glVertexAttribL4dv")); + VertexAttribL3dv = reinterpret_cast(context->getProcAddress("glVertexAttribL3dv")); + VertexAttribL2dv = reinterpret_cast(context->getProcAddress("glVertexAttribL2dv")); + VertexAttribL1dv = reinterpret_cast(context->getProcAddress("glVertexAttribL1dv")); + VertexAttribL4d = reinterpret_cast(context->getProcAddress("glVertexAttribL4d")); + VertexAttribL3d = reinterpret_cast(context->getProcAddress("glVertexAttribL3d")); + VertexAttribL2d = reinterpret_cast(context->getProcAddress("glVertexAttribL2d")); + VertexAttribL1d = reinterpret_cast(context->getProcAddress("glVertexAttribL1d")); + GetProgramPipelineInfoLog = reinterpret_cast(context->getProcAddress("glGetProgramPipelineInfoLog")); + ValidateProgramPipeline = reinterpret_cast(context->getProcAddress("glValidateProgramPipeline")); + ProgramUniformMatrix4x3dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x3dv")); + ProgramUniformMatrix3x4dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x4dv")); + ProgramUniformMatrix4x2dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x2dv")); + ProgramUniformMatrix2x4dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x4dv")); + ProgramUniformMatrix3x2dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x2dv")); + ProgramUniformMatrix2x3dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x3dv")); + ProgramUniformMatrix4x3fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x3fv")); + ProgramUniformMatrix3x4fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x4fv")); + ProgramUniformMatrix4x2fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x2fv")); + ProgramUniformMatrix2x4fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x4fv")); + ProgramUniformMatrix3x2fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x2fv")); + ProgramUniformMatrix2x3fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x3fv")); + ProgramUniformMatrix4dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4dv")); + ProgramUniformMatrix3dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3dv")); + ProgramUniformMatrix2dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2dv")); + ProgramUniformMatrix4fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4fv")); + ProgramUniformMatrix3fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3fv")); + ProgramUniformMatrix2fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2fv")); + ProgramUniform4uiv = reinterpret_cast(context->getProcAddress("glProgramUniform4uiv")); + ProgramUniform4ui = reinterpret_cast(context->getProcAddress("glProgramUniform4ui")); + ProgramUniform4dv = reinterpret_cast(context->getProcAddress("glProgramUniform4dv")); + ProgramUniform4d = reinterpret_cast(context->getProcAddress("glProgramUniform4d")); + ProgramUniform4fv = reinterpret_cast(context->getProcAddress("glProgramUniform4fv")); + ProgramUniform4f = reinterpret_cast(context->getProcAddress("glProgramUniform4f")); + ProgramUniform4iv = reinterpret_cast(context->getProcAddress("glProgramUniform4iv")); + ProgramUniform4i = reinterpret_cast(context->getProcAddress("glProgramUniform4i")); + ProgramUniform3uiv = reinterpret_cast(context->getProcAddress("glProgramUniform3uiv")); + ProgramUniform3ui = reinterpret_cast(context->getProcAddress("glProgramUniform3ui")); + ProgramUniform3dv = reinterpret_cast(context->getProcAddress("glProgramUniform3dv")); + ProgramUniform3d = reinterpret_cast(context->getProcAddress("glProgramUniform3d")); + ProgramUniform3fv = reinterpret_cast(context->getProcAddress("glProgramUniform3fv")); + ProgramUniform3f = reinterpret_cast(context->getProcAddress("glProgramUniform3f")); + ProgramUniform3iv = reinterpret_cast(context->getProcAddress("glProgramUniform3iv")); + ProgramUniform3i = reinterpret_cast(context->getProcAddress("glProgramUniform3i")); + ProgramUniform2uiv = reinterpret_cast(context->getProcAddress("glProgramUniform2uiv")); + ProgramUniform2ui = reinterpret_cast(context->getProcAddress("glProgramUniform2ui")); + ProgramUniform2dv = reinterpret_cast(context->getProcAddress("glProgramUniform2dv")); + ProgramUniform2d = reinterpret_cast(context->getProcAddress("glProgramUniform2d")); + ProgramUniform2fv = reinterpret_cast(context->getProcAddress("glProgramUniform2fv")); + ProgramUniform2f = reinterpret_cast(context->getProcAddress("glProgramUniform2f")); + ProgramUniform2iv = reinterpret_cast(context->getProcAddress("glProgramUniform2iv")); + ProgramUniform2i = reinterpret_cast(context->getProcAddress("glProgramUniform2i")); + ProgramUniform1uiv = reinterpret_cast(context->getProcAddress("glProgramUniform1uiv")); + ProgramUniform1ui = reinterpret_cast(context->getProcAddress("glProgramUniform1ui")); + ProgramUniform1dv = reinterpret_cast(context->getProcAddress("glProgramUniform1dv")); + ProgramUniform1d = reinterpret_cast(context->getProcAddress("glProgramUniform1d")); + ProgramUniform1fv = reinterpret_cast(context->getProcAddress("glProgramUniform1fv")); + ProgramUniform1f = reinterpret_cast(context->getProcAddress("glProgramUniform1f")); + ProgramUniform1iv = reinterpret_cast(context->getProcAddress("glProgramUniform1iv")); + ProgramUniform1i = reinterpret_cast(context->getProcAddress("glProgramUniform1i")); + GetProgramPipelineiv = reinterpret_cast(context->getProcAddress("glGetProgramPipelineiv")); + IsProgramPipeline = reinterpret_cast(context->getProcAddress("glIsProgramPipeline")); + GenProgramPipelines = reinterpret_cast(context->getProcAddress("glGenProgramPipelines")); + DeleteProgramPipelines = reinterpret_cast(context->getProcAddress("glDeleteProgramPipelines")); + BindProgramPipeline = reinterpret_cast(context->getProcAddress("glBindProgramPipeline")); + CreateShaderProgramv = reinterpret_cast(context->getProcAddress("glCreateShaderProgramv")); + ActiveShaderProgram = reinterpret_cast(context->getProcAddress("glActiveShaderProgram")); + UseProgramStages = reinterpret_cast(context->getProcAddress("glUseProgramStages")); + ProgramParameteri = reinterpret_cast(context->getProcAddress("glProgramParameteri")); + ProgramBinary = reinterpret_cast(context->getProcAddress("glProgramBinary")); + GetProgramBinary = reinterpret_cast(context->getProcAddress("glGetProgramBinary")); + ClearDepthf = reinterpret_cast(context->getProcAddress("glClearDepthf")); + DepthRangef = reinterpret_cast(context->getProcAddress("glDepthRangef")); + GetShaderPrecisionFormat = reinterpret_cast(context->getProcAddress("glGetShaderPrecisionFormat")); + ShaderBinary = reinterpret_cast(context->getProcAddress("glShaderBinary")); + ReleaseShaderCompiler = reinterpret_cast(context->getProcAddress("glReleaseShaderCompiler")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_4_1_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(4, 1, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_4_2_CoreBackend::QOpenGLFunctions_4_2_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 4.2 core functions + TexStorage3D = reinterpret_cast(context->getProcAddress("glTexStorage3D")); + TexStorage2D = reinterpret_cast(context->getProcAddress("glTexStorage2D")); + TexStorage1D = reinterpret_cast(context->getProcAddress("glTexStorage1D")); + MemoryBarrier = reinterpret_cast(context->getProcAddress("glMemoryBarrier")); + BindImageTexture = reinterpret_cast(context->getProcAddress("glBindImageTexture")); + GetActiveAtomicCounterBufferiv = reinterpret_cast(context->getProcAddress("glGetActiveAtomicCounterBufferiv")); + GetInternalformativ = reinterpret_cast(context->getProcAddress("glGetInternalformativ")); + DrawTransformFeedbackStreamInstanced = reinterpret_cast(context->getProcAddress("glDrawTransformFeedbackStreamInstanced")); + DrawTransformFeedbackInstanced = reinterpret_cast(context->getProcAddress("glDrawTransformFeedbackInstanced")); + DrawElementsInstancedBaseVertexBaseInstance = reinterpret_cast(context->getProcAddress("glDrawElementsInstancedBaseVertexBaseInstance")); + DrawElementsInstancedBaseInstance = reinterpret_cast(context->getProcAddress("glDrawElementsInstancedBaseInstance")); + DrawArraysInstancedBaseInstance = reinterpret_cast(context->getProcAddress("glDrawArraysInstancedBaseInstance")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_4_2_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(4, 2, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_4_3_CoreBackend::QOpenGLFunctions_4_3_CoreBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 4.3 core functions + TexStorage3DMultisample = reinterpret_cast(context->getProcAddress("glTexStorage3DMultisample")); + TexStorage2DMultisample = reinterpret_cast(context->getProcAddress("glTexStorage2DMultisample")); + TexBufferRange = reinterpret_cast(context->getProcAddress("glTexBufferRange")); + ShaderStorageBlockBinding = reinterpret_cast(context->getProcAddress("glShaderStorageBlockBinding")); + GetProgramResourceLocationIndex = reinterpret_cast(context->getProcAddress("glGetProgramResourceLocationIndex")); + GetProgramResourceLocation = reinterpret_cast(context->getProcAddress("glGetProgramResourceLocation")); + GetProgramResourceiv = reinterpret_cast(context->getProcAddress("glGetProgramResourceiv")); + GetProgramResourceName = reinterpret_cast(context->getProcAddress("glGetProgramResourceName")); + GetProgramResourceIndex = reinterpret_cast(context->getProcAddress("glGetProgramResourceIndex")); + GetProgramInterfaceiv = reinterpret_cast(context->getProcAddress("glGetProgramInterfaceiv")); + MultiDrawElementsIndirect = reinterpret_cast(context->getProcAddress("glMultiDrawElementsIndirect")); + MultiDrawArraysIndirect = reinterpret_cast(context->getProcAddress("glMultiDrawArraysIndirect")); + InvalidateSubFramebuffer = reinterpret_cast(context->getProcAddress("glInvalidateSubFramebuffer")); + InvalidateFramebuffer = reinterpret_cast(context->getProcAddress("glInvalidateFramebuffer")); + InvalidateBufferData = reinterpret_cast(context->getProcAddress("glInvalidateBufferData")); + InvalidateBufferSubData = reinterpret_cast(context->getProcAddress("glInvalidateBufferSubData")); + InvalidateTexImage = reinterpret_cast(context->getProcAddress("glInvalidateTexImage")); + InvalidateTexSubImage = reinterpret_cast(context->getProcAddress("glInvalidateTexSubImage")); + GetInternalformati64v = reinterpret_cast(context->getProcAddress("glGetInternalformati64v")); + GetFramebufferParameteriv = reinterpret_cast(context->getProcAddress("glGetFramebufferParameteriv")); + FramebufferParameteri = reinterpret_cast(context->getProcAddress("glFramebufferParameteri")); + VertexBindingDivisor = reinterpret_cast(context->getProcAddress("glVertexBindingDivisor")); + VertexAttribBinding = reinterpret_cast(context->getProcAddress("glVertexAttribBinding")); + VertexAttribLFormat = reinterpret_cast(context->getProcAddress("glVertexAttribLFormat")); + VertexAttribIFormat = reinterpret_cast(context->getProcAddress("glVertexAttribIFormat")); + VertexAttribFormat = reinterpret_cast(context->getProcAddress("glVertexAttribFormat")); + BindVertexBuffer = reinterpret_cast(context->getProcAddress("glBindVertexBuffer")); + TextureView = reinterpret_cast(context->getProcAddress("glTextureView")); + CopyImageSubData = reinterpret_cast(context->getProcAddress("glCopyImageSubData")); + DispatchComputeIndirect = reinterpret_cast(context->getProcAddress("glDispatchComputeIndirect")); + DispatchCompute = reinterpret_cast(context->getProcAddress("glDispatchCompute")); + ClearBufferSubData = reinterpret_cast(context->getProcAddress("glClearBufferSubData")); + ClearBufferData = reinterpret_cast(context->getProcAddress("glClearBufferData")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_4_3_CoreBackend::versionStatus() +{ + return QOpenGLVersionStatus(4, 3, QOpenGLVersionStatus::CoreStatus); +} + +QOpenGLFunctions_1_0_DeprecatedBackend::QOpenGLFunctions_1_0_DeprecatedBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.0 deprecated functions +#if defined(Q_OS_WIN) + HMODULE handle = GetModuleHandleA("opengl32.dll"); + Translatef = reinterpret_cast(GetProcAddress(handle, "glTranslatef")); + Translated = reinterpret_cast(GetProcAddress(handle, "glTranslated")); + Scalef = reinterpret_cast(GetProcAddress(handle, "glScalef")); + Scaled = reinterpret_cast(GetProcAddress(handle, "glScaled")); + Rotatef = reinterpret_cast(GetProcAddress(handle, "glRotatef")); + Rotated = reinterpret_cast(GetProcAddress(handle, "glRotated")); + PushMatrix = reinterpret_cast(GetProcAddress(handle, "glPushMatrix")); + PopMatrix = reinterpret_cast(GetProcAddress(handle, "glPopMatrix")); + Ortho = reinterpret_cast(GetProcAddress(handle, "glOrtho")); + MultMatrixd = reinterpret_cast(GetProcAddress(handle, "glMultMatrixd")); + MultMatrixf = reinterpret_cast(GetProcAddress(handle, "glMultMatrixf")); + MatrixMode = reinterpret_cast(GetProcAddress(handle, "glMatrixMode")); + LoadMatrixd = reinterpret_cast(GetProcAddress(handle, "glLoadMatrixd")); + LoadMatrixf = reinterpret_cast(GetProcAddress(handle, "glLoadMatrixf")); + LoadIdentity = reinterpret_cast(GetProcAddress(handle, "glLoadIdentity")); + Frustum = reinterpret_cast(GetProcAddress(handle, "glFrustum")); + IsList = reinterpret_cast(GetProcAddress(handle, "glIsList")); + GetTexGeniv = reinterpret_cast(GetProcAddress(handle, "glGetTexGeniv")); + GetTexGenfv = reinterpret_cast(GetProcAddress(handle, "glGetTexGenfv")); + GetTexGendv = reinterpret_cast(GetProcAddress(handle, "glGetTexGendv")); + GetTexEnviv = reinterpret_cast(GetProcAddress(handle, "glGetTexEnviv")); + GetTexEnvfv = reinterpret_cast(GetProcAddress(handle, "glGetTexEnvfv")); + GetPolygonStipple = reinterpret_cast(GetProcAddress(handle, "glGetPolygonStipple")); + GetPixelMapusv = reinterpret_cast(GetProcAddress(handle, "glGetPixelMapusv")); + GetPixelMapuiv = reinterpret_cast(GetProcAddress(handle, "glGetPixelMapuiv")); + GetPixelMapfv = reinterpret_cast(GetProcAddress(handle, "glGetPixelMapfv")); + GetMaterialiv = reinterpret_cast(GetProcAddress(handle, "glGetMaterialiv")); + GetMaterialfv = reinterpret_cast(GetProcAddress(handle, "glGetMaterialfv")); + GetMapiv = reinterpret_cast(GetProcAddress(handle, "glGetMapiv")); + GetMapfv = reinterpret_cast(GetProcAddress(handle, "glGetMapfv")); + GetMapdv = reinterpret_cast(GetProcAddress(handle, "glGetMapdv")); + GetLightiv = reinterpret_cast(GetProcAddress(handle, "glGetLightiv")); + GetLightfv = reinterpret_cast(GetProcAddress(handle, "glGetLightfv")); + GetClipPlane = reinterpret_cast(GetProcAddress(handle, "glGetClipPlane")); + DrawPixels = reinterpret_cast(GetProcAddress(handle, "glDrawPixels")); + CopyPixels = reinterpret_cast(GetProcAddress(handle, "glCopyPixels")); + PixelMapusv = reinterpret_cast(GetProcAddress(handle, "glPixelMapusv")); + PixelMapuiv = reinterpret_cast(GetProcAddress(handle, "glPixelMapuiv")); + PixelMapfv = reinterpret_cast(GetProcAddress(handle, "glPixelMapfv")); + PixelTransferi = reinterpret_cast(GetProcAddress(handle, "glPixelTransferi")); + PixelTransferf = reinterpret_cast(GetProcAddress(handle, "glPixelTransferf")); + PixelZoom = reinterpret_cast(GetProcAddress(handle, "glPixelZoom")); + AlphaFunc = reinterpret_cast(GetProcAddress(handle, "glAlphaFunc")); + EvalPoint2 = reinterpret_cast(GetProcAddress(handle, "glEvalPoint2")); + EvalMesh2 = reinterpret_cast(GetProcAddress(handle, "glEvalMesh2")); + EvalPoint1 = reinterpret_cast(GetProcAddress(handle, "glEvalPoint1")); + EvalMesh1 = reinterpret_cast(GetProcAddress(handle, "glEvalMesh1")); + EvalCoord2fv = reinterpret_cast(GetProcAddress(handle, "glEvalCoord2fv")); + EvalCoord2f = reinterpret_cast(GetProcAddress(handle, "glEvalCoord2f")); + EvalCoord2dv = reinterpret_cast(GetProcAddress(handle, "glEvalCoord2dv")); + EvalCoord2d = reinterpret_cast(GetProcAddress(handle, "glEvalCoord2d")); + EvalCoord1fv = reinterpret_cast(GetProcAddress(handle, "glEvalCoord1fv")); + EvalCoord1f = reinterpret_cast(GetProcAddress(handle, "glEvalCoord1f")); + EvalCoord1dv = reinterpret_cast(GetProcAddress(handle, "glEvalCoord1dv")); + EvalCoord1d = reinterpret_cast(GetProcAddress(handle, "glEvalCoord1d")); + MapGrid2f = reinterpret_cast(GetProcAddress(handle, "glMapGrid2f")); + MapGrid2d = reinterpret_cast(GetProcAddress(handle, "glMapGrid2d")); + MapGrid1f = reinterpret_cast(GetProcAddress(handle, "glMapGrid1f")); + MapGrid1d = reinterpret_cast(GetProcAddress(handle, "glMapGrid1d")); + Map2f = reinterpret_cast(GetProcAddress(handle, "glMap2f")); + Map2d = reinterpret_cast(GetProcAddress(handle, "glMap2d")); + Map1f = reinterpret_cast(GetProcAddress(handle, "glMap1f")); + Map1d = reinterpret_cast(GetProcAddress(handle, "glMap1d")); + PushAttrib = reinterpret_cast(GetProcAddress(handle, "glPushAttrib")); + PopAttrib = reinterpret_cast(GetProcAddress(handle, "glPopAttrib")); + Accum = reinterpret_cast(GetProcAddress(handle, "glAccum")); + IndexMask = reinterpret_cast(GetProcAddress(handle, "glIndexMask")); + ClearIndex = reinterpret_cast(GetProcAddress(handle, "glClearIndex")); + ClearAccum = reinterpret_cast(GetProcAddress(handle, "glClearAccum")); + PushName = reinterpret_cast(GetProcAddress(handle, "glPushName")); + PopName = reinterpret_cast(GetProcAddress(handle, "glPopName")); + PassThrough = reinterpret_cast(GetProcAddress(handle, "glPassThrough")); + LoadName = reinterpret_cast(GetProcAddress(handle, "glLoadName")); + InitNames = reinterpret_cast(GetProcAddress(handle, "glInitNames")); + RenderMode = reinterpret_cast(GetProcAddress(handle, "glRenderMode")); + SelectBuffer = reinterpret_cast(GetProcAddress(handle, "glSelectBuffer")); + FeedbackBuffer = reinterpret_cast(GetProcAddress(handle, "glFeedbackBuffer")); + TexGeniv = reinterpret_cast(GetProcAddress(handle, "glTexGeniv")); + TexGeni = reinterpret_cast(GetProcAddress(handle, "glTexGeni")); + TexGenfv = reinterpret_cast(GetProcAddress(handle, "glTexGenfv")); + TexGenf = reinterpret_cast(GetProcAddress(handle, "glTexGenf")); + TexGendv = reinterpret_cast(GetProcAddress(handle, "glTexGendv")); + TexGend = reinterpret_cast(GetProcAddress(handle, "glTexGend")); + TexEnviv = reinterpret_cast(GetProcAddress(handle, "glTexEnviv")); + TexEnvi = reinterpret_cast(GetProcAddress(handle, "glTexEnvi")); + TexEnvfv = reinterpret_cast(GetProcAddress(handle, "glTexEnvfv")); + TexEnvf = reinterpret_cast(GetProcAddress(handle, "glTexEnvf")); + ShadeModel = reinterpret_cast(GetProcAddress(handle, "glShadeModel")); + PolygonStipple = reinterpret_cast(GetProcAddress(handle, "glPolygonStipple")); + Materialiv = reinterpret_cast(GetProcAddress(handle, "glMaterialiv")); + Materiali = reinterpret_cast(GetProcAddress(handle, "glMateriali")); + Materialfv = reinterpret_cast(GetProcAddress(handle, "glMaterialfv")); + Materialf = reinterpret_cast(GetProcAddress(handle, "glMaterialf")); + LineStipple = reinterpret_cast(GetProcAddress(handle, "glLineStipple")); + LightModeliv = reinterpret_cast(GetProcAddress(handle, "glLightModeliv")); + LightModeli = reinterpret_cast(GetProcAddress(handle, "glLightModeli")); + LightModelfv = reinterpret_cast(GetProcAddress(handle, "glLightModelfv")); + LightModelf = reinterpret_cast(GetProcAddress(handle, "glLightModelf")); + Lightiv = reinterpret_cast(GetProcAddress(handle, "glLightiv")); + Lighti = reinterpret_cast(GetProcAddress(handle, "glLighti")); + Lightfv = reinterpret_cast(GetProcAddress(handle, "glLightfv")); + Lightf = reinterpret_cast(GetProcAddress(handle, "glLightf")); + Fogiv = reinterpret_cast(GetProcAddress(handle, "glFogiv")); + Fogi = reinterpret_cast(GetProcAddress(handle, "glFogi")); + Fogfv = reinterpret_cast(GetProcAddress(handle, "glFogfv")); + Fogf = reinterpret_cast(GetProcAddress(handle, "glFogf")); + ColorMaterial = reinterpret_cast(GetProcAddress(handle, "glColorMaterial")); + ClipPlane = reinterpret_cast(GetProcAddress(handle, "glClipPlane")); + Vertex4sv = reinterpret_cast(GetProcAddress(handle, "glVertex4sv")); + Vertex4s = reinterpret_cast(GetProcAddress(handle, "glVertex4s")); + Vertex4iv = reinterpret_cast(GetProcAddress(handle, "glVertex4iv")); + Vertex4i = reinterpret_cast(GetProcAddress(handle, "glVertex4i")); + Vertex4fv = reinterpret_cast(GetProcAddress(handle, "glVertex4fv")); + Vertex4f = reinterpret_cast(GetProcAddress(handle, "glVertex4f")); + Vertex4dv = reinterpret_cast(GetProcAddress(handle, "glVertex4dv")); + Vertex4d = reinterpret_cast(GetProcAddress(handle, "glVertex4d")); + Vertex3sv = reinterpret_cast(GetProcAddress(handle, "glVertex3sv")); + Vertex3s = reinterpret_cast(GetProcAddress(handle, "glVertex3s")); + Vertex3iv = reinterpret_cast(GetProcAddress(handle, "glVertex3iv")); + Vertex3i = reinterpret_cast(GetProcAddress(handle, "glVertex3i")); + Vertex3fv = reinterpret_cast(GetProcAddress(handle, "glVertex3fv")); + Vertex3f = reinterpret_cast(GetProcAddress(handle, "glVertex3f")); + Vertex3dv = reinterpret_cast(GetProcAddress(handle, "glVertex3dv")); + Vertex3d = reinterpret_cast(GetProcAddress(handle, "glVertex3d")); + Vertex2sv = reinterpret_cast(GetProcAddress(handle, "glVertex2sv")); + Vertex2s = reinterpret_cast(GetProcAddress(handle, "glVertex2s")); + Vertex2iv = reinterpret_cast(GetProcAddress(handle, "glVertex2iv")); + Vertex2i = reinterpret_cast(GetProcAddress(handle, "glVertex2i")); + Vertex2fv = reinterpret_cast(GetProcAddress(handle, "glVertex2fv")); + Vertex2f = reinterpret_cast(GetProcAddress(handle, "glVertex2f")); + Vertex2dv = reinterpret_cast(GetProcAddress(handle, "glVertex2dv")); + Vertex2d = reinterpret_cast(GetProcAddress(handle, "glVertex2d")); + TexCoord4sv = reinterpret_cast(GetProcAddress(handle, "glTexCoord4sv")); + TexCoord4s = reinterpret_cast(GetProcAddress(handle, "glTexCoord4s")); + TexCoord4iv = reinterpret_cast(GetProcAddress(handle, "glTexCoord4iv")); + TexCoord4i = reinterpret_cast(GetProcAddress(handle, "glTexCoord4i")); + TexCoord4fv = reinterpret_cast(GetProcAddress(handle, "glTexCoord4fv")); + TexCoord4f = reinterpret_cast(GetProcAddress(handle, "glTexCoord4f")); + TexCoord4dv = reinterpret_cast(GetProcAddress(handle, "glTexCoord4dv")); + TexCoord4d = reinterpret_cast(GetProcAddress(handle, "glTexCoord4d")); + TexCoord3sv = reinterpret_cast(GetProcAddress(handle, "glTexCoord3sv")); + TexCoord3s = reinterpret_cast(GetProcAddress(handle, "glTexCoord3s")); + TexCoord3iv = reinterpret_cast(GetProcAddress(handle, "glTexCoord3iv")); + TexCoord3i = reinterpret_cast(GetProcAddress(handle, "glTexCoord3i")); + TexCoord3fv = reinterpret_cast(GetProcAddress(handle, "glTexCoord3fv")); + TexCoord3f = reinterpret_cast(GetProcAddress(handle, "glTexCoord3f")); + TexCoord3dv = reinterpret_cast(GetProcAddress(handle, "glTexCoord3dv")); + TexCoord3d = reinterpret_cast(GetProcAddress(handle, "glTexCoord3d")); + TexCoord2sv = reinterpret_cast(GetProcAddress(handle, "glTexCoord2sv")); + TexCoord2s = reinterpret_cast(GetProcAddress(handle, "glTexCoord2s")); + TexCoord2iv = reinterpret_cast(GetProcAddress(handle, "glTexCoord2iv")); + TexCoord2i = reinterpret_cast(GetProcAddress(handle, "glTexCoord2i")); + TexCoord2fv = reinterpret_cast(GetProcAddress(handle, "glTexCoord2fv")); + TexCoord2f = reinterpret_cast(GetProcAddress(handle, "glTexCoord2f")); + TexCoord2dv = reinterpret_cast(GetProcAddress(handle, "glTexCoord2dv")); + TexCoord2d = reinterpret_cast(GetProcAddress(handle, "glTexCoord2d")); + TexCoord1sv = reinterpret_cast(GetProcAddress(handle, "glTexCoord1sv")); + TexCoord1s = reinterpret_cast(GetProcAddress(handle, "glTexCoord1s")); + TexCoord1iv = reinterpret_cast(GetProcAddress(handle, "glTexCoord1iv")); + TexCoord1i = reinterpret_cast(GetProcAddress(handle, "glTexCoord1i")); + TexCoord1fv = reinterpret_cast(GetProcAddress(handle, "glTexCoord1fv")); + TexCoord1f = reinterpret_cast(GetProcAddress(handle, "glTexCoord1f")); + TexCoord1dv = reinterpret_cast(GetProcAddress(handle, "glTexCoord1dv")); + TexCoord1d = reinterpret_cast(GetProcAddress(handle, "glTexCoord1d")); + Rectsv = reinterpret_cast(GetProcAddress(handle, "glRectsv")); + Rects = reinterpret_cast(GetProcAddress(handle, "glRects")); + Rectiv = reinterpret_cast(GetProcAddress(handle, "glRectiv")); + Recti = reinterpret_cast(GetProcAddress(handle, "glRecti")); + Rectfv = reinterpret_cast(GetProcAddress(handle, "glRectfv")); + Rectf = reinterpret_cast(GetProcAddress(handle, "glRectf")); + Rectdv = reinterpret_cast(GetProcAddress(handle, "glRectdv")); + Rectd = reinterpret_cast(GetProcAddress(handle, "glRectd")); + RasterPos4sv = reinterpret_cast(GetProcAddress(handle, "glRasterPos4sv")); + RasterPos4s = reinterpret_cast(GetProcAddress(handle, "glRasterPos4s")); + RasterPos4iv = reinterpret_cast(GetProcAddress(handle, "glRasterPos4iv")); + RasterPos4i = reinterpret_cast(GetProcAddress(handle, "glRasterPos4i")); + RasterPos4fv = reinterpret_cast(GetProcAddress(handle, "glRasterPos4fv")); + RasterPos4f = reinterpret_cast(GetProcAddress(handle, "glRasterPos4f")); + RasterPos4dv = reinterpret_cast(GetProcAddress(handle, "glRasterPos4dv")); + RasterPos4d = reinterpret_cast(GetProcAddress(handle, "glRasterPos4d")); + RasterPos3sv = reinterpret_cast(GetProcAddress(handle, "glRasterPos3sv")); + RasterPos3s = reinterpret_cast(GetProcAddress(handle, "glRasterPos3s")); + RasterPos3iv = reinterpret_cast(GetProcAddress(handle, "glRasterPos3iv")); + RasterPos3i = reinterpret_cast(GetProcAddress(handle, "glRasterPos3i")); + RasterPos3fv = reinterpret_cast(GetProcAddress(handle, "glRasterPos3fv")); + RasterPos3f = reinterpret_cast(GetProcAddress(handle, "glRasterPos3f")); + RasterPos3dv = reinterpret_cast(GetProcAddress(handle, "glRasterPos3dv")); + RasterPos3d = reinterpret_cast(GetProcAddress(handle, "glRasterPos3d")); + RasterPos2sv = reinterpret_cast(GetProcAddress(handle, "glRasterPos2sv")); + RasterPos2s = reinterpret_cast(GetProcAddress(handle, "glRasterPos2s")); + RasterPos2iv = reinterpret_cast(GetProcAddress(handle, "glRasterPos2iv")); + RasterPos2i = reinterpret_cast(GetProcAddress(handle, "glRasterPos2i")); + RasterPos2fv = reinterpret_cast(GetProcAddress(handle, "glRasterPos2fv")); + RasterPos2f = reinterpret_cast(GetProcAddress(handle, "glRasterPos2f")); + RasterPos2dv = reinterpret_cast(GetProcAddress(handle, "glRasterPos2dv")); + RasterPos2d = reinterpret_cast(GetProcAddress(handle, "glRasterPos2d")); + Normal3sv = reinterpret_cast(GetProcAddress(handle, "glNormal3sv")); + Normal3s = reinterpret_cast(GetProcAddress(handle, "glNormal3s")); + Normal3iv = reinterpret_cast(GetProcAddress(handle, "glNormal3iv")); + Normal3i = reinterpret_cast(GetProcAddress(handle, "glNormal3i")); + Normal3fv = reinterpret_cast(GetProcAddress(handle, "glNormal3fv")); + Normal3f = reinterpret_cast(GetProcAddress(handle, "glNormal3f")); + Normal3dv = reinterpret_cast(GetProcAddress(handle, "glNormal3dv")); + Normal3d = reinterpret_cast(GetProcAddress(handle, "glNormal3d")); + Normal3bv = reinterpret_cast(GetProcAddress(handle, "glNormal3bv")); + Normal3b = reinterpret_cast(GetProcAddress(handle, "glNormal3b")); + Indexsv = reinterpret_cast(GetProcAddress(handle, "glIndexsv")); + Indexs = reinterpret_cast(GetProcAddress(handle, "glIndexs")); + Indexiv = reinterpret_cast(GetProcAddress(handle, "glIndexiv")); + Indexi = reinterpret_cast(GetProcAddress(handle, "glIndexi")); + Indexfv = reinterpret_cast(GetProcAddress(handle, "glIndexfv")); + Indexf = reinterpret_cast(GetProcAddress(handle, "glIndexf")); + Indexdv = reinterpret_cast(GetProcAddress(handle, "glIndexdv")); + Indexd = reinterpret_cast(GetProcAddress(handle, "glIndexd")); + End = reinterpret_cast(GetProcAddress(handle, "glEnd")); + EdgeFlagv = reinterpret_cast(GetProcAddress(handle, "glEdgeFlagv")); + EdgeFlag = reinterpret_cast(GetProcAddress(handle, "glEdgeFlag")); + Color4usv = reinterpret_cast(GetProcAddress(handle, "glColor4usv")); + Color4us = reinterpret_cast(GetProcAddress(handle, "glColor4us")); + Color4uiv = reinterpret_cast(GetProcAddress(handle, "glColor4uiv")); + Color4ui = reinterpret_cast(GetProcAddress(handle, "glColor4ui")); + Color4ubv = reinterpret_cast(GetProcAddress(handle, "glColor4ubv")); + Color4ub = reinterpret_cast(GetProcAddress(handle, "glColor4ub")); + Color4sv = reinterpret_cast(GetProcAddress(handle, "glColor4sv")); + Color4s = reinterpret_cast(GetProcAddress(handle, "glColor4s")); + Color4iv = reinterpret_cast(GetProcAddress(handle, "glColor4iv")); + Color4i = reinterpret_cast(GetProcAddress(handle, "glColor4i")); + Color4fv = reinterpret_cast(GetProcAddress(handle, "glColor4fv")); + Color4f = reinterpret_cast(GetProcAddress(handle, "glColor4f")); + Color4dv = reinterpret_cast(GetProcAddress(handle, "glColor4dv")); + Color4d = reinterpret_cast(GetProcAddress(handle, "glColor4d")); + Color4bv = reinterpret_cast(GetProcAddress(handle, "glColor4bv")); + Color4b = reinterpret_cast(GetProcAddress(handle, "glColor4b")); + Color3usv = reinterpret_cast(GetProcAddress(handle, "glColor3usv")); + Color3us = reinterpret_cast(GetProcAddress(handle, "glColor3us")); + Color3uiv = reinterpret_cast(GetProcAddress(handle, "glColor3uiv")); + Color3ui = reinterpret_cast(GetProcAddress(handle, "glColor3ui")); + Color3ubv = reinterpret_cast(GetProcAddress(handle, "glColor3ubv")); + Color3ub = reinterpret_cast(GetProcAddress(handle, "glColor3ub")); + Color3sv = reinterpret_cast(GetProcAddress(handle, "glColor3sv")); + Color3s = reinterpret_cast(GetProcAddress(handle, "glColor3s")); + Color3iv = reinterpret_cast(GetProcAddress(handle, "glColor3iv")); + Color3i = reinterpret_cast(GetProcAddress(handle, "glColor3i")); + Color3fv = reinterpret_cast(GetProcAddress(handle, "glColor3fv")); + Color3f = reinterpret_cast(GetProcAddress(handle, "glColor3f")); + Color3dv = reinterpret_cast(GetProcAddress(handle, "glColor3dv")); + Color3d = reinterpret_cast(GetProcAddress(handle, "glColor3d")); + Color3bv = reinterpret_cast(GetProcAddress(handle, "glColor3bv")); + Color3b = reinterpret_cast(GetProcAddress(handle, "glColor3b")); + Bitmap = reinterpret_cast(GetProcAddress(handle, "glBitmap")); + Begin = reinterpret_cast(GetProcAddress(handle, "glBegin")); + ListBase = reinterpret_cast(GetProcAddress(handle, "glListBase")); + GenLists = reinterpret_cast(GetProcAddress(handle, "glGenLists")); + DeleteLists = reinterpret_cast(GetProcAddress(handle, "glDeleteLists")); + CallLists = reinterpret_cast(GetProcAddress(handle, "glCallLists")); + CallList = reinterpret_cast(GetProcAddress(handle, "glCallList")); + EndList = reinterpret_cast(GetProcAddress(handle, "glEndList")); + NewList = reinterpret_cast(GetProcAddress(handle, "glNewList")); +#else + Translatef = reinterpret_cast(context->getProcAddress("glTranslatef")); + Translated = reinterpret_cast(context->getProcAddress("glTranslated")); + Scalef = reinterpret_cast(context->getProcAddress("glScalef")); + Scaled = reinterpret_cast(context->getProcAddress("glScaled")); + Rotatef = reinterpret_cast(context->getProcAddress("glRotatef")); + Rotated = reinterpret_cast(context->getProcAddress("glRotated")); + PushMatrix = reinterpret_cast(context->getProcAddress("glPushMatrix")); + PopMatrix = reinterpret_cast(context->getProcAddress("glPopMatrix")); + Ortho = reinterpret_cast(context->getProcAddress("glOrtho")); + MultMatrixd = reinterpret_cast(context->getProcAddress("glMultMatrixd")); + MultMatrixf = reinterpret_cast(context->getProcAddress("glMultMatrixf")); + MatrixMode = reinterpret_cast(context->getProcAddress("glMatrixMode")); + LoadMatrixd = reinterpret_cast(context->getProcAddress("glLoadMatrixd")); + LoadMatrixf = reinterpret_cast(context->getProcAddress("glLoadMatrixf")); + LoadIdentity = reinterpret_cast(context->getProcAddress("glLoadIdentity")); + Frustum = reinterpret_cast(context->getProcAddress("glFrustum")); + IsList = reinterpret_cast(context->getProcAddress("glIsList")); + GetTexGeniv = reinterpret_cast(context->getProcAddress("glGetTexGeniv")); + GetTexGenfv = reinterpret_cast(context->getProcAddress("glGetTexGenfv")); + GetTexGendv = reinterpret_cast(context->getProcAddress("glGetTexGendv")); + GetTexEnviv = reinterpret_cast(context->getProcAddress("glGetTexEnviv")); + GetTexEnvfv = reinterpret_cast(context->getProcAddress("glGetTexEnvfv")); + GetPolygonStipple = reinterpret_cast(context->getProcAddress("glGetPolygonStipple")); + GetPixelMapusv = reinterpret_cast(context->getProcAddress("glGetPixelMapusv")); + GetPixelMapuiv = reinterpret_cast(context->getProcAddress("glGetPixelMapuiv")); + GetPixelMapfv = reinterpret_cast(context->getProcAddress("glGetPixelMapfv")); + GetMaterialiv = reinterpret_cast(context->getProcAddress("glGetMaterialiv")); + GetMaterialfv = reinterpret_cast(context->getProcAddress("glGetMaterialfv")); + GetMapiv = reinterpret_cast(context->getProcAddress("glGetMapiv")); + GetMapfv = reinterpret_cast(context->getProcAddress("glGetMapfv")); + GetMapdv = reinterpret_cast(context->getProcAddress("glGetMapdv")); + GetLightiv = reinterpret_cast(context->getProcAddress("glGetLightiv")); + GetLightfv = reinterpret_cast(context->getProcAddress("glGetLightfv")); + GetClipPlane = reinterpret_cast(context->getProcAddress("glGetClipPlane")); + DrawPixels = reinterpret_cast(context->getProcAddress("glDrawPixels")); + CopyPixels = reinterpret_cast(context->getProcAddress("glCopyPixels")); + PixelMapusv = reinterpret_cast(context->getProcAddress("glPixelMapusv")); + PixelMapuiv = reinterpret_cast(context->getProcAddress("glPixelMapuiv")); + PixelMapfv = reinterpret_cast(context->getProcAddress("glPixelMapfv")); + PixelTransferi = reinterpret_cast(context->getProcAddress("glPixelTransferi")); + PixelTransferf = reinterpret_cast(context->getProcAddress("glPixelTransferf")); + PixelZoom = reinterpret_cast(context->getProcAddress("glPixelZoom")); + AlphaFunc = reinterpret_cast(context->getProcAddress("glAlphaFunc")); + EvalPoint2 = reinterpret_cast(context->getProcAddress("glEvalPoint2")); + EvalMesh2 = reinterpret_cast(context->getProcAddress("glEvalMesh2")); + EvalPoint1 = reinterpret_cast(context->getProcAddress("glEvalPoint1")); + EvalMesh1 = reinterpret_cast(context->getProcAddress("glEvalMesh1")); + EvalCoord2fv = reinterpret_cast(context->getProcAddress("glEvalCoord2fv")); + EvalCoord2f = reinterpret_cast(context->getProcAddress("glEvalCoord2f")); + EvalCoord2dv = reinterpret_cast(context->getProcAddress("glEvalCoord2dv")); + EvalCoord2d = reinterpret_cast(context->getProcAddress("glEvalCoord2d")); + EvalCoord1fv = reinterpret_cast(context->getProcAddress("glEvalCoord1fv")); + EvalCoord1f = reinterpret_cast(context->getProcAddress("glEvalCoord1f")); + EvalCoord1dv = reinterpret_cast(context->getProcAddress("glEvalCoord1dv")); + EvalCoord1d = reinterpret_cast(context->getProcAddress("glEvalCoord1d")); + MapGrid2f = reinterpret_cast(context->getProcAddress("glMapGrid2f")); + MapGrid2d = reinterpret_cast(context->getProcAddress("glMapGrid2d")); + MapGrid1f = reinterpret_cast(context->getProcAddress("glMapGrid1f")); + MapGrid1d = reinterpret_cast(context->getProcAddress("glMapGrid1d")); + Map2f = reinterpret_cast(context->getProcAddress("glMap2f")); + Map2d = reinterpret_cast(context->getProcAddress("glMap2d")); + Map1f = reinterpret_cast(context->getProcAddress("glMap1f")); + Map1d = reinterpret_cast(context->getProcAddress("glMap1d")); + PushAttrib = reinterpret_cast(context->getProcAddress("glPushAttrib")); + PopAttrib = reinterpret_cast(context->getProcAddress("glPopAttrib")); + Accum = reinterpret_cast(context->getProcAddress("glAccum")); + IndexMask = reinterpret_cast(context->getProcAddress("glIndexMask")); + ClearIndex = reinterpret_cast(context->getProcAddress("glClearIndex")); + ClearAccum = reinterpret_cast(context->getProcAddress("glClearAccum")); + PushName = reinterpret_cast(context->getProcAddress("glPushName")); + PopName = reinterpret_cast(context->getProcAddress("glPopName")); + PassThrough = reinterpret_cast(context->getProcAddress("glPassThrough")); + LoadName = reinterpret_cast(context->getProcAddress("glLoadName")); + InitNames = reinterpret_cast(context->getProcAddress("glInitNames")); + RenderMode = reinterpret_cast(context->getProcAddress("glRenderMode")); + SelectBuffer = reinterpret_cast(context->getProcAddress("glSelectBuffer")); + FeedbackBuffer = reinterpret_cast(context->getProcAddress("glFeedbackBuffer")); + TexGeniv = reinterpret_cast(context->getProcAddress("glTexGeniv")); + TexGeni = reinterpret_cast(context->getProcAddress("glTexGeni")); + TexGenfv = reinterpret_cast(context->getProcAddress("glTexGenfv")); + TexGenf = reinterpret_cast(context->getProcAddress("glTexGenf")); + TexGendv = reinterpret_cast(context->getProcAddress("glTexGendv")); + TexGend = reinterpret_cast(context->getProcAddress("glTexGend")); + TexEnviv = reinterpret_cast(context->getProcAddress("glTexEnviv")); + TexEnvi = reinterpret_cast(context->getProcAddress("glTexEnvi")); + TexEnvfv = reinterpret_cast(context->getProcAddress("glTexEnvfv")); + TexEnvf = reinterpret_cast(context->getProcAddress("glTexEnvf")); + ShadeModel = reinterpret_cast(context->getProcAddress("glShadeModel")); + PolygonStipple = reinterpret_cast(context->getProcAddress("glPolygonStipple")); + Materialiv = reinterpret_cast(context->getProcAddress("glMaterialiv")); + Materiali = reinterpret_cast(context->getProcAddress("glMateriali")); + Materialfv = reinterpret_cast(context->getProcAddress("glMaterialfv")); + Materialf = reinterpret_cast(context->getProcAddress("glMaterialf")); + LineStipple = reinterpret_cast(context->getProcAddress("glLineStipple")); + LightModeliv = reinterpret_cast(context->getProcAddress("glLightModeliv")); + LightModeli = reinterpret_cast(context->getProcAddress("glLightModeli")); + LightModelfv = reinterpret_cast(context->getProcAddress("glLightModelfv")); + LightModelf = reinterpret_cast(context->getProcAddress("glLightModelf")); + Lightiv = reinterpret_cast(context->getProcAddress("glLightiv")); + Lighti = reinterpret_cast(context->getProcAddress("glLighti")); + Lightfv = reinterpret_cast(context->getProcAddress("glLightfv")); + Lightf = reinterpret_cast(context->getProcAddress("glLightf")); + Fogiv = reinterpret_cast(context->getProcAddress("glFogiv")); + Fogi = reinterpret_cast(context->getProcAddress("glFogi")); + Fogfv = reinterpret_cast(context->getProcAddress("glFogfv")); + Fogf = reinterpret_cast(context->getProcAddress("glFogf")); + ColorMaterial = reinterpret_cast(context->getProcAddress("glColorMaterial")); + ClipPlane = reinterpret_cast(context->getProcAddress("glClipPlane")); + Vertex4sv = reinterpret_cast(context->getProcAddress("glVertex4sv")); + Vertex4s = reinterpret_cast(context->getProcAddress("glVertex4s")); + Vertex4iv = reinterpret_cast(context->getProcAddress("glVertex4iv")); + Vertex4i = reinterpret_cast(context->getProcAddress("glVertex4i")); + Vertex4fv = reinterpret_cast(context->getProcAddress("glVertex4fv")); + Vertex4f = reinterpret_cast(context->getProcAddress("glVertex4f")); + Vertex4dv = reinterpret_cast(context->getProcAddress("glVertex4dv")); + Vertex4d = reinterpret_cast(context->getProcAddress("glVertex4d")); + Vertex3sv = reinterpret_cast(context->getProcAddress("glVertex3sv")); + Vertex3s = reinterpret_cast(context->getProcAddress("glVertex3s")); + Vertex3iv = reinterpret_cast(context->getProcAddress("glVertex3iv")); + Vertex3i = reinterpret_cast(context->getProcAddress("glVertex3i")); + Vertex3fv = reinterpret_cast(context->getProcAddress("glVertex3fv")); + Vertex3f = reinterpret_cast(context->getProcAddress("glVertex3f")); + Vertex3dv = reinterpret_cast(context->getProcAddress("glVertex3dv")); + Vertex3d = reinterpret_cast(context->getProcAddress("glVertex3d")); + Vertex2sv = reinterpret_cast(context->getProcAddress("glVertex2sv")); + Vertex2s = reinterpret_cast(context->getProcAddress("glVertex2s")); + Vertex2iv = reinterpret_cast(context->getProcAddress("glVertex2iv")); + Vertex2i = reinterpret_cast(context->getProcAddress("glVertex2i")); + Vertex2fv = reinterpret_cast(context->getProcAddress("glVertex2fv")); + Vertex2f = reinterpret_cast(context->getProcAddress("glVertex2f")); + Vertex2dv = reinterpret_cast(context->getProcAddress("glVertex2dv")); + Vertex2d = reinterpret_cast(context->getProcAddress("glVertex2d")); + TexCoord4sv = reinterpret_cast(context->getProcAddress("glTexCoord4sv")); + TexCoord4s = reinterpret_cast(context->getProcAddress("glTexCoord4s")); + TexCoord4iv = reinterpret_cast(context->getProcAddress("glTexCoord4iv")); + TexCoord4i = reinterpret_cast(context->getProcAddress("glTexCoord4i")); + TexCoord4fv = reinterpret_cast(context->getProcAddress("glTexCoord4fv")); + TexCoord4f = reinterpret_cast(context->getProcAddress("glTexCoord4f")); + TexCoord4dv = reinterpret_cast(context->getProcAddress("glTexCoord4dv")); + TexCoord4d = reinterpret_cast(context->getProcAddress("glTexCoord4d")); + TexCoord3sv = reinterpret_cast(context->getProcAddress("glTexCoord3sv")); + TexCoord3s = reinterpret_cast(context->getProcAddress("glTexCoord3s")); + TexCoord3iv = reinterpret_cast(context->getProcAddress("glTexCoord3iv")); + TexCoord3i = reinterpret_cast(context->getProcAddress("glTexCoord3i")); + TexCoord3fv = reinterpret_cast(context->getProcAddress("glTexCoord3fv")); + TexCoord3f = reinterpret_cast(context->getProcAddress("glTexCoord3f")); + TexCoord3dv = reinterpret_cast(context->getProcAddress("glTexCoord3dv")); + TexCoord3d = reinterpret_cast(context->getProcAddress("glTexCoord3d")); + TexCoord2sv = reinterpret_cast(context->getProcAddress("glTexCoord2sv")); + TexCoord2s = reinterpret_cast(context->getProcAddress("glTexCoord2s")); + TexCoord2iv = reinterpret_cast(context->getProcAddress("glTexCoord2iv")); + TexCoord2i = reinterpret_cast(context->getProcAddress("glTexCoord2i")); + TexCoord2fv = reinterpret_cast(context->getProcAddress("glTexCoord2fv")); + TexCoord2f = reinterpret_cast(context->getProcAddress("glTexCoord2f")); + TexCoord2dv = reinterpret_cast(context->getProcAddress("glTexCoord2dv")); + TexCoord2d = reinterpret_cast(context->getProcAddress("glTexCoord2d")); + TexCoord1sv = reinterpret_cast(context->getProcAddress("glTexCoord1sv")); + TexCoord1s = reinterpret_cast(context->getProcAddress("glTexCoord1s")); + TexCoord1iv = reinterpret_cast(context->getProcAddress("glTexCoord1iv")); + TexCoord1i = reinterpret_cast(context->getProcAddress("glTexCoord1i")); + TexCoord1fv = reinterpret_cast(context->getProcAddress("glTexCoord1fv")); + TexCoord1f = reinterpret_cast(context->getProcAddress("glTexCoord1f")); + TexCoord1dv = reinterpret_cast(context->getProcAddress("glTexCoord1dv")); + TexCoord1d = reinterpret_cast(context->getProcAddress("glTexCoord1d")); + Rectsv = reinterpret_cast(context->getProcAddress("glRectsv")); + Rects = reinterpret_cast(context->getProcAddress("glRects")); + Rectiv = reinterpret_cast(context->getProcAddress("glRectiv")); + Recti = reinterpret_cast(context->getProcAddress("glRecti")); + Rectfv = reinterpret_cast(context->getProcAddress("glRectfv")); + Rectf = reinterpret_cast(context->getProcAddress("glRectf")); + Rectdv = reinterpret_cast(context->getProcAddress("glRectdv")); + Rectd = reinterpret_cast(context->getProcAddress("glRectd")); + RasterPos4sv = reinterpret_cast(context->getProcAddress("glRasterPos4sv")); + RasterPos4s = reinterpret_cast(context->getProcAddress("glRasterPos4s")); + RasterPos4iv = reinterpret_cast(context->getProcAddress("glRasterPos4iv")); + RasterPos4i = reinterpret_cast(context->getProcAddress("glRasterPos4i")); + RasterPos4fv = reinterpret_cast(context->getProcAddress("glRasterPos4fv")); + RasterPos4f = reinterpret_cast(context->getProcAddress("glRasterPos4f")); + RasterPos4dv = reinterpret_cast(context->getProcAddress("glRasterPos4dv")); + RasterPos4d = reinterpret_cast(context->getProcAddress("glRasterPos4d")); + RasterPos3sv = reinterpret_cast(context->getProcAddress("glRasterPos3sv")); + RasterPos3s = reinterpret_cast(context->getProcAddress("glRasterPos3s")); + RasterPos3iv = reinterpret_cast(context->getProcAddress("glRasterPos3iv")); + RasterPos3i = reinterpret_cast(context->getProcAddress("glRasterPos3i")); + RasterPos3fv = reinterpret_cast(context->getProcAddress("glRasterPos3fv")); + RasterPos3f = reinterpret_cast(context->getProcAddress("glRasterPos3f")); + RasterPos3dv = reinterpret_cast(context->getProcAddress("glRasterPos3dv")); + RasterPos3d = reinterpret_cast(context->getProcAddress("glRasterPos3d")); + RasterPos2sv = reinterpret_cast(context->getProcAddress("glRasterPos2sv")); + RasterPos2s = reinterpret_cast(context->getProcAddress("glRasterPos2s")); + RasterPos2iv = reinterpret_cast(context->getProcAddress("glRasterPos2iv")); + RasterPos2i = reinterpret_cast(context->getProcAddress("glRasterPos2i")); + RasterPos2fv = reinterpret_cast(context->getProcAddress("glRasterPos2fv")); + RasterPos2f = reinterpret_cast(context->getProcAddress("glRasterPos2f")); + RasterPos2dv = reinterpret_cast(context->getProcAddress("glRasterPos2dv")); + RasterPos2d = reinterpret_cast(context->getProcAddress("glRasterPos2d")); + Normal3sv = reinterpret_cast(context->getProcAddress("glNormal3sv")); + Normal3s = reinterpret_cast(context->getProcAddress("glNormal3s")); + Normal3iv = reinterpret_cast(context->getProcAddress("glNormal3iv")); + Normal3i = reinterpret_cast(context->getProcAddress("glNormal3i")); + Normal3fv = reinterpret_cast(context->getProcAddress("glNormal3fv")); + Normal3f = reinterpret_cast(context->getProcAddress("glNormal3f")); + Normal3dv = reinterpret_cast(context->getProcAddress("glNormal3dv")); + Normal3d = reinterpret_cast(context->getProcAddress("glNormal3d")); + Normal3bv = reinterpret_cast(context->getProcAddress("glNormal3bv")); + Normal3b = reinterpret_cast(context->getProcAddress("glNormal3b")); + Indexsv = reinterpret_cast(context->getProcAddress("glIndexsv")); + Indexs = reinterpret_cast(context->getProcAddress("glIndexs")); + Indexiv = reinterpret_cast(context->getProcAddress("glIndexiv")); + Indexi = reinterpret_cast(context->getProcAddress("glIndexi")); + Indexfv = reinterpret_cast(context->getProcAddress("glIndexfv")); + Indexf = reinterpret_cast(context->getProcAddress("glIndexf")); + Indexdv = reinterpret_cast(context->getProcAddress("glIndexdv")); + Indexd = reinterpret_cast(context->getProcAddress("glIndexd")); + End = reinterpret_cast(context->getProcAddress("glEnd")); + EdgeFlagv = reinterpret_cast(context->getProcAddress("glEdgeFlagv")); + EdgeFlag = reinterpret_cast(context->getProcAddress("glEdgeFlag")); + Color4usv = reinterpret_cast(context->getProcAddress("glColor4usv")); + Color4us = reinterpret_cast(context->getProcAddress("glColor4us")); + Color4uiv = reinterpret_cast(context->getProcAddress("glColor4uiv")); + Color4ui = reinterpret_cast(context->getProcAddress("glColor4ui")); + Color4ubv = reinterpret_cast(context->getProcAddress("glColor4ubv")); + Color4ub = reinterpret_cast(context->getProcAddress("glColor4ub")); + Color4sv = reinterpret_cast(context->getProcAddress("glColor4sv")); + Color4s = reinterpret_cast(context->getProcAddress("glColor4s")); + Color4iv = reinterpret_cast(context->getProcAddress("glColor4iv")); + Color4i = reinterpret_cast(context->getProcAddress("glColor4i")); + Color4fv = reinterpret_cast(context->getProcAddress("glColor4fv")); + Color4f = reinterpret_cast(context->getProcAddress("glColor4f")); + Color4dv = reinterpret_cast(context->getProcAddress("glColor4dv")); + Color4d = reinterpret_cast(context->getProcAddress("glColor4d")); + Color4bv = reinterpret_cast(context->getProcAddress("glColor4bv")); + Color4b = reinterpret_cast(context->getProcAddress("glColor4b")); + Color3usv = reinterpret_cast(context->getProcAddress("glColor3usv")); + Color3us = reinterpret_cast(context->getProcAddress("glColor3us")); + Color3uiv = reinterpret_cast(context->getProcAddress("glColor3uiv")); + Color3ui = reinterpret_cast(context->getProcAddress("glColor3ui")); + Color3ubv = reinterpret_cast(context->getProcAddress("glColor3ubv")); + Color3ub = reinterpret_cast(context->getProcAddress("glColor3ub")); + Color3sv = reinterpret_cast(context->getProcAddress("glColor3sv")); + Color3s = reinterpret_cast(context->getProcAddress("glColor3s")); + Color3iv = reinterpret_cast(context->getProcAddress("glColor3iv")); + Color3i = reinterpret_cast(context->getProcAddress("glColor3i")); + Color3fv = reinterpret_cast(context->getProcAddress("glColor3fv")); + Color3f = reinterpret_cast(context->getProcAddress("glColor3f")); + Color3dv = reinterpret_cast(context->getProcAddress("glColor3dv")); + Color3d = reinterpret_cast(context->getProcAddress("glColor3d")); + Color3bv = reinterpret_cast(context->getProcAddress("glColor3bv")); + Color3b = reinterpret_cast(context->getProcAddress("glColor3b")); + Bitmap = reinterpret_cast(context->getProcAddress("glBitmap")); + Begin = reinterpret_cast(context->getProcAddress("glBegin")); + ListBase = reinterpret_cast(context->getProcAddress("glListBase")); + GenLists = reinterpret_cast(context->getProcAddress("glGenLists")); + DeleteLists = reinterpret_cast(context->getProcAddress("glDeleteLists")); + CallLists = reinterpret_cast(context->getProcAddress("glCallLists")); + CallList = reinterpret_cast(context->getProcAddress("glCallList")); + EndList = reinterpret_cast(context->getProcAddress("glEndList")); + NewList = reinterpret_cast(context->getProcAddress("glNewList")); +#endif + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_0_DeprecatedBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 0, QOpenGLVersionStatus::DeprecatedStatus); +} + +QOpenGLFunctions_1_1_DeprecatedBackend::QOpenGLFunctions_1_1_DeprecatedBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.1 deprecated functions +#if defined(Q_OS_WIN) + HMODULE handle = GetModuleHandleA("opengl32.dll"); + PushClientAttrib = reinterpret_cast(GetProcAddress(handle, "glPushClientAttrib")); + PopClientAttrib = reinterpret_cast(GetProcAddress(handle, "glPopClientAttrib")); + PrioritizeTextures = reinterpret_cast(GetProcAddress(handle, "glPrioritizeTextures")); + AreTexturesResident = reinterpret_cast(GetProcAddress(handle, "glAreTexturesResident")); + VertexPointer = reinterpret_cast(GetProcAddress(handle, "glVertexPointer")); + TexCoordPointer = reinterpret_cast(GetProcAddress(handle, "glTexCoordPointer")); + NormalPointer = reinterpret_cast(GetProcAddress(handle, "glNormalPointer")); + InterleavedArrays = reinterpret_cast(GetProcAddress(handle, "glInterleavedArrays")); + IndexPointer = reinterpret_cast(GetProcAddress(handle, "glIndexPointer")); + EnableClientState = reinterpret_cast(GetProcAddress(handle, "glEnableClientState")); + EdgeFlagPointer = reinterpret_cast(GetProcAddress(handle, "glEdgeFlagPointer")); + DisableClientState = reinterpret_cast(GetProcAddress(handle, "glDisableClientState")); + ColorPointer = reinterpret_cast(GetProcAddress(handle, "glColorPointer")); + ArrayElement = reinterpret_cast(GetProcAddress(handle, "glArrayElement")); +#else + PushClientAttrib = reinterpret_cast(context->getProcAddress("glPushClientAttrib")); + PopClientAttrib = reinterpret_cast(context->getProcAddress("glPopClientAttrib")); + PrioritizeTextures = reinterpret_cast(context->getProcAddress("glPrioritizeTextures")); + AreTexturesResident = reinterpret_cast(context->getProcAddress("glAreTexturesResident")); + VertexPointer = reinterpret_cast(context->getProcAddress("glVertexPointer")); + TexCoordPointer = reinterpret_cast(context->getProcAddress("glTexCoordPointer")); + NormalPointer = reinterpret_cast(context->getProcAddress("glNormalPointer")); + InterleavedArrays = reinterpret_cast(context->getProcAddress("glInterleavedArrays")); + IndexPointer = reinterpret_cast(context->getProcAddress("glIndexPointer")); + EnableClientState = reinterpret_cast(context->getProcAddress("glEnableClientState")); + EdgeFlagPointer = reinterpret_cast(context->getProcAddress("glEdgeFlagPointer")); + DisableClientState = reinterpret_cast(context->getProcAddress("glDisableClientState")); + ColorPointer = reinterpret_cast(context->getProcAddress("glColorPointer")); + ArrayElement = reinterpret_cast(context->getProcAddress("glArrayElement")); +#endif + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_1_DeprecatedBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 1, QOpenGLVersionStatus::DeprecatedStatus); +} + +QOpenGLFunctions_1_2_DeprecatedBackend::QOpenGLFunctions_1_2_DeprecatedBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.2 deprecated functions + ResetMinmax = reinterpret_cast(context->getProcAddress("glResetMinmax")); + ResetHistogram = reinterpret_cast(context->getProcAddress("glResetHistogram")); + Minmax = reinterpret_cast(context->getProcAddress("glMinmax")); + Histogram = reinterpret_cast(context->getProcAddress("glHistogram")); + GetMinmaxParameteriv = reinterpret_cast(context->getProcAddress("glGetMinmaxParameteriv")); + GetMinmaxParameterfv = reinterpret_cast(context->getProcAddress("glGetMinmaxParameterfv")); + GetMinmax = reinterpret_cast(context->getProcAddress("glGetMinmax")); + GetHistogramParameteriv = reinterpret_cast(context->getProcAddress("glGetHistogramParameteriv")); + GetHistogramParameterfv = reinterpret_cast(context->getProcAddress("glGetHistogramParameterfv")); + GetHistogram = reinterpret_cast(context->getProcAddress("glGetHistogram")); + SeparableFilter2D = reinterpret_cast(context->getProcAddress("glSeparableFilter2D")); + GetSeparableFilter = reinterpret_cast(context->getProcAddress("glGetSeparableFilter")); + GetConvolutionParameteriv = reinterpret_cast(context->getProcAddress("glGetConvolutionParameteriv")); + GetConvolutionParameterfv = reinterpret_cast(context->getProcAddress("glGetConvolutionParameterfv")); + GetConvolutionFilter = reinterpret_cast(context->getProcAddress("glGetConvolutionFilter")); + CopyConvolutionFilter2D = reinterpret_cast(context->getProcAddress("glCopyConvolutionFilter2D")); + CopyConvolutionFilter1D = reinterpret_cast(context->getProcAddress("glCopyConvolutionFilter1D")); + ConvolutionParameteriv = reinterpret_cast(context->getProcAddress("glConvolutionParameteriv")); + ConvolutionParameteri = reinterpret_cast(context->getProcAddress("glConvolutionParameteri")); + ConvolutionParameterfv = reinterpret_cast(context->getProcAddress("glConvolutionParameterfv")); + ConvolutionParameterf = reinterpret_cast(context->getProcAddress("glConvolutionParameterf")); + ConvolutionFilter2D = reinterpret_cast(context->getProcAddress("glConvolutionFilter2D")); + ConvolutionFilter1D = reinterpret_cast(context->getProcAddress("glConvolutionFilter1D")); + CopyColorSubTable = reinterpret_cast(context->getProcAddress("glCopyColorSubTable")); + ColorSubTable = reinterpret_cast(context->getProcAddress("glColorSubTable")); + GetColorTableParameteriv = reinterpret_cast(context->getProcAddress("glGetColorTableParameteriv")); + GetColorTableParameterfv = reinterpret_cast(context->getProcAddress("glGetColorTableParameterfv")); + GetColorTable = reinterpret_cast(context->getProcAddress("glGetColorTable")); + CopyColorTable = reinterpret_cast(context->getProcAddress("glCopyColorTable")); + ColorTableParameteriv = reinterpret_cast(context->getProcAddress("glColorTableParameteriv")); + ColorTableParameterfv = reinterpret_cast(context->getProcAddress("glColorTableParameterfv")); + ColorTable = reinterpret_cast(context->getProcAddress("glColorTable")); + TexImage3D = reinterpret_cast(context->getProcAddress("glTexImage3D")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_2_DeprecatedBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 2, QOpenGLVersionStatus::DeprecatedStatus); +} + +QOpenGLFunctions_1_3_DeprecatedBackend::QOpenGLFunctions_1_3_DeprecatedBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.3 deprecated functions + MultTransposeMatrixd = reinterpret_cast(context->getProcAddress("glMultTransposeMatrixd")); + MultTransposeMatrixf = reinterpret_cast(context->getProcAddress("glMultTransposeMatrixf")); + LoadTransposeMatrixd = reinterpret_cast(context->getProcAddress("glLoadTransposeMatrixd")); + LoadTransposeMatrixf = reinterpret_cast(context->getProcAddress("glLoadTransposeMatrixf")); + MultiTexCoord4sv = reinterpret_cast(context->getProcAddress("glMultiTexCoord4sv")); + MultiTexCoord4s = reinterpret_cast(context->getProcAddress("glMultiTexCoord4s")); + MultiTexCoord4iv = reinterpret_cast(context->getProcAddress("glMultiTexCoord4iv")); + MultiTexCoord4i = reinterpret_cast(context->getProcAddress("glMultiTexCoord4i")); + MultiTexCoord4fv = reinterpret_cast(context->getProcAddress("glMultiTexCoord4fv")); + MultiTexCoord4f = reinterpret_cast(context->getProcAddress("glMultiTexCoord4f")); + MultiTexCoord4dv = reinterpret_cast(context->getProcAddress("glMultiTexCoord4dv")); + MultiTexCoord4d = reinterpret_cast(context->getProcAddress("glMultiTexCoord4d")); + MultiTexCoord3sv = reinterpret_cast(context->getProcAddress("glMultiTexCoord3sv")); + MultiTexCoord3s = reinterpret_cast(context->getProcAddress("glMultiTexCoord3s")); + MultiTexCoord3iv = reinterpret_cast(context->getProcAddress("glMultiTexCoord3iv")); + MultiTexCoord3i = reinterpret_cast(context->getProcAddress("glMultiTexCoord3i")); + MultiTexCoord3fv = reinterpret_cast(context->getProcAddress("glMultiTexCoord3fv")); + MultiTexCoord3f = reinterpret_cast(context->getProcAddress("glMultiTexCoord3f")); + MultiTexCoord3dv = reinterpret_cast(context->getProcAddress("glMultiTexCoord3dv")); + MultiTexCoord3d = reinterpret_cast(context->getProcAddress("glMultiTexCoord3d")); + MultiTexCoord2sv = reinterpret_cast(context->getProcAddress("glMultiTexCoord2sv")); + MultiTexCoord2s = reinterpret_cast(context->getProcAddress("glMultiTexCoord2s")); + MultiTexCoord2iv = reinterpret_cast(context->getProcAddress("glMultiTexCoord2iv")); + MultiTexCoord2i = reinterpret_cast(context->getProcAddress("glMultiTexCoord2i")); + MultiTexCoord2fv = reinterpret_cast(context->getProcAddress("glMultiTexCoord2fv")); + MultiTexCoord2f = reinterpret_cast(context->getProcAddress("glMultiTexCoord2f")); + MultiTexCoord2dv = reinterpret_cast(context->getProcAddress("glMultiTexCoord2dv")); + MultiTexCoord2d = reinterpret_cast(context->getProcAddress("glMultiTexCoord2d")); + MultiTexCoord1sv = reinterpret_cast(context->getProcAddress("glMultiTexCoord1sv")); + MultiTexCoord1s = reinterpret_cast(context->getProcAddress("glMultiTexCoord1s")); + MultiTexCoord1iv = reinterpret_cast(context->getProcAddress("glMultiTexCoord1iv")); + MultiTexCoord1i = reinterpret_cast(context->getProcAddress("glMultiTexCoord1i")); + MultiTexCoord1fv = reinterpret_cast(context->getProcAddress("glMultiTexCoord1fv")); + MultiTexCoord1f = reinterpret_cast(context->getProcAddress("glMultiTexCoord1f")); + MultiTexCoord1dv = reinterpret_cast(context->getProcAddress("glMultiTexCoord1dv")); + MultiTexCoord1d = reinterpret_cast(context->getProcAddress("glMultiTexCoord1d")); + ClientActiveTexture = reinterpret_cast(context->getProcAddress("glClientActiveTexture")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_3_DeprecatedBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 3, QOpenGLVersionStatus::DeprecatedStatus); +} + +QOpenGLFunctions_1_4_DeprecatedBackend::QOpenGLFunctions_1_4_DeprecatedBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 1.4 deprecated functions + WindowPos3sv = reinterpret_cast(context->getProcAddress("glWindowPos3sv")); + WindowPos3s = reinterpret_cast(context->getProcAddress("glWindowPos3s")); + WindowPos3iv = reinterpret_cast(context->getProcAddress("glWindowPos3iv")); + WindowPos3i = reinterpret_cast(context->getProcAddress("glWindowPos3i")); + WindowPos3fv = reinterpret_cast(context->getProcAddress("glWindowPos3fv")); + WindowPos3f = reinterpret_cast(context->getProcAddress("glWindowPos3f")); + WindowPos3dv = reinterpret_cast(context->getProcAddress("glWindowPos3dv")); + WindowPos3d = reinterpret_cast(context->getProcAddress("glWindowPos3d")); + WindowPos2sv = reinterpret_cast(context->getProcAddress("glWindowPos2sv")); + WindowPos2s = reinterpret_cast(context->getProcAddress("glWindowPos2s")); + WindowPos2iv = reinterpret_cast(context->getProcAddress("glWindowPos2iv")); + WindowPos2i = reinterpret_cast(context->getProcAddress("glWindowPos2i")); + WindowPos2fv = reinterpret_cast(context->getProcAddress("glWindowPos2fv")); + WindowPos2f = reinterpret_cast(context->getProcAddress("glWindowPos2f")); + WindowPos2dv = reinterpret_cast(context->getProcAddress("glWindowPos2dv")); + WindowPos2d = reinterpret_cast(context->getProcAddress("glWindowPos2d")); + SecondaryColorPointer = reinterpret_cast(context->getProcAddress("glSecondaryColorPointer")); + SecondaryColor3usv = reinterpret_cast(context->getProcAddress("glSecondaryColor3usv")); + SecondaryColor3us = reinterpret_cast(context->getProcAddress("glSecondaryColor3us")); + SecondaryColor3uiv = reinterpret_cast(context->getProcAddress("glSecondaryColor3uiv")); + SecondaryColor3ui = reinterpret_cast(context->getProcAddress("glSecondaryColor3ui")); + SecondaryColor3ubv = reinterpret_cast(context->getProcAddress("glSecondaryColor3ubv")); + SecondaryColor3ub = reinterpret_cast(context->getProcAddress("glSecondaryColor3ub")); + SecondaryColor3sv = reinterpret_cast(context->getProcAddress("glSecondaryColor3sv")); + SecondaryColor3s = reinterpret_cast(context->getProcAddress("glSecondaryColor3s")); + SecondaryColor3iv = reinterpret_cast(context->getProcAddress("glSecondaryColor3iv")); + SecondaryColor3i = reinterpret_cast(context->getProcAddress("glSecondaryColor3i")); + SecondaryColor3fv = reinterpret_cast(context->getProcAddress("glSecondaryColor3fv")); + SecondaryColor3f = reinterpret_cast(context->getProcAddress("glSecondaryColor3f")); + SecondaryColor3dv = reinterpret_cast(context->getProcAddress("glSecondaryColor3dv")); + SecondaryColor3d = reinterpret_cast(context->getProcAddress("glSecondaryColor3d")); + SecondaryColor3bv = reinterpret_cast(context->getProcAddress("glSecondaryColor3bv")); + SecondaryColor3b = reinterpret_cast(context->getProcAddress("glSecondaryColor3b")); + FogCoordPointer = reinterpret_cast(context->getProcAddress("glFogCoordPointer")); + FogCoorddv = reinterpret_cast(context->getProcAddress("glFogCoorddv")); + FogCoordd = reinterpret_cast(context->getProcAddress("glFogCoordd")); + FogCoordfv = reinterpret_cast(context->getProcAddress("glFogCoordfv")); + FogCoordf = reinterpret_cast(context->getProcAddress("glFogCoordf")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus() +{ + return QOpenGLVersionStatus(1, 4, QOpenGLVersionStatus::DeprecatedStatus); +} + +QOpenGLFunctions_2_0_DeprecatedBackend::QOpenGLFunctions_2_0_DeprecatedBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 2.0 deprecated functions + VertexAttrib4usv = reinterpret_cast(context->getProcAddress("glVertexAttrib4usv")); + VertexAttrib4uiv = reinterpret_cast(context->getProcAddress("glVertexAttrib4uiv")); + VertexAttrib4ubv = reinterpret_cast(context->getProcAddress("glVertexAttrib4ubv")); + VertexAttrib4sv = reinterpret_cast(context->getProcAddress("glVertexAttrib4sv")); + VertexAttrib4s = reinterpret_cast(context->getProcAddress("glVertexAttrib4s")); + VertexAttrib4iv = reinterpret_cast(context->getProcAddress("glVertexAttrib4iv")); + VertexAttrib4fv = reinterpret_cast(context->getProcAddress("glVertexAttrib4fv")); + VertexAttrib4f = reinterpret_cast(context->getProcAddress("glVertexAttrib4f")); + VertexAttrib4dv = reinterpret_cast(context->getProcAddress("glVertexAttrib4dv")); + VertexAttrib4d = reinterpret_cast(context->getProcAddress("glVertexAttrib4d")); + VertexAttrib4bv = reinterpret_cast(context->getProcAddress("glVertexAttrib4bv")); + VertexAttrib4Nusv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nusv")); + VertexAttrib4Nuiv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nuiv")); + VertexAttrib4Nubv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nubv")); + VertexAttrib4Nub = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nub")); + VertexAttrib4Nsv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nsv")); + VertexAttrib4Niv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Niv")); + VertexAttrib4Nbv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nbv")); + VertexAttrib3sv = reinterpret_cast(context->getProcAddress("glVertexAttrib3sv")); + VertexAttrib3s = reinterpret_cast(context->getProcAddress("glVertexAttrib3s")); + VertexAttrib3fv = reinterpret_cast(context->getProcAddress("glVertexAttrib3fv")); + VertexAttrib3f = reinterpret_cast(context->getProcAddress("glVertexAttrib3f")); + VertexAttrib3dv = reinterpret_cast(context->getProcAddress("glVertexAttrib3dv")); + VertexAttrib3d = reinterpret_cast(context->getProcAddress("glVertexAttrib3d")); + VertexAttrib2sv = reinterpret_cast(context->getProcAddress("glVertexAttrib2sv")); + VertexAttrib2s = reinterpret_cast(context->getProcAddress("glVertexAttrib2s")); + VertexAttrib2fv = reinterpret_cast(context->getProcAddress("glVertexAttrib2fv")); + VertexAttrib2f = reinterpret_cast(context->getProcAddress("glVertexAttrib2f")); + VertexAttrib2dv = reinterpret_cast(context->getProcAddress("glVertexAttrib2dv")); + VertexAttrib2d = reinterpret_cast(context->getProcAddress("glVertexAttrib2d")); + VertexAttrib1sv = reinterpret_cast(context->getProcAddress("glVertexAttrib1sv")); + VertexAttrib1s = reinterpret_cast(context->getProcAddress("glVertexAttrib1s")); + VertexAttrib1fv = reinterpret_cast(context->getProcAddress("glVertexAttrib1fv")); + VertexAttrib1f = reinterpret_cast(context->getProcAddress("glVertexAttrib1f")); + VertexAttrib1dv = reinterpret_cast(context->getProcAddress("glVertexAttrib1dv")); + VertexAttrib1d = reinterpret_cast(context->getProcAddress("glVertexAttrib1d")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus() +{ + return QOpenGLVersionStatus(2, 0, QOpenGLVersionStatus::DeprecatedStatus); +} + +QOpenGLFunctions_3_0_DeprecatedBackend::QOpenGLFunctions_3_0_DeprecatedBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 3.0 deprecated functions + VertexAttribI4usv = reinterpret_cast(context->getProcAddress("glVertexAttribI4usv")); + VertexAttribI4ubv = reinterpret_cast(context->getProcAddress("glVertexAttribI4ubv")); + VertexAttribI4sv = reinterpret_cast(context->getProcAddress("glVertexAttribI4sv")); + VertexAttribI4bv = reinterpret_cast(context->getProcAddress("glVertexAttribI4bv")); + VertexAttribI4uiv = reinterpret_cast(context->getProcAddress("glVertexAttribI4uiv")); + VertexAttribI3uiv = reinterpret_cast(context->getProcAddress("glVertexAttribI3uiv")); + VertexAttribI2uiv = reinterpret_cast(context->getProcAddress("glVertexAttribI2uiv")); + VertexAttribI1uiv = reinterpret_cast(context->getProcAddress("glVertexAttribI1uiv")); + VertexAttribI4iv = reinterpret_cast(context->getProcAddress("glVertexAttribI4iv")); + VertexAttribI3iv = reinterpret_cast(context->getProcAddress("glVertexAttribI3iv")); + VertexAttribI2iv = reinterpret_cast(context->getProcAddress("glVertexAttribI2iv")); + VertexAttribI1iv = reinterpret_cast(context->getProcAddress("glVertexAttribI1iv")); + VertexAttribI4ui = reinterpret_cast(context->getProcAddress("glVertexAttribI4ui")); + VertexAttribI3ui = reinterpret_cast(context->getProcAddress("glVertexAttribI3ui")); + VertexAttribI2ui = reinterpret_cast(context->getProcAddress("glVertexAttribI2ui")); + VertexAttribI1ui = reinterpret_cast(context->getProcAddress("glVertexAttribI1ui")); + VertexAttribI4i = reinterpret_cast(context->getProcAddress("glVertexAttribI4i")); + VertexAttribI3i = reinterpret_cast(context->getProcAddress("glVertexAttribI3i")); + VertexAttribI2i = reinterpret_cast(context->getProcAddress("glVertexAttribI2i")); + VertexAttribI1i = reinterpret_cast(context->getProcAddress("glVertexAttribI1i")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus() +{ + return QOpenGLVersionStatus(3, 0, QOpenGLVersionStatus::DeprecatedStatus); +} + + +#else + +// No backends for OpenGL ES 2 + +#endif // !QT_OPENGL_ES_2 + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglversionfunctions.h b/src/gui/opengl/qopenglversionfunctions.h new file mode 100644 index 0000000000..474a5d5d1f --- /dev/null +++ b/src/gui/opengl/qopenglversionfunctions.h @@ -0,0 +1,1364 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONS_H +#define QOPENGLVERSIONFUNCTIONS_H + +#ifndef QT_NO_OPENGL + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLContext; + +#if 0 +// silence syncqt warnings +#pragma qt_class(QOpenGLVersionFunctions) +#pragma qt_sync_stop_processing +#endif + +struct QOpenGLVersionStatus +{ + enum OpenGLStatus { + CoreStatus, + DeprecatedStatus, + InvalidStatus + }; + + QOpenGLVersionStatus() + : version(qMakePair(0, 0)), + status(InvalidStatus) + {} + + QOpenGLVersionStatus(int majorVersion, int minorVersion, QOpenGLVersionStatus::OpenGLStatus functionStatus) + : version(qMakePair(majorVersion, minorVersion)), + status(functionStatus) + {} + + QPair version; + OpenGLStatus status; +}; + +inline uint qHash(const QOpenGLVersionStatus &v, uint seed) +{ + return qHash(static_cast(v.status * 1000) + + v.version.first * 100 + v.version.second * 10, seed); +} + +inline bool operator==(const QOpenGLVersionStatus &lhs, const QOpenGLVersionStatus &rhs) +{ + if (lhs.status != rhs.status) + return false; + return lhs.version == rhs.version; +} + +inline bool operator!=(const QOpenGLVersionStatus &lhs, const QOpenGLVersionStatus &rhs) +{ + return !operator==(lhs, rhs); +} + +class QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLVersionFunctionsBackend(QOpenGLContext *ctx) + : context(ctx) + {} + + QOpenGLContext *context; + QAtomicInt refs; +}; + +class QAbstractOpenGLFunctionsPrivate +{ +public: + QAbstractOpenGLFunctionsPrivate() + : owningContext(0), + initialized(false) + {} + + static QOpenGLVersionFunctionsBackend *functionsBackend(QOpenGLContext *context, + const QOpenGLVersionStatus &v); + static void insertFunctionsBackend(QOpenGLContext *context, + const QOpenGLVersionStatus &v, + QOpenGLVersionFunctionsBackend *backend); + static void removeFunctionsBackend(QOpenGLContext *context, const QOpenGLVersionStatus &v); + + QOpenGLContext *owningContext; + bool initialized; +}; + +class QAbstractOpenGLFunctions +{ +public: + virtual ~QAbstractOpenGLFunctions(); + + virtual bool initializeOpenGLFunctions(); + + Q_DECLARE_PRIVATE(QAbstractOpenGLFunctions) + +protected: + QAbstractOpenGLFunctions(); + QAbstractOpenGLFunctionsPrivate *d_ptr; + + bool isInitialized() const; + + void setOwningContext(const QOpenGLContext *context); + QOpenGLContext *owningContext() const; + + friend class QOpenGLContext; +}; + +#if !defined(QT_OPENGL_ES_2) + +class QOpenGLFunctions_1_0_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_0_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.0 core functions + void (QOPENGLF_APIENTRYP Viewport)(GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP DepthRange)(GLdouble nearVal, GLdouble farVal); + GLboolean (QOPENGLF_APIENTRYP IsEnabled)(GLenum cap); + void (QOPENGLF_APIENTRYP GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetTexParameteriv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetTexParameterfv)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + const GLubyte * (QOPENGLF_APIENTRYP GetString)(GLenum name); + void (QOPENGLF_APIENTRYP GetIntegerv)(GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetFloatv)(GLenum pname, GLfloat *params); + GLenum (QOPENGLF_APIENTRYP GetError)(); + void (QOPENGLF_APIENTRYP GetDoublev)(GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP GetBooleanv)(GLenum pname, GLboolean *params); + void (QOPENGLF_APIENTRYP ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); + void (QOPENGLF_APIENTRYP ReadBuffer)(GLenum mode); + void (QOPENGLF_APIENTRYP PixelStorei)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP PixelStoref)(GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP DepthFunc)(GLenum func); + void (QOPENGLF_APIENTRYP StencilOp)(GLenum fail, GLenum zfail, GLenum zpass); + void (QOPENGLF_APIENTRYP StencilFunc)(GLenum func, GLint ref, GLuint mask); + void (QOPENGLF_APIENTRYP LogicOp)(GLenum opcode); + void (QOPENGLF_APIENTRYP BlendFunc)(GLenum sfactor, GLenum dfactor); + void (QOPENGLF_APIENTRYP Flush)(); + void (QOPENGLF_APIENTRYP Finish)(); + void (QOPENGLF_APIENTRYP Enable)(GLenum cap); + void (QOPENGLF_APIENTRYP Disable)(GLenum cap); + void (QOPENGLF_APIENTRYP DepthMask)(GLboolean flag); + void (QOPENGLF_APIENTRYP ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + void (QOPENGLF_APIENTRYP StencilMask)(GLuint mask); + void (QOPENGLF_APIENTRYP ClearDepth)(GLdouble depth); + void (QOPENGLF_APIENTRYP ClearStencil)(GLint s); + void (QOPENGLF_APIENTRYP ClearColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void (QOPENGLF_APIENTRYP Clear)(GLbitfield mask); + void (QOPENGLF_APIENTRYP DrawBuffer)(GLenum mode); + void (QOPENGLF_APIENTRYP TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TexParameteriv)(GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP TexParameteri)(GLenum target, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP TexParameterfv)(GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP TexParameterf)(GLenum target, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP Scissor)(GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP PolygonMode)(GLenum face, GLenum mode); + void (QOPENGLF_APIENTRYP PointSize)(GLfloat size); + void (QOPENGLF_APIENTRYP LineWidth)(GLfloat width); + void (QOPENGLF_APIENTRYP Hint)(GLenum target, GLenum mode); + void (QOPENGLF_APIENTRYP FrontFace)(GLenum mode); + void (QOPENGLF_APIENTRYP CullFace)(GLenum mode); + +}; + +class QOpenGLFunctions_1_1_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_1_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.1 core functions + void (QOPENGLF_APIENTRYP Indexubv)(const GLubyte *c); + void (QOPENGLF_APIENTRYP Indexub)(GLubyte c); + GLboolean (QOPENGLF_APIENTRYP IsTexture)(GLuint texture); + void (QOPENGLF_APIENTRYP GenTextures)(GLsizei n, GLuint *textures); + void (QOPENGLF_APIENTRYP DeleteTextures)(GLsizei n, const GLuint *textures); + void (QOPENGLF_APIENTRYP BindTexture)(GLenum target, GLuint texture); + void (QOPENGLF_APIENTRYP TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void (QOPENGLF_APIENTRYP CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void (QOPENGLF_APIENTRYP CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void (QOPENGLF_APIENTRYP PolygonOffset)(GLfloat factor, GLfloat units); + void (QOPENGLF_APIENTRYP GetPointerv)(GLenum pname, GLvoid* *params); + void (QOPENGLF_APIENTRYP DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); + void (QOPENGLF_APIENTRYP DrawArrays)(GLenum mode, GLint first, GLsizei count); + +}; + +class QOpenGLFunctions_1_2_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_2_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.2 core functions + void (QOPENGLF_APIENTRYP CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + void (QOPENGLF_APIENTRYP BlendEquation)(GLenum mode); + void (QOPENGLF_APIENTRYP BlendColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + +}; + +class QOpenGLFunctions_1_3_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_3_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.3 core functions + void (QOPENGLF_APIENTRYP GetCompressedTexImage)(GLenum target, GLint level, GLvoid *img); + void (QOPENGLF_APIENTRYP CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP SampleCoverage)(GLfloat value, GLboolean invert); + void (QOPENGLF_APIENTRYP ActiveTexture)(GLenum texture); + +}; + +class QOpenGLFunctions_1_4_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_4_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.4 core functions + void (QOPENGLF_APIENTRYP PointParameteriv)(GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP PointParameteri)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP PointParameterfv)(GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP PointParameterf)(GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP MultiDrawElements)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount); + void (QOPENGLF_APIENTRYP MultiDrawArrays)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); + void (QOPENGLF_APIENTRYP BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +}; + +class QOpenGLFunctions_1_5_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_5_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.5 core functions + void (QOPENGLF_APIENTRYP GetBufferPointerv)(GLenum target, GLenum pname, GLvoid* *params); + void (QOPENGLF_APIENTRYP GetBufferParameteriv)(GLenum target, GLenum pname, GLint *params); + GLboolean (QOPENGLF_APIENTRYP UnmapBuffer)(GLenum target); + GLvoid* (QOPENGLF_APIENTRYP MapBuffer)(GLenum target, GLenum access); + void (QOPENGLF_APIENTRYP GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); + void (QOPENGLF_APIENTRYP BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void (QOPENGLF_APIENTRYP BufferData)(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); + GLboolean (QOPENGLF_APIENTRYP IsBuffer)(GLuint buffer); + void (QOPENGLF_APIENTRYP GenBuffers)(GLsizei n, GLuint *buffers); + void (QOPENGLF_APIENTRYP DeleteBuffers)(GLsizei n, const GLuint *buffers); + void (QOPENGLF_APIENTRYP BindBuffer)(GLenum target, GLuint buffer); + void (QOPENGLF_APIENTRYP GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetQueryObjectiv)(GLuint id, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetQueryiv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP EndQuery)(GLenum target); + void (QOPENGLF_APIENTRYP BeginQuery)(GLenum target, GLuint id); + GLboolean (QOPENGLF_APIENTRYP IsQuery)(GLuint id); + void (QOPENGLF_APIENTRYP DeleteQueries)(GLsizei n, const GLuint *ids); + void (QOPENGLF_APIENTRYP GenQueries)(GLsizei n, GLuint *ids); + +}; + +class QOpenGLFunctions_2_0_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_2_0_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 2.0 core functions + void (QOPENGLF_APIENTRYP VertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP ValidateProgram)(GLuint program); + void (QOPENGLF_APIENTRYP UniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP UniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP UniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP Uniform4iv)(GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP Uniform3iv)(GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP Uniform2iv)(GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP Uniform1iv)(GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP Uniform4fv)(GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP Uniform3fv)(GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP Uniform2fv)(GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP Uniform1fv)(GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP Uniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void (QOPENGLF_APIENTRYP Uniform3i)(GLint location, GLint v0, GLint v1, GLint v2); + void (QOPENGLF_APIENTRYP Uniform2i)(GLint location, GLint v0, GLint v1); + void (QOPENGLF_APIENTRYP Uniform1i)(GLint location, GLint v0); + void (QOPENGLF_APIENTRYP Uniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void (QOPENGLF_APIENTRYP Uniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void (QOPENGLF_APIENTRYP Uniform2f)(GLint location, GLfloat v0, GLfloat v1); + void (QOPENGLF_APIENTRYP Uniform1f)(GLint location, GLfloat v0); + void (QOPENGLF_APIENTRYP UseProgram)(GLuint program); + void (QOPENGLF_APIENTRYP ShaderSource)(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length); + void (QOPENGLF_APIENTRYP LinkProgram)(GLuint program); + GLboolean (QOPENGLF_APIENTRYP IsShader)(GLuint shader); + GLboolean (QOPENGLF_APIENTRYP IsProgram)(GLuint program); + void (QOPENGLF_APIENTRYP GetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid* *pointer); + void (QOPENGLF_APIENTRYP GetVertexAttribiv)(GLuint index, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetVertexAttribfv)(GLuint index, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetVertexAttribdv)(GLuint index, GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP GetUniformiv)(GLuint program, GLint location, GLint *params); + void (QOPENGLF_APIENTRYP GetUniformfv)(GLuint program, GLint location, GLfloat *params); + GLint (QOPENGLF_APIENTRYP GetUniformLocation)(GLuint program, const GLchar *name); + void (QOPENGLF_APIENTRYP GetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); + void (QOPENGLF_APIENTRYP GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void (QOPENGLF_APIENTRYP GetShaderiv)(GLuint shader, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void (QOPENGLF_APIENTRYP GetProgramiv)(GLuint program, GLenum pname, GLint *params); + GLint (QOPENGLF_APIENTRYP GetAttribLocation)(GLuint program, const GLchar *name); + void (QOPENGLF_APIENTRYP GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); + void (QOPENGLF_APIENTRYP GetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void (QOPENGLF_APIENTRYP GetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); + void (QOPENGLF_APIENTRYP EnableVertexAttribArray)(GLuint index); + void (QOPENGLF_APIENTRYP DisableVertexAttribArray)(GLuint index); + void (QOPENGLF_APIENTRYP DetachShader)(GLuint program, GLuint shader); + void (QOPENGLF_APIENTRYP DeleteShader)(GLuint shader); + void (QOPENGLF_APIENTRYP DeleteProgram)(GLuint program); + GLuint (QOPENGLF_APIENTRYP CreateShader)(GLenum type); + GLuint (QOPENGLF_APIENTRYP CreateProgram)(); + void (QOPENGLF_APIENTRYP CompileShader)(GLuint shader); + void (QOPENGLF_APIENTRYP BindAttribLocation)(GLuint program, GLuint index, const GLchar *name); + void (QOPENGLF_APIENTRYP AttachShader)(GLuint program, GLuint shader); + void (QOPENGLF_APIENTRYP StencilMaskSeparate)(GLenum face, GLuint mask); + void (QOPENGLF_APIENTRYP StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask); + void (QOPENGLF_APIENTRYP StencilOpSeparate)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + void (QOPENGLF_APIENTRYP DrawBuffers)(GLsizei n, const GLenum *bufs); + void (QOPENGLF_APIENTRYP BlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha); + +}; + +class QOpenGLFunctions_2_1_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_2_1_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 2.1 core functions + void (QOPENGLF_APIENTRYP UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + +}; + +class QOpenGLFunctions_3_0_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_0_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 3.0 core functions + GLboolean (QOPENGLF_APIENTRYP IsVertexArray)(GLuint array); + void (QOPENGLF_APIENTRYP GenVertexArrays)(GLsizei n, GLuint *arrays); + void (QOPENGLF_APIENTRYP DeleteVertexArrays)(GLsizei n, const GLuint *arrays); + void (QOPENGLF_APIENTRYP BindVertexArray)(GLuint array); + void (QOPENGLF_APIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* (QOPENGLF_APIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + void (QOPENGLF_APIENTRYP FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void (QOPENGLF_APIENTRYP RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void (QOPENGLF_APIENTRYP GenerateMipmap)(GLenum target); + void (QOPENGLF_APIENTRYP GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void (QOPENGLF_APIENTRYP FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void (QOPENGLF_APIENTRYP FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void (QOPENGLF_APIENTRYP FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum (QOPENGLF_APIENTRYP CheckFramebufferStatus)(GLenum target); + void (QOPENGLF_APIENTRYP GenFramebuffers)(GLsizei n, GLuint *framebuffers); + void (QOPENGLF_APIENTRYP DeleteFramebuffers)(GLsizei n, const GLuint *framebuffers); + void (QOPENGLF_APIENTRYP BindFramebuffer)(GLenum target, GLuint framebuffer); + GLboolean (QOPENGLF_APIENTRYP IsFramebuffer)(GLuint framebuffer); + void (QOPENGLF_APIENTRYP GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP GenRenderbuffers)(GLsizei n, GLuint *renderbuffers); + void (QOPENGLF_APIENTRYP DeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers); + void (QOPENGLF_APIENTRYP BindRenderbuffer)(GLenum target, GLuint renderbuffer); + GLboolean (QOPENGLF_APIENTRYP IsRenderbuffer)(GLuint renderbuffer); + const GLubyte * (QOPENGLF_APIENTRYP GetStringi)(GLenum name, GLuint index); + void (QOPENGLF_APIENTRYP ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + void (QOPENGLF_APIENTRYP ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat *value); + void (QOPENGLF_APIENTRYP ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint *value); + void (QOPENGLF_APIENTRYP ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint *value); + void (QOPENGLF_APIENTRYP GetTexParameterIuiv)(GLenum target, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetTexParameterIiv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP TexParameterIuiv)(GLenum target, GLenum pname, const GLuint *params); + void (QOPENGLF_APIENTRYP TexParameterIiv)(GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP Uniform4uiv)(GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP Uniform3uiv)(GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP Uniform2uiv)(GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP Uniform1uiv)(GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP Uniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void (QOPENGLF_APIENTRYP Uniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2); + void (QOPENGLF_APIENTRYP Uniform2ui)(GLint location, GLuint v0, GLuint v1); + void (QOPENGLF_APIENTRYP Uniform1ui)(GLint location, GLuint v0); + GLint (QOPENGLF_APIENTRYP GetFragDataLocation)(GLuint program, const GLchar *name); + void (QOPENGLF_APIENTRYP BindFragDataLocation)(GLuint program, GLuint color, const GLchar *name); + void (QOPENGLF_APIENTRYP GetUniformuiv)(GLuint program, GLint location, GLuint *params); + void (QOPENGLF_APIENTRYP GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetVertexAttribIiv)(GLuint index, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP EndConditionalRender)(); + void (QOPENGLF_APIENTRYP BeginConditionalRender)(GLuint id, GLenum mode); + void (QOPENGLF_APIENTRYP ClampColor)(GLenum target, GLenum clamp); + void (QOPENGLF_APIENTRYP GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void (QOPENGLF_APIENTRYP TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode); + void (QOPENGLF_APIENTRYP BindBufferBase)(GLenum target, GLuint index, GLuint buffer); + void (QOPENGLF_APIENTRYP BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void (QOPENGLF_APIENTRYP EndTransformFeedback)(); + void (QOPENGLF_APIENTRYP BeginTransformFeedback)(GLenum primitiveMode); + GLboolean (QOPENGLF_APIENTRYP IsEnabledi)(GLenum target, GLuint index); + void (QOPENGLF_APIENTRYP Disablei)(GLenum target, GLuint index); + void (QOPENGLF_APIENTRYP Enablei)(GLenum target, GLuint index); + void (QOPENGLF_APIENTRYP GetIntegeri_v)(GLenum target, GLuint index, GLint *data); + void (QOPENGLF_APIENTRYP GetBooleani_v)(GLenum target, GLuint index, GLboolean *data); + void (QOPENGLF_APIENTRYP ColorMaski)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + +}; + +class QOpenGLFunctions_3_1_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_1_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 3.1 core functions + void (QOPENGLF_APIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void (QOPENGLF_APIENTRYP UniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void (QOPENGLF_APIENTRYP GetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void (QOPENGLF_APIENTRYP GetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint (QOPENGLF_APIENTRYP GetUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName); + void (QOPENGLF_APIENTRYP GetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void (QOPENGLF_APIENTRYP GetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + void (QOPENGLF_APIENTRYP PrimitiveRestartIndex)(GLuint index); + void (QOPENGLF_APIENTRYP TexBuffer)(GLenum target, GLenum internalformat, GLuint buffer); + void (QOPENGLF_APIENTRYP DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount); + void (QOPENGLF_APIENTRYP DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + +}; + +class QOpenGLFunctions_3_2_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_2_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 3.2 core functions + void (QOPENGLF_APIENTRYP SampleMaski)(GLuint index, GLbitfield mask); + void (QOPENGLF_APIENTRYP GetMultisamplefv)(GLenum pname, GLuint index, GLfloat *val); + void (QOPENGLF_APIENTRYP TexImage3DMultisample)(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void (QOPENGLF_APIENTRYP TexImage2DMultisample)(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void (QOPENGLF_APIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void (QOPENGLF_APIENTRYP GetInteger64v)(GLenum pname, GLint64 *params); + void (QOPENGLF_APIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum (QOPENGLF_APIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); + void (QOPENGLF_APIENTRYP DeleteSync)(GLsync sync); + GLboolean (QOPENGLF_APIENTRYP IsSync)(GLsync sync); + GLsync (QOPENGLF_APIENTRYP FenceSync)(GLenum condition, GLbitfield flags); + void (QOPENGLF_APIENTRYP ProvokingVertex)(GLenum mode); + void (QOPENGLF_APIENTRYP MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void (QOPENGLF_APIENTRYP DrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void (QOPENGLF_APIENTRYP DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void (QOPENGLF_APIENTRYP DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void (QOPENGLF_APIENTRYP FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level); + void (QOPENGLF_APIENTRYP GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 *params); + void (QOPENGLF_APIENTRYP GetInteger64i_v)(GLenum target, GLuint index, GLint64 *data); + +}; + +class QOpenGLFunctions_3_3_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_3_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 3.3 core functions + void (QOPENGLF_APIENTRYP VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void (QOPENGLF_APIENTRYP VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void (QOPENGLF_APIENTRYP VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void (QOPENGLF_APIENTRYP VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void (QOPENGLF_APIENTRYP SecondaryColorP3uiv)(GLenum type, const GLuint *color); + void (QOPENGLF_APIENTRYP SecondaryColorP3ui)(GLenum type, GLuint color); + void (QOPENGLF_APIENTRYP ColorP4uiv)(GLenum type, const GLuint *color); + void (QOPENGLF_APIENTRYP ColorP4ui)(GLenum type, GLuint color); + void (QOPENGLF_APIENTRYP ColorP3uiv)(GLenum type, const GLuint *color); + void (QOPENGLF_APIENTRYP ColorP3ui)(GLenum type, GLuint color); + void (QOPENGLF_APIENTRYP NormalP3uiv)(GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP NormalP3ui)(GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP4uiv)(GLenum texture, GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP4ui)(GLenum texture, GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP3uiv)(GLenum texture, GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP3ui)(GLenum texture, GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP2uiv)(GLenum texture, GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP2ui)(GLenum texture, GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP1uiv)(GLenum texture, GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP1ui)(GLenum texture, GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP TexCoordP4uiv)(GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP TexCoordP4ui)(GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP TexCoordP3uiv)(GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP TexCoordP3ui)(GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP TexCoordP2uiv)(GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP TexCoordP2ui)(GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP TexCoordP1uiv)(GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP TexCoordP1ui)(GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP VertexP4uiv)(GLenum type, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexP4ui)(GLenum type, GLuint value); + void (QOPENGLF_APIENTRYP VertexP3uiv)(GLenum type, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexP3ui)(GLenum type, GLuint value); + void (QOPENGLF_APIENTRYP VertexP2uiv)(GLenum type, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexP2ui)(GLenum type, GLuint value); + void (QOPENGLF_APIENTRYP GetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 *params); + void (QOPENGLF_APIENTRYP GetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 *params); + void (QOPENGLF_APIENTRYP QueryCounter)(GLuint id, GLenum target); + void (QOPENGLF_APIENTRYP GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint *param); + void (QOPENGLF_APIENTRYP SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint *param); + void (QOPENGLF_APIENTRYP SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *param); + void (QOPENGLF_APIENTRYP SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *param); + void (QOPENGLF_APIENTRYP SamplerParameteri)(GLuint sampler, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP BindSampler)(GLuint unit, GLuint sampler); + GLboolean (QOPENGLF_APIENTRYP IsSampler)(GLuint sampler); + void (QOPENGLF_APIENTRYP DeleteSamplers)(GLsizei count, const GLuint *samplers); + void (QOPENGLF_APIENTRYP GenSamplers)(GLsizei count, GLuint *samplers); + GLint (QOPENGLF_APIENTRYP GetFragDataIndex)(GLuint program, const GLchar *name); + void (QOPENGLF_APIENTRYP BindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + void (QOPENGLF_APIENTRYP VertexAttribDivisor)(GLuint index, GLuint divisor); + +}; + +class QOpenGLFunctions_4_0_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_0_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 4.0 core functions + void (QOPENGLF_APIENTRYP GetQueryIndexediv)(GLenum target, GLuint index, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP EndQueryIndexed)(GLenum target, GLuint index); + void (QOPENGLF_APIENTRYP BeginQueryIndexed)(GLenum target, GLuint index, GLuint id); + void (QOPENGLF_APIENTRYP DrawTransformFeedbackStream)(GLenum mode, GLuint id, GLuint stream); + void (QOPENGLF_APIENTRYP DrawTransformFeedback)(GLenum mode, GLuint id); + void (QOPENGLF_APIENTRYP ResumeTransformFeedback)(); + void (QOPENGLF_APIENTRYP PauseTransformFeedback)(); + GLboolean (QOPENGLF_APIENTRYP IsTransformFeedback)(GLuint id); + void (QOPENGLF_APIENTRYP GenTransformFeedbacks)(GLsizei n, GLuint *ids); + void (QOPENGLF_APIENTRYP DeleteTransformFeedbacks)(GLsizei n, const GLuint *ids); + void (QOPENGLF_APIENTRYP BindTransformFeedback)(GLenum target, GLuint id); + void (QOPENGLF_APIENTRYP PatchParameterfv)(GLenum pname, const GLfloat *values); + void (QOPENGLF_APIENTRYP PatchParameteri)(GLenum pname, GLint value); + void (QOPENGLF_APIENTRYP GetProgramStageiv)(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void (QOPENGLF_APIENTRYP GetUniformSubroutineuiv)(GLenum shadertype, GLint location, GLuint *params); + void (QOPENGLF_APIENTRYP UniformSubroutinesuiv)(GLenum shadertype, GLsizei count, const GLuint *indices); + void (QOPENGLF_APIENTRYP GetActiveSubroutineName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void (QOPENGLF_APIENTRYP GetActiveSubroutineUniformName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void (QOPENGLF_APIENTRYP GetActiveSubroutineUniformiv)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint (QOPENGLF_APIENTRYP GetSubroutineIndex)(GLuint program, GLenum shadertype, const GLchar *name); + GLint (QOPENGLF_APIENTRYP GetSubroutineUniformLocation)(GLuint program, GLenum shadertype, const GLchar *name); + void (QOPENGLF_APIENTRYP GetUniformdv)(GLuint program, GLint location, GLdouble *params); + void (QOPENGLF_APIENTRYP UniformMatrix4x3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix4x2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix3x4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix3x2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix2x4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix2x3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP Uniform4dv)(GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP Uniform3dv)(GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP Uniform2dv)(GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP Uniform1dv)(GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP Uniform4d)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP Uniform3d)(GLint location, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP Uniform2d)(GLint location, GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP Uniform1d)(GLint location, GLdouble x); + void (QOPENGLF_APIENTRYP DrawElementsIndirect)(GLenum mode, GLenum type, const GLvoid *indirect); + void (QOPENGLF_APIENTRYP DrawArraysIndirect)(GLenum mode, const GLvoid *indirect); + void (QOPENGLF_APIENTRYP BlendFuncSeparatei)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void (QOPENGLF_APIENTRYP BlendFunci)(GLuint buf, GLenum src, GLenum dst); + void (QOPENGLF_APIENTRYP BlendEquationSeparatei)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void (QOPENGLF_APIENTRYP BlendEquationi)(GLuint buf, GLenum mode); + void (QOPENGLF_APIENTRYP MinSampleShading)(GLfloat value); + +}; + +class QOpenGLFunctions_4_1_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_1_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 4.1 core functions + void (QOPENGLF_APIENTRYP GetDoublei_v)(GLenum target, GLuint index, GLdouble *data); + void (QOPENGLF_APIENTRYP GetFloati_v)(GLenum target, GLuint index, GLfloat *data); + void (QOPENGLF_APIENTRYP DepthRangeIndexed)(GLuint index, GLdouble n, GLdouble f); + void (QOPENGLF_APIENTRYP DepthRangeArrayv)(GLuint first, GLsizei count, const GLdouble *v); + void (QOPENGLF_APIENTRYP ScissorIndexedv)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP ScissorIndexed)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP ScissorArrayv)(GLuint first, GLsizei count, const GLint *v); + void (QOPENGLF_APIENTRYP ViewportIndexedfv)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP ViewportIndexedf)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + void (QOPENGLF_APIENTRYP ViewportArrayv)(GLuint first, GLsizei count, const GLfloat *v); + void (QOPENGLF_APIENTRYP GetVertexAttribLdv)(GLuint index, GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP VertexAttribLPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP VertexAttribL4dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL3dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL2dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL1dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP VertexAttribL3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP VertexAttribL2d)(GLuint index, GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP VertexAttribL1d)(GLuint index, GLdouble x); + void (QOPENGLF_APIENTRYP GetProgramPipelineInfoLog)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void (QOPENGLF_APIENTRYP ValidateProgramPipeline)(GLuint pipeline); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform4uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform4ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void (QOPENGLF_APIENTRYP ProgramUniform4dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform4d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + void (QOPENGLF_APIENTRYP ProgramUniform4fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform4f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void (QOPENGLF_APIENTRYP ProgramUniform4iv)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform4i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void (QOPENGLF_APIENTRYP ProgramUniform3uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform3ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void (QOPENGLF_APIENTRYP ProgramUniform3dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform3d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + void (QOPENGLF_APIENTRYP ProgramUniform3fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform3f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void (QOPENGLF_APIENTRYP ProgramUniform3iv)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform3i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void (QOPENGLF_APIENTRYP ProgramUniform2uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform2ui)(GLuint program, GLint location, GLuint v0, GLuint v1); + void (QOPENGLF_APIENTRYP ProgramUniform2dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform2d)(GLuint program, GLint location, GLdouble v0, GLdouble v1); + void (QOPENGLF_APIENTRYP ProgramUniform2fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform2f)(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void (QOPENGLF_APIENTRYP ProgramUniform2iv)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform2i)(GLuint program, GLint location, GLint v0, GLint v1); + void (QOPENGLF_APIENTRYP ProgramUniform1uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform1ui)(GLuint program, GLint location, GLuint v0); + void (QOPENGLF_APIENTRYP ProgramUniform1dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform1d)(GLuint program, GLint location, GLdouble v0); + void (QOPENGLF_APIENTRYP ProgramUniform1fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform1f)(GLuint program, GLint location, GLfloat v0); + void (QOPENGLF_APIENTRYP ProgramUniform1iv)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform1i)(GLuint program, GLint location, GLint v0); + void (QOPENGLF_APIENTRYP GetProgramPipelineiv)(GLuint pipeline, GLenum pname, GLint *params); + GLboolean (QOPENGLF_APIENTRYP IsProgramPipeline)(GLuint pipeline); + void (QOPENGLF_APIENTRYP GenProgramPipelines)(GLsizei n, GLuint *pipelines); + void (QOPENGLF_APIENTRYP DeleteProgramPipelines)(GLsizei n, const GLuint *pipelines); + void (QOPENGLF_APIENTRYP BindProgramPipeline)(GLuint pipeline); + GLuint (QOPENGLF_APIENTRYP CreateShaderProgramv)(GLenum type, GLsizei count, const GLchar* const *strings); + void (QOPENGLF_APIENTRYP ActiveShaderProgram)(GLuint pipeline, GLuint program); + void (QOPENGLF_APIENTRYP UseProgramStages)(GLuint pipeline, GLbitfield stages, GLuint program); + void (QOPENGLF_APIENTRYP ProgramParameteri)(GLuint program, GLenum pname, GLint value); + void (QOPENGLF_APIENTRYP ProgramBinary)(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); + void (QOPENGLF_APIENTRYP GetProgramBinary)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); + void (QOPENGLF_APIENTRYP ClearDepthf)(GLfloat dd); + void (QOPENGLF_APIENTRYP DepthRangef)(GLfloat n, GLfloat f); + void (QOPENGLF_APIENTRYP GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); + void (QOPENGLF_APIENTRYP ShaderBinary)(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); + void (QOPENGLF_APIENTRYP ReleaseShaderCompiler)(); + +}; + +class QOpenGLFunctions_4_2_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_2_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 4.2 core functions + void (QOPENGLF_APIENTRYP TexStorage3D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void (QOPENGLF_APIENTRYP TexStorage2D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP TexStorage1D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + void (QOPENGLF_APIENTRYP MemoryBarrier)(GLbitfield barriers); + void (QOPENGLF_APIENTRYP BindImageTexture)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); + void (QOPENGLF_APIENTRYP GetActiveAtomicCounterBufferiv)(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetInternalformativ)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); + void (QOPENGLF_APIENTRYP DrawTransformFeedbackStreamInstanced)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void (QOPENGLF_APIENTRYP DrawTransformFeedbackInstanced)(GLenum mode, GLuint id, GLsizei instancecount); + void (QOPENGLF_APIENTRYP DrawElementsInstancedBaseVertexBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); + void (QOPENGLF_APIENTRYP DrawElementsInstancedBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); + void (QOPENGLF_APIENTRYP DrawArraysInstancedBaseInstance)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); + +}; + +class QOpenGLFunctions_4_3_CoreBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_4_3_CoreBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 4.3 core functions + void (QOPENGLF_APIENTRYP TexStorage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void (QOPENGLF_APIENTRYP TexStorage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void (QOPENGLF_APIENTRYP TexBufferRange)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + void (QOPENGLF_APIENTRYP ShaderStorageBlockBinding)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); + GLint (QOPENGLF_APIENTRYP GetProgramResourceLocationIndex)(GLuint program, GLenum programInterface, const GLchar *name); + GLint (QOPENGLF_APIENTRYP GetProgramResourceLocation)(GLuint program, GLenum programInterface, const GLchar *name); + void (QOPENGLF_APIENTRYP GetProgramResourceiv)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); + void (QOPENGLF_APIENTRYP GetProgramResourceName)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); + GLuint (QOPENGLF_APIENTRYP GetProgramResourceIndex)(GLuint program, GLenum programInterface, const GLchar *name); + void (QOPENGLF_APIENTRYP GetProgramInterfaceiv)(GLuint program, GLenum programInterface, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP MultiDrawElementsIndirect)(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); + void (QOPENGLF_APIENTRYP MultiDrawArraysIndirect)(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); + void (QOPENGLF_APIENTRYP InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments); + void (QOPENGLF_APIENTRYP InvalidateBufferData)(GLuint buffer); + void (QOPENGLF_APIENTRYP InvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length); + void (QOPENGLF_APIENTRYP InvalidateTexImage)(GLuint texture, GLint level); + void (QOPENGLF_APIENTRYP InvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); + void (QOPENGLF_APIENTRYP GetInternalformati64v)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); + void (QOPENGLF_APIENTRYP GetFramebufferParameteriv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP FramebufferParameteri)(GLenum target, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP VertexBindingDivisor)(GLuint bindingindex, GLuint divisor); + void (QOPENGLF_APIENTRYP VertexAttribBinding)(GLuint attribindex, GLuint bindingindex); + void (QOPENGLF_APIENTRYP VertexAttribLFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void (QOPENGLF_APIENTRYP VertexAttribIFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void (QOPENGLF_APIENTRYP VertexAttribFormat)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void (QOPENGLF_APIENTRYP BindVertexBuffer)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + void (QOPENGLF_APIENTRYP TextureView)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); + void (QOPENGLF_APIENTRYP CopyImageSubData)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); + void (QOPENGLF_APIENTRYP DispatchComputeIndirect)(GLintptr indirect); + void (QOPENGLF_APIENTRYP DispatchCompute)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + void (QOPENGLF_APIENTRYP ClearBufferSubData)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + void (QOPENGLF_APIENTRYP ClearBufferData)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); + +}; + +class QOpenGLFunctions_1_0_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_0_DeprecatedBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.0 deprecated functions + void (QOPENGLF_APIENTRYP Translatef)(GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP Translated)(GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP Scalef)(GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP Scaled)(GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP PushMatrix)(); + void (QOPENGLF_APIENTRYP PopMatrix)(); + void (QOPENGLF_APIENTRYP Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void (QOPENGLF_APIENTRYP MultMatrixd)(const GLdouble *m); + void (QOPENGLF_APIENTRYP MultMatrixf)(const GLfloat *m); + void (QOPENGLF_APIENTRYP MatrixMode)(GLenum mode); + void (QOPENGLF_APIENTRYP LoadMatrixd)(const GLdouble *m); + void (QOPENGLF_APIENTRYP LoadMatrixf)(const GLfloat *m); + void (QOPENGLF_APIENTRYP LoadIdentity)(); + void (QOPENGLF_APIENTRYP Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + GLboolean (QOPENGLF_APIENTRYP IsList)(GLuint list); + void (QOPENGLF_APIENTRYP GetTexGeniv)(GLenum coord, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetTexGenfv)(GLenum coord, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetTexGendv)(GLenum coord, GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP GetTexEnviv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetTexEnvfv)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetPolygonStipple)(GLubyte *mask); + void (QOPENGLF_APIENTRYP GetPixelMapusv)(GLenum map, GLushort *values); + void (QOPENGLF_APIENTRYP GetPixelMapuiv)(GLenum map, GLuint *values); + void (QOPENGLF_APIENTRYP GetPixelMapfv)(GLenum map, GLfloat *values); + void (QOPENGLF_APIENTRYP GetMaterialiv)(GLenum face, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetMaterialfv)(GLenum face, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetMapiv)(GLenum target, GLenum query, GLint *v); + void (QOPENGLF_APIENTRYP GetMapfv)(GLenum target, GLenum query, GLfloat *v); + void (QOPENGLF_APIENTRYP GetMapdv)(GLenum target, GLenum query, GLdouble *v); + void (QOPENGLF_APIENTRYP GetLightiv)(GLenum light, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetLightfv)(GLenum light, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetClipPlane)(GLenum plane, GLdouble *equation); + void (QOPENGLF_APIENTRYP DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + void (QOPENGLF_APIENTRYP PixelMapusv)(GLenum map, GLint mapsize, const GLushort *values); + void (QOPENGLF_APIENTRYP PixelMapuiv)(GLenum map, GLint mapsize, const GLuint *values); + void (QOPENGLF_APIENTRYP PixelMapfv)(GLenum map, GLint mapsize, const GLfloat *values); + void (QOPENGLF_APIENTRYP PixelTransferi)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP PixelTransferf)(GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP PixelZoom)(GLfloat xfactor, GLfloat yfactor); + void (QOPENGLF_APIENTRYP AlphaFunc)(GLenum func, GLfloat ref); + void (QOPENGLF_APIENTRYP EvalPoint2)(GLint i, GLint j); + void (QOPENGLF_APIENTRYP EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + void (QOPENGLF_APIENTRYP EvalPoint1)(GLint i); + void (QOPENGLF_APIENTRYP EvalMesh1)(GLenum mode, GLint i1, GLint i2); + void (QOPENGLF_APIENTRYP EvalCoord2fv)(const GLfloat *u); + void (QOPENGLF_APIENTRYP EvalCoord2f)(GLfloat u, GLfloat v); + void (QOPENGLF_APIENTRYP EvalCoord2dv)(const GLdouble *u); + void (QOPENGLF_APIENTRYP EvalCoord2d)(GLdouble u, GLdouble v); + void (QOPENGLF_APIENTRYP EvalCoord1fv)(const GLfloat *u); + void (QOPENGLF_APIENTRYP EvalCoord1f)(GLfloat u); + void (QOPENGLF_APIENTRYP EvalCoord1dv)(const GLdouble *u); + void (QOPENGLF_APIENTRYP EvalCoord1d)(GLdouble u); + void (QOPENGLF_APIENTRYP MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + void (QOPENGLF_APIENTRYP MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + void (QOPENGLF_APIENTRYP MapGrid1f)(GLint un, GLfloat u1, GLfloat u2); + void (QOPENGLF_APIENTRYP MapGrid1d)(GLint un, GLdouble u1, GLdouble u2); + void (QOPENGLF_APIENTRYP Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void (QOPENGLF_APIENTRYP Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void (QOPENGLF_APIENTRYP Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void (QOPENGLF_APIENTRYP Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + void (QOPENGLF_APIENTRYP PushAttrib)(GLbitfield mask); + void (QOPENGLF_APIENTRYP PopAttrib)(); + void (QOPENGLF_APIENTRYP Accum)(GLenum op, GLfloat value); + void (QOPENGLF_APIENTRYP IndexMask)(GLuint mask); + void (QOPENGLF_APIENTRYP ClearIndex)(GLfloat c); + void (QOPENGLF_APIENTRYP ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void (QOPENGLF_APIENTRYP PushName)(GLuint name); + void (QOPENGLF_APIENTRYP PopName)(); + void (QOPENGLF_APIENTRYP PassThrough)(GLfloat token); + void (QOPENGLF_APIENTRYP LoadName)(GLuint name); + void (QOPENGLF_APIENTRYP InitNames)(); + GLint (QOPENGLF_APIENTRYP RenderMode)(GLenum mode); + void (QOPENGLF_APIENTRYP SelectBuffer)(GLsizei size, GLuint *buffer); + void (QOPENGLF_APIENTRYP FeedbackBuffer)(GLsizei size, GLenum type, GLfloat *buffer); + void (QOPENGLF_APIENTRYP TexGeniv)(GLenum coord, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP TexGeni)(GLenum coord, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP TexGenfv)(GLenum coord, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP TexGenf)(GLenum coord, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP TexGendv)(GLenum coord, GLenum pname, const GLdouble *params); + void (QOPENGLF_APIENTRYP TexGend)(GLenum coord, GLenum pname, GLdouble param); + void (QOPENGLF_APIENTRYP TexEnviv)(GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP TexEnvi)(GLenum target, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP TexEnvfv)(GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP TexEnvf)(GLenum target, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP ShadeModel)(GLenum mode); + void (QOPENGLF_APIENTRYP PolygonStipple)(const GLubyte *mask); + void (QOPENGLF_APIENTRYP Materialiv)(GLenum face, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP Materiali)(GLenum face, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP Materialfv)(GLenum face, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP Materialf)(GLenum face, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP LineStipple)(GLint factor, GLushort pattern); + void (QOPENGLF_APIENTRYP LightModeliv)(GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP LightModeli)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP LightModelfv)(GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP LightModelf)(GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP Lightiv)(GLenum light, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP Lighti)(GLenum light, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP Lightfv)(GLenum light, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP Lightf)(GLenum light, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP Fogiv)(GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP Fogi)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP Fogfv)(GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP Fogf)(GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP ColorMaterial)(GLenum face, GLenum mode); + void (QOPENGLF_APIENTRYP ClipPlane)(GLenum plane, const GLdouble *equation); + void (QOPENGLF_APIENTRYP Vertex4sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w); + void (QOPENGLF_APIENTRYP Vertex4iv)(const GLint *v); + void (QOPENGLF_APIENTRYP Vertex4i)(GLint x, GLint y, GLint z, GLint w); + void (QOPENGLF_APIENTRYP Vertex4fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP Vertex4dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP Vertex3sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP Vertex3s)(GLshort x, GLshort y, GLshort z); + void (QOPENGLF_APIENTRYP Vertex3iv)(const GLint *v); + void (QOPENGLF_APIENTRYP Vertex3i)(GLint x, GLint y, GLint z); + void (QOPENGLF_APIENTRYP Vertex3fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP Vertex3f)(GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP Vertex3dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP Vertex3d)(GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP Vertex2sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP Vertex2s)(GLshort x, GLshort y); + void (QOPENGLF_APIENTRYP Vertex2iv)(const GLint *v); + void (QOPENGLF_APIENTRYP Vertex2i)(GLint x, GLint y); + void (QOPENGLF_APIENTRYP Vertex2fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP Vertex2f)(GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP Vertex2dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP Vertex2d)(GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP TexCoord4sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q); + void (QOPENGLF_APIENTRYP TexCoord4iv)(const GLint *v); + void (QOPENGLF_APIENTRYP TexCoord4i)(GLint s, GLint t, GLint r, GLint q); + void (QOPENGLF_APIENTRYP TexCoord4fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void (QOPENGLF_APIENTRYP TexCoord4dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void (QOPENGLF_APIENTRYP TexCoord3sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP TexCoord3s)(GLshort s, GLshort t, GLshort r); + void (QOPENGLF_APIENTRYP TexCoord3iv)(const GLint *v); + void (QOPENGLF_APIENTRYP TexCoord3i)(GLint s, GLint t, GLint r); + void (QOPENGLF_APIENTRYP TexCoord3fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord3f)(GLfloat s, GLfloat t, GLfloat r); + void (QOPENGLF_APIENTRYP TexCoord3dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP TexCoord3d)(GLdouble s, GLdouble t, GLdouble r); + void (QOPENGLF_APIENTRYP TexCoord2sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP TexCoord2s)(GLshort s, GLshort t); + void (QOPENGLF_APIENTRYP TexCoord2iv)(const GLint *v); + void (QOPENGLF_APIENTRYP TexCoord2i)(GLint s, GLint t); + void (QOPENGLF_APIENTRYP TexCoord2fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord2f)(GLfloat s, GLfloat t); + void (QOPENGLF_APIENTRYP TexCoord2dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP TexCoord2d)(GLdouble s, GLdouble t); + void (QOPENGLF_APIENTRYP TexCoord1sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP TexCoord1s)(GLshort s); + void (QOPENGLF_APIENTRYP TexCoord1iv)(const GLint *v); + void (QOPENGLF_APIENTRYP TexCoord1i)(GLint s); + void (QOPENGLF_APIENTRYP TexCoord1fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord1f)(GLfloat s); + void (QOPENGLF_APIENTRYP TexCoord1dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP TexCoord1d)(GLdouble s); + void (QOPENGLF_APIENTRYP Rectsv)(const GLshort *v1, const GLshort *v2); + void (QOPENGLF_APIENTRYP Rects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + void (QOPENGLF_APIENTRYP Rectiv)(const GLint *v1, const GLint *v2); + void (QOPENGLF_APIENTRYP Recti)(GLint x1, GLint y1, GLint x2, GLint y2); + void (QOPENGLF_APIENTRYP Rectfv)(const GLfloat *v1, const GLfloat *v2); + void (QOPENGLF_APIENTRYP Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + void (QOPENGLF_APIENTRYP Rectdv)(const GLdouble *v1, const GLdouble *v2); + void (QOPENGLF_APIENTRYP Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + void (QOPENGLF_APIENTRYP RasterPos4sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP RasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w); + void (QOPENGLF_APIENTRYP RasterPos4iv)(const GLint *v); + void (QOPENGLF_APIENTRYP RasterPos4i)(GLint x, GLint y, GLint z, GLint w); + void (QOPENGLF_APIENTRYP RasterPos4fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP RasterPos4dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP RasterPos3sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP RasterPos3s)(GLshort x, GLshort y, GLshort z); + void (QOPENGLF_APIENTRYP RasterPos3iv)(const GLint *v); + void (QOPENGLF_APIENTRYP RasterPos3i)(GLint x, GLint y, GLint z); + void (QOPENGLF_APIENTRYP RasterPos3fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP RasterPos3f)(GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP RasterPos3dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP RasterPos3d)(GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP RasterPos2sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP RasterPos2s)(GLshort x, GLshort y); + void (QOPENGLF_APIENTRYP RasterPos2iv)(const GLint *v); + void (QOPENGLF_APIENTRYP RasterPos2i)(GLint x, GLint y); + void (QOPENGLF_APIENTRYP RasterPos2fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP RasterPos2f)(GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP RasterPos2dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP RasterPos2d)(GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP Normal3sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP Normal3s)(GLshort nx, GLshort ny, GLshort nz); + void (QOPENGLF_APIENTRYP Normal3iv)(const GLint *v); + void (QOPENGLF_APIENTRYP Normal3i)(GLint nx, GLint ny, GLint nz); + void (QOPENGLF_APIENTRYP Normal3fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz); + void (QOPENGLF_APIENTRYP Normal3dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz); + void (QOPENGLF_APIENTRYP Normal3bv)(const GLbyte *v); + void (QOPENGLF_APIENTRYP Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz); + void (QOPENGLF_APIENTRYP Indexsv)(const GLshort *c); + void (QOPENGLF_APIENTRYP Indexs)(GLshort c); + void (QOPENGLF_APIENTRYP Indexiv)(const GLint *c); + void (QOPENGLF_APIENTRYP Indexi)(GLint c); + void (QOPENGLF_APIENTRYP Indexfv)(const GLfloat *c); + void (QOPENGLF_APIENTRYP Indexf)(GLfloat c); + void (QOPENGLF_APIENTRYP Indexdv)(const GLdouble *c); + void (QOPENGLF_APIENTRYP Indexd)(GLdouble c); + void (QOPENGLF_APIENTRYP End)(); + void (QOPENGLF_APIENTRYP EdgeFlagv)(const GLboolean *flag); + void (QOPENGLF_APIENTRYP EdgeFlag)(GLboolean flag); + void (QOPENGLF_APIENTRYP Color4usv)(const GLushort *v); + void (QOPENGLF_APIENTRYP Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha); + void (QOPENGLF_APIENTRYP Color4uiv)(const GLuint *v); + void (QOPENGLF_APIENTRYP Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void (QOPENGLF_APIENTRYP Color4ubv)(const GLubyte *v); + void (QOPENGLF_APIENTRYP Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + void (QOPENGLF_APIENTRYP Color4sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP Color4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha); + void (QOPENGLF_APIENTRYP Color4iv)(const GLint *v); + void (QOPENGLF_APIENTRYP Color4i)(GLint red, GLint green, GLint blue, GLint alpha); + void (QOPENGLF_APIENTRYP Color4fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + void (QOPENGLF_APIENTRYP Color4dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + void (QOPENGLF_APIENTRYP Color4bv)(const GLbyte *v); + void (QOPENGLF_APIENTRYP Color4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + void (QOPENGLF_APIENTRYP Color3usv)(const GLushort *v); + void (QOPENGLF_APIENTRYP Color3us)(GLushort red, GLushort green, GLushort blue); + void (QOPENGLF_APIENTRYP Color3uiv)(const GLuint *v); + void (QOPENGLF_APIENTRYP Color3ui)(GLuint red, GLuint green, GLuint blue); + void (QOPENGLF_APIENTRYP Color3ubv)(const GLubyte *v); + void (QOPENGLF_APIENTRYP Color3ub)(GLubyte red, GLubyte green, GLubyte blue); + void (QOPENGLF_APIENTRYP Color3sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP Color3s)(GLshort red, GLshort green, GLshort blue); + void (QOPENGLF_APIENTRYP Color3iv)(const GLint *v); + void (QOPENGLF_APIENTRYP Color3i)(GLint red, GLint green, GLint blue); + void (QOPENGLF_APIENTRYP Color3fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP Color3f)(GLfloat red, GLfloat green, GLfloat blue); + void (QOPENGLF_APIENTRYP Color3dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP Color3d)(GLdouble red, GLdouble green, GLdouble blue); + void (QOPENGLF_APIENTRYP Color3bv)(const GLbyte *v); + void (QOPENGLF_APIENTRYP Color3b)(GLbyte red, GLbyte green, GLbyte blue); + void (QOPENGLF_APIENTRYP Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); + void (QOPENGLF_APIENTRYP Begin)(GLenum mode); + void (QOPENGLF_APIENTRYP ListBase)(GLuint base); + GLuint (QOPENGLF_APIENTRYP GenLists)(GLsizei range); + void (QOPENGLF_APIENTRYP DeleteLists)(GLuint list, GLsizei range); + void (QOPENGLF_APIENTRYP CallLists)(GLsizei n, GLenum type, const GLvoid *lists); + void (QOPENGLF_APIENTRYP CallList)(GLuint list); + void (QOPENGLF_APIENTRYP EndList)(); + void (QOPENGLF_APIENTRYP NewList)(GLuint list, GLenum mode); + +}; + +class QOpenGLFunctions_1_1_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_1_DeprecatedBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.1 deprecated functions + void (QOPENGLF_APIENTRYP PushClientAttrib)(GLbitfield mask); + void (QOPENGLF_APIENTRYP PopClientAttrib)(); + void (QOPENGLF_APIENTRYP PrioritizeTextures)(GLsizei n, const GLuint *textures, const GLfloat *priorities); + GLboolean (QOPENGLF_APIENTRYP AreTexturesResident)(GLsizei n, const GLuint *textures, GLboolean *residences); + void (QOPENGLF_APIENTRYP VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP NormalPointer)(GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP IndexPointer)(GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP EnableClientState)(GLenum array); + void (QOPENGLF_APIENTRYP EdgeFlagPointer)(GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP DisableClientState)(GLenum array); + void (QOPENGLF_APIENTRYP ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP ArrayElement)(GLint i); + +}; + +class QOpenGLFunctions_1_2_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_2_DeprecatedBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.2 deprecated functions + void (QOPENGLF_APIENTRYP ResetMinmax)(GLenum target); + void (QOPENGLF_APIENTRYP ResetHistogram)(GLenum target); + void (QOPENGLF_APIENTRYP Minmax)(GLenum target, GLenum internalformat, GLboolean sink); + void (QOPENGLF_APIENTRYP Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void (QOPENGLF_APIENTRYP GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void (QOPENGLF_APIENTRYP GetHistogramParameteriv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void (QOPENGLF_APIENTRYP SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void (QOPENGLF_APIENTRYP GetSeparableFilter)(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void (QOPENGLF_APIENTRYP GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid *image); + void (QOPENGLF_APIENTRYP CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void (QOPENGLF_APIENTRYP ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP ConvolutionParameteri)(GLenum target, GLenum pname, GLint params); + void (QOPENGLF_APIENTRYP ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params); + void (QOPENGLF_APIENTRYP ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void (QOPENGLF_APIENTRYP ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + void (QOPENGLF_APIENTRYP CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void (QOPENGLF_APIENTRYP ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + void (QOPENGLF_APIENTRYP GetColorTableParameteriv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid *table); + void (QOPENGLF_APIENTRYP CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void (QOPENGLF_APIENTRYP ColorTableParameteriv)(GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + void (QOPENGLF_APIENTRYP TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + +}; + +class QOpenGLFunctions_1_3_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_3_DeprecatedBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.3 deprecated functions + void (QOPENGLF_APIENTRYP MultTransposeMatrixd)(const GLdouble *m); + void (QOPENGLF_APIENTRYP MultTransposeMatrixf)(const GLfloat *m); + void (QOPENGLF_APIENTRYP LoadTransposeMatrixd)(const GLdouble *m); + void (QOPENGLF_APIENTRYP LoadTransposeMatrixf)(const GLfloat *m); + void (QOPENGLF_APIENTRYP MultiTexCoord4sv)(GLenum target, const GLshort *v); + void (QOPENGLF_APIENTRYP MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void (QOPENGLF_APIENTRYP MultiTexCoord4iv)(GLenum target, const GLint *v); + void (QOPENGLF_APIENTRYP MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q); + void (QOPENGLF_APIENTRYP MultiTexCoord4fv)(GLenum target, const GLfloat *v); + void (QOPENGLF_APIENTRYP MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void (QOPENGLF_APIENTRYP MultiTexCoord4dv)(GLenum target, const GLdouble *v); + void (QOPENGLF_APIENTRYP MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void (QOPENGLF_APIENTRYP MultiTexCoord3sv)(GLenum target, const GLshort *v); + void (QOPENGLF_APIENTRYP MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r); + void (QOPENGLF_APIENTRYP MultiTexCoord3iv)(GLenum target, const GLint *v); + void (QOPENGLF_APIENTRYP MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r); + void (QOPENGLF_APIENTRYP MultiTexCoord3fv)(GLenum target, const GLfloat *v); + void (QOPENGLF_APIENTRYP MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void (QOPENGLF_APIENTRYP MultiTexCoord3dv)(GLenum target, const GLdouble *v); + void (QOPENGLF_APIENTRYP MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void (QOPENGLF_APIENTRYP MultiTexCoord2sv)(GLenum target, const GLshort *v); + void (QOPENGLF_APIENTRYP MultiTexCoord2s)(GLenum target, GLshort s, GLshort t); + void (QOPENGLF_APIENTRYP MultiTexCoord2iv)(GLenum target, const GLint *v); + void (QOPENGLF_APIENTRYP MultiTexCoord2i)(GLenum target, GLint s, GLint t); + void (QOPENGLF_APIENTRYP MultiTexCoord2fv)(GLenum target, const GLfloat *v); + void (QOPENGLF_APIENTRYP MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t); + void (QOPENGLF_APIENTRYP MultiTexCoord2dv)(GLenum target, const GLdouble *v); + void (QOPENGLF_APIENTRYP MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t); + void (QOPENGLF_APIENTRYP MultiTexCoord1sv)(GLenum target, const GLshort *v); + void (QOPENGLF_APIENTRYP MultiTexCoord1s)(GLenum target, GLshort s); + void (QOPENGLF_APIENTRYP MultiTexCoord1iv)(GLenum target, const GLint *v); + void (QOPENGLF_APIENTRYP MultiTexCoord1i)(GLenum target, GLint s); + void (QOPENGLF_APIENTRYP MultiTexCoord1fv)(GLenum target, const GLfloat *v); + void (QOPENGLF_APIENTRYP MultiTexCoord1f)(GLenum target, GLfloat s); + void (QOPENGLF_APIENTRYP MultiTexCoord1dv)(GLenum target, const GLdouble *v); + void (QOPENGLF_APIENTRYP MultiTexCoord1d)(GLenum target, GLdouble s); + void (QOPENGLF_APIENTRYP ClientActiveTexture)(GLenum texture); + +}; + +class QOpenGLFunctions_1_4_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_1_4_DeprecatedBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 1.4 deprecated functions + void (QOPENGLF_APIENTRYP WindowPos3sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP WindowPos3s)(GLshort x, GLshort y, GLshort z); + void (QOPENGLF_APIENTRYP WindowPos3iv)(const GLint *v); + void (QOPENGLF_APIENTRYP WindowPos3i)(GLint x, GLint y, GLint z); + void (QOPENGLF_APIENTRYP WindowPos3fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP WindowPos3f)(GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP WindowPos3dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP WindowPos3d)(GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP WindowPos2sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP WindowPos2s)(GLshort x, GLshort y); + void (QOPENGLF_APIENTRYP WindowPos2iv)(const GLint *v); + void (QOPENGLF_APIENTRYP WindowPos2i)(GLint x, GLint y); + void (QOPENGLF_APIENTRYP WindowPos2fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP WindowPos2f)(GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP WindowPos2dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP WindowPos2d)(GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP SecondaryColor3usv)(const GLushort *v); + void (QOPENGLF_APIENTRYP SecondaryColor3us)(GLushort red, GLushort green, GLushort blue); + void (QOPENGLF_APIENTRYP SecondaryColor3uiv)(const GLuint *v); + void (QOPENGLF_APIENTRYP SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue); + void (QOPENGLF_APIENTRYP SecondaryColor3ubv)(const GLubyte *v); + void (QOPENGLF_APIENTRYP SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue); + void (QOPENGLF_APIENTRYP SecondaryColor3sv)(const GLshort *v); + void (QOPENGLF_APIENTRYP SecondaryColor3s)(GLshort red, GLshort green, GLshort blue); + void (QOPENGLF_APIENTRYP SecondaryColor3iv)(const GLint *v); + void (QOPENGLF_APIENTRYP SecondaryColor3i)(GLint red, GLint green, GLint blue); + void (QOPENGLF_APIENTRYP SecondaryColor3fv)(const GLfloat *v); + void (QOPENGLF_APIENTRYP SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue); + void (QOPENGLF_APIENTRYP SecondaryColor3dv)(const GLdouble *v); + void (QOPENGLF_APIENTRYP SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue); + void (QOPENGLF_APIENTRYP SecondaryColor3bv)(const GLbyte *v); + void (QOPENGLF_APIENTRYP SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue); + void (QOPENGLF_APIENTRYP FogCoordPointer)(GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP FogCoorddv)(const GLdouble *coord); + void (QOPENGLF_APIENTRYP FogCoordd)(GLdouble coord); + void (QOPENGLF_APIENTRYP FogCoordfv)(const GLfloat *coord); + void (QOPENGLF_APIENTRYP FogCoordf)(GLfloat coord); + +}; + +class QOpenGLFunctions_2_0_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_2_0_DeprecatedBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 2.0 deprecated functions + void (QOPENGLF_APIENTRYP VertexAttrib4usv)(GLuint index, const GLushort *v); + void (QOPENGLF_APIENTRYP VertexAttrib4uiv)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttrib4ubv)(GLuint index, const GLubyte *v); + void (QOPENGLF_APIENTRYP VertexAttrib4sv)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void (QOPENGLF_APIENTRYP VertexAttrib4iv)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttrib4fv)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP VertexAttrib4dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP VertexAttrib4bv)(GLuint index, const GLbyte *v); + void (QOPENGLF_APIENTRYP VertexAttrib4Nusv)(GLuint index, const GLushort *v); + void (QOPENGLF_APIENTRYP VertexAttrib4Nuiv)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttrib4Nubv)(GLuint index, const GLubyte *v); + void (QOPENGLF_APIENTRYP VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void (QOPENGLF_APIENTRYP VertexAttrib4Nsv)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib4Niv)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttrib4Nbv)(GLuint index, const GLbyte *v); + void (QOPENGLF_APIENTRYP VertexAttrib3sv)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z); + void (QOPENGLF_APIENTRYP VertexAttrib3fv)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP VertexAttrib3dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP VertexAttrib2sv)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib2s)(GLuint index, GLshort x, GLshort y); + void (QOPENGLF_APIENTRYP VertexAttrib2fv)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib2f)(GLuint index, GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP VertexAttrib2dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP VertexAttrib1sv)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib1s)(GLuint index, GLshort x); + void (QOPENGLF_APIENTRYP VertexAttrib1fv)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib1f)(GLuint index, GLfloat x); + void (QOPENGLF_APIENTRYP VertexAttrib1dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib1d)(GLuint index, GLdouble x); + +}; + +class QOpenGLFunctions_3_0_DeprecatedBackend : public QOpenGLVersionFunctionsBackend +{ +public: + QOpenGLFunctions_3_0_DeprecatedBackend(QOpenGLContext *context); + + static QOpenGLVersionStatus versionStatus(); + + // OpenGL 3.0 deprecated functions + void (QOPENGLF_APIENTRYP VertexAttribI4usv)(GLuint index, const GLushort *v); + void (QOPENGLF_APIENTRYP VertexAttribI4ubv)(GLuint index, const GLubyte *v); + void (QOPENGLF_APIENTRYP VertexAttribI4sv)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttribI4bv)(GLuint index, const GLbyte *v); + void (QOPENGLF_APIENTRYP VertexAttribI4uiv)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttribI3uiv)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttribI2uiv)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttribI1uiv)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttribI4iv)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttribI3iv)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttribI2iv)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttribI1iv)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void (QOPENGLF_APIENTRYP VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z); + void (QOPENGLF_APIENTRYP VertexAttribI2ui)(GLuint index, GLuint x, GLuint y); + void (QOPENGLF_APIENTRYP VertexAttribI1ui)(GLuint index, GLuint x); + void (QOPENGLF_APIENTRYP VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w); + void (QOPENGLF_APIENTRYP VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z); + void (QOPENGLF_APIENTRYP VertexAttribI2i)(GLuint index, GLint x, GLint y); + void (QOPENGLF_APIENTRYP VertexAttribI1i)(GLuint index, GLint x); + +}; + + +#else + +// No need for backend classes with function pointers with ES2. +// All function addresses are independent of context and display. + +#endif // !QT_OPENGL_ES_2 + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/gui/opengl/qopenglversionfunctionsfactory.cpp b/src/gui/opengl/qopenglversionfunctionsfactory.cpp new file mode 100644 index 0000000000..fed2c1537a --- /dev/null +++ b/src/gui/opengl/qopenglversionfunctionsfactory.cpp @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglversionfunctionsfactory_p.h" + +#if !defined(QT_OPENGL_ES_2) +#include "qopenglfunctions_4_3_core.h" +#include "qopenglfunctions_4_3_compatibility.h" +#include "qopenglfunctions_4_2_core.h" +#include "qopenglfunctions_4_2_compatibility.h" +#include "qopenglfunctions_4_1_core.h" +#include "qopenglfunctions_4_1_compatibility.h" +#include "qopenglfunctions_4_0_core.h" +#include "qopenglfunctions_4_0_compatibility.h" +#include "qopenglfunctions_3_3_core.h" +#include "qopenglfunctions_3_3_compatibility.h" +#include "qopenglfunctions_3_2_core.h" +#include "qopenglfunctions_3_2_compatibility.h" +#include "qopenglfunctions_3_1.h" +#include "qopenglfunctions_3_0.h" +#include "qopenglfunctions_2_1.h" +#include "qopenglfunctions_2_0.h" +#include "qopenglfunctions_1_5.h" +#include "qopenglfunctions_1_4.h" +#include "qopenglfunctions_1_3.h" +#include "qopenglfunctions_1_2.h" +#include "qopenglfunctions_1_1.h" +#include "qopenglfunctions_1_0.h" +#else +#include "qopenglfunctions_es2.h" +#endif + +QT_BEGIN_NAMESPACE + +QAbstractOpenGLFunctions *QOpenGLVersionFunctionsFactory::create(const QOpenGLVersionProfile &versionProfile) +{ +#if !defined(QT_OPENGL_ES_2) + const int major = versionProfile.version().first; + const int minor = versionProfile.version().second; + + if (versionProfile.hasProfiles()) { + switch (versionProfile.profile()) { + case QSurfaceFormat::CoreProfile: + if (major == 4 && minor == 3) + return new QOpenGLFunctions_4_3_Core; + else if (major == 4 && minor == 2) + return new QOpenGLFunctions_4_2_Core; + else if (major == 4 && minor == 1) + return new QOpenGLFunctions_4_1_Core; + else if (major == 4 && minor == 0) + return new QOpenGLFunctions_4_0_Core; + else if (major == 3 && minor == 3) + return new QOpenGLFunctions_3_3_Core; + else if (major == 3 && minor == 2) + return new QOpenGLFunctions_3_2_Core; + break; + + case QSurfaceFormat::CompatibilityProfile: + if (major == 4 && minor == 3) + return new QOpenGLFunctions_4_3_Compatibility; + else if (major == 4 && minor == 2) + return new QOpenGLFunctions_4_2_Compatibility; + else if (major == 4 && minor == 1) + return new QOpenGLFunctions_4_1_Compatibility; + else if (major == 4 && minor == 0) + return new QOpenGLFunctions_4_0_Compatibility; + else if (major == 3 && minor == 3) + return new QOpenGLFunctions_3_3_Compatibility; + else if (major == 3 && minor == 2) + return new QOpenGLFunctions_3_2_Compatibility; + break; + + case QSurfaceFormat::NoProfile: + default: + break; + }; + } else { + if (major == 3 && minor == 1) + return new QOpenGLFunctions_3_1; + else if (major == 3 && minor == 0) + return new QOpenGLFunctions_3_0; + else if (major == 2 && minor == 1) + return new QOpenGLFunctions_2_1; + else if (major == 2 && minor == 0) + return new QOpenGLFunctions_2_0; + else if (major == 1 && minor == 5) + return new QOpenGLFunctions_1_5; + else if (major == 1 && minor == 4) + return new QOpenGLFunctions_1_4; + else if (major == 1 && minor == 3) + return new QOpenGLFunctions_1_3; + else if (major == 1 && minor == 2) + return new QOpenGLFunctions_1_2; + else if (major == 1 && minor == 1) + return new QOpenGLFunctions_1_1; + else if (major == 1 && minor == 0) + return new QOpenGLFunctions_1_0; + } + return 0; +#else + Q_UNUSED(versionProfile); + return new QOpenGLFunctions_ES2; +#endif +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglversionfunctionsfactory_p.h b/src/gui/opengl/qopenglversionfunctionsfactory_p.h new file mode 100644 index 0000000000..2312e900f9 --- /dev/null +++ b/src/gui/opengl/qopenglversionfunctionsfactory_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2012 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONFACTORY_P_H +#define QOPENGLVERSIONFUNCTIONFACTORY_P_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class QAbstractOpenGLFunctions; + +class QOpenGLVersionFunctionsFactory +{ +public: + static QAbstractOpenGLFunctions *create(const QOpenGLVersionProfile &versionProfile); +}; + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif -- cgit v1.2.3 From a2ddf3dfe066bb4e58de1d11b1800efcd05fb3a0 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Sun, 27 Jan 2013 15:53:13 +0000 Subject: Add a new static lib and module for OpenGL extensions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The complete set of OpenGL extensions is large meaning that any attempt to incorporate them into a shared library such as QtGui would bloat the size of that library. The typical usage pattern for OpenGL extensions is to use only a very small number of extensions from the total available set. A static library suits this situation very well as an application will only compile in the executable code for the extensions actually used. Thus makign all of the functionality available to those that need it but with zero cost to those that do not. Change-Id: I49fdac7e9d2e0b190b7ea04b776018dd63c3065f Reviewed-by: Samuel Rødal --- src/openglextensions/openglextensions.pro | 12 + src/openglextensions/qopenglextensions.cpp | 7713 +++++++++++ src/openglextensions/qopenglextensions.h | 19468 +++++++++++++++++++++++++++ src/src.pro | 6 +- 4 files changed, 27198 insertions(+), 1 deletion(-) create mode 100644 src/openglextensions/openglextensions.pro create mode 100644 src/openglextensions/qopenglextensions.cpp create mode 100644 src/openglextensions/qopenglextensions.h (limited to 'src') diff --git a/src/openglextensions/openglextensions.pro b/src/openglextensions/openglextensions.pro new file mode 100644 index 0000000000..14b30ef801 --- /dev/null +++ b/src/openglextensions/openglextensions.pro @@ -0,0 +1,12 @@ +TARGET = QtOpenGLExtensions +QT = core +CONFIG += static + +load(qt_module) + +DEFINES += QT_NO_CAST_FROM_ASCII +PRECOMPILED_HEADER = ../corelib/global/qt_pch.h + +HEADERS = qopenglextensions.h + +SOURCES = qopenglextensions.cpp diff --git a/src/openglextensions/qopenglextensions.cpp b/src/openglextensions/qopenglextensions.cpp new file mode 100644 index 0000000000..2119a86ccf --- /dev/null +++ b/src/openglextensions/qopenglextensions.cpp @@ -0,0 +1,7713 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#include "qopenglextensions.h" +#include + +QT_BEGIN_NAMESPACE + +QAbstractOpenGLExtension::~QAbstractOpenGLExtension() +{ + if (d_ptr) + delete d_ptr; +} + +bool QAbstractOpenGLExtension::initializeOpenGLFunctions() +{ + Q_D(QAbstractOpenGLExtension); + d->initialized = true; + return true; +} + +bool QAbstractOpenGLExtension::isInitialized() const +{ + Q_D(const QAbstractOpenGLExtension); + return d->initialized; +} + +#if !defined(QT_OPENGL_ES_2) + +QOpenGLExtension_3DFX_tbuffer::QOpenGLExtension_3DFX_tbuffer() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_3DFX_tbufferPrivate)) +{ +} + +bool QOpenGLExtension_3DFX_tbuffer::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_3DFX_tbuffer); + + d->TbufferMask3DFX = reinterpret_cast(context->getProcAddress("glTbufferMask3DFX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_AMD_debug_output::QOpenGLExtension_AMD_debug_output() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_AMD_debug_outputPrivate)) +{ +} + +bool QOpenGLExtension_AMD_debug_output::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_AMD_debug_output); + + d->GetDebugMessageLogAMD = reinterpret_cast(context->getProcAddress("glGetDebugMessageLogAMD")); + d->DebugMessageCallbackAMD = reinterpret_cast(context->getProcAddress("glDebugMessageCallbackAMD")); + d->DebugMessageInsertAMD = reinterpret_cast(context->getProcAddress("glDebugMessageInsertAMD")); + d->DebugMessageEnableAMD = reinterpret_cast(context->getProcAddress("glDebugMessageEnableAMD")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_AMD_draw_buffers_blend::QOpenGLExtension_AMD_draw_buffers_blend() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_AMD_draw_buffers_blendPrivate)) +{ +} + +bool QOpenGLExtension_AMD_draw_buffers_blend::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_AMD_draw_buffers_blend); + + d->BlendEquationSeparateIndexedAMD = reinterpret_cast(context->getProcAddress("glBlendEquationSeparateIndexedAMD")); + d->BlendEquationIndexedAMD = reinterpret_cast(context->getProcAddress("glBlendEquationIndexedAMD")); + d->BlendFuncSeparateIndexedAMD = reinterpret_cast(context->getProcAddress("glBlendFuncSeparateIndexedAMD")); + d->BlendFuncIndexedAMD = reinterpret_cast(context->getProcAddress("glBlendFuncIndexedAMD")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_AMD_multi_draw_indirect::QOpenGLExtension_AMD_multi_draw_indirect() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_AMD_multi_draw_indirectPrivate)) +{ +} + +bool QOpenGLExtension_AMD_multi_draw_indirect::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_AMD_multi_draw_indirect); + + d->MultiDrawElementsIndirectAMD = reinterpret_cast(context->getProcAddress("glMultiDrawElementsIndirectAMD")); + d->MultiDrawArraysIndirectAMD = reinterpret_cast(context->getProcAddress("glMultiDrawArraysIndirectAMD")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_AMD_name_gen_delete::QOpenGLExtension_AMD_name_gen_delete() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_AMD_name_gen_deletePrivate)) +{ +} + +bool QOpenGLExtension_AMD_name_gen_delete::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_AMD_name_gen_delete); + + d->IsNameAMD = reinterpret_cast(context->getProcAddress("glIsNameAMD")); + d->DeleteNamesAMD = reinterpret_cast(context->getProcAddress("glDeleteNamesAMD")); + d->GenNamesAMD = reinterpret_cast(context->getProcAddress("glGenNamesAMD")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_AMD_performance_monitor::QOpenGLExtension_AMD_performance_monitor() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_AMD_performance_monitorPrivate)) +{ +} + +bool QOpenGLExtension_AMD_performance_monitor::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_AMD_performance_monitor); + + d->GetPerfMonitorCounterDataAMD = reinterpret_cast(context->getProcAddress("glGetPerfMonitorCounterDataAMD")); + d->EndPerfMonitorAMD = reinterpret_cast(context->getProcAddress("glEndPerfMonitorAMD")); + d->BeginPerfMonitorAMD = reinterpret_cast(context->getProcAddress("glBeginPerfMonitorAMD")); + d->SelectPerfMonitorCountersAMD = reinterpret_cast(context->getProcAddress("glSelectPerfMonitorCountersAMD")); + d->DeletePerfMonitorsAMD = reinterpret_cast(context->getProcAddress("glDeletePerfMonitorsAMD")); + d->GenPerfMonitorsAMD = reinterpret_cast(context->getProcAddress("glGenPerfMonitorsAMD")); + d->GetPerfMonitorCounterInfoAMD = reinterpret_cast(context->getProcAddress("glGetPerfMonitorCounterInfoAMD")); + d->GetPerfMonitorCounterStringAMD = reinterpret_cast(context->getProcAddress("glGetPerfMonitorCounterStringAMD")); + d->GetPerfMonitorGroupStringAMD = reinterpret_cast(context->getProcAddress("glGetPerfMonitorGroupStringAMD")); + d->GetPerfMonitorCountersAMD = reinterpret_cast(context->getProcAddress("glGetPerfMonitorCountersAMD")); + d->GetPerfMonitorGroupsAMD = reinterpret_cast(context->getProcAddress("glGetPerfMonitorGroupsAMD")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_AMD_sample_positions::QOpenGLExtension_AMD_sample_positions() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_AMD_sample_positionsPrivate)) +{ +} + +bool QOpenGLExtension_AMD_sample_positions::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_AMD_sample_positions); + + d->SetMultisamplefvAMD = reinterpret_cast(context->getProcAddress("glSetMultisamplefvAMD")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_AMD_sparse_texture::QOpenGLExtension_AMD_sparse_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_AMD_sparse_texturePrivate)) +{ +} + +bool QOpenGLExtension_AMD_sparse_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_AMD_sparse_texture); + + d->TexStorageSparseAMD = reinterpret_cast(context->getProcAddress("glTexStorageSparseAMD")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_AMD_stencil_operation_extended::QOpenGLExtension_AMD_stencil_operation_extended() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_AMD_stencil_operation_extendedPrivate)) +{ +} + +bool QOpenGLExtension_AMD_stencil_operation_extended::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_AMD_stencil_operation_extended); + + d->StencilOpValueAMD = reinterpret_cast(context->getProcAddress("glStencilOpValueAMD")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_AMD_vertex_shader_tesselator::QOpenGLExtension_AMD_vertex_shader_tesselator() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_AMD_vertex_shader_tesselatorPrivate)) +{ +} + +bool QOpenGLExtension_AMD_vertex_shader_tesselator::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_AMD_vertex_shader_tesselator); + + d->TessellationModeAMD = reinterpret_cast(context->getProcAddress("glTessellationModeAMD")); + d->TessellationFactorAMD = reinterpret_cast(context->getProcAddress("glTessellationFactorAMD")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_APPLE_element_array::QOpenGLExtension_APPLE_element_array() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_APPLE_element_arrayPrivate)) +{ +} + +bool QOpenGLExtension_APPLE_element_array::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_APPLE_element_array); + + d->MultiDrawRangeElementArrayAPPLE = reinterpret_cast(context->getProcAddress("glMultiDrawRangeElementArrayAPPLE")); + d->MultiDrawElementArrayAPPLE = reinterpret_cast(context->getProcAddress("glMultiDrawElementArrayAPPLE")); + d->DrawRangeElementArrayAPPLE = reinterpret_cast(context->getProcAddress("glDrawRangeElementArrayAPPLE")); + d->DrawElementArrayAPPLE = reinterpret_cast(context->getProcAddress("glDrawElementArrayAPPLE")); + d->ElementPointerAPPLE = reinterpret_cast(context->getProcAddress("glElementPointerAPPLE")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_APPLE_fence::QOpenGLExtension_APPLE_fence() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_APPLE_fencePrivate)) +{ +} + +bool QOpenGLExtension_APPLE_fence::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_APPLE_fence); + + d->FinishObjectAPPLE = reinterpret_cast(context->getProcAddress("glFinishObjectAPPLE")); + d->TestObjectAPPLE = reinterpret_cast(context->getProcAddress("glTestObjectAPPLE")); + d->FinishFenceAPPLE = reinterpret_cast(context->getProcAddress("glFinishFenceAPPLE")); + d->TestFenceAPPLE = reinterpret_cast(context->getProcAddress("glTestFenceAPPLE")); + d->IsFenceAPPLE = reinterpret_cast(context->getProcAddress("glIsFenceAPPLE")); + d->SetFenceAPPLE = reinterpret_cast(context->getProcAddress("glSetFenceAPPLE")); + d->DeleteFencesAPPLE = reinterpret_cast(context->getProcAddress("glDeleteFencesAPPLE")); + d->GenFencesAPPLE = reinterpret_cast(context->getProcAddress("glGenFencesAPPLE")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_APPLE_flush_buffer_range::QOpenGLExtension_APPLE_flush_buffer_range() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_APPLE_flush_buffer_rangePrivate)) +{ +} + +bool QOpenGLExtension_APPLE_flush_buffer_range::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_APPLE_flush_buffer_range); + + d->FlushMappedBufferRangeAPPLE = reinterpret_cast(context->getProcAddress("glFlushMappedBufferRangeAPPLE")); + d->BufferParameteriAPPLE = reinterpret_cast(context->getProcAddress("glBufferParameteriAPPLE")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_APPLE_object_purgeable::QOpenGLExtension_APPLE_object_purgeable() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_APPLE_object_purgeablePrivate)) +{ +} + +bool QOpenGLExtension_APPLE_object_purgeable::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_APPLE_object_purgeable); + + d->GetObjectParameterivAPPLE = reinterpret_cast(context->getProcAddress("glGetObjectParameterivAPPLE")); + d->ObjectUnpurgeableAPPLE = reinterpret_cast(context->getProcAddress("glObjectUnpurgeableAPPLE")); + d->ObjectPurgeableAPPLE = reinterpret_cast(context->getProcAddress("glObjectPurgeableAPPLE")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_APPLE_texture_range::QOpenGLExtension_APPLE_texture_range() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_APPLE_texture_rangePrivate)) +{ +} + +bool QOpenGLExtension_APPLE_texture_range::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_APPLE_texture_range); + + d->GetTexParameterPointervAPPLE = reinterpret_cast(context->getProcAddress("glGetTexParameterPointervAPPLE")); + d->TextureRangeAPPLE = reinterpret_cast(context->getProcAddress("glTextureRangeAPPLE")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_APPLE_vertex_array_object::QOpenGLExtension_APPLE_vertex_array_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_APPLE_vertex_array_objectPrivate)) +{ +} + +bool QOpenGLExtension_APPLE_vertex_array_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_APPLE_vertex_array_object); + + d->IsVertexArrayAPPLE = reinterpret_cast(context->getProcAddress("glIsVertexArrayAPPLE")); + d->GenVertexArraysAPPLE = reinterpret_cast(context->getProcAddress("glGenVertexArraysAPPLE")); + d->DeleteVertexArraysAPPLE = reinterpret_cast(context->getProcAddress("glDeleteVertexArraysAPPLE")); + d->BindVertexArrayAPPLE = reinterpret_cast(context->getProcAddress("glBindVertexArrayAPPLE")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_APPLE_vertex_array_range::QOpenGLExtension_APPLE_vertex_array_range() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_APPLE_vertex_array_rangePrivate)) +{ +} + +bool QOpenGLExtension_APPLE_vertex_array_range::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_APPLE_vertex_array_range); + + d->VertexArrayParameteriAPPLE = reinterpret_cast(context->getProcAddress("glVertexArrayParameteriAPPLE")); + d->FlushVertexArrayRangeAPPLE = reinterpret_cast(context->getProcAddress("glFlushVertexArrayRangeAPPLE")); + d->VertexArrayRangeAPPLE = reinterpret_cast(context->getProcAddress("glVertexArrayRangeAPPLE")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_APPLE_vertex_program_evaluators::QOpenGLExtension_APPLE_vertex_program_evaluators() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_APPLE_vertex_program_evaluatorsPrivate)) +{ +} + +bool QOpenGLExtension_APPLE_vertex_program_evaluators::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_APPLE_vertex_program_evaluators); + + d->MapVertexAttrib2fAPPLE = reinterpret_cast(context->getProcAddress("glMapVertexAttrib2fAPPLE")); + d->MapVertexAttrib2dAPPLE = reinterpret_cast(context->getProcAddress("glMapVertexAttrib2dAPPLE")); + d->MapVertexAttrib1fAPPLE = reinterpret_cast(context->getProcAddress("glMapVertexAttrib1fAPPLE")); + d->MapVertexAttrib1dAPPLE = reinterpret_cast(context->getProcAddress("glMapVertexAttrib1dAPPLE")); + d->IsVertexAttribEnabledAPPLE = reinterpret_cast(context->getProcAddress("glIsVertexAttribEnabledAPPLE")); + d->DisableVertexAttribAPPLE = reinterpret_cast(context->getProcAddress("glDisableVertexAttribAPPLE")); + d->EnableVertexAttribAPPLE = reinterpret_cast(context->getProcAddress("glEnableVertexAttribAPPLE")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_ES2_compatibility::QOpenGLExtension_ARB_ES2_compatibility() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_ES2_compatibilityPrivate)) +{ +} + +bool QOpenGLExtension_ARB_ES2_compatibility::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_ES2_compatibility); + + d->ClearDepthf = reinterpret_cast(context->getProcAddress("glClearDepthf")); + d->DepthRangef = reinterpret_cast(context->getProcAddress("glDepthRangef")); + d->GetShaderPrecisionFormat = reinterpret_cast(context->getProcAddress("glGetShaderPrecisionFormat")); + d->ShaderBinary = reinterpret_cast(context->getProcAddress("glShaderBinary")); + d->ReleaseShaderCompiler = reinterpret_cast(context->getProcAddress("glReleaseShaderCompiler")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_base_instance::QOpenGLExtension_ARB_base_instance() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_base_instancePrivate)) +{ +} + +bool QOpenGLExtension_ARB_base_instance::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_base_instance); + + d->DrawElementsInstancedBaseVertexBaseInstance = reinterpret_cast(context->getProcAddress("glDrawElementsInstancedBaseVertexBaseInstance")); + d->DrawElementsInstancedBaseInstance = reinterpret_cast(context->getProcAddress("glDrawElementsInstancedBaseInstance")); + d->DrawArraysInstancedBaseInstance = reinterpret_cast(context->getProcAddress("glDrawArraysInstancedBaseInstance")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_blend_func_extended::QOpenGLExtension_ARB_blend_func_extended() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_blend_func_extendedPrivate)) +{ +} + +bool QOpenGLExtension_ARB_blend_func_extended::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_blend_func_extended); + + d->GetFragDataIndex = reinterpret_cast(context->getProcAddress("glGetFragDataIndex")); + d->BindFragDataLocationIndexed = reinterpret_cast(context->getProcAddress("glBindFragDataLocationIndexed")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_cl_event::QOpenGLExtension_ARB_cl_event() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_cl_eventPrivate)) +{ +} + +bool QOpenGLExtension_ARB_cl_event::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_cl_event); + + d->CreateSyncFromCLeventARB = reinterpret_cast(context->getProcAddress("glCreateSyncFromCLeventARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_clear_buffer_object::QOpenGLExtension_ARB_clear_buffer_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_clear_buffer_objectPrivate)) +{ +} + +bool QOpenGLExtension_ARB_clear_buffer_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_clear_buffer_object); + + d->ClearBufferSubData = reinterpret_cast(context->getProcAddress("glClearBufferSubData")); + d->ClearBufferData = reinterpret_cast(context->getProcAddress("glClearBufferData")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_color_buffer_float::QOpenGLExtension_ARB_color_buffer_float() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_color_buffer_floatPrivate)) +{ +} + +bool QOpenGLExtension_ARB_color_buffer_float::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_color_buffer_float); + + d->ClampColorARB = reinterpret_cast(context->getProcAddress("glClampColorARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_compute_shader::QOpenGLExtension_ARB_compute_shader() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_compute_shaderPrivate)) +{ +} + +bool QOpenGLExtension_ARB_compute_shader::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_compute_shader); + + d->DispatchComputeIndirect = reinterpret_cast(context->getProcAddress("glDispatchComputeIndirect")); + d->DispatchCompute = reinterpret_cast(context->getProcAddress("glDispatchCompute")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_copy_buffer::QOpenGLExtension_ARB_copy_buffer() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_copy_bufferPrivate)) +{ +} + +bool QOpenGLExtension_ARB_copy_buffer::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_copy_buffer); + + d->CopyBufferSubData = reinterpret_cast(context->getProcAddress("glCopyBufferSubData")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_copy_image::QOpenGLExtension_ARB_copy_image() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_copy_imagePrivate)) +{ +} + +bool QOpenGLExtension_ARB_copy_image::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_copy_image); + + d->CopyImageSubData = reinterpret_cast(context->getProcAddress("glCopyImageSubData")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_debug_output::QOpenGLExtension_ARB_debug_output() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_debug_outputPrivate)) +{ +} + +bool QOpenGLExtension_ARB_debug_output::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_debug_output); + + d->GetDebugMessageLogARB = reinterpret_cast(context->getProcAddress("glGetDebugMessageLogARB")); + d->DebugMessageCallbackARB = reinterpret_cast(context->getProcAddress("glDebugMessageCallbackARB")); + d->DebugMessageInsertARB = reinterpret_cast(context->getProcAddress("glDebugMessageInsertARB")); + d->DebugMessageControlARB = reinterpret_cast(context->getProcAddress("glDebugMessageControlARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_draw_buffers::QOpenGLExtension_ARB_draw_buffers() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_draw_buffersPrivate)) +{ +} + +bool QOpenGLExtension_ARB_draw_buffers::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_draw_buffers); + + d->DrawBuffersARB = reinterpret_cast(context->getProcAddress("glDrawBuffersARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_draw_buffers_blend::QOpenGLExtension_ARB_draw_buffers_blend() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_draw_buffers_blendPrivate)) +{ +} + +bool QOpenGLExtension_ARB_draw_buffers_blend::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_draw_buffers_blend); + + d->BlendFuncSeparateiARB = reinterpret_cast(context->getProcAddress("glBlendFuncSeparateiARB")); + d->BlendFunciARB = reinterpret_cast(context->getProcAddress("glBlendFunciARB")); + d->BlendEquationSeparateiARB = reinterpret_cast(context->getProcAddress("glBlendEquationSeparateiARB")); + d->BlendEquationiARB = reinterpret_cast(context->getProcAddress("glBlendEquationiARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_draw_elements_base_vertex::QOpenGLExtension_ARB_draw_elements_base_vertex() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_draw_elements_base_vertexPrivate)) +{ +} + +bool QOpenGLExtension_ARB_draw_elements_base_vertex::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_draw_elements_base_vertex); + + d->MultiDrawElementsBaseVertex = reinterpret_cast(context->getProcAddress("glMultiDrawElementsBaseVertex")); + d->DrawElementsInstancedBaseVertex = reinterpret_cast(context->getProcAddress("glDrawElementsInstancedBaseVertex")); + d->DrawRangeElementsBaseVertex = reinterpret_cast(context->getProcAddress("glDrawRangeElementsBaseVertex")); + d->DrawElementsBaseVertex = reinterpret_cast(context->getProcAddress("glDrawElementsBaseVertex")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_draw_indirect::QOpenGLExtension_ARB_draw_indirect() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_draw_indirectPrivate)) +{ +} + +bool QOpenGLExtension_ARB_draw_indirect::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_draw_indirect); + + d->DrawElementsIndirect = reinterpret_cast(context->getProcAddress("glDrawElementsIndirect")); + d->DrawArraysIndirect = reinterpret_cast(context->getProcAddress("glDrawArraysIndirect")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_draw_instanced::QOpenGLExtension_ARB_draw_instanced() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_draw_instancedPrivate)) +{ +} + +bool QOpenGLExtension_ARB_draw_instanced::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_draw_instanced); + + d->DrawElementsInstancedARB = reinterpret_cast(context->getProcAddress("glDrawElementsInstancedARB")); + d->DrawArraysInstancedARB = reinterpret_cast(context->getProcAddress("glDrawArraysInstancedARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_framebuffer_no_attachments::QOpenGLExtension_ARB_framebuffer_no_attachments() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_framebuffer_no_attachmentsPrivate)) +{ +} + +bool QOpenGLExtension_ARB_framebuffer_no_attachments::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_framebuffer_no_attachments); + + d->GetFramebufferParameteriv = reinterpret_cast(context->getProcAddress("glGetFramebufferParameteriv")); + d->FramebufferParameteri = reinterpret_cast(context->getProcAddress("glFramebufferParameteri")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_framebuffer_object::QOpenGLExtension_ARB_framebuffer_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_framebuffer_objectPrivate)) +{ +} + +bool QOpenGLExtension_ARB_framebuffer_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_framebuffer_object); + + d->FramebufferTextureLayer = reinterpret_cast(context->getProcAddress("glFramebufferTextureLayer")); + d->RenderbufferStorageMultisample = reinterpret_cast(context->getProcAddress("glRenderbufferStorageMultisample")); + d->BlitFramebuffer = reinterpret_cast(context->getProcAddress("glBlitFramebuffer")); + d->GenerateMipmap = reinterpret_cast(context->getProcAddress("glGenerateMipmap")); + d->GetFramebufferAttachmentParameteriv = reinterpret_cast(context->getProcAddress("glGetFramebufferAttachmentParameteriv")); + d->FramebufferRenderbuffer = reinterpret_cast(context->getProcAddress("glFramebufferRenderbuffer")); + d->FramebufferTexture3D = reinterpret_cast(context->getProcAddress("glFramebufferTexture3D")); + d->FramebufferTexture2D = reinterpret_cast(context->getProcAddress("glFramebufferTexture2D")); + d->FramebufferTexture1D = reinterpret_cast(context->getProcAddress("glFramebufferTexture1D")); + d->CheckFramebufferStatus = reinterpret_cast(context->getProcAddress("glCheckFramebufferStatus")); + d->GenFramebuffers = reinterpret_cast(context->getProcAddress("glGenFramebuffers")); + d->DeleteFramebuffers = reinterpret_cast(context->getProcAddress("glDeleteFramebuffers")); + d->BindFramebuffer = reinterpret_cast(context->getProcAddress("glBindFramebuffer")); + d->IsFramebuffer = reinterpret_cast(context->getProcAddress("glIsFramebuffer")); + d->GetRenderbufferParameteriv = reinterpret_cast(context->getProcAddress("glGetRenderbufferParameteriv")); + d->RenderbufferStorage = reinterpret_cast(context->getProcAddress("glRenderbufferStorage")); + d->GenRenderbuffers = reinterpret_cast(context->getProcAddress("glGenRenderbuffers")); + d->DeleteRenderbuffers = reinterpret_cast(context->getProcAddress("glDeleteRenderbuffers")); + d->BindRenderbuffer = reinterpret_cast(context->getProcAddress("glBindRenderbuffer")); + d->IsRenderbuffer = reinterpret_cast(context->getProcAddress("glIsRenderbuffer")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_geometry_shader4::QOpenGLExtension_ARB_geometry_shader4() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_geometry_shader4Private)) +{ +} + +bool QOpenGLExtension_ARB_geometry_shader4::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_geometry_shader4); + + d->FramebufferTextureFaceARB = reinterpret_cast(context->getProcAddress("glFramebufferTextureFaceARB")); + d->FramebufferTextureLayerARB = reinterpret_cast(context->getProcAddress("glFramebufferTextureLayerARB")); + d->FramebufferTextureARB = reinterpret_cast(context->getProcAddress("glFramebufferTextureARB")); + d->ProgramParameteriARB = reinterpret_cast(context->getProcAddress("glProgramParameteriARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_get_program_binary::QOpenGLExtension_ARB_get_program_binary() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_get_program_binaryPrivate)) +{ +} + +bool QOpenGLExtension_ARB_get_program_binary::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_get_program_binary); + + d->ProgramParameteri = reinterpret_cast(context->getProcAddress("glProgramParameteri")); + d->ProgramBinary = reinterpret_cast(context->getProcAddress("glProgramBinary")); + d->GetProgramBinary = reinterpret_cast(context->getProcAddress("glGetProgramBinary")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_gpu_shader_fp64::QOpenGLExtension_ARB_gpu_shader_fp64() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_gpu_shader_fp64Private)) +{ +} + +bool QOpenGLExtension_ARB_gpu_shader_fp64::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + + d->GetUniformdv = reinterpret_cast(context->getProcAddress("glGetUniformdv")); + d->UniformMatrix4x3dv = reinterpret_cast(context->getProcAddress("glUniformMatrix4x3dv")); + d->UniformMatrix4x2dv = reinterpret_cast(context->getProcAddress("glUniformMatrix4x2dv")); + d->UniformMatrix3x4dv = reinterpret_cast(context->getProcAddress("glUniformMatrix3x4dv")); + d->UniformMatrix3x2dv = reinterpret_cast(context->getProcAddress("glUniformMatrix3x2dv")); + d->UniformMatrix2x4dv = reinterpret_cast(context->getProcAddress("glUniformMatrix2x4dv")); + d->UniformMatrix2x3dv = reinterpret_cast(context->getProcAddress("glUniformMatrix2x3dv")); + d->UniformMatrix4dv = reinterpret_cast(context->getProcAddress("glUniformMatrix4dv")); + d->UniformMatrix3dv = reinterpret_cast(context->getProcAddress("glUniformMatrix3dv")); + d->UniformMatrix2dv = reinterpret_cast(context->getProcAddress("glUniformMatrix2dv")); + d->Uniform4dv = reinterpret_cast(context->getProcAddress("glUniform4dv")); + d->Uniform3dv = reinterpret_cast(context->getProcAddress("glUniform3dv")); + d->Uniform2dv = reinterpret_cast(context->getProcAddress("glUniform2dv")); + d->Uniform1dv = reinterpret_cast(context->getProcAddress("glUniform1dv")); + d->Uniform4d = reinterpret_cast(context->getProcAddress("glUniform4d")); + d->Uniform3d = reinterpret_cast(context->getProcAddress("glUniform3d")); + d->Uniform2d = reinterpret_cast(context->getProcAddress("glUniform2d")); + d->Uniform1d = reinterpret_cast(context->getProcAddress("glUniform1d")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_instanced_arrays::QOpenGLExtension_ARB_instanced_arrays() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_instanced_arraysPrivate)) +{ +} + +bool QOpenGLExtension_ARB_instanced_arrays::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_instanced_arrays); + + d->VertexAttribDivisorARB = reinterpret_cast(context->getProcAddress("glVertexAttribDivisorARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_internalformat_query::QOpenGLExtension_ARB_internalformat_query() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_internalformat_queryPrivate)) +{ +} + +bool QOpenGLExtension_ARB_internalformat_query::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_internalformat_query); + + d->GetInternalformativ = reinterpret_cast(context->getProcAddress("glGetInternalformativ")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_internalformat_query2::QOpenGLExtension_ARB_internalformat_query2() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_internalformat_query2Private)) +{ +} + +bool QOpenGLExtension_ARB_internalformat_query2::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_internalformat_query2); + + d->GetInternalformati64v = reinterpret_cast(context->getProcAddress("glGetInternalformati64v")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_invalidate_subdata::QOpenGLExtension_ARB_invalidate_subdata() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_invalidate_subdataPrivate)) +{ +} + +bool QOpenGLExtension_ARB_invalidate_subdata::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_invalidate_subdata); + + d->InvalidateSubFramebuffer = reinterpret_cast(context->getProcAddress("glInvalidateSubFramebuffer")); + d->InvalidateFramebuffer = reinterpret_cast(context->getProcAddress("glInvalidateFramebuffer")); + d->InvalidateBufferData = reinterpret_cast(context->getProcAddress("glInvalidateBufferData")); + d->InvalidateBufferSubData = reinterpret_cast(context->getProcAddress("glInvalidateBufferSubData")); + d->InvalidateTexImage = reinterpret_cast(context->getProcAddress("glInvalidateTexImage")); + d->InvalidateTexSubImage = reinterpret_cast(context->getProcAddress("glInvalidateTexSubImage")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_map_buffer_range::QOpenGLExtension_ARB_map_buffer_range() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_map_buffer_rangePrivate)) +{ +} + +bool QOpenGLExtension_ARB_map_buffer_range::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_map_buffer_range); + + d->FlushMappedBufferRange = reinterpret_cast(context->getProcAddress("glFlushMappedBufferRange")); + d->MapBufferRange = reinterpret_cast(context->getProcAddress("glMapBufferRange")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_matrix_palette::QOpenGLExtension_ARB_matrix_palette() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_matrix_palettePrivate)) +{ +} + +bool QOpenGLExtension_ARB_matrix_palette::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_matrix_palette); + + d->MatrixIndexPointerARB = reinterpret_cast(context->getProcAddress("glMatrixIndexPointerARB")); + d->MatrixIndexuivARB = reinterpret_cast(context->getProcAddress("glMatrixIndexuivARB")); + d->MatrixIndexusvARB = reinterpret_cast(context->getProcAddress("glMatrixIndexusvARB")); + d->MatrixIndexubvARB = reinterpret_cast(context->getProcAddress("glMatrixIndexubvARB")); + d->CurrentPaletteMatrixARB = reinterpret_cast(context->getProcAddress("glCurrentPaletteMatrixARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_multi_draw_indirect::QOpenGLExtension_ARB_multi_draw_indirect() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_multi_draw_indirectPrivate)) +{ +} + +bool QOpenGLExtension_ARB_multi_draw_indirect::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_multi_draw_indirect); + + d->MultiDrawElementsIndirect = reinterpret_cast(context->getProcAddress("glMultiDrawElementsIndirect")); + d->MultiDrawArraysIndirect = reinterpret_cast(context->getProcAddress("glMultiDrawArraysIndirect")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_multisample::QOpenGLExtension_ARB_multisample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_multisamplePrivate)) +{ +} + +bool QOpenGLExtension_ARB_multisample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_multisample); + + d->SampleCoverageARB = reinterpret_cast(context->getProcAddress("glSampleCoverageARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_multitexture::QOpenGLExtension_ARB_multitexture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_multitexturePrivate)) +{ +} + +bool QOpenGLExtension_ARB_multitexture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_multitexture); + + d->MultiTexCoord4svARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord4svARB")); + d->MultiTexCoord4sARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord4sARB")); + d->MultiTexCoord4ivARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord4ivARB")); + d->MultiTexCoord4iARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord4iARB")); + d->MultiTexCoord4fvARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord4fvARB")); + d->MultiTexCoord4fARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord4fARB")); + d->MultiTexCoord4dvARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord4dvARB")); + d->MultiTexCoord4dARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord4dARB")); + d->MultiTexCoord3svARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord3svARB")); + d->MultiTexCoord3sARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord3sARB")); + d->MultiTexCoord3ivARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord3ivARB")); + d->MultiTexCoord3iARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord3iARB")); + d->MultiTexCoord3fvARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord3fvARB")); + d->MultiTexCoord3fARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord3fARB")); + d->MultiTexCoord3dvARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord3dvARB")); + d->MultiTexCoord3dARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord3dARB")); + d->MultiTexCoord2svARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord2svARB")); + d->MultiTexCoord2sARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord2sARB")); + d->MultiTexCoord2ivARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord2ivARB")); + d->MultiTexCoord2iARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord2iARB")); + d->MultiTexCoord2fvARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord2fvARB")); + d->MultiTexCoord2fARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord2fARB")); + d->MultiTexCoord2dvARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord2dvARB")); + d->MultiTexCoord2dARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord2dARB")); + d->MultiTexCoord1svARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord1svARB")); + d->MultiTexCoord1sARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord1sARB")); + d->MultiTexCoord1ivARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord1ivARB")); + d->MultiTexCoord1iARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord1iARB")); + d->MultiTexCoord1fvARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord1fvARB")); + d->MultiTexCoord1fARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord1fARB")); + d->MultiTexCoord1dvARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord1dvARB")); + d->MultiTexCoord1dARB = reinterpret_cast(context->getProcAddress("glMultiTexCoord1dARB")); + d->ClientActiveTextureARB = reinterpret_cast(context->getProcAddress("glClientActiveTextureARB")); + d->ActiveTextureARB = reinterpret_cast(context->getProcAddress("glActiveTextureARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_occlusion_query::QOpenGLExtension_ARB_occlusion_query() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_occlusion_queryPrivate)) +{ +} + +bool QOpenGLExtension_ARB_occlusion_query::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_occlusion_query); + + d->GetQueryObjectuivARB = reinterpret_cast(context->getProcAddress("glGetQueryObjectuivARB")); + d->GetQueryObjectivARB = reinterpret_cast(context->getProcAddress("glGetQueryObjectivARB")); + d->GetQueryivARB = reinterpret_cast(context->getProcAddress("glGetQueryivARB")); + d->EndQueryARB = reinterpret_cast(context->getProcAddress("glEndQueryARB")); + d->BeginQueryARB = reinterpret_cast(context->getProcAddress("glBeginQueryARB")); + d->IsQueryARB = reinterpret_cast(context->getProcAddress("glIsQueryARB")); + d->DeleteQueriesARB = reinterpret_cast(context->getProcAddress("glDeleteQueriesARB")); + d->GenQueriesARB = reinterpret_cast(context->getProcAddress("glGenQueriesARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_point_parameters::QOpenGLExtension_ARB_point_parameters() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_point_parametersPrivate)) +{ +} + +bool QOpenGLExtension_ARB_point_parameters::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_point_parameters); + + d->PointParameterfvARB = reinterpret_cast(context->getProcAddress("glPointParameterfvARB")); + d->PointParameterfARB = reinterpret_cast(context->getProcAddress("glPointParameterfARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_program_interface_query::QOpenGLExtension_ARB_program_interface_query() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_program_interface_queryPrivate)) +{ +} + +bool QOpenGLExtension_ARB_program_interface_query::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_program_interface_query); + + d->GetProgramResourceLocationIndex = reinterpret_cast(context->getProcAddress("glGetProgramResourceLocationIndex")); + d->GetProgramResourceLocation = reinterpret_cast(context->getProcAddress("glGetProgramResourceLocation")); + d->GetProgramResourceiv = reinterpret_cast(context->getProcAddress("glGetProgramResourceiv")); + d->GetProgramResourceName = reinterpret_cast(context->getProcAddress("glGetProgramResourceName")); + d->GetProgramResourceIndex = reinterpret_cast(context->getProcAddress("glGetProgramResourceIndex")); + d->GetProgramInterfaceiv = reinterpret_cast(context->getProcAddress("glGetProgramInterfaceiv")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_provoking_vertex::QOpenGLExtension_ARB_provoking_vertex() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_provoking_vertexPrivate)) +{ +} + +bool QOpenGLExtension_ARB_provoking_vertex::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_provoking_vertex); + + d->ProvokingVertex = reinterpret_cast(context->getProcAddress("glProvokingVertex")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_robustness::QOpenGLExtension_ARB_robustness() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_robustnessPrivate)) +{ +} + +bool QOpenGLExtension_ARB_robustness::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_robustness); + + d->GetnUniformdvARB = reinterpret_cast(context->getProcAddress("glGetnUniformdvARB")); + d->GetnUniformuivARB = reinterpret_cast(context->getProcAddress("glGetnUniformuivARB")); + d->GetnUniformivARB = reinterpret_cast(context->getProcAddress("glGetnUniformivARB")); + d->GetnUniformfvARB = reinterpret_cast(context->getProcAddress("glGetnUniformfvARB")); + d->GetnCompressedTexImageARB = reinterpret_cast(context->getProcAddress("glGetnCompressedTexImageARB")); + d->ReadnPixelsARB = reinterpret_cast(context->getProcAddress("glReadnPixelsARB")); + d->GetnTexImageARB = reinterpret_cast(context->getProcAddress("glGetnTexImageARB")); + d->GetnMinmaxARB = reinterpret_cast(context->getProcAddress("glGetnMinmaxARB")); + d->GetnHistogramARB = reinterpret_cast(context->getProcAddress("glGetnHistogramARB")); + d->GetnSeparableFilterARB = reinterpret_cast(context->getProcAddress("glGetnSeparableFilterARB")); + d->GetnConvolutionFilterARB = reinterpret_cast(context->getProcAddress("glGetnConvolutionFilterARB")); + d->GetnColorTableARB = reinterpret_cast(context->getProcAddress("glGetnColorTableARB")); + d->GetnPolygonStippleARB = reinterpret_cast(context->getProcAddress("glGetnPolygonStippleARB")); + d->GetnPixelMapusvARB = reinterpret_cast(context->getProcAddress("glGetnPixelMapusvARB")); + d->GetnPixelMapuivARB = reinterpret_cast(context->getProcAddress("glGetnPixelMapuivARB")); + d->GetnPixelMapfvARB = reinterpret_cast(context->getProcAddress("glGetnPixelMapfvARB")); + d->GetnMapivARB = reinterpret_cast(context->getProcAddress("glGetnMapivARB")); + d->GetnMapfvARB = reinterpret_cast(context->getProcAddress("glGetnMapfvARB")); + d->GetnMapdvARB = reinterpret_cast(context->getProcAddress("glGetnMapdvARB")); + d->GetGraphicsResetStatusARB = reinterpret_cast(context->getProcAddress("glGetGraphicsResetStatusARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_sample_shading::QOpenGLExtension_ARB_sample_shading() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_sample_shadingPrivate)) +{ +} + +bool QOpenGLExtension_ARB_sample_shading::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_sample_shading); + + d->MinSampleShadingARB = reinterpret_cast(context->getProcAddress("glMinSampleShadingARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_sampler_objects::QOpenGLExtension_ARB_sampler_objects() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_sampler_objectsPrivate)) +{ +} + +bool QOpenGLExtension_ARB_sampler_objects::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_sampler_objects); + + d->GetSamplerParameterIuiv = reinterpret_cast(context->getProcAddress("glGetSamplerParameterIuiv")); + d->GetSamplerParameterfv = reinterpret_cast(context->getProcAddress("glGetSamplerParameterfv")); + d->GetSamplerParameterIiv = reinterpret_cast(context->getProcAddress("glGetSamplerParameterIiv")); + d->GetSamplerParameteriv = reinterpret_cast(context->getProcAddress("glGetSamplerParameteriv")); + d->SamplerParameterIuiv = reinterpret_cast(context->getProcAddress("glSamplerParameterIuiv")); + d->SamplerParameterIiv = reinterpret_cast(context->getProcAddress("glSamplerParameterIiv")); + d->SamplerParameterfv = reinterpret_cast(context->getProcAddress("glSamplerParameterfv")); + d->SamplerParameterf = reinterpret_cast(context->getProcAddress("glSamplerParameterf")); + d->SamplerParameteriv = reinterpret_cast(context->getProcAddress("glSamplerParameteriv")); + d->SamplerParameteri = reinterpret_cast(context->getProcAddress("glSamplerParameteri")); + d->BindSampler = reinterpret_cast(context->getProcAddress("glBindSampler")); + d->IsSampler = reinterpret_cast(context->getProcAddress("glIsSampler")); + d->DeleteSamplers = reinterpret_cast(context->getProcAddress("glDeleteSamplers")); + d->GenSamplers = reinterpret_cast(context->getProcAddress("glGenSamplers")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_separate_shader_objects::QOpenGLExtension_ARB_separate_shader_objects() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_separate_shader_objectsPrivate)) +{ +} + +bool QOpenGLExtension_ARB_separate_shader_objects::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + + d->GetProgramPipelineInfoLog = reinterpret_cast(context->getProcAddress("glGetProgramPipelineInfoLog")); + d->ValidateProgramPipeline = reinterpret_cast(context->getProcAddress("glValidateProgramPipeline")); + d->ProgramUniformMatrix4x3dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x3dv")); + d->ProgramUniformMatrix3x4dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x4dv")); + d->ProgramUniformMatrix4x2dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x2dv")); + d->ProgramUniformMatrix2x4dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x4dv")); + d->ProgramUniformMatrix3x2dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x2dv")); + d->ProgramUniformMatrix2x3dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x3dv")); + d->ProgramUniformMatrix4x3fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x3fv")); + d->ProgramUniformMatrix3x4fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x4fv")); + d->ProgramUniformMatrix4x2fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x2fv")); + d->ProgramUniformMatrix2x4fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x4fv")); + d->ProgramUniformMatrix3x2fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x2fv")); + d->ProgramUniformMatrix2x3fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x3fv")); + d->ProgramUniformMatrix4dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4dv")); + d->ProgramUniformMatrix3dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3dv")); + d->ProgramUniformMatrix2dv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2dv")); + d->ProgramUniformMatrix4fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4fv")); + d->ProgramUniformMatrix3fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3fv")); + d->ProgramUniformMatrix2fv = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2fv")); + d->ProgramUniform4uiv = reinterpret_cast(context->getProcAddress("glProgramUniform4uiv")); + d->ProgramUniform4ui = reinterpret_cast(context->getProcAddress("glProgramUniform4ui")); + d->ProgramUniform4dv = reinterpret_cast(context->getProcAddress("glProgramUniform4dv")); + d->ProgramUniform4d = reinterpret_cast(context->getProcAddress("glProgramUniform4d")); + d->ProgramUniform4fv = reinterpret_cast(context->getProcAddress("glProgramUniform4fv")); + d->ProgramUniform4f = reinterpret_cast(context->getProcAddress("glProgramUniform4f")); + d->ProgramUniform4iv = reinterpret_cast(context->getProcAddress("glProgramUniform4iv")); + d->ProgramUniform4i = reinterpret_cast(context->getProcAddress("glProgramUniform4i")); + d->ProgramUniform3uiv = reinterpret_cast(context->getProcAddress("glProgramUniform3uiv")); + d->ProgramUniform3ui = reinterpret_cast(context->getProcAddress("glProgramUniform3ui")); + d->ProgramUniform3dv = reinterpret_cast(context->getProcAddress("glProgramUniform3dv")); + d->ProgramUniform3d = reinterpret_cast(context->getProcAddress("glProgramUniform3d")); + d->ProgramUniform3fv = reinterpret_cast(context->getProcAddress("glProgramUniform3fv")); + d->ProgramUniform3f = reinterpret_cast(context->getProcAddress("glProgramUniform3f")); + d->ProgramUniform3iv = reinterpret_cast(context->getProcAddress("glProgramUniform3iv")); + d->ProgramUniform3i = reinterpret_cast(context->getProcAddress("glProgramUniform3i")); + d->ProgramUniform2uiv = reinterpret_cast(context->getProcAddress("glProgramUniform2uiv")); + d->ProgramUniform2ui = reinterpret_cast(context->getProcAddress("glProgramUniform2ui")); + d->ProgramUniform2dv = reinterpret_cast(context->getProcAddress("glProgramUniform2dv")); + d->ProgramUniform2d = reinterpret_cast(context->getProcAddress("glProgramUniform2d")); + d->ProgramUniform2fv = reinterpret_cast(context->getProcAddress("glProgramUniform2fv")); + d->ProgramUniform2f = reinterpret_cast(context->getProcAddress("glProgramUniform2f")); + d->ProgramUniform2iv = reinterpret_cast(context->getProcAddress("glProgramUniform2iv")); + d->ProgramUniform2i = reinterpret_cast(context->getProcAddress("glProgramUniform2i")); + d->ProgramUniform1uiv = reinterpret_cast(context->getProcAddress("glProgramUniform1uiv")); + d->ProgramUniform1ui = reinterpret_cast(context->getProcAddress("glProgramUniform1ui")); + d->ProgramUniform1dv = reinterpret_cast(context->getProcAddress("glProgramUniform1dv")); + d->ProgramUniform1d = reinterpret_cast(context->getProcAddress("glProgramUniform1d")); + d->ProgramUniform1fv = reinterpret_cast(context->getProcAddress("glProgramUniform1fv")); + d->ProgramUniform1f = reinterpret_cast(context->getProcAddress("glProgramUniform1f")); + d->ProgramUniform1iv = reinterpret_cast(context->getProcAddress("glProgramUniform1iv")); + d->ProgramUniform1i = reinterpret_cast(context->getProcAddress("glProgramUniform1i")); + d->GetProgramPipelineiv = reinterpret_cast(context->getProcAddress("glGetProgramPipelineiv")); + d->IsProgramPipeline = reinterpret_cast(context->getProcAddress("glIsProgramPipeline")); + d->GenProgramPipelines = reinterpret_cast(context->getProcAddress("glGenProgramPipelines")); + d->DeleteProgramPipelines = reinterpret_cast(context->getProcAddress("glDeleteProgramPipelines")); + d->BindProgramPipeline = reinterpret_cast(context->getProcAddress("glBindProgramPipeline")); + d->CreateShaderProgramv = reinterpret_cast(context->getProcAddress("glCreateShaderProgramv")); + d->ActiveShaderProgram = reinterpret_cast(context->getProcAddress("glActiveShaderProgram")); + d->UseProgramStages = reinterpret_cast(context->getProcAddress("glUseProgramStages")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_shader_atomic_counters::QOpenGLExtension_ARB_shader_atomic_counters() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_shader_atomic_countersPrivate)) +{ +} + +bool QOpenGLExtension_ARB_shader_atomic_counters::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_shader_atomic_counters); + + d->GetActiveAtomicCounterBufferiv = reinterpret_cast(context->getProcAddress("glGetActiveAtomicCounterBufferiv")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_shader_image_load_store::QOpenGLExtension_ARB_shader_image_load_store() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_shader_image_load_storePrivate)) +{ +} + +bool QOpenGLExtension_ARB_shader_image_load_store::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_shader_image_load_store); + + d->MemoryBarrier = reinterpret_cast(context->getProcAddress("glMemoryBarrier")); + d->BindImageTexture = reinterpret_cast(context->getProcAddress("glBindImageTexture")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_shader_objects::QOpenGLExtension_ARB_shader_objects() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_shader_objectsPrivate)) +{ +} + +bool QOpenGLExtension_ARB_shader_objects::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_shader_objects); + + d->GetShaderSourceARB = reinterpret_cast(context->getProcAddress("glGetShaderSourceARB")); + d->GetUniformivARB = reinterpret_cast(context->getProcAddress("glGetUniformivARB")); + d->GetUniformfvARB = reinterpret_cast(context->getProcAddress("glGetUniformfvARB")); + d->GetActiveUniformARB = reinterpret_cast(context->getProcAddress("glGetActiveUniformARB")); + d->GetUniformLocationARB = reinterpret_cast(context->getProcAddress("glGetUniformLocationARB")); + d->GetAttachedObjectsARB = reinterpret_cast(context->getProcAddress("glGetAttachedObjectsARB")); + d->GetInfoLogARB = reinterpret_cast(context->getProcAddress("glGetInfoLogARB")); + d->GetObjectParameterivARB = reinterpret_cast(context->getProcAddress("glGetObjectParameterivARB")); + d->GetObjectParameterfvARB = reinterpret_cast(context->getProcAddress("glGetObjectParameterfvARB")); + d->UniformMatrix4fvARB = reinterpret_cast(context->getProcAddress("glUniformMatrix4fvARB")); + d->UniformMatrix3fvARB = reinterpret_cast(context->getProcAddress("glUniformMatrix3fvARB")); + d->UniformMatrix2fvARB = reinterpret_cast(context->getProcAddress("glUniformMatrix2fvARB")); + d->Uniform4ivARB = reinterpret_cast(context->getProcAddress("glUniform4ivARB")); + d->Uniform3ivARB = reinterpret_cast(context->getProcAddress("glUniform3ivARB")); + d->Uniform2ivARB = reinterpret_cast(context->getProcAddress("glUniform2ivARB")); + d->Uniform1ivARB = reinterpret_cast(context->getProcAddress("glUniform1ivARB")); + d->Uniform4fvARB = reinterpret_cast(context->getProcAddress("glUniform4fvARB")); + d->Uniform3fvARB = reinterpret_cast(context->getProcAddress("glUniform3fvARB")); + d->Uniform2fvARB = reinterpret_cast(context->getProcAddress("glUniform2fvARB")); + d->Uniform1fvARB = reinterpret_cast(context->getProcAddress("glUniform1fvARB")); + d->Uniform4iARB = reinterpret_cast(context->getProcAddress("glUniform4iARB")); + d->Uniform3iARB = reinterpret_cast(context->getProcAddress("glUniform3iARB")); + d->Uniform2iARB = reinterpret_cast(context->getProcAddress("glUniform2iARB")); + d->Uniform1iARB = reinterpret_cast(context->getProcAddress("glUniform1iARB")); + d->Uniform4fARB = reinterpret_cast(context->getProcAddress("glUniform4fARB")); + d->Uniform3fARB = reinterpret_cast(context->getProcAddress("glUniform3fARB")); + d->Uniform2fARB = reinterpret_cast(context->getProcAddress("glUniform2fARB")); + d->Uniform1fARB = reinterpret_cast(context->getProcAddress("glUniform1fARB")); + d->ValidateProgramARB = reinterpret_cast(context->getProcAddress("glValidateProgramARB")); + d->UseProgramObjectARB = reinterpret_cast(context->getProcAddress("glUseProgramObjectARB")); + d->LinkProgramARB = reinterpret_cast(context->getProcAddress("glLinkProgramARB")); + d->AttachObjectARB = reinterpret_cast(context->getProcAddress("glAttachObjectARB")); + d->CreateProgramObjectARB = reinterpret_cast(context->getProcAddress("glCreateProgramObjectARB")); + d->CompileShaderARB = reinterpret_cast(context->getProcAddress("glCompileShaderARB")); + d->ShaderSourceARB = reinterpret_cast(context->getProcAddress("glShaderSourceARB")); + d->CreateShaderObjectARB = reinterpret_cast(context->getProcAddress("glCreateShaderObjectARB")); + d->DetachObjectARB = reinterpret_cast(context->getProcAddress("glDetachObjectARB")); + d->GetHandleARB = reinterpret_cast(context->getProcAddress("glGetHandleARB")); + d->DeleteObjectARB = reinterpret_cast(context->getProcAddress("glDeleteObjectARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_shader_storage_buffer_object::QOpenGLExtension_ARB_shader_storage_buffer_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_shader_storage_buffer_objectPrivate)) +{ +} + +bool QOpenGLExtension_ARB_shader_storage_buffer_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_shader_storage_buffer_object); + + d->ShaderStorageBlockBinding = reinterpret_cast(context->getProcAddress("glShaderStorageBlockBinding")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_shader_subroutine::QOpenGLExtension_ARB_shader_subroutine() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_shader_subroutinePrivate)) +{ +} + +bool QOpenGLExtension_ARB_shader_subroutine::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_shader_subroutine); + + d->GetProgramStageiv = reinterpret_cast(context->getProcAddress("glGetProgramStageiv")); + d->GetUniformSubroutineuiv = reinterpret_cast(context->getProcAddress("glGetUniformSubroutineuiv")); + d->UniformSubroutinesuiv = reinterpret_cast(context->getProcAddress("glUniformSubroutinesuiv")); + d->GetActiveSubroutineName = reinterpret_cast(context->getProcAddress("glGetActiveSubroutineName")); + d->GetActiveSubroutineUniformName = reinterpret_cast(context->getProcAddress("glGetActiveSubroutineUniformName")); + d->GetActiveSubroutineUniformiv = reinterpret_cast(context->getProcAddress("glGetActiveSubroutineUniformiv")); + d->GetSubroutineIndex = reinterpret_cast(context->getProcAddress("glGetSubroutineIndex")); + d->GetSubroutineUniformLocation = reinterpret_cast(context->getProcAddress("glGetSubroutineUniformLocation")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_shading_language_include::QOpenGLExtension_ARB_shading_language_include() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_shading_language_includePrivate)) +{ +} + +bool QOpenGLExtension_ARB_shading_language_include::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_shading_language_include); + + d->GetNamedStringivARB = reinterpret_cast(context->getProcAddress("glGetNamedStringivARB")); + d->GetNamedStringARB = reinterpret_cast(context->getProcAddress("glGetNamedStringARB")); + d->IsNamedStringARB = reinterpret_cast(context->getProcAddress("glIsNamedStringARB")); + d->CompileShaderIncludeARB = reinterpret_cast(context->getProcAddress("glCompileShaderIncludeARB")); + d->DeleteNamedStringARB = reinterpret_cast(context->getProcAddress("glDeleteNamedStringARB")); + d->NamedStringARB = reinterpret_cast(context->getProcAddress("glNamedStringARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_sync::QOpenGLExtension_ARB_sync() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_syncPrivate)) +{ +} + +bool QOpenGLExtension_ARB_sync::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_sync); + + d->GetSynciv = reinterpret_cast(context->getProcAddress("glGetSynciv")); + d->GetInteger64v = reinterpret_cast(context->getProcAddress("glGetInteger64v")); + d->WaitSync = reinterpret_cast(context->getProcAddress("glWaitSync")); + d->ClientWaitSync = reinterpret_cast(context->getProcAddress("glClientWaitSync")); + d->DeleteSync = reinterpret_cast(context->getProcAddress("glDeleteSync")); + d->IsSync = reinterpret_cast(context->getProcAddress("glIsSync")); + d->FenceSync = reinterpret_cast(context->getProcAddress("glFenceSync")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_tessellation_shader::QOpenGLExtension_ARB_tessellation_shader() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_tessellation_shaderPrivate)) +{ +} + +bool QOpenGLExtension_ARB_tessellation_shader::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_tessellation_shader); + + d->PatchParameterfv = reinterpret_cast(context->getProcAddress("glPatchParameterfv")); + d->PatchParameteri = reinterpret_cast(context->getProcAddress("glPatchParameteri")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_texture_buffer_object::QOpenGLExtension_ARB_texture_buffer_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_texture_buffer_objectPrivate)) +{ +} + +bool QOpenGLExtension_ARB_texture_buffer_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_texture_buffer_object); + + d->TexBufferARB = reinterpret_cast(context->getProcAddress("glTexBufferARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_texture_buffer_range::QOpenGLExtension_ARB_texture_buffer_range() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_texture_buffer_rangePrivate)) +{ +} + +bool QOpenGLExtension_ARB_texture_buffer_range::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_texture_buffer_range); + + d->TexBufferRange = reinterpret_cast(context->getProcAddress("glTexBufferRange")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_texture_compression::QOpenGLExtension_ARB_texture_compression() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_texture_compressionPrivate)) +{ +} + +bool QOpenGLExtension_ARB_texture_compression::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_texture_compression); + + d->GetCompressedTexImageARB = reinterpret_cast(context->getProcAddress("glGetCompressedTexImageARB")); + d->CompressedTexSubImage1DARB = reinterpret_cast(context->getProcAddress("glCompressedTexSubImage1DARB")); + d->CompressedTexSubImage2DARB = reinterpret_cast(context->getProcAddress("glCompressedTexSubImage2DARB")); + d->CompressedTexSubImage3DARB = reinterpret_cast(context->getProcAddress("glCompressedTexSubImage3DARB")); + d->CompressedTexImage1DARB = reinterpret_cast(context->getProcAddress("glCompressedTexImage1DARB")); + d->CompressedTexImage2DARB = reinterpret_cast(context->getProcAddress("glCompressedTexImage2DARB")); + d->CompressedTexImage3DARB = reinterpret_cast(context->getProcAddress("glCompressedTexImage3DARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_texture_multisample::QOpenGLExtension_ARB_texture_multisample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_texture_multisamplePrivate)) +{ +} + +bool QOpenGLExtension_ARB_texture_multisample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_texture_multisample); + + d->SampleMaski = reinterpret_cast(context->getProcAddress("glSampleMaski")); + d->GetMultisamplefv = reinterpret_cast(context->getProcAddress("glGetMultisamplefv")); + d->TexImage3DMultisample = reinterpret_cast(context->getProcAddress("glTexImage3DMultisample")); + d->TexImage2DMultisample = reinterpret_cast(context->getProcAddress("glTexImage2DMultisample")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_texture_storage::QOpenGLExtension_ARB_texture_storage() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_texture_storagePrivate)) +{ +} + +bool QOpenGLExtension_ARB_texture_storage::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_texture_storage); + + d->TexStorage3D = reinterpret_cast(context->getProcAddress("glTexStorage3D")); + d->TexStorage2D = reinterpret_cast(context->getProcAddress("glTexStorage2D")); + d->TexStorage1D = reinterpret_cast(context->getProcAddress("glTexStorage1D")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_texture_storage_multisample::QOpenGLExtension_ARB_texture_storage_multisample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_texture_storage_multisamplePrivate)) +{ +} + +bool QOpenGLExtension_ARB_texture_storage_multisample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_texture_storage_multisample); + + d->TexStorage3DMultisample = reinterpret_cast(context->getProcAddress("glTexStorage3DMultisample")); + d->TexStorage2DMultisample = reinterpret_cast(context->getProcAddress("glTexStorage2DMultisample")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_texture_view::QOpenGLExtension_ARB_texture_view() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_texture_viewPrivate)) +{ +} + +bool QOpenGLExtension_ARB_texture_view::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_texture_view); + + d->TextureView = reinterpret_cast(context->getProcAddress("glTextureView")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_timer_query::QOpenGLExtension_ARB_timer_query() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_timer_queryPrivate)) +{ +} + +bool QOpenGLExtension_ARB_timer_query::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_timer_query); + + d->GetQueryObjectui64v = reinterpret_cast(context->getProcAddress("glGetQueryObjectui64v")); + d->GetQueryObjecti64v = reinterpret_cast(context->getProcAddress("glGetQueryObjecti64v")); + d->QueryCounter = reinterpret_cast(context->getProcAddress("glQueryCounter")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_transform_feedback2::QOpenGLExtension_ARB_transform_feedback2() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_transform_feedback2Private)) +{ +} + +bool QOpenGLExtension_ARB_transform_feedback2::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_transform_feedback2); + + d->DrawTransformFeedback = reinterpret_cast(context->getProcAddress("glDrawTransformFeedback")); + d->ResumeTransformFeedback = reinterpret_cast(context->getProcAddress("glResumeTransformFeedback")); + d->PauseTransformFeedback = reinterpret_cast(context->getProcAddress("glPauseTransformFeedback")); + d->IsTransformFeedback = reinterpret_cast(context->getProcAddress("glIsTransformFeedback")); + d->GenTransformFeedbacks = reinterpret_cast(context->getProcAddress("glGenTransformFeedbacks")); + d->DeleteTransformFeedbacks = reinterpret_cast(context->getProcAddress("glDeleteTransformFeedbacks")); + d->BindTransformFeedback = reinterpret_cast(context->getProcAddress("glBindTransformFeedback")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_transform_feedback3::QOpenGLExtension_ARB_transform_feedback3() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_transform_feedback3Private)) +{ +} + +bool QOpenGLExtension_ARB_transform_feedback3::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_transform_feedback3); + + d->GetQueryIndexediv = reinterpret_cast(context->getProcAddress("glGetQueryIndexediv")); + d->EndQueryIndexed = reinterpret_cast(context->getProcAddress("glEndQueryIndexed")); + d->BeginQueryIndexed = reinterpret_cast(context->getProcAddress("glBeginQueryIndexed")); + d->DrawTransformFeedbackStream = reinterpret_cast(context->getProcAddress("glDrawTransformFeedbackStream")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_transform_feedback_instanced::QOpenGLExtension_ARB_transform_feedback_instanced() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_transform_feedback_instancedPrivate)) +{ +} + +bool QOpenGLExtension_ARB_transform_feedback_instanced::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_transform_feedback_instanced); + + d->DrawTransformFeedbackStreamInstanced = reinterpret_cast(context->getProcAddress("glDrawTransformFeedbackStreamInstanced")); + d->DrawTransformFeedbackInstanced = reinterpret_cast(context->getProcAddress("glDrawTransformFeedbackInstanced")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_transpose_matrix::QOpenGLExtension_ARB_transpose_matrix() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_transpose_matrixPrivate)) +{ +} + +bool QOpenGLExtension_ARB_transpose_matrix::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_transpose_matrix); + + d->MultTransposeMatrixdARB = reinterpret_cast(context->getProcAddress("glMultTransposeMatrixdARB")); + d->MultTransposeMatrixfARB = reinterpret_cast(context->getProcAddress("glMultTransposeMatrixfARB")); + d->LoadTransposeMatrixdARB = reinterpret_cast(context->getProcAddress("glLoadTransposeMatrixdARB")); + d->LoadTransposeMatrixfARB = reinterpret_cast(context->getProcAddress("glLoadTransposeMatrixfARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_uniform_buffer_object::QOpenGLExtension_ARB_uniform_buffer_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_uniform_buffer_objectPrivate)) +{ +} + +bool QOpenGLExtension_ARB_uniform_buffer_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_uniform_buffer_object); + + d->UniformBlockBinding = reinterpret_cast(context->getProcAddress("glUniformBlockBinding")); + d->GetActiveUniformBlockName = reinterpret_cast(context->getProcAddress("glGetActiveUniformBlockName")); + d->GetActiveUniformBlockiv = reinterpret_cast(context->getProcAddress("glGetActiveUniformBlockiv")); + d->GetUniformBlockIndex = reinterpret_cast(context->getProcAddress("glGetUniformBlockIndex")); + d->GetActiveUniformName = reinterpret_cast(context->getProcAddress("glGetActiveUniformName")); + d->GetActiveUniformsiv = reinterpret_cast(context->getProcAddress("glGetActiveUniformsiv")); + d->GetUniformIndices = reinterpret_cast(context->getProcAddress("glGetUniformIndices")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_vertex_array_object::QOpenGLExtension_ARB_vertex_array_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_vertex_array_objectPrivate)) +{ +} + +bool QOpenGLExtension_ARB_vertex_array_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_vertex_array_object); + + d->IsVertexArray = reinterpret_cast(context->getProcAddress("glIsVertexArray")); + d->GenVertexArrays = reinterpret_cast(context->getProcAddress("glGenVertexArrays")); + d->DeleteVertexArrays = reinterpret_cast(context->getProcAddress("glDeleteVertexArrays")); + d->BindVertexArray = reinterpret_cast(context->getProcAddress("glBindVertexArray")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_vertex_attrib_64bit::QOpenGLExtension_ARB_vertex_attrib_64bit() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_vertex_attrib_64bitPrivate)) +{ +} + +bool QOpenGLExtension_ARB_vertex_attrib_64bit::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + + d->GetVertexAttribLdv = reinterpret_cast(context->getProcAddress("glGetVertexAttribLdv")); + d->VertexAttribLPointer = reinterpret_cast(context->getProcAddress("glVertexAttribLPointer")); + d->VertexAttribL4dv = reinterpret_cast(context->getProcAddress("glVertexAttribL4dv")); + d->VertexAttribL3dv = reinterpret_cast(context->getProcAddress("glVertexAttribL3dv")); + d->VertexAttribL2dv = reinterpret_cast(context->getProcAddress("glVertexAttribL2dv")); + d->VertexAttribL1dv = reinterpret_cast(context->getProcAddress("glVertexAttribL1dv")); + d->VertexAttribL4d = reinterpret_cast(context->getProcAddress("glVertexAttribL4d")); + d->VertexAttribL3d = reinterpret_cast(context->getProcAddress("glVertexAttribL3d")); + d->VertexAttribL2d = reinterpret_cast(context->getProcAddress("glVertexAttribL2d")); + d->VertexAttribL1d = reinterpret_cast(context->getProcAddress("glVertexAttribL1d")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_vertex_attrib_binding::QOpenGLExtension_ARB_vertex_attrib_binding() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_vertex_attrib_bindingPrivate)) +{ +} + +bool QOpenGLExtension_ARB_vertex_attrib_binding::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_vertex_attrib_binding); + + d->VertexBindingDivisor = reinterpret_cast(context->getProcAddress("glVertexBindingDivisor")); + d->VertexAttribBinding = reinterpret_cast(context->getProcAddress("glVertexAttribBinding")); + d->VertexAttribLFormat = reinterpret_cast(context->getProcAddress("glVertexAttribLFormat")); + d->VertexAttribIFormat = reinterpret_cast(context->getProcAddress("glVertexAttribIFormat")); + d->VertexAttribFormat = reinterpret_cast(context->getProcAddress("glVertexAttribFormat")); + d->BindVertexBuffer = reinterpret_cast(context->getProcAddress("glBindVertexBuffer")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_vertex_blend::QOpenGLExtension_ARB_vertex_blend() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_vertex_blendPrivate)) +{ +} + +bool QOpenGLExtension_ARB_vertex_blend::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_vertex_blend); + + d->VertexBlendARB = reinterpret_cast(context->getProcAddress("glVertexBlendARB")); + d->WeightPointerARB = reinterpret_cast(context->getProcAddress("glWeightPointerARB")); + d->WeightuivARB = reinterpret_cast(context->getProcAddress("glWeightuivARB")); + d->WeightusvARB = reinterpret_cast(context->getProcAddress("glWeightusvARB")); + d->WeightubvARB = reinterpret_cast(context->getProcAddress("glWeightubvARB")); + d->WeightdvARB = reinterpret_cast(context->getProcAddress("glWeightdvARB")); + d->WeightfvARB = reinterpret_cast(context->getProcAddress("glWeightfvARB")); + d->WeightivARB = reinterpret_cast(context->getProcAddress("glWeightivARB")); + d->WeightsvARB = reinterpret_cast(context->getProcAddress("glWeightsvARB")); + d->WeightbvARB = reinterpret_cast(context->getProcAddress("glWeightbvARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_vertex_buffer_object::QOpenGLExtension_ARB_vertex_buffer_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_vertex_buffer_objectPrivate)) +{ +} + +bool QOpenGLExtension_ARB_vertex_buffer_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + + d->GetBufferPointervARB = reinterpret_cast(context->getProcAddress("glGetBufferPointervARB")); + d->GetBufferParameterivARB = reinterpret_cast(context->getProcAddress("glGetBufferParameterivARB")); + d->UnmapBufferARB = reinterpret_cast(context->getProcAddress("glUnmapBufferARB")); + d->MapBufferARB = reinterpret_cast(context->getProcAddress("glMapBufferARB")); + d->GetBufferSubDataARB = reinterpret_cast(context->getProcAddress("glGetBufferSubDataARB")); + d->BufferSubDataARB = reinterpret_cast(context->getProcAddress("glBufferSubDataARB")); + d->BufferDataARB = reinterpret_cast(context->getProcAddress("glBufferDataARB")); + d->IsBufferARB = reinterpret_cast(context->getProcAddress("glIsBufferARB")); + d->GenBuffersARB = reinterpret_cast(context->getProcAddress("glGenBuffersARB")); + d->DeleteBuffersARB = reinterpret_cast(context->getProcAddress("glDeleteBuffersARB")); + d->BindBufferARB = reinterpret_cast(context->getProcAddress("glBindBufferARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_vertex_program::QOpenGLExtension_ARB_vertex_program() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_vertex_programPrivate)) +{ +} + +bool QOpenGLExtension_ARB_vertex_program::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_vertex_program); + + d->IsProgramARB = reinterpret_cast(context->getProcAddress("glIsProgramARB")); + d->GetVertexAttribPointervARB = reinterpret_cast(context->getProcAddress("glGetVertexAttribPointervARB")); + d->GetVertexAttribivARB = reinterpret_cast(context->getProcAddress("glGetVertexAttribivARB")); + d->GetVertexAttribfvARB = reinterpret_cast(context->getProcAddress("glGetVertexAttribfvARB")); + d->GetVertexAttribdvARB = reinterpret_cast(context->getProcAddress("glGetVertexAttribdvARB")); + d->GetProgramStringARB = reinterpret_cast(context->getProcAddress("glGetProgramStringARB")); + d->GetProgramivARB = reinterpret_cast(context->getProcAddress("glGetProgramivARB")); + d->GetProgramLocalParameterfvARB = reinterpret_cast(context->getProcAddress("glGetProgramLocalParameterfvARB")); + d->GetProgramLocalParameterdvARB = reinterpret_cast(context->getProcAddress("glGetProgramLocalParameterdvARB")); + d->GetProgramEnvParameterfvARB = reinterpret_cast(context->getProcAddress("glGetProgramEnvParameterfvARB")); + d->GetProgramEnvParameterdvARB = reinterpret_cast(context->getProcAddress("glGetProgramEnvParameterdvARB")); + d->ProgramLocalParameter4fvARB = reinterpret_cast(context->getProcAddress("glProgramLocalParameter4fvARB")); + d->ProgramLocalParameter4fARB = reinterpret_cast(context->getProcAddress("glProgramLocalParameter4fARB")); + d->ProgramLocalParameter4dvARB = reinterpret_cast(context->getProcAddress("glProgramLocalParameter4dvARB")); + d->ProgramLocalParameter4dARB = reinterpret_cast(context->getProcAddress("glProgramLocalParameter4dARB")); + d->ProgramEnvParameter4fvARB = reinterpret_cast(context->getProcAddress("glProgramEnvParameter4fvARB")); + d->ProgramEnvParameter4fARB = reinterpret_cast(context->getProcAddress("glProgramEnvParameter4fARB")); + d->ProgramEnvParameter4dvARB = reinterpret_cast(context->getProcAddress("glProgramEnvParameter4dvARB")); + d->ProgramEnvParameter4dARB = reinterpret_cast(context->getProcAddress("glProgramEnvParameter4dARB")); + d->GenProgramsARB = reinterpret_cast(context->getProcAddress("glGenProgramsARB")); + d->DeleteProgramsARB = reinterpret_cast(context->getProcAddress("glDeleteProgramsARB")); + d->BindProgramARB = reinterpret_cast(context->getProcAddress("glBindProgramARB")); + d->ProgramStringARB = reinterpret_cast(context->getProcAddress("glProgramStringARB")); + d->DisableVertexAttribArrayARB = reinterpret_cast(context->getProcAddress("glDisableVertexAttribArrayARB")); + d->EnableVertexAttribArrayARB = reinterpret_cast(context->getProcAddress("glEnableVertexAttribArrayARB")); + d->VertexAttribPointerARB = reinterpret_cast(context->getProcAddress("glVertexAttribPointerARB")); + d->VertexAttrib4usvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4usvARB")); + d->VertexAttrib4uivARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4uivARB")); + d->VertexAttrib4ubvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4ubvARB")); + d->VertexAttrib4svARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4svARB")); + d->VertexAttrib4sARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4sARB")); + d->VertexAttrib4ivARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4ivARB")); + d->VertexAttrib4fvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4fvARB")); + d->VertexAttrib4fARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4fARB")); + d->VertexAttrib4dvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4dvARB")); + d->VertexAttrib4dARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4dARB")); + d->VertexAttrib4bvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4bvARB")); + d->VertexAttrib4NusvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4NusvARB")); + d->VertexAttrib4NuivARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4NuivARB")); + d->VertexAttrib4NubvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4NubvARB")); + d->VertexAttrib4NubARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4NubARB")); + d->VertexAttrib4NsvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4NsvARB")); + d->VertexAttrib4NivARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4NivARB")); + d->VertexAttrib4NbvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib4NbvARB")); + d->VertexAttrib3svARB = reinterpret_cast(context->getProcAddress("glVertexAttrib3svARB")); + d->VertexAttrib3sARB = reinterpret_cast(context->getProcAddress("glVertexAttrib3sARB")); + d->VertexAttrib3fvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib3fvARB")); + d->VertexAttrib3fARB = reinterpret_cast(context->getProcAddress("glVertexAttrib3fARB")); + d->VertexAttrib3dvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib3dvARB")); + d->VertexAttrib3dARB = reinterpret_cast(context->getProcAddress("glVertexAttrib3dARB")); + d->VertexAttrib2svARB = reinterpret_cast(context->getProcAddress("glVertexAttrib2svARB")); + d->VertexAttrib2sARB = reinterpret_cast(context->getProcAddress("glVertexAttrib2sARB")); + d->VertexAttrib2fvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib2fvARB")); + d->VertexAttrib2fARB = reinterpret_cast(context->getProcAddress("glVertexAttrib2fARB")); + d->VertexAttrib2dvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib2dvARB")); + d->VertexAttrib2dARB = reinterpret_cast(context->getProcAddress("glVertexAttrib2dARB")); + d->VertexAttrib1svARB = reinterpret_cast(context->getProcAddress("glVertexAttrib1svARB")); + d->VertexAttrib1sARB = reinterpret_cast(context->getProcAddress("glVertexAttrib1sARB")); + d->VertexAttrib1fvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib1fvARB")); + d->VertexAttrib1fARB = reinterpret_cast(context->getProcAddress("glVertexAttrib1fARB")); + d->VertexAttrib1dvARB = reinterpret_cast(context->getProcAddress("glVertexAttrib1dvARB")); + d->VertexAttrib1dARB = reinterpret_cast(context->getProcAddress("glVertexAttrib1dARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_vertex_shader::QOpenGLExtension_ARB_vertex_shader() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_vertex_shaderPrivate)) +{ +} + +bool QOpenGLExtension_ARB_vertex_shader::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_vertex_shader); + + d->GetAttribLocationARB = reinterpret_cast(context->getProcAddress("glGetAttribLocationARB")); + d->GetActiveAttribARB = reinterpret_cast(context->getProcAddress("glGetActiveAttribARB")); + d->BindAttribLocationARB = reinterpret_cast(context->getProcAddress("glBindAttribLocationARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_vertex_type_2_10_10_10_revPrivate)) +{ +} + +bool QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + + d->VertexAttribP4uiv = reinterpret_cast(context->getProcAddress("glVertexAttribP4uiv")); + d->VertexAttribP4ui = reinterpret_cast(context->getProcAddress("glVertexAttribP4ui")); + d->VertexAttribP3uiv = reinterpret_cast(context->getProcAddress("glVertexAttribP3uiv")); + d->VertexAttribP3ui = reinterpret_cast(context->getProcAddress("glVertexAttribP3ui")); + d->VertexAttribP2uiv = reinterpret_cast(context->getProcAddress("glVertexAttribP2uiv")); + d->VertexAttribP2ui = reinterpret_cast(context->getProcAddress("glVertexAttribP2ui")); + d->VertexAttribP1uiv = reinterpret_cast(context->getProcAddress("glVertexAttribP1uiv")); + d->VertexAttribP1ui = reinterpret_cast(context->getProcAddress("glVertexAttribP1ui")); + d->SecondaryColorP3uiv = reinterpret_cast(context->getProcAddress("glSecondaryColorP3uiv")); + d->SecondaryColorP3ui = reinterpret_cast(context->getProcAddress("glSecondaryColorP3ui")); + d->ColorP4uiv = reinterpret_cast(context->getProcAddress("glColorP4uiv")); + d->ColorP4ui = reinterpret_cast(context->getProcAddress("glColorP4ui")); + d->ColorP3uiv = reinterpret_cast(context->getProcAddress("glColorP3uiv")); + d->ColorP3ui = reinterpret_cast(context->getProcAddress("glColorP3ui")); + d->NormalP3uiv = reinterpret_cast(context->getProcAddress("glNormalP3uiv")); + d->NormalP3ui = reinterpret_cast(context->getProcAddress("glNormalP3ui")); + d->MultiTexCoordP4uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP4uiv")); + d->MultiTexCoordP4ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP4ui")); + d->MultiTexCoordP3uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP3uiv")); + d->MultiTexCoordP3ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP3ui")); + d->MultiTexCoordP2uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP2uiv")); + d->MultiTexCoordP2ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP2ui")); + d->MultiTexCoordP1uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP1uiv")); + d->MultiTexCoordP1ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP1ui")); + d->TexCoordP4uiv = reinterpret_cast(context->getProcAddress("glTexCoordP4uiv")); + d->TexCoordP4ui = reinterpret_cast(context->getProcAddress("glTexCoordP4ui")); + d->TexCoordP3uiv = reinterpret_cast(context->getProcAddress("glTexCoordP3uiv")); + d->TexCoordP3ui = reinterpret_cast(context->getProcAddress("glTexCoordP3ui")); + d->TexCoordP2uiv = reinterpret_cast(context->getProcAddress("glTexCoordP2uiv")); + d->TexCoordP2ui = reinterpret_cast(context->getProcAddress("glTexCoordP2ui")); + d->TexCoordP1uiv = reinterpret_cast(context->getProcAddress("glTexCoordP1uiv")); + d->TexCoordP1ui = reinterpret_cast(context->getProcAddress("glTexCoordP1ui")); + d->VertexP4uiv = reinterpret_cast(context->getProcAddress("glVertexP4uiv")); + d->VertexP4ui = reinterpret_cast(context->getProcAddress("glVertexP4ui")); + d->VertexP3uiv = reinterpret_cast(context->getProcAddress("glVertexP3uiv")); + d->VertexP3ui = reinterpret_cast(context->getProcAddress("glVertexP3ui")); + d->VertexP2uiv = reinterpret_cast(context->getProcAddress("glVertexP2uiv")); + d->VertexP2ui = reinterpret_cast(context->getProcAddress("glVertexP2ui")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_viewport_array::QOpenGLExtension_ARB_viewport_array() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_viewport_arrayPrivate)) +{ +} + +bool QOpenGLExtension_ARB_viewport_array::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_viewport_array); + + d->GetDoublei_v = reinterpret_cast(context->getProcAddress("glGetDoublei_v")); + d->GetFloati_v = reinterpret_cast(context->getProcAddress("glGetFloati_v")); + d->DepthRangeIndexed = reinterpret_cast(context->getProcAddress("glDepthRangeIndexed")); + d->DepthRangeArrayv = reinterpret_cast(context->getProcAddress("glDepthRangeArrayv")); + d->ScissorIndexedv = reinterpret_cast(context->getProcAddress("glScissorIndexedv")); + d->ScissorIndexed = reinterpret_cast(context->getProcAddress("glScissorIndexed")); + d->ScissorArrayv = reinterpret_cast(context->getProcAddress("glScissorArrayv")); + d->ViewportIndexedfv = reinterpret_cast(context->getProcAddress("glViewportIndexedfv")); + d->ViewportIndexedf = reinterpret_cast(context->getProcAddress("glViewportIndexedf")); + d->ViewportArrayv = reinterpret_cast(context->getProcAddress("glViewportArrayv")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ARB_window_pos::QOpenGLExtension_ARB_window_pos() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ARB_window_posPrivate)) +{ +} + +bool QOpenGLExtension_ARB_window_pos::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ARB_window_pos); + + d->WindowPos3svARB = reinterpret_cast(context->getProcAddress("glWindowPos3svARB")); + d->WindowPos3sARB = reinterpret_cast(context->getProcAddress("glWindowPos3sARB")); + d->WindowPos3ivARB = reinterpret_cast(context->getProcAddress("glWindowPos3ivARB")); + d->WindowPos3iARB = reinterpret_cast(context->getProcAddress("glWindowPos3iARB")); + d->WindowPos3fvARB = reinterpret_cast(context->getProcAddress("glWindowPos3fvARB")); + d->WindowPos3fARB = reinterpret_cast(context->getProcAddress("glWindowPos3fARB")); + d->WindowPos3dvARB = reinterpret_cast(context->getProcAddress("glWindowPos3dvARB")); + d->WindowPos3dARB = reinterpret_cast(context->getProcAddress("glWindowPos3dARB")); + d->WindowPos2svARB = reinterpret_cast(context->getProcAddress("glWindowPos2svARB")); + d->WindowPos2sARB = reinterpret_cast(context->getProcAddress("glWindowPos2sARB")); + d->WindowPos2ivARB = reinterpret_cast(context->getProcAddress("glWindowPos2ivARB")); + d->WindowPos2iARB = reinterpret_cast(context->getProcAddress("glWindowPos2iARB")); + d->WindowPos2fvARB = reinterpret_cast(context->getProcAddress("glWindowPos2fvARB")); + d->WindowPos2fARB = reinterpret_cast(context->getProcAddress("glWindowPos2fARB")); + d->WindowPos2dvARB = reinterpret_cast(context->getProcAddress("glWindowPos2dvARB")); + d->WindowPos2dARB = reinterpret_cast(context->getProcAddress("glWindowPos2dARB")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ATI_draw_buffers::QOpenGLExtension_ATI_draw_buffers() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ATI_draw_buffersPrivate)) +{ +} + +bool QOpenGLExtension_ATI_draw_buffers::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ATI_draw_buffers); + + d->DrawBuffersATI = reinterpret_cast(context->getProcAddress("glDrawBuffersATI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ATI_element_array::QOpenGLExtension_ATI_element_array() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ATI_element_arrayPrivate)) +{ +} + +bool QOpenGLExtension_ATI_element_array::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ATI_element_array); + + d->DrawRangeElementArrayATI = reinterpret_cast(context->getProcAddress("glDrawRangeElementArrayATI")); + d->DrawElementArrayATI = reinterpret_cast(context->getProcAddress("glDrawElementArrayATI")); + d->ElementPointerATI = reinterpret_cast(context->getProcAddress("glElementPointerATI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ATI_envmap_bumpmap::QOpenGLExtension_ATI_envmap_bumpmap() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ATI_envmap_bumpmapPrivate)) +{ +} + +bool QOpenGLExtension_ATI_envmap_bumpmap::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ATI_envmap_bumpmap); + + d->GetTexBumpParameterfvATI = reinterpret_cast(context->getProcAddress("glGetTexBumpParameterfvATI")); + d->GetTexBumpParameterivATI = reinterpret_cast(context->getProcAddress("glGetTexBumpParameterivATI")); + d->TexBumpParameterfvATI = reinterpret_cast(context->getProcAddress("glTexBumpParameterfvATI")); + d->TexBumpParameterivATI = reinterpret_cast(context->getProcAddress("glTexBumpParameterivATI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ATI_fragment_shader::QOpenGLExtension_ATI_fragment_shader() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ATI_fragment_shaderPrivate)) +{ +} + +bool QOpenGLExtension_ATI_fragment_shader::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ATI_fragment_shader); + + d->SetFragmentShaderConstantATI = reinterpret_cast(context->getProcAddress("glSetFragmentShaderConstantATI")); + d->AlphaFragmentOp3ATI = reinterpret_cast(context->getProcAddress("glAlphaFragmentOp3ATI")); + d->AlphaFragmentOp2ATI = reinterpret_cast(context->getProcAddress("glAlphaFragmentOp2ATI")); + d->AlphaFragmentOp1ATI = reinterpret_cast(context->getProcAddress("glAlphaFragmentOp1ATI")); + d->ColorFragmentOp3ATI = reinterpret_cast(context->getProcAddress("glColorFragmentOp3ATI")); + d->ColorFragmentOp2ATI = reinterpret_cast(context->getProcAddress("glColorFragmentOp2ATI")); + d->ColorFragmentOp1ATI = reinterpret_cast(context->getProcAddress("glColorFragmentOp1ATI")); + d->SampleMapATI = reinterpret_cast(context->getProcAddress("glSampleMapATI")); + d->PassTexCoordATI = reinterpret_cast(context->getProcAddress("glPassTexCoordATI")); + d->EndFragmentShaderATI = reinterpret_cast(context->getProcAddress("glEndFragmentShaderATI")); + d->BeginFragmentShaderATI = reinterpret_cast(context->getProcAddress("glBeginFragmentShaderATI")); + d->DeleteFragmentShaderATI = reinterpret_cast(context->getProcAddress("glDeleteFragmentShaderATI")); + d->BindFragmentShaderATI = reinterpret_cast(context->getProcAddress("glBindFragmentShaderATI")); + d->GenFragmentShadersATI = reinterpret_cast(context->getProcAddress("glGenFragmentShadersATI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ATI_map_object_buffer::QOpenGLExtension_ATI_map_object_buffer() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ATI_map_object_bufferPrivate)) +{ +} + +bool QOpenGLExtension_ATI_map_object_buffer::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ATI_map_object_buffer); + + d->UnmapObjectBufferATI = reinterpret_cast(context->getProcAddress("glUnmapObjectBufferATI")); + d->MapObjectBufferATI = reinterpret_cast(context->getProcAddress("glMapObjectBufferATI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ATI_pn_triangles::QOpenGLExtension_ATI_pn_triangles() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ATI_pn_trianglesPrivate)) +{ +} + +bool QOpenGLExtension_ATI_pn_triangles::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ATI_pn_triangles); + + d->PNTrianglesfATI = reinterpret_cast(context->getProcAddress("glPNTrianglesfATI")); + d->PNTrianglesiATI = reinterpret_cast(context->getProcAddress("glPNTrianglesiATI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ATI_separate_stencil::QOpenGLExtension_ATI_separate_stencil() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ATI_separate_stencilPrivate)) +{ +} + +bool QOpenGLExtension_ATI_separate_stencil::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ATI_separate_stencil); + + d->StencilFuncSeparateATI = reinterpret_cast(context->getProcAddress("glStencilFuncSeparateATI")); + d->StencilOpSeparateATI = reinterpret_cast(context->getProcAddress("glStencilOpSeparateATI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ATI_vertex_array_object::QOpenGLExtension_ATI_vertex_array_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ATI_vertex_array_objectPrivate)) +{ +} + +bool QOpenGLExtension_ATI_vertex_array_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ATI_vertex_array_object); + + d->GetVariantArrayObjectivATI = reinterpret_cast(context->getProcAddress("glGetVariantArrayObjectivATI")); + d->GetVariantArrayObjectfvATI = reinterpret_cast(context->getProcAddress("glGetVariantArrayObjectfvATI")); + d->VariantArrayObjectATI = reinterpret_cast(context->getProcAddress("glVariantArrayObjectATI")); + d->GetArrayObjectivATI = reinterpret_cast(context->getProcAddress("glGetArrayObjectivATI")); + d->GetArrayObjectfvATI = reinterpret_cast(context->getProcAddress("glGetArrayObjectfvATI")); + d->ArrayObjectATI = reinterpret_cast(context->getProcAddress("glArrayObjectATI")); + d->FreeObjectBufferATI = reinterpret_cast(context->getProcAddress("glFreeObjectBufferATI")); + d->GetObjectBufferivATI = reinterpret_cast(context->getProcAddress("glGetObjectBufferivATI")); + d->GetObjectBufferfvATI = reinterpret_cast(context->getProcAddress("glGetObjectBufferfvATI")); + d->UpdateObjectBufferATI = reinterpret_cast(context->getProcAddress("glUpdateObjectBufferATI")); + d->IsObjectBufferATI = reinterpret_cast(context->getProcAddress("glIsObjectBufferATI")); + d->NewObjectBufferATI = reinterpret_cast(context->getProcAddress("glNewObjectBufferATI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ATI_vertex_attrib_array_object::QOpenGLExtension_ATI_vertex_attrib_array_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ATI_vertex_attrib_array_objectPrivate)) +{ +} + +bool QOpenGLExtension_ATI_vertex_attrib_array_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ATI_vertex_attrib_array_object); + + d->GetVertexAttribArrayObjectivATI = reinterpret_cast(context->getProcAddress("glGetVertexAttribArrayObjectivATI")); + d->GetVertexAttribArrayObjectfvATI = reinterpret_cast(context->getProcAddress("glGetVertexAttribArrayObjectfvATI")); + d->VertexAttribArrayObjectATI = reinterpret_cast(context->getProcAddress("glVertexAttribArrayObjectATI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_ATI_vertex_streams::QOpenGLExtension_ATI_vertex_streams() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ATI_vertex_streamsPrivate)) +{ +} + +bool QOpenGLExtension_ATI_vertex_streams::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ATI_vertex_streams); + + d->VertexBlendEnvfATI = reinterpret_cast(context->getProcAddress("glVertexBlendEnvfATI")); + d->VertexBlendEnviATI = reinterpret_cast(context->getProcAddress("glVertexBlendEnviATI")); + d->ClientActiveVertexStreamATI = reinterpret_cast(context->getProcAddress("glClientActiveVertexStreamATI")); + d->NormalStream3dvATI = reinterpret_cast(context->getProcAddress("glNormalStream3dvATI")); + d->NormalStream3dATI = reinterpret_cast(context->getProcAddress("glNormalStream3dATI")); + d->NormalStream3fvATI = reinterpret_cast(context->getProcAddress("glNormalStream3fvATI")); + d->NormalStream3fATI = reinterpret_cast(context->getProcAddress("glNormalStream3fATI")); + d->NormalStream3ivATI = reinterpret_cast(context->getProcAddress("glNormalStream3ivATI")); + d->NormalStream3iATI = reinterpret_cast(context->getProcAddress("glNormalStream3iATI")); + d->NormalStream3svATI = reinterpret_cast(context->getProcAddress("glNormalStream3svATI")); + d->NormalStream3sATI = reinterpret_cast(context->getProcAddress("glNormalStream3sATI")); + d->NormalStream3bvATI = reinterpret_cast(context->getProcAddress("glNormalStream3bvATI")); + d->NormalStream3bATI = reinterpret_cast(context->getProcAddress("glNormalStream3bATI")); + d->VertexStream4dvATI = reinterpret_cast(context->getProcAddress("glVertexStream4dvATI")); + d->VertexStream4dATI = reinterpret_cast(context->getProcAddress("glVertexStream4dATI")); + d->VertexStream4fvATI = reinterpret_cast(context->getProcAddress("glVertexStream4fvATI")); + d->VertexStream4fATI = reinterpret_cast(context->getProcAddress("glVertexStream4fATI")); + d->VertexStream4ivATI = reinterpret_cast(context->getProcAddress("glVertexStream4ivATI")); + d->VertexStream4iATI = reinterpret_cast(context->getProcAddress("glVertexStream4iATI")); + d->VertexStream4svATI = reinterpret_cast(context->getProcAddress("glVertexStream4svATI")); + d->VertexStream4sATI = reinterpret_cast(context->getProcAddress("glVertexStream4sATI")); + d->VertexStream3dvATI = reinterpret_cast(context->getProcAddress("glVertexStream3dvATI")); + d->VertexStream3dATI = reinterpret_cast(context->getProcAddress("glVertexStream3dATI")); + d->VertexStream3fvATI = reinterpret_cast(context->getProcAddress("glVertexStream3fvATI")); + d->VertexStream3fATI = reinterpret_cast(context->getProcAddress("glVertexStream3fATI")); + d->VertexStream3ivATI = reinterpret_cast(context->getProcAddress("glVertexStream3ivATI")); + d->VertexStream3iATI = reinterpret_cast(context->getProcAddress("glVertexStream3iATI")); + d->VertexStream3svATI = reinterpret_cast(context->getProcAddress("glVertexStream3svATI")); + d->VertexStream3sATI = reinterpret_cast(context->getProcAddress("glVertexStream3sATI")); + d->VertexStream2dvATI = reinterpret_cast(context->getProcAddress("glVertexStream2dvATI")); + d->VertexStream2dATI = reinterpret_cast(context->getProcAddress("glVertexStream2dATI")); + d->VertexStream2fvATI = reinterpret_cast(context->getProcAddress("glVertexStream2fvATI")); + d->VertexStream2fATI = reinterpret_cast(context->getProcAddress("glVertexStream2fATI")); + d->VertexStream2ivATI = reinterpret_cast(context->getProcAddress("glVertexStream2ivATI")); + d->VertexStream2iATI = reinterpret_cast(context->getProcAddress("glVertexStream2iATI")); + d->VertexStream2svATI = reinterpret_cast(context->getProcAddress("glVertexStream2svATI")); + d->VertexStream2sATI = reinterpret_cast(context->getProcAddress("glVertexStream2sATI")); + d->VertexStream1dvATI = reinterpret_cast(context->getProcAddress("glVertexStream1dvATI")); + d->VertexStream1dATI = reinterpret_cast(context->getProcAddress("glVertexStream1dATI")); + d->VertexStream1fvATI = reinterpret_cast(context->getProcAddress("glVertexStream1fvATI")); + d->VertexStream1fATI = reinterpret_cast(context->getProcAddress("glVertexStream1fATI")); + d->VertexStream1ivATI = reinterpret_cast(context->getProcAddress("glVertexStream1ivATI")); + d->VertexStream1iATI = reinterpret_cast(context->getProcAddress("glVertexStream1iATI")); + d->VertexStream1svATI = reinterpret_cast(context->getProcAddress("glVertexStream1svATI")); + d->VertexStream1sATI = reinterpret_cast(context->getProcAddress("glVertexStream1sATI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_bindable_uniform::QOpenGLExtension_EXT_bindable_uniform() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_bindable_uniformPrivate)) +{ +} + +bool QOpenGLExtension_EXT_bindable_uniform::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_bindable_uniform); + + d->GetUniformOffsetEXT = reinterpret_cast(context->getProcAddress("glGetUniformOffsetEXT")); + d->GetUniformBufferSizeEXT = reinterpret_cast(context->getProcAddress("glGetUniformBufferSizeEXT")); + d->UniformBufferEXT = reinterpret_cast(context->getProcAddress("glUniformBufferEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_blend_color::QOpenGLExtension_EXT_blend_color() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_blend_colorPrivate)) +{ +} + +bool QOpenGLExtension_EXT_blend_color::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_blend_color); + + d->BlendColorEXT = reinterpret_cast(context->getProcAddress("glBlendColorEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_blend_equation_separate::QOpenGLExtension_EXT_blend_equation_separate() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_blend_equation_separatePrivate)) +{ +} + +bool QOpenGLExtension_EXT_blend_equation_separate::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_blend_equation_separate); + + d->BlendEquationSeparateEXT = reinterpret_cast(context->getProcAddress("glBlendEquationSeparateEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_blend_func_separate::QOpenGLExtension_EXT_blend_func_separate() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_blend_func_separatePrivate)) +{ +} + +bool QOpenGLExtension_EXT_blend_func_separate::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_blend_func_separate); + + d->BlendFuncSeparateEXT = reinterpret_cast(context->getProcAddress("glBlendFuncSeparateEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_blend_minmax::QOpenGLExtension_EXT_blend_minmax() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_blend_minmaxPrivate)) +{ +} + +bool QOpenGLExtension_EXT_blend_minmax::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_blend_minmax); + + d->BlendEquationEXT = reinterpret_cast(context->getProcAddress("glBlendEquationEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_color_subtable::QOpenGLExtension_EXT_color_subtable() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_color_subtablePrivate)) +{ +} + +bool QOpenGLExtension_EXT_color_subtable::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_color_subtable); + + d->CopyColorSubTableEXT = reinterpret_cast(context->getProcAddress("glCopyColorSubTableEXT")); + d->ColorSubTableEXT = reinterpret_cast(context->getProcAddress("glColorSubTableEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_compiled_vertex_array::QOpenGLExtension_EXT_compiled_vertex_array() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_compiled_vertex_arrayPrivate)) +{ +} + +bool QOpenGLExtension_EXT_compiled_vertex_array::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_compiled_vertex_array); + + d->UnlockArraysEXT = reinterpret_cast(context->getProcAddress("glUnlockArraysEXT")); + d->LockArraysEXT = reinterpret_cast(context->getProcAddress("glLockArraysEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_convolution::QOpenGLExtension_EXT_convolution() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_convolutionPrivate)) +{ +} + +bool QOpenGLExtension_EXT_convolution::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_convolution); + + d->SeparableFilter2DEXT = reinterpret_cast(context->getProcAddress("glSeparableFilter2DEXT")); + d->GetSeparableFilterEXT = reinterpret_cast(context->getProcAddress("glGetSeparableFilterEXT")); + d->GetConvolutionParameterivEXT = reinterpret_cast(context->getProcAddress("glGetConvolutionParameterivEXT")); + d->GetConvolutionParameterfvEXT = reinterpret_cast(context->getProcAddress("glGetConvolutionParameterfvEXT")); + d->GetConvolutionFilterEXT = reinterpret_cast(context->getProcAddress("glGetConvolutionFilterEXT")); + d->CopyConvolutionFilter2DEXT = reinterpret_cast(context->getProcAddress("glCopyConvolutionFilter2DEXT")); + d->CopyConvolutionFilter1DEXT = reinterpret_cast(context->getProcAddress("glCopyConvolutionFilter1DEXT")); + d->ConvolutionParameterivEXT = reinterpret_cast(context->getProcAddress("glConvolutionParameterivEXT")); + d->ConvolutionParameteriEXT = reinterpret_cast(context->getProcAddress("glConvolutionParameteriEXT")); + d->ConvolutionParameterfvEXT = reinterpret_cast(context->getProcAddress("glConvolutionParameterfvEXT")); + d->ConvolutionParameterfEXT = reinterpret_cast(context->getProcAddress("glConvolutionParameterfEXT")); + d->ConvolutionFilter2DEXT = reinterpret_cast(context->getProcAddress("glConvolutionFilter2DEXT")); + d->ConvolutionFilter1DEXT = reinterpret_cast(context->getProcAddress("glConvolutionFilter1DEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_coordinate_frame::QOpenGLExtension_EXT_coordinate_frame() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_coordinate_framePrivate)) +{ +} + +bool QOpenGLExtension_EXT_coordinate_frame::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_coordinate_frame); + + d->BinormalPointerEXT = reinterpret_cast(context->getProcAddress("glBinormalPointerEXT")); + d->TangentPointerEXT = reinterpret_cast(context->getProcAddress("glTangentPointerEXT")); + d->Binormal3svEXT = reinterpret_cast(context->getProcAddress("glBinormal3svEXT")); + d->Binormal3sEXT = reinterpret_cast(context->getProcAddress("glBinormal3sEXT")); + d->Binormal3ivEXT = reinterpret_cast(context->getProcAddress("glBinormal3ivEXT")); + d->Binormal3iEXT = reinterpret_cast(context->getProcAddress("glBinormal3iEXT")); + d->Binormal3fvEXT = reinterpret_cast(context->getProcAddress("glBinormal3fvEXT")); + d->Binormal3fEXT = reinterpret_cast(context->getProcAddress("glBinormal3fEXT")); + d->Binormal3dvEXT = reinterpret_cast(context->getProcAddress("glBinormal3dvEXT")); + d->Binormal3dEXT = reinterpret_cast(context->getProcAddress("glBinormal3dEXT")); + d->Binormal3bvEXT = reinterpret_cast(context->getProcAddress("glBinormal3bvEXT")); + d->Binormal3bEXT = reinterpret_cast(context->getProcAddress("glBinormal3bEXT")); + d->Tangent3svEXT = reinterpret_cast(context->getProcAddress("glTangent3svEXT")); + d->Tangent3sEXT = reinterpret_cast(context->getProcAddress("glTangent3sEXT")); + d->Tangent3ivEXT = reinterpret_cast(context->getProcAddress("glTangent3ivEXT")); + d->Tangent3iEXT = reinterpret_cast(context->getProcAddress("glTangent3iEXT")); + d->Tangent3fvEXT = reinterpret_cast(context->getProcAddress("glTangent3fvEXT")); + d->Tangent3fEXT = reinterpret_cast(context->getProcAddress("glTangent3fEXT")); + d->Tangent3dvEXT = reinterpret_cast(context->getProcAddress("glTangent3dvEXT")); + d->Tangent3dEXT = reinterpret_cast(context->getProcAddress("glTangent3dEXT")); + d->Tangent3bvEXT = reinterpret_cast(context->getProcAddress("glTangent3bvEXT")); + d->Tangent3bEXT = reinterpret_cast(context->getProcAddress("glTangent3bEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_copy_texture::QOpenGLExtension_EXT_copy_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_copy_texturePrivate)) +{ +} + +bool QOpenGLExtension_EXT_copy_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_copy_texture); + + d->CopyTexSubImage3DEXT = reinterpret_cast(context->getProcAddress("glCopyTexSubImage3DEXT")); + d->CopyTexSubImage2DEXT = reinterpret_cast(context->getProcAddress("glCopyTexSubImage2DEXT")); + d->CopyTexSubImage1DEXT = reinterpret_cast(context->getProcAddress("glCopyTexSubImage1DEXT")); + d->CopyTexImage2DEXT = reinterpret_cast(context->getProcAddress("glCopyTexImage2DEXT")); + d->CopyTexImage1DEXT = reinterpret_cast(context->getProcAddress("glCopyTexImage1DEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_cull_vertex::QOpenGLExtension_EXT_cull_vertex() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_cull_vertexPrivate)) +{ +} + +bool QOpenGLExtension_EXT_cull_vertex::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_cull_vertex); + + d->CullParameterfvEXT = reinterpret_cast(context->getProcAddress("glCullParameterfvEXT")); + d->CullParameterdvEXT = reinterpret_cast(context->getProcAddress("glCullParameterdvEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_depth_bounds_test::QOpenGLExtension_EXT_depth_bounds_test() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_depth_bounds_testPrivate)) +{ +} + +bool QOpenGLExtension_EXT_depth_bounds_test::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_depth_bounds_test); + + d->DepthBoundsEXT = reinterpret_cast(context->getProcAddress("glDepthBoundsEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_direct_state_access::QOpenGLExtension_EXT_direct_state_access() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_direct_state_accessPrivate)) +{ +} + +bool QOpenGLExtension_EXT_direct_state_access::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_direct_state_access); + + d->ProgramUniformMatrix4x3dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x3dvEXT")); + d->ProgramUniformMatrix4x2dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x2dvEXT")); + d->ProgramUniformMatrix3x4dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x4dvEXT")); + d->ProgramUniformMatrix3x2dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x2dvEXT")); + d->ProgramUniformMatrix2x4dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x4dvEXT")); + d->ProgramUniformMatrix2x3dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x3dvEXT")); + d->ProgramUniformMatrix4dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4dvEXT")); + d->ProgramUniformMatrix3dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3dvEXT")); + d->ProgramUniformMatrix2dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2dvEXT")); + d->ProgramUniform4dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniform4dvEXT")); + d->ProgramUniform3dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniform3dvEXT")); + d->ProgramUniform2dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniform2dvEXT")); + d->ProgramUniform1dvEXT = reinterpret_cast(context->getProcAddress("glProgramUniform1dvEXT")); + d->ProgramUniform4dEXT = reinterpret_cast(context->getProcAddress("glProgramUniform4dEXT")); + d->ProgramUniform3dEXT = reinterpret_cast(context->getProcAddress("glProgramUniform3dEXT")); + d->ProgramUniform2dEXT = reinterpret_cast(context->getProcAddress("glProgramUniform2dEXT")); + d->ProgramUniform1dEXT = reinterpret_cast(context->getProcAddress("glProgramUniform1dEXT")); + d->MultiTexRenderbufferEXT = reinterpret_cast(context->getProcAddress("glMultiTexRenderbufferEXT")); + d->TextureRenderbufferEXT = reinterpret_cast(context->getProcAddress("glTextureRenderbufferEXT")); + d->NamedFramebufferTextureFaceEXT = reinterpret_cast(context->getProcAddress("glNamedFramebufferTextureFaceEXT")); + d->NamedFramebufferTextureLayerEXT = reinterpret_cast(context->getProcAddress("glNamedFramebufferTextureLayerEXT")); + d->NamedFramebufferTextureEXT = reinterpret_cast(context->getProcAddress("glNamedFramebufferTextureEXT")); + d->NamedRenderbufferStorageMultisampleCoverageEXT = reinterpret_cast(context->getProcAddress("glNamedRenderbufferStorageMultisampleCoverageEXT")); + d->NamedRenderbufferStorageMultisampleEXT = reinterpret_cast(context->getProcAddress("glNamedRenderbufferStorageMultisampleEXT")); + d->GetFramebufferParameterivEXT = reinterpret_cast(context->getProcAddress("glGetFramebufferParameterivEXT")); + d->FramebufferReadBufferEXT = reinterpret_cast(context->getProcAddress("glFramebufferReadBufferEXT")); + d->FramebufferDrawBuffersEXT = reinterpret_cast(context->getProcAddress("glFramebufferDrawBuffersEXT")); + d->FramebufferDrawBufferEXT = reinterpret_cast(context->getProcAddress("glFramebufferDrawBufferEXT")); + d->GenerateMultiTexMipmapEXT = reinterpret_cast(context->getProcAddress("glGenerateMultiTexMipmapEXT")); + d->GenerateTextureMipmapEXT = reinterpret_cast(context->getProcAddress("glGenerateTextureMipmapEXT")); + d->GetNamedFramebufferAttachmentParameterivEXT = reinterpret_cast(context->getProcAddress("glGetNamedFramebufferAttachmentParameterivEXT")); + d->NamedFramebufferRenderbufferEXT = reinterpret_cast(context->getProcAddress("glNamedFramebufferRenderbufferEXT")); + d->NamedFramebufferTexture3DEXT = reinterpret_cast(context->getProcAddress("glNamedFramebufferTexture3DEXT")); + d->NamedFramebufferTexture2DEXT = reinterpret_cast(context->getProcAddress("glNamedFramebufferTexture2DEXT")); + d->NamedFramebufferTexture1DEXT = reinterpret_cast(context->getProcAddress("glNamedFramebufferTexture1DEXT")); + d->CheckNamedFramebufferStatusEXT = reinterpret_cast(context->getProcAddress("glCheckNamedFramebufferStatusEXT")); + d->GetNamedRenderbufferParameterivEXT = reinterpret_cast(context->getProcAddress("glGetNamedRenderbufferParameterivEXT")); + d->NamedRenderbufferStorageEXT = reinterpret_cast(context->getProcAddress("glNamedRenderbufferStorageEXT")); + d->MultiTexBufferEXT = reinterpret_cast(context->getProcAddress("glMultiTexBufferEXT")); + d->TextureBufferEXT = reinterpret_cast(context->getProcAddress("glTextureBufferEXT")); + d->GetNamedBufferSubDataEXT = reinterpret_cast(context->getProcAddress("glGetNamedBufferSubDataEXT")); + d->GetNamedBufferPointervEXT = reinterpret_cast(context->getProcAddress("glGetNamedBufferPointervEXT")); + d->GetNamedBufferParameterivEXT = reinterpret_cast(context->getProcAddress("glGetNamedBufferParameterivEXT")); + d->NamedCopyBufferSubDataEXT = reinterpret_cast(context->getProcAddress("glNamedCopyBufferSubDataEXT")); + d->FlushMappedNamedBufferRangeEXT = reinterpret_cast(context->getProcAddress("glFlushMappedNamedBufferRangeEXT")); + d->MapNamedBufferRangeEXT = reinterpret_cast(context->getProcAddress("glMapNamedBufferRangeEXT")); + d->UnmapNamedBufferEXT = reinterpret_cast(context->getProcAddress("glUnmapNamedBufferEXT")); + d->MapNamedBufferEXT = reinterpret_cast(context->getProcAddress("glMapNamedBufferEXT")); + d->NamedBufferSubDataEXT = reinterpret_cast(context->getProcAddress("glNamedBufferSubDataEXT")); + d->NamedBufferDataEXT = reinterpret_cast(context->getProcAddress("glNamedBufferDataEXT")); + d->ProgramUniform4uivEXT = reinterpret_cast(context->getProcAddress("glProgramUniform4uivEXT")); + d->ProgramUniform3uivEXT = reinterpret_cast(context->getProcAddress("glProgramUniform3uivEXT")); + d->ProgramUniform2uivEXT = reinterpret_cast(context->getProcAddress("glProgramUniform2uivEXT")); + d->ProgramUniform1uivEXT = reinterpret_cast(context->getProcAddress("glProgramUniform1uivEXT")); + d->ProgramUniform4uiEXT = reinterpret_cast(context->getProcAddress("glProgramUniform4uiEXT")); + d->ProgramUniform3uiEXT = reinterpret_cast(context->getProcAddress("glProgramUniform3uiEXT")); + d->ProgramUniform2uiEXT = reinterpret_cast(context->getProcAddress("glProgramUniform2uiEXT")); + d->ProgramUniform1uiEXT = reinterpret_cast(context->getProcAddress("glProgramUniform1uiEXT")); + d->ProgramUniformMatrix4x3fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x3fvEXT")); + d->ProgramUniformMatrix3x4fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x4fvEXT")); + d->ProgramUniformMatrix4x2fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4x2fvEXT")); + d->ProgramUniformMatrix2x4fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x4fvEXT")); + d->ProgramUniformMatrix3x2fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3x2fvEXT")); + d->ProgramUniformMatrix2x3fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2x3fvEXT")); + d->ProgramUniformMatrix4fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix4fvEXT")); + d->ProgramUniformMatrix3fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix3fvEXT")); + d->ProgramUniformMatrix2fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniformMatrix2fvEXT")); + d->ProgramUniform4ivEXT = reinterpret_cast(context->getProcAddress("glProgramUniform4ivEXT")); + d->ProgramUniform3ivEXT = reinterpret_cast(context->getProcAddress("glProgramUniform3ivEXT")); + d->ProgramUniform2ivEXT = reinterpret_cast(context->getProcAddress("glProgramUniform2ivEXT")); + d->ProgramUniform1ivEXT = reinterpret_cast(context->getProcAddress("glProgramUniform1ivEXT")); + d->ProgramUniform4fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniform4fvEXT")); + d->ProgramUniform3fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniform3fvEXT")); + d->ProgramUniform2fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniform2fvEXT")); + d->ProgramUniform1fvEXT = reinterpret_cast(context->getProcAddress("glProgramUniform1fvEXT")); + d->ProgramUniform4iEXT = reinterpret_cast(context->getProcAddress("glProgramUniform4iEXT")); + d->ProgramUniform3iEXT = reinterpret_cast(context->getProcAddress("glProgramUniform3iEXT")); + d->ProgramUniform2iEXT = reinterpret_cast(context->getProcAddress("glProgramUniform2iEXT")); + d->ProgramUniform1iEXT = reinterpret_cast(context->getProcAddress("glProgramUniform1iEXT")); + d->ProgramUniform4fEXT = reinterpret_cast(context->getProcAddress("glProgramUniform4fEXT")); + d->ProgramUniform3fEXT = reinterpret_cast(context->getProcAddress("glProgramUniform3fEXT")); + d->ProgramUniform2fEXT = reinterpret_cast(context->getProcAddress("glProgramUniform2fEXT")); + d->ProgramUniform1fEXT = reinterpret_cast(context->getProcAddress("glProgramUniform1fEXT")); + d->GetMultiTexParameterIuivEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexParameterIuivEXT")); + d->GetMultiTexParameterIivEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexParameterIivEXT")); + d->MultiTexParameterIuivEXT = reinterpret_cast(context->getProcAddress("glMultiTexParameterIuivEXT")); + d->MultiTexParameterIivEXT = reinterpret_cast(context->getProcAddress("glMultiTexParameterIivEXT")); + d->GetTextureParameterIuivEXT = reinterpret_cast(context->getProcAddress("glGetTextureParameterIuivEXT")); + d->GetTextureParameterIivEXT = reinterpret_cast(context->getProcAddress("glGetTextureParameterIivEXT")); + d->TextureParameterIuivEXT = reinterpret_cast(context->getProcAddress("glTextureParameterIuivEXT")); + d->TextureParameterIivEXT = reinterpret_cast(context->getProcAddress("glTextureParameterIivEXT")); + d->GetNamedProgramLocalParameterIuivEXT = reinterpret_cast(context->getProcAddress("glGetNamedProgramLocalParameterIuivEXT")); + d->GetNamedProgramLocalParameterIivEXT = reinterpret_cast(context->getProcAddress("glGetNamedProgramLocalParameterIivEXT")); + d->NamedProgramLocalParametersI4uivEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParametersI4uivEXT")); + d->NamedProgramLocalParameterI4uivEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParameterI4uivEXT")); + d->NamedProgramLocalParameterI4uiEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParameterI4uiEXT")); + d->NamedProgramLocalParametersI4ivEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParametersI4ivEXT")); + d->NamedProgramLocalParameterI4ivEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParameterI4ivEXT")); + d->NamedProgramLocalParameterI4iEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParameterI4iEXT")); + d->NamedProgramLocalParameters4fvEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParameters4fvEXT")); + d->GetNamedProgramStringEXT = reinterpret_cast(context->getProcAddress("glGetNamedProgramStringEXT")); + d->GetNamedProgramivEXT = reinterpret_cast(context->getProcAddress("glGetNamedProgramivEXT")); + d->GetNamedProgramLocalParameterfvEXT = reinterpret_cast(context->getProcAddress("glGetNamedProgramLocalParameterfvEXT")); + d->GetNamedProgramLocalParameterdvEXT = reinterpret_cast(context->getProcAddress("glGetNamedProgramLocalParameterdvEXT")); + d->NamedProgramLocalParameter4fvEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParameter4fvEXT")); + d->NamedProgramLocalParameter4fEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParameter4fEXT")); + d->NamedProgramLocalParameter4dvEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParameter4dvEXT")); + d->NamedProgramLocalParameter4dEXT = reinterpret_cast(context->getProcAddress("glNamedProgramLocalParameter4dEXT")); + d->NamedProgramStringEXT = reinterpret_cast(context->getProcAddress("glNamedProgramStringEXT")); + d->GetCompressedMultiTexImageEXT = reinterpret_cast(context->getProcAddress("glGetCompressedMultiTexImageEXT")); + d->CompressedMultiTexSubImage1DEXT = reinterpret_cast(context->getProcAddress("glCompressedMultiTexSubImage1DEXT")); + d->CompressedMultiTexSubImage2DEXT = reinterpret_cast(context->getProcAddress("glCompressedMultiTexSubImage2DEXT")); + d->CompressedMultiTexSubImage3DEXT = reinterpret_cast(context->getProcAddress("glCompressedMultiTexSubImage3DEXT")); + d->CompressedMultiTexImage1DEXT = reinterpret_cast(context->getProcAddress("glCompressedMultiTexImage1DEXT")); + d->CompressedMultiTexImage2DEXT = reinterpret_cast(context->getProcAddress("glCompressedMultiTexImage2DEXT")); + d->CompressedMultiTexImage3DEXT = reinterpret_cast(context->getProcAddress("glCompressedMultiTexImage3DEXT")); + d->GetCompressedTextureImageEXT = reinterpret_cast(context->getProcAddress("glGetCompressedTextureImageEXT")); + d->CompressedTextureSubImage1DEXT = reinterpret_cast(context->getProcAddress("glCompressedTextureSubImage1DEXT")); + d->CompressedTextureSubImage2DEXT = reinterpret_cast(context->getProcAddress("glCompressedTextureSubImage2DEXT")); + d->CompressedTextureSubImage3DEXT = reinterpret_cast(context->getProcAddress("glCompressedTextureSubImage3DEXT")); + d->CompressedTextureImage1DEXT = reinterpret_cast(context->getProcAddress("glCompressedTextureImage1DEXT")); + d->CompressedTextureImage2DEXT = reinterpret_cast(context->getProcAddress("glCompressedTextureImage2DEXT")); + d->CompressedTextureImage3DEXT = reinterpret_cast(context->getProcAddress("glCompressedTextureImage3DEXT")); + d->GetPointerIndexedvEXT = reinterpret_cast(context->getProcAddress("glGetPointerIndexedvEXT")); + d->GetDoubleIndexedvEXT = reinterpret_cast(context->getProcAddress("glGetDoubleIndexedvEXT")); + d->GetFloatIndexedvEXT = reinterpret_cast(context->getProcAddress("glGetFloatIndexedvEXT")); + d->GetMultiTexGenivEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexGenivEXT")); + d->GetMultiTexGenfvEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexGenfvEXT")); + d->GetMultiTexGendvEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexGendvEXT")); + d->GetMultiTexEnvivEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexEnvivEXT")); + d->GetMultiTexEnvfvEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexEnvfvEXT")); + d->MultiTexGenivEXT = reinterpret_cast(context->getProcAddress("glMultiTexGenivEXT")); + d->MultiTexGeniEXT = reinterpret_cast(context->getProcAddress("glMultiTexGeniEXT")); + d->MultiTexGenfvEXT = reinterpret_cast(context->getProcAddress("glMultiTexGenfvEXT")); + d->MultiTexGenfEXT = reinterpret_cast(context->getProcAddress("glMultiTexGenfEXT")); + d->MultiTexGendvEXT = reinterpret_cast(context->getProcAddress("glMultiTexGendvEXT")); + d->MultiTexGendEXT = reinterpret_cast(context->getProcAddress("glMultiTexGendEXT")); + d->MultiTexEnvivEXT = reinterpret_cast(context->getProcAddress("glMultiTexEnvivEXT")); + d->MultiTexEnviEXT = reinterpret_cast(context->getProcAddress("glMultiTexEnviEXT")); + d->MultiTexEnvfvEXT = reinterpret_cast(context->getProcAddress("glMultiTexEnvfvEXT")); + d->MultiTexEnvfEXT = reinterpret_cast(context->getProcAddress("glMultiTexEnvfEXT")); + d->MultiTexCoordPointerEXT = reinterpret_cast(context->getProcAddress("glMultiTexCoordPointerEXT")); + d->DisableClientStateIndexedEXT = reinterpret_cast(context->getProcAddress("glDisableClientStateIndexedEXT")); + d->EnableClientStateIndexedEXT = reinterpret_cast(context->getProcAddress("glEnableClientStateIndexedEXT")); + d->BindMultiTextureEXT = reinterpret_cast(context->getProcAddress("glBindMultiTextureEXT")); + d->CopyMultiTexSubImage3DEXT = reinterpret_cast(context->getProcAddress("glCopyMultiTexSubImage3DEXT")); + d->MultiTexSubImage3DEXT = reinterpret_cast(context->getProcAddress("glMultiTexSubImage3DEXT")); + d->MultiTexImage3DEXT = reinterpret_cast(context->getProcAddress("glMultiTexImage3DEXT")); + d->GetMultiTexLevelParameterivEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexLevelParameterivEXT")); + d->GetMultiTexLevelParameterfvEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexLevelParameterfvEXT")); + d->GetMultiTexParameterivEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexParameterivEXT")); + d->GetMultiTexParameterfvEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexParameterfvEXT")); + d->GetMultiTexImageEXT = reinterpret_cast(context->getProcAddress("glGetMultiTexImageEXT")); + d->CopyMultiTexSubImage2DEXT = reinterpret_cast(context->getProcAddress("glCopyMultiTexSubImage2DEXT")); + d->CopyMultiTexSubImage1DEXT = reinterpret_cast(context->getProcAddress("glCopyMultiTexSubImage1DEXT")); + d->CopyMultiTexImage2DEXT = reinterpret_cast(context->getProcAddress("glCopyMultiTexImage2DEXT")); + d->CopyMultiTexImage1DEXT = reinterpret_cast(context->getProcAddress("glCopyMultiTexImage1DEXT")); + d->MultiTexSubImage2DEXT = reinterpret_cast(context->getProcAddress("glMultiTexSubImage2DEXT")); + d->MultiTexSubImage1DEXT = reinterpret_cast(context->getProcAddress("glMultiTexSubImage1DEXT")); + d->MultiTexImage2DEXT = reinterpret_cast(context->getProcAddress("glMultiTexImage2DEXT")); + d->MultiTexImage1DEXT = reinterpret_cast(context->getProcAddress("glMultiTexImage1DEXT")); + d->MultiTexParameterivEXT = reinterpret_cast(context->getProcAddress("glMultiTexParameterivEXT")); + d->MultiTexParameteriEXT = reinterpret_cast(context->getProcAddress("glMultiTexParameteriEXT")); + d->MultiTexParameterfvEXT = reinterpret_cast(context->getProcAddress("glMultiTexParameterfvEXT")); + d->MultiTexParameterfEXT = reinterpret_cast(context->getProcAddress("glMultiTexParameterfEXT")); + d->CopyTextureSubImage3DEXT = reinterpret_cast(context->getProcAddress("glCopyTextureSubImage3DEXT")); + d->TextureSubImage3DEXT = reinterpret_cast(context->getProcAddress("glTextureSubImage3DEXT")); + d->TextureImage3DEXT = reinterpret_cast(context->getProcAddress("glTextureImage3DEXT")); + d->GetTextureLevelParameterivEXT = reinterpret_cast(context->getProcAddress("glGetTextureLevelParameterivEXT")); + d->GetTextureLevelParameterfvEXT = reinterpret_cast(context->getProcAddress("glGetTextureLevelParameterfvEXT")); + d->GetTextureParameterivEXT = reinterpret_cast(context->getProcAddress("glGetTextureParameterivEXT")); + d->GetTextureParameterfvEXT = reinterpret_cast(context->getProcAddress("glGetTextureParameterfvEXT")); + d->GetTextureImageEXT = reinterpret_cast(context->getProcAddress("glGetTextureImageEXT")); + d->CopyTextureSubImage2DEXT = reinterpret_cast(context->getProcAddress("glCopyTextureSubImage2DEXT")); + d->CopyTextureSubImage1DEXT = reinterpret_cast(context->getProcAddress("glCopyTextureSubImage1DEXT")); + d->CopyTextureImage2DEXT = reinterpret_cast(context->getProcAddress("glCopyTextureImage2DEXT")); + d->CopyTextureImage1DEXT = reinterpret_cast(context->getProcAddress("glCopyTextureImage1DEXT")); + d->TextureSubImage2DEXT = reinterpret_cast(context->getProcAddress("glTextureSubImage2DEXT")); + d->TextureSubImage1DEXT = reinterpret_cast(context->getProcAddress("glTextureSubImage1DEXT")); + d->TextureImage2DEXT = reinterpret_cast(context->getProcAddress("glTextureImage2DEXT")); + d->TextureImage1DEXT = reinterpret_cast(context->getProcAddress("glTextureImage1DEXT")); + d->TextureParameterivEXT = reinterpret_cast(context->getProcAddress("glTextureParameterivEXT")); + d->TextureParameteriEXT = reinterpret_cast(context->getProcAddress("glTextureParameteriEXT")); + d->TextureParameterfvEXT = reinterpret_cast(context->getProcAddress("glTextureParameterfvEXT")); + d->TextureParameterfEXT = reinterpret_cast(context->getProcAddress("glTextureParameterfEXT")); + d->MatrixMultTransposedEXT = reinterpret_cast(context->getProcAddress("glMatrixMultTransposedEXT")); + d->MatrixMultTransposefEXT = reinterpret_cast(context->getProcAddress("glMatrixMultTransposefEXT")); + d->MatrixLoadTransposedEXT = reinterpret_cast(context->getProcAddress("glMatrixLoadTransposedEXT")); + d->MatrixLoadTransposefEXT = reinterpret_cast(context->getProcAddress("glMatrixLoadTransposefEXT")); + d->MatrixPushEXT = reinterpret_cast(context->getProcAddress("glMatrixPushEXT")); + d->MatrixPopEXT = reinterpret_cast(context->getProcAddress("glMatrixPopEXT")); + d->MatrixOrthoEXT = reinterpret_cast(context->getProcAddress("glMatrixOrthoEXT")); + d->MatrixFrustumEXT = reinterpret_cast(context->getProcAddress("glMatrixFrustumEXT")); + d->MatrixTranslatedEXT = reinterpret_cast(context->getProcAddress("glMatrixTranslatedEXT")); + d->MatrixTranslatefEXT = reinterpret_cast(context->getProcAddress("glMatrixTranslatefEXT")); + d->MatrixScaledEXT = reinterpret_cast(context->getProcAddress("glMatrixScaledEXT")); + d->MatrixScalefEXT = reinterpret_cast(context->getProcAddress("glMatrixScalefEXT")); + d->MatrixRotatedEXT = reinterpret_cast(context->getProcAddress("glMatrixRotatedEXT")); + d->MatrixRotatefEXT = reinterpret_cast(context->getProcAddress("glMatrixRotatefEXT")); + d->MatrixLoadIdentityEXT = reinterpret_cast(context->getProcAddress("glMatrixLoadIdentityEXT")); + d->MatrixMultdEXT = reinterpret_cast(context->getProcAddress("glMatrixMultdEXT")); + d->MatrixMultfEXT = reinterpret_cast(context->getProcAddress("glMatrixMultfEXT")); + d->MatrixLoaddEXT = reinterpret_cast(context->getProcAddress("glMatrixLoaddEXT")); + d->MatrixLoadfEXT = reinterpret_cast(context->getProcAddress("glMatrixLoadfEXT")); + d->PushClientAttribDefaultEXT = reinterpret_cast(context->getProcAddress("glPushClientAttribDefaultEXT")); + d->ClientAttribDefaultEXT = reinterpret_cast(context->getProcAddress("glClientAttribDefaultEXT")); + d->TextureStorage3DMultisampleEXT = reinterpret_cast(context->getProcAddress("glTextureStorage3DMultisampleEXT")); + d->TextureStorage2DMultisampleEXT = reinterpret_cast(context->getProcAddress("glTextureStorage2DMultisampleEXT")); + d->TextureBufferRangeEXT = reinterpret_cast(context->getProcAddress("glTextureBufferRangeEXT")); + d->GetNamedFramebufferParameterivEXT = reinterpret_cast(context->getProcAddress("glGetNamedFramebufferParameterivEXT")); + d->NamedFramebufferParameteriEXT = reinterpret_cast(context->getProcAddress("glNamedFramebufferParameteriEXT")); + d->VertexArrayVertexBindingDivisorEXT = reinterpret_cast(context->getProcAddress("glVertexArrayVertexBindingDivisorEXT")); + d->VertexArrayVertexAttribBindingEXT = reinterpret_cast(context->getProcAddress("glVertexArrayVertexAttribBindingEXT")); + d->VertexArrayVertexAttribLFormatEXT = reinterpret_cast(context->getProcAddress("glVertexArrayVertexAttribLFormatEXT")); + d->VertexArrayVertexAttribIFormatEXT = reinterpret_cast(context->getProcAddress("glVertexArrayVertexAttribIFormatEXT")); + d->VertexArrayVertexAttribFormatEXT = reinterpret_cast(context->getProcAddress("glVertexArrayVertexAttribFormatEXT")); + d->VertexArrayBindVertexBufferEXT = reinterpret_cast(context->getProcAddress("glVertexArrayBindVertexBufferEXT")); + d->ClearNamedBufferSubDataEXT = reinterpret_cast(context->getProcAddress("glClearNamedBufferSubDataEXT")); + d->ClearNamedBufferDataEXT = reinterpret_cast(context->getProcAddress("glClearNamedBufferDataEXT")); + d->TextureStorage3DEXT = reinterpret_cast(context->getProcAddress("glTextureStorage3DEXT")); + d->TextureStorage2DEXT = reinterpret_cast(context->getProcAddress("glTextureStorage2DEXT")); + d->TextureStorage1DEXT = reinterpret_cast(context->getProcAddress("glTextureStorage1DEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_draw_buffers2::QOpenGLExtension_EXT_draw_buffers2() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_draw_buffers2Private)) +{ +} + +bool QOpenGLExtension_EXT_draw_buffers2::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_draw_buffers2); + + d->IsEnabledIndexedEXT = reinterpret_cast(context->getProcAddress("glIsEnabledIndexedEXT")); + d->DisableIndexedEXT = reinterpret_cast(context->getProcAddress("glDisableIndexedEXT")); + d->EnableIndexedEXT = reinterpret_cast(context->getProcAddress("glEnableIndexedEXT")); + d->GetIntegerIndexedvEXT = reinterpret_cast(context->getProcAddress("glGetIntegerIndexedvEXT")); + d->GetBooleanIndexedvEXT = reinterpret_cast(context->getProcAddress("glGetBooleanIndexedvEXT")); + d->ColorMaskIndexedEXT = reinterpret_cast(context->getProcAddress("glColorMaskIndexedEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_draw_instanced::QOpenGLExtension_EXT_draw_instanced() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_draw_instancedPrivate)) +{ +} + +bool QOpenGLExtension_EXT_draw_instanced::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_draw_instanced); + + d->DrawElementsInstancedEXT = reinterpret_cast(context->getProcAddress("glDrawElementsInstancedEXT")); + d->DrawArraysInstancedEXT = reinterpret_cast(context->getProcAddress("glDrawArraysInstancedEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_draw_range_elements::QOpenGLExtension_EXT_draw_range_elements() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_draw_range_elementsPrivate)) +{ +} + +bool QOpenGLExtension_EXT_draw_range_elements::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_draw_range_elements); + + d->DrawRangeElementsEXT = reinterpret_cast(context->getProcAddress("glDrawRangeElementsEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_fog_coord::QOpenGLExtension_EXT_fog_coord() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_fog_coordPrivate)) +{ +} + +bool QOpenGLExtension_EXT_fog_coord::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_fog_coord); + + d->FogCoordPointerEXT = reinterpret_cast(context->getProcAddress("glFogCoordPointerEXT")); + d->FogCoorddvEXT = reinterpret_cast(context->getProcAddress("glFogCoorddvEXT")); + d->FogCoorddEXT = reinterpret_cast(context->getProcAddress("glFogCoorddEXT")); + d->FogCoordfvEXT = reinterpret_cast(context->getProcAddress("glFogCoordfvEXT")); + d->FogCoordfEXT = reinterpret_cast(context->getProcAddress("glFogCoordfEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_framebuffer_blit::QOpenGLExtension_EXT_framebuffer_blit() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_framebuffer_blitPrivate)) +{ +} + +bool QOpenGLExtension_EXT_framebuffer_blit::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_framebuffer_blit); + + d->BlitFramebufferEXT = reinterpret_cast(context->getProcAddress("glBlitFramebufferEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_framebuffer_multisample::QOpenGLExtension_EXT_framebuffer_multisample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_framebuffer_multisamplePrivate)) +{ +} + +bool QOpenGLExtension_EXT_framebuffer_multisample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_framebuffer_multisample); + + d->RenderbufferStorageMultisampleEXT = reinterpret_cast(context->getProcAddress("glRenderbufferStorageMultisampleEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_framebuffer_object::QOpenGLExtension_EXT_framebuffer_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_framebuffer_objectPrivate)) +{ +} + +bool QOpenGLExtension_EXT_framebuffer_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_framebuffer_object); + + d->GenerateMipmapEXT = reinterpret_cast(context->getProcAddress("glGenerateMipmapEXT")); + d->GetFramebufferAttachmentParameterivEXT = reinterpret_cast(context->getProcAddress("glGetFramebufferAttachmentParameterivEXT")); + d->FramebufferRenderbufferEXT = reinterpret_cast(context->getProcAddress("glFramebufferRenderbufferEXT")); + d->FramebufferTexture3DEXT = reinterpret_cast(context->getProcAddress("glFramebufferTexture3DEXT")); + d->FramebufferTexture2DEXT = reinterpret_cast(context->getProcAddress("glFramebufferTexture2DEXT")); + d->FramebufferTexture1DEXT = reinterpret_cast(context->getProcAddress("glFramebufferTexture1DEXT")); + d->CheckFramebufferStatusEXT = reinterpret_cast(context->getProcAddress("glCheckFramebufferStatusEXT")); + d->GenFramebuffersEXT = reinterpret_cast(context->getProcAddress("glGenFramebuffersEXT")); + d->DeleteFramebuffersEXT = reinterpret_cast(context->getProcAddress("glDeleteFramebuffersEXT")); + d->BindFramebufferEXT = reinterpret_cast(context->getProcAddress("glBindFramebufferEXT")); + d->IsFramebufferEXT = reinterpret_cast(context->getProcAddress("glIsFramebufferEXT")); + d->GetRenderbufferParameterivEXT = reinterpret_cast(context->getProcAddress("glGetRenderbufferParameterivEXT")); + d->RenderbufferStorageEXT = reinterpret_cast(context->getProcAddress("glRenderbufferStorageEXT")); + d->GenRenderbuffersEXT = reinterpret_cast(context->getProcAddress("glGenRenderbuffersEXT")); + d->DeleteRenderbuffersEXT = reinterpret_cast(context->getProcAddress("glDeleteRenderbuffersEXT")); + d->BindRenderbufferEXT = reinterpret_cast(context->getProcAddress("glBindRenderbufferEXT")); + d->IsRenderbufferEXT = reinterpret_cast(context->getProcAddress("glIsRenderbufferEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_geometry_shader4::QOpenGLExtension_EXT_geometry_shader4() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_geometry_shader4Private)) +{ +} + +bool QOpenGLExtension_EXT_geometry_shader4::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_geometry_shader4); + + d->ProgramParameteriEXT = reinterpret_cast(context->getProcAddress("glProgramParameteriEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_gpu_program_parameters::QOpenGLExtension_EXT_gpu_program_parameters() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_gpu_program_parametersPrivate)) +{ +} + +bool QOpenGLExtension_EXT_gpu_program_parameters::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_gpu_program_parameters); + + d->ProgramLocalParameters4fvEXT = reinterpret_cast(context->getProcAddress("glProgramLocalParameters4fvEXT")); + d->ProgramEnvParameters4fvEXT = reinterpret_cast(context->getProcAddress("glProgramEnvParameters4fvEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_gpu_shader4::QOpenGLExtension_EXT_gpu_shader4() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_gpu_shader4Private)) +{ +} + +bool QOpenGLExtension_EXT_gpu_shader4::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_gpu_shader4); + + d->Uniform4uivEXT = reinterpret_cast(context->getProcAddress("glUniform4uivEXT")); + d->Uniform3uivEXT = reinterpret_cast(context->getProcAddress("glUniform3uivEXT")); + d->Uniform2uivEXT = reinterpret_cast(context->getProcAddress("glUniform2uivEXT")); + d->Uniform1uivEXT = reinterpret_cast(context->getProcAddress("glUniform1uivEXT")); + d->Uniform4uiEXT = reinterpret_cast(context->getProcAddress("glUniform4uiEXT")); + d->Uniform3uiEXT = reinterpret_cast(context->getProcAddress("glUniform3uiEXT")); + d->Uniform2uiEXT = reinterpret_cast(context->getProcAddress("glUniform2uiEXT")); + d->Uniform1uiEXT = reinterpret_cast(context->getProcAddress("glUniform1uiEXT")); + d->GetFragDataLocationEXT = reinterpret_cast(context->getProcAddress("glGetFragDataLocationEXT")); + d->BindFragDataLocationEXT = reinterpret_cast(context->getProcAddress("glBindFragDataLocationEXT")); + d->GetUniformuivEXT = reinterpret_cast(context->getProcAddress("glGetUniformuivEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_histogram::QOpenGLExtension_EXT_histogram() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_histogramPrivate)) +{ +} + +bool QOpenGLExtension_EXT_histogram::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_histogram); + + d->ResetMinmaxEXT = reinterpret_cast(context->getProcAddress("glResetMinmaxEXT")); + d->ResetHistogramEXT = reinterpret_cast(context->getProcAddress("glResetHistogramEXT")); + d->MinmaxEXT = reinterpret_cast(context->getProcAddress("glMinmaxEXT")); + d->HistogramEXT = reinterpret_cast(context->getProcAddress("glHistogramEXT")); + d->GetMinmaxParameterivEXT = reinterpret_cast(context->getProcAddress("glGetMinmaxParameterivEXT")); + d->GetMinmaxParameterfvEXT = reinterpret_cast(context->getProcAddress("glGetMinmaxParameterfvEXT")); + d->GetMinmaxEXT = reinterpret_cast(context->getProcAddress("glGetMinmaxEXT")); + d->GetHistogramParameterivEXT = reinterpret_cast(context->getProcAddress("glGetHistogramParameterivEXT")); + d->GetHistogramParameterfvEXT = reinterpret_cast(context->getProcAddress("glGetHistogramParameterfvEXT")); + d->GetHistogramEXT = reinterpret_cast(context->getProcAddress("glGetHistogramEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_index_func::QOpenGLExtension_EXT_index_func() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_index_funcPrivate)) +{ +} + +bool QOpenGLExtension_EXT_index_func::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_index_func); + + d->IndexFuncEXT = reinterpret_cast(context->getProcAddress("glIndexFuncEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_index_material::QOpenGLExtension_EXT_index_material() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_index_materialPrivate)) +{ +} + +bool QOpenGLExtension_EXT_index_material::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_index_material); + + d->IndexMaterialEXT = reinterpret_cast(context->getProcAddress("glIndexMaterialEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_light_texture::QOpenGLExtension_EXT_light_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_light_texturePrivate)) +{ +} + +bool QOpenGLExtension_EXT_light_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_light_texture); + + d->TextureMaterialEXT = reinterpret_cast(context->getProcAddress("glTextureMaterialEXT")); + d->TextureLightEXT = reinterpret_cast(context->getProcAddress("glTextureLightEXT")); + d->ApplyTextureEXT = reinterpret_cast(context->getProcAddress("glApplyTextureEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_multi_draw_arrays::QOpenGLExtension_EXT_multi_draw_arrays() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_multi_draw_arraysPrivate)) +{ +} + +bool QOpenGLExtension_EXT_multi_draw_arrays::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_multi_draw_arrays); + + d->MultiDrawElementsEXT = reinterpret_cast(context->getProcAddress("glMultiDrawElementsEXT")); + d->MultiDrawArraysEXT = reinterpret_cast(context->getProcAddress("glMultiDrawArraysEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_multisample::QOpenGLExtension_EXT_multisample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_multisamplePrivate)) +{ +} + +bool QOpenGLExtension_EXT_multisample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_multisample); + + d->SamplePatternEXT = reinterpret_cast(context->getProcAddress("glSamplePatternEXT")); + d->SampleMaskEXT = reinterpret_cast(context->getProcAddress("glSampleMaskEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_paletted_texture::QOpenGLExtension_EXT_paletted_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_paletted_texturePrivate)) +{ +} + +bool QOpenGLExtension_EXT_paletted_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_paletted_texture); + + d->GetColorTableParameterfvEXT = reinterpret_cast(context->getProcAddress("glGetColorTableParameterfvEXT")); + d->GetColorTableParameterivEXT = reinterpret_cast(context->getProcAddress("glGetColorTableParameterivEXT")); + d->GetColorTableEXT = reinterpret_cast(context->getProcAddress("glGetColorTableEXT")); + d->ColorTableEXT = reinterpret_cast(context->getProcAddress("glColorTableEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_pixel_transform::QOpenGLExtension_EXT_pixel_transform() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_pixel_transformPrivate)) +{ +} + +bool QOpenGLExtension_EXT_pixel_transform::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_pixel_transform); + + d->GetPixelTransformParameterfvEXT = reinterpret_cast(context->getProcAddress("glGetPixelTransformParameterfvEXT")); + d->GetPixelTransformParameterivEXT = reinterpret_cast(context->getProcAddress("glGetPixelTransformParameterivEXT")); + d->PixelTransformParameterfvEXT = reinterpret_cast(context->getProcAddress("glPixelTransformParameterfvEXT")); + d->PixelTransformParameterivEXT = reinterpret_cast(context->getProcAddress("glPixelTransformParameterivEXT")); + d->PixelTransformParameterfEXT = reinterpret_cast(context->getProcAddress("glPixelTransformParameterfEXT")); + d->PixelTransformParameteriEXT = reinterpret_cast(context->getProcAddress("glPixelTransformParameteriEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_point_parameters::QOpenGLExtension_EXT_point_parameters() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_point_parametersPrivate)) +{ +} + +bool QOpenGLExtension_EXT_point_parameters::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_point_parameters); + + d->PointParameterfvEXT = reinterpret_cast(context->getProcAddress("glPointParameterfvEXT")); + d->PointParameterfEXT = reinterpret_cast(context->getProcAddress("glPointParameterfEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_polygon_offset::QOpenGLExtension_EXT_polygon_offset() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_polygon_offsetPrivate)) +{ +} + +bool QOpenGLExtension_EXT_polygon_offset::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_polygon_offset); + + d->PolygonOffsetEXT = reinterpret_cast(context->getProcAddress("glPolygonOffsetEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_provoking_vertex::QOpenGLExtension_EXT_provoking_vertex() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_provoking_vertexPrivate)) +{ +} + +bool QOpenGLExtension_EXT_provoking_vertex::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_provoking_vertex); + + d->ProvokingVertexEXT = reinterpret_cast(context->getProcAddress("glProvokingVertexEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_secondary_color::QOpenGLExtension_EXT_secondary_color() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_secondary_colorPrivate)) +{ +} + +bool QOpenGLExtension_EXT_secondary_color::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_secondary_color); + + d->SecondaryColorPointerEXT = reinterpret_cast(context->getProcAddress("glSecondaryColorPointerEXT")); + d->SecondaryColor3usvEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3usvEXT")); + d->SecondaryColor3usEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3usEXT")); + d->SecondaryColor3uivEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3uivEXT")); + d->SecondaryColor3uiEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3uiEXT")); + d->SecondaryColor3ubvEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3ubvEXT")); + d->SecondaryColor3ubEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3ubEXT")); + d->SecondaryColor3svEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3svEXT")); + d->SecondaryColor3sEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3sEXT")); + d->SecondaryColor3ivEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3ivEXT")); + d->SecondaryColor3iEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3iEXT")); + d->SecondaryColor3fvEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3fvEXT")); + d->SecondaryColor3fEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3fEXT")); + d->SecondaryColor3dvEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3dvEXT")); + d->SecondaryColor3dEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3dEXT")); + d->SecondaryColor3bvEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3bvEXT")); + d->SecondaryColor3bEXT = reinterpret_cast(context->getProcAddress("glSecondaryColor3bEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_separate_shader_objects::QOpenGLExtension_EXT_separate_shader_objects() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_separate_shader_objectsPrivate)) +{ +} + +bool QOpenGLExtension_EXT_separate_shader_objects::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + + d->CreateShaderProgramEXT = reinterpret_cast(context->getProcAddress("glCreateShaderProgramEXT")); + d->ActiveProgramEXT = reinterpret_cast(context->getProcAddress("glActiveProgramEXT")); + d->UseShaderProgramEXT = reinterpret_cast(context->getProcAddress("glUseShaderProgramEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_shader_image_load_store::QOpenGLExtension_EXT_shader_image_load_store() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_shader_image_load_storePrivate)) +{ +} + +bool QOpenGLExtension_EXT_shader_image_load_store::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_shader_image_load_store); + + d->MemoryBarrierEXT = reinterpret_cast(context->getProcAddress("glMemoryBarrierEXT")); + d->BindImageTextureEXT = reinterpret_cast(context->getProcAddress("glBindImageTextureEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_stencil_clear_tag::QOpenGLExtension_EXT_stencil_clear_tag() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_stencil_clear_tagPrivate)) +{ +} + +bool QOpenGLExtension_EXT_stencil_clear_tag::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_stencil_clear_tag); + + d->StencilClearTagEXT = reinterpret_cast(context->getProcAddress("glStencilClearTagEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_stencil_two_side::QOpenGLExtension_EXT_stencil_two_side() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_stencil_two_sidePrivate)) +{ +} + +bool QOpenGLExtension_EXT_stencil_two_side::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_stencil_two_side); + + d->ActiveStencilFaceEXT = reinterpret_cast(context->getProcAddress("glActiveStencilFaceEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_subtexture::QOpenGLExtension_EXT_subtexture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_subtexturePrivate)) +{ +} + +bool QOpenGLExtension_EXT_subtexture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_subtexture); + + d->TexSubImage2DEXT = reinterpret_cast(context->getProcAddress("glTexSubImage2DEXT")); + d->TexSubImage1DEXT = reinterpret_cast(context->getProcAddress("glTexSubImage1DEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_texture3D::QOpenGLExtension_EXT_texture3D() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_texture3DPrivate)) +{ +} + +bool QOpenGLExtension_EXT_texture3D::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_texture3D); + + d->TexSubImage3DEXT = reinterpret_cast(context->getProcAddress("glTexSubImage3DEXT")); + d->TexImage3DEXT = reinterpret_cast(context->getProcAddress("glTexImage3DEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_texture_buffer_object::QOpenGLExtension_EXT_texture_buffer_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_texture_buffer_objectPrivate)) +{ +} + +bool QOpenGLExtension_EXT_texture_buffer_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_texture_buffer_object); + + d->TexBufferEXT = reinterpret_cast(context->getProcAddress("glTexBufferEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_texture_integer::QOpenGLExtension_EXT_texture_integer() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_texture_integerPrivate)) +{ +} + +bool QOpenGLExtension_EXT_texture_integer::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_texture_integer); + + d->ClearColorIuiEXT = reinterpret_cast(context->getProcAddress("glClearColorIuiEXT")); + d->ClearColorIiEXT = reinterpret_cast(context->getProcAddress("glClearColorIiEXT")); + d->GetTexParameterIuivEXT = reinterpret_cast(context->getProcAddress("glGetTexParameterIuivEXT")); + d->GetTexParameterIivEXT = reinterpret_cast(context->getProcAddress("glGetTexParameterIivEXT")); + d->TexParameterIuivEXT = reinterpret_cast(context->getProcAddress("glTexParameterIuivEXT")); + d->TexParameterIivEXT = reinterpret_cast(context->getProcAddress("glTexParameterIivEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_texture_object::QOpenGLExtension_EXT_texture_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_texture_objectPrivate)) +{ +} + +bool QOpenGLExtension_EXT_texture_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_texture_object); + + d->PrioritizeTexturesEXT = reinterpret_cast(context->getProcAddress("glPrioritizeTexturesEXT")); + d->IsTextureEXT = reinterpret_cast(context->getProcAddress("glIsTextureEXT")); + d->GenTexturesEXT = reinterpret_cast(context->getProcAddress("glGenTexturesEXT")); + d->DeleteTexturesEXT = reinterpret_cast(context->getProcAddress("glDeleteTexturesEXT")); + d->BindTextureEXT = reinterpret_cast(context->getProcAddress("glBindTextureEXT")); + d->AreTexturesResidentEXT = reinterpret_cast(context->getProcAddress("glAreTexturesResidentEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_texture_perturb_normal::QOpenGLExtension_EXT_texture_perturb_normal() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_texture_perturb_normalPrivate)) +{ +} + +bool QOpenGLExtension_EXT_texture_perturb_normal::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_texture_perturb_normal); + + d->TextureNormalEXT = reinterpret_cast(context->getProcAddress("glTextureNormalEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_timer_query::QOpenGLExtension_EXT_timer_query() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_timer_queryPrivate)) +{ +} + +bool QOpenGLExtension_EXT_timer_query::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_timer_query); + + d->GetQueryObjectui64vEXT = reinterpret_cast(context->getProcAddress("glGetQueryObjectui64vEXT")); + d->GetQueryObjecti64vEXT = reinterpret_cast(context->getProcAddress("glGetQueryObjecti64vEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_transform_feedback::QOpenGLExtension_EXT_transform_feedback() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_transform_feedbackPrivate)) +{ +} + +bool QOpenGLExtension_EXT_transform_feedback::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_transform_feedback); + + d->GetTransformFeedbackVaryingEXT = reinterpret_cast(context->getProcAddress("glGetTransformFeedbackVaryingEXT")); + d->TransformFeedbackVaryingsEXT = reinterpret_cast(context->getProcAddress("glTransformFeedbackVaryingsEXT")); + d->BindBufferBaseEXT = reinterpret_cast(context->getProcAddress("glBindBufferBaseEXT")); + d->BindBufferOffsetEXT = reinterpret_cast(context->getProcAddress("glBindBufferOffsetEXT")); + d->BindBufferRangeEXT = reinterpret_cast(context->getProcAddress("glBindBufferRangeEXT")); + d->EndTransformFeedbackEXT = reinterpret_cast(context->getProcAddress("glEndTransformFeedbackEXT")); + d->BeginTransformFeedbackEXT = reinterpret_cast(context->getProcAddress("glBeginTransformFeedbackEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_vertex_array::QOpenGLExtension_EXT_vertex_array() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_vertex_arrayPrivate)) +{ +} + +bool QOpenGLExtension_EXT_vertex_array::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_vertex_array); + + d->VertexPointerEXT = reinterpret_cast(context->getProcAddress("glVertexPointerEXT")); + d->TexCoordPointerEXT = reinterpret_cast(context->getProcAddress("glTexCoordPointerEXT")); + d->NormalPointerEXT = reinterpret_cast(context->getProcAddress("glNormalPointerEXT")); + d->IndexPointerEXT = reinterpret_cast(context->getProcAddress("glIndexPointerEXT")); + d->GetPointervEXT = reinterpret_cast(context->getProcAddress("glGetPointervEXT")); + d->EdgeFlagPointerEXT = reinterpret_cast(context->getProcAddress("glEdgeFlagPointerEXT")); + d->DrawArraysEXT = reinterpret_cast(context->getProcAddress("glDrawArraysEXT")); + d->ColorPointerEXT = reinterpret_cast(context->getProcAddress("glColorPointerEXT")); + d->ArrayElementEXT = reinterpret_cast(context->getProcAddress("glArrayElementEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_vertex_attrib_64bit::QOpenGLExtension_EXT_vertex_attrib_64bit() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_vertex_attrib_64bitPrivate)) +{ +} + +bool QOpenGLExtension_EXT_vertex_attrib_64bit::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + + d->VertexArrayVertexAttribLOffsetEXT = reinterpret_cast(context->getProcAddress("glVertexArrayVertexAttribLOffsetEXT")); + d->GetVertexAttribLdvEXT = reinterpret_cast(context->getProcAddress("glGetVertexAttribLdvEXT")); + d->VertexAttribLPointerEXT = reinterpret_cast(context->getProcAddress("glVertexAttribLPointerEXT")); + d->VertexAttribL4dvEXT = reinterpret_cast(context->getProcAddress("glVertexAttribL4dvEXT")); + d->VertexAttribL3dvEXT = reinterpret_cast(context->getProcAddress("glVertexAttribL3dvEXT")); + d->VertexAttribL2dvEXT = reinterpret_cast(context->getProcAddress("glVertexAttribL2dvEXT")); + d->VertexAttribL1dvEXT = reinterpret_cast(context->getProcAddress("glVertexAttribL1dvEXT")); + d->VertexAttribL4dEXT = reinterpret_cast(context->getProcAddress("glVertexAttribL4dEXT")); + d->VertexAttribL3dEXT = reinterpret_cast(context->getProcAddress("glVertexAttribL3dEXT")); + d->VertexAttribL2dEXT = reinterpret_cast(context->getProcAddress("glVertexAttribL2dEXT")); + d->VertexAttribL1dEXT = reinterpret_cast(context->getProcAddress("glVertexAttribL1dEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_vertex_shader::QOpenGLExtension_EXT_vertex_shader() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_vertex_shaderPrivate)) +{ +} + +bool QOpenGLExtension_EXT_vertex_shader::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_vertex_shader); + + d->GetLocalConstantFloatvEXT = reinterpret_cast(context->getProcAddress("glGetLocalConstantFloatvEXT")); + d->GetLocalConstantIntegervEXT = reinterpret_cast(context->getProcAddress("glGetLocalConstantIntegervEXT")); + d->GetLocalConstantBooleanvEXT = reinterpret_cast(context->getProcAddress("glGetLocalConstantBooleanvEXT")); + d->GetInvariantFloatvEXT = reinterpret_cast(context->getProcAddress("glGetInvariantFloatvEXT")); + d->GetInvariantIntegervEXT = reinterpret_cast(context->getProcAddress("glGetInvariantIntegervEXT")); + d->GetInvariantBooleanvEXT = reinterpret_cast(context->getProcAddress("glGetInvariantBooleanvEXT")); + d->GetVariantPointervEXT = reinterpret_cast(context->getProcAddress("glGetVariantPointervEXT")); + d->GetVariantFloatvEXT = reinterpret_cast(context->getProcAddress("glGetVariantFloatvEXT")); + d->GetVariantIntegervEXT = reinterpret_cast(context->getProcAddress("glGetVariantIntegervEXT")); + d->GetVariantBooleanvEXT = reinterpret_cast(context->getProcAddress("glGetVariantBooleanvEXT")); + d->IsVariantEnabledEXT = reinterpret_cast(context->getProcAddress("glIsVariantEnabledEXT")); + d->BindParameterEXT = reinterpret_cast(context->getProcAddress("glBindParameterEXT")); + d->BindTextureUnitParameterEXT = reinterpret_cast(context->getProcAddress("glBindTextureUnitParameterEXT")); + d->BindTexGenParameterEXT = reinterpret_cast(context->getProcAddress("glBindTexGenParameterEXT")); + d->BindMaterialParameterEXT = reinterpret_cast(context->getProcAddress("glBindMaterialParameterEXT")); + d->BindLightParameterEXT = reinterpret_cast(context->getProcAddress("glBindLightParameterEXT")); + d->DisableVariantClientStateEXT = reinterpret_cast(context->getProcAddress("glDisableVariantClientStateEXT")); + d->EnableVariantClientStateEXT = reinterpret_cast(context->getProcAddress("glEnableVariantClientStateEXT")); + d->VariantPointerEXT = reinterpret_cast(context->getProcAddress("glVariantPointerEXT")); + d->VariantuivEXT = reinterpret_cast(context->getProcAddress("glVariantuivEXT")); + d->VariantusvEXT = reinterpret_cast(context->getProcAddress("glVariantusvEXT")); + d->VariantubvEXT = reinterpret_cast(context->getProcAddress("glVariantubvEXT")); + d->VariantdvEXT = reinterpret_cast(context->getProcAddress("glVariantdvEXT")); + d->VariantfvEXT = reinterpret_cast(context->getProcAddress("glVariantfvEXT")); + d->VariantivEXT = reinterpret_cast(context->getProcAddress("glVariantivEXT")); + d->VariantsvEXT = reinterpret_cast(context->getProcAddress("glVariantsvEXT")); + d->VariantbvEXT = reinterpret_cast(context->getProcAddress("glVariantbvEXT")); + d->SetLocalConstantEXT = reinterpret_cast(context->getProcAddress("glSetLocalConstantEXT")); + d->SetInvariantEXT = reinterpret_cast(context->getProcAddress("glSetInvariantEXT")); + d->GenSymbolsEXT = reinterpret_cast(context->getProcAddress("glGenSymbolsEXT")); + d->ExtractComponentEXT = reinterpret_cast(context->getProcAddress("glExtractComponentEXT")); + d->InsertComponentEXT = reinterpret_cast(context->getProcAddress("glInsertComponentEXT")); + d->WriteMaskEXT = reinterpret_cast(context->getProcAddress("glWriteMaskEXT")); + d->SwizzleEXT = reinterpret_cast(context->getProcAddress("glSwizzleEXT")); + d->ShaderOp3EXT = reinterpret_cast(context->getProcAddress("glShaderOp3EXT")); + d->ShaderOp2EXT = reinterpret_cast(context->getProcAddress("glShaderOp2EXT")); + d->ShaderOp1EXT = reinterpret_cast(context->getProcAddress("glShaderOp1EXT")); + d->DeleteVertexShaderEXT = reinterpret_cast(context->getProcAddress("glDeleteVertexShaderEXT")); + d->GenVertexShadersEXT = reinterpret_cast(context->getProcAddress("glGenVertexShadersEXT")); + d->BindVertexShaderEXT = reinterpret_cast(context->getProcAddress("glBindVertexShaderEXT")); + d->EndVertexShaderEXT = reinterpret_cast(context->getProcAddress("glEndVertexShaderEXT")); + d->BeginVertexShaderEXT = reinterpret_cast(context->getProcAddress("glBeginVertexShaderEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_vertex_weighting::QOpenGLExtension_EXT_vertex_weighting() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_vertex_weightingPrivate)) +{ +} + +bool QOpenGLExtension_EXT_vertex_weighting::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_vertex_weighting); + + d->VertexWeightPointerEXT = reinterpret_cast(context->getProcAddress("glVertexWeightPointerEXT")); + d->VertexWeightfvEXT = reinterpret_cast(context->getProcAddress("glVertexWeightfvEXT")); + d->VertexWeightfEXT = reinterpret_cast(context->getProcAddress("glVertexWeightfEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_EXT_x11_sync_object::QOpenGLExtension_EXT_x11_sync_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_x11_sync_objectPrivate)) +{ +} + +bool QOpenGLExtension_EXT_x11_sync_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_x11_sync_object); + + d->ImportSyncEXT = reinterpret_cast(context->getProcAddress("glImportSyncEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_GREMEDY_frame_terminator::QOpenGLExtension_GREMEDY_frame_terminator() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_GREMEDY_frame_terminatorPrivate)) +{ +} + +bool QOpenGLExtension_GREMEDY_frame_terminator::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_GREMEDY_frame_terminator); + + d->FrameTerminatorGREMEDY = reinterpret_cast(context->getProcAddress("glFrameTerminatorGREMEDY")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_GREMEDY_string_marker::QOpenGLExtension_GREMEDY_string_marker() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_GREMEDY_string_markerPrivate)) +{ +} + +bool QOpenGLExtension_GREMEDY_string_marker::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_GREMEDY_string_marker); + + d->StringMarkerGREMEDY = reinterpret_cast(context->getProcAddress("glStringMarkerGREMEDY")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_HP_image_transform::QOpenGLExtension_HP_image_transform() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_HP_image_transformPrivate)) +{ +} + +bool QOpenGLExtension_HP_image_transform::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_HP_image_transform); + + d->GetImageTransformParameterfvHP = reinterpret_cast(context->getProcAddress("glGetImageTransformParameterfvHP")); + d->GetImageTransformParameterivHP = reinterpret_cast(context->getProcAddress("glGetImageTransformParameterivHP")); + d->ImageTransformParameterfvHP = reinterpret_cast(context->getProcAddress("glImageTransformParameterfvHP")); + d->ImageTransformParameterivHP = reinterpret_cast(context->getProcAddress("glImageTransformParameterivHP")); + d->ImageTransformParameterfHP = reinterpret_cast(context->getProcAddress("glImageTransformParameterfHP")); + d->ImageTransformParameteriHP = reinterpret_cast(context->getProcAddress("glImageTransformParameteriHP")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_IBM_multimode_draw_arrays::QOpenGLExtension_IBM_multimode_draw_arrays() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_IBM_multimode_draw_arraysPrivate)) +{ +} + +bool QOpenGLExtension_IBM_multimode_draw_arrays::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_IBM_multimode_draw_arrays); + + d->MultiModeDrawElementsIBM = reinterpret_cast(context->getProcAddress("glMultiModeDrawElementsIBM")); + d->MultiModeDrawArraysIBM = reinterpret_cast(context->getProcAddress("glMultiModeDrawArraysIBM")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_IBM_vertex_array_lists::QOpenGLExtension_IBM_vertex_array_lists() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_IBM_vertex_array_listsPrivate)) +{ +} + +bool QOpenGLExtension_IBM_vertex_array_lists::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_IBM_vertex_array_lists); + + d->VertexPointerListIBM = reinterpret_cast(context->getProcAddress("glVertexPointerListIBM")); + d->TexCoordPointerListIBM = reinterpret_cast(context->getProcAddress("glTexCoordPointerListIBM")); + d->NormalPointerListIBM = reinterpret_cast(context->getProcAddress("glNormalPointerListIBM")); + d->IndexPointerListIBM = reinterpret_cast(context->getProcAddress("glIndexPointerListIBM")); + d->FogCoordPointerListIBM = reinterpret_cast(context->getProcAddress("glFogCoordPointerListIBM")); + d->EdgeFlagPointerListIBM = reinterpret_cast(context->getProcAddress("glEdgeFlagPointerListIBM")); + d->SecondaryColorPointerListIBM = reinterpret_cast(context->getProcAddress("glSecondaryColorPointerListIBM")); + d->ColorPointerListIBM = reinterpret_cast(context->getProcAddress("glColorPointerListIBM")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_INGR_blend_func_separate::QOpenGLExtension_INGR_blend_func_separate() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_INGR_blend_func_separatePrivate)) +{ +} + +bool QOpenGLExtension_INGR_blend_func_separate::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_INGR_blend_func_separate); + + d->BlendFuncSeparateINGR = reinterpret_cast(context->getProcAddress("glBlendFuncSeparateINGR")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_INTEL_parallel_arrays::QOpenGLExtension_INTEL_parallel_arrays() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_INTEL_parallel_arraysPrivate)) +{ +} + +bool QOpenGLExtension_INTEL_parallel_arrays::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_INTEL_parallel_arrays); + + d->TexCoordPointervINTEL = reinterpret_cast(context->getProcAddress("glTexCoordPointervINTEL")); + d->ColorPointervINTEL = reinterpret_cast(context->getProcAddress("glColorPointervINTEL")); + d->NormalPointervINTEL = reinterpret_cast(context->getProcAddress("glNormalPointervINTEL")); + d->VertexPointervINTEL = reinterpret_cast(context->getProcAddress("glVertexPointervINTEL")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_KHR_debug::QOpenGLExtension_KHR_debug() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_KHR_debugPrivate)) +{ +} + +bool QOpenGLExtension_KHR_debug::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_KHR_debug); + + d->GetObjectPtrLabel = reinterpret_cast(context->getProcAddress("glGetObjectPtrLabel")); + d->ObjectPtrLabel = reinterpret_cast(context->getProcAddress("glObjectPtrLabel")); + d->GetObjectLabel = reinterpret_cast(context->getProcAddress("glGetObjectLabel")); + d->ObjectLabel = reinterpret_cast(context->getProcAddress("glObjectLabel")); + d->PopDebugGroup = reinterpret_cast(context->getProcAddress("glPopDebugGroup")); + d->PushDebugGroup = reinterpret_cast(context->getProcAddress("glPushDebugGroup")); + d->GetDebugMessageLog = reinterpret_cast(context->getProcAddress("glGetDebugMessageLog")); + d->DebugMessageCallback = reinterpret_cast(context->getProcAddress("glDebugMessageCallback")); + d->DebugMessageInsert = reinterpret_cast(context->getProcAddress("glDebugMessageInsert")); + d->DebugMessageControl = reinterpret_cast(context->getProcAddress("glDebugMessageControl")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_MESA_resize_buffers::QOpenGLExtension_MESA_resize_buffers() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_MESA_resize_buffersPrivate)) +{ +} + +bool QOpenGLExtension_MESA_resize_buffers::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_MESA_resize_buffers); + + d->ResizeBuffersMESA = reinterpret_cast(context->getProcAddress("glResizeBuffersMESA")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_MESA_window_pos::QOpenGLExtension_MESA_window_pos() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_MESA_window_posPrivate)) +{ +} + +bool QOpenGLExtension_MESA_window_pos::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_MESA_window_pos); + + d->WindowPos4svMESA = reinterpret_cast(context->getProcAddress("glWindowPos4svMESA")); + d->WindowPos4sMESA = reinterpret_cast(context->getProcAddress("glWindowPos4sMESA")); + d->WindowPos4ivMESA = reinterpret_cast(context->getProcAddress("glWindowPos4ivMESA")); + d->WindowPos4iMESA = reinterpret_cast(context->getProcAddress("glWindowPos4iMESA")); + d->WindowPos4fvMESA = reinterpret_cast(context->getProcAddress("glWindowPos4fvMESA")); + d->WindowPos4fMESA = reinterpret_cast(context->getProcAddress("glWindowPos4fMESA")); + d->WindowPos4dvMESA = reinterpret_cast(context->getProcAddress("glWindowPos4dvMESA")); + d->WindowPos4dMESA = reinterpret_cast(context->getProcAddress("glWindowPos4dMESA")); + d->WindowPos3svMESA = reinterpret_cast(context->getProcAddress("glWindowPos3svMESA")); + d->WindowPos3sMESA = reinterpret_cast(context->getProcAddress("glWindowPos3sMESA")); + d->WindowPos3ivMESA = reinterpret_cast(context->getProcAddress("glWindowPos3ivMESA")); + d->WindowPos3iMESA = reinterpret_cast(context->getProcAddress("glWindowPos3iMESA")); + d->WindowPos3fvMESA = reinterpret_cast(context->getProcAddress("glWindowPos3fvMESA")); + d->WindowPos3fMESA = reinterpret_cast(context->getProcAddress("glWindowPos3fMESA")); + d->WindowPos3dvMESA = reinterpret_cast(context->getProcAddress("glWindowPos3dvMESA")); + d->WindowPos3dMESA = reinterpret_cast(context->getProcAddress("glWindowPos3dMESA")); + d->WindowPos2svMESA = reinterpret_cast(context->getProcAddress("glWindowPos2svMESA")); + d->WindowPos2sMESA = reinterpret_cast(context->getProcAddress("glWindowPos2sMESA")); + d->WindowPos2ivMESA = reinterpret_cast(context->getProcAddress("glWindowPos2ivMESA")); + d->WindowPos2iMESA = reinterpret_cast(context->getProcAddress("glWindowPos2iMESA")); + d->WindowPos2fvMESA = reinterpret_cast(context->getProcAddress("glWindowPos2fvMESA")); + d->WindowPos2fMESA = reinterpret_cast(context->getProcAddress("glWindowPos2fMESA")); + d->WindowPos2dvMESA = reinterpret_cast(context->getProcAddress("glWindowPos2dvMESA")); + d->WindowPos2dMESA = reinterpret_cast(context->getProcAddress("glWindowPos2dMESA")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_bindless_texture::QOpenGLExtension_NV_bindless_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_bindless_texturePrivate)) +{ +} + +bool QOpenGLExtension_NV_bindless_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_bindless_texture); + + d->IsImageHandleResidentNV = reinterpret_cast(context->getProcAddress("glIsImageHandleResidentNV")); + d->IsTextureHandleResidentNV = reinterpret_cast(context->getProcAddress("glIsTextureHandleResidentNV")); + d->ProgramUniformHandleui64vNV = reinterpret_cast(context->getProcAddress("glProgramUniformHandleui64vNV")); + d->ProgramUniformHandleui64NV = reinterpret_cast(context->getProcAddress("glProgramUniformHandleui64NV")); + d->UniformHandleui64vNV = reinterpret_cast(context->getProcAddress("glUniformHandleui64vNV")); + d->UniformHandleui64NV = reinterpret_cast(context->getProcAddress("glUniformHandleui64NV")); + d->MakeImageHandleNonResidentNV = reinterpret_cast(context->getProcAddress("glMakeImageHandleNonResidentNV")); + d->MakeImageHandleResidentNV = reinterpret_cast(context->getProcAddress("glMakeImageHandleResidentNV")); + d->GetImageHandleNV = reinterpret_cast(context->getProcAddress("glGetImageHandleNV")); + d->MakeTextureHandleNonResidentNV = reinterpret_cast(context->getProcAddress("glMakeTextureHandleNonResidentNV")); + d->MakeTextureHandleResidentNV = reinterpret_cast(context->getProcAddress("glMakeTextureHandleResidentNV")); + d->GetTextureSamplerHandleNV = reinterpret_cast(context->getProcAddress("glGetTextureSamplerHandleNV")); + d->GetTextureHandleNV = reinterpret_cast(context->getProcAddress("glGetTextureHandleNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_conditional_render::QOpenGLExtension_NV_conditional_render() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_conditional_renderPrivate)) +{ +} + +bool QOpenGLExtension_NV_conditional_render::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_conditional_render); + + d->EndConditionalRenderNV = reinterpret_cast(context->getProcAddress("glEndConditionalRenderNV")); + d->BeginConditionalRenderNV = reinterpret_cast(context->getProcAddress("glBeginConditionalRenderNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_copy_image::QOpenGLExtension_NV_copy_image() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_copy_imagePrivate)) +{ +} + +bool QOpenGLExtension_NV_copy_image::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_copy_image); + + d->CopyImageSubDataNV = reinterpret_cast(context->getProcAddress("glCopyImageSubDataNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_depth_buffer_float::QOpenGLExtension_NV_depth_buffer_float() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_depth_buffer_floatPrivate)) +{ +} + +bool QOpenGLExtension_NV_depth_buffer_float::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_depth_buffer_float); + + d->DepthBoundsdNV = reinterpret_cast(context->getProcAddress("glDepthBoundsdNV")); + d->ClearDepthdNV = reinterpret_cast(context->getProcAddress("glClearDepthdNV")); + d->DepthRangedNV = reinterpret_cast(context->getProcAddress("glDepthRangedNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_evaluators::QOpenGLExtension_NV_evaluators() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_evaluatorsPrivate)) +{ +} + +bool QOpenGLExtension_NV_evaluators::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_evaluators); + + d->EvalMapsNV = reinterpret_cast(context->getProcAddress("glEvalMapsNV")); + d->GetMapAttribParameterfvNV = reinterpret_cast(context->getProcAddress("glGetMapAttribParameterfvNV")); + d->GetMapAttribParameterivNV = reinterpret_cast(context->getProcAddress("glGetMapAttribParameterivNV")); + d->GetMapParameterfvNV = reinterpret_cast(context->getProcAddress("glGetMapParameterfvNV")); + d->GetMapParameterivNV = reinterpret_cast(context->getProcAddress("glGetMapParameterivNV")); + d->GetMapControlPointsNV = reinterpret_cast(context->getProcAddress("glGetMapControlPointsNV")); + d->MapParameterfvNV = reinterpret_cast(context->getProcAddress("glMapParameterfvNV")); + d->MapParameterivNV = reinterpret_cast(context->getProcAddress("glMapParameterivNV")); + d->MapControlPointsNV = reinterpret_cast(context->getProcAddress("glMapControlPointsNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_explicit_multisample::QOpenGLExtension_NV_explicit_multisample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_explicit_multisamplePrivate)) +{ +} + +bool QOpenGLExtension_NV_explicit_multisample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_explicit_multisample); + + d->TexRenderbufferNV = reinterpret_cast(context->getProcAddress("glTexRenderbufferNV")); + d->SampleMaskIndexedNV = reinterpret_cast(context->getProcAddress("glSampleMaskIndexedNV")); + d->GetMultisamplefvNV = reinterpret_cast(context->getProcAddress("glGetMultisamplefvNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_fence::QOpenGLExtension_NV_fence() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_fencePrivate)) +{ +} + +bool QOpenGLExtension_NV_fence::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_fence); + + d->SetFenceNV = reinterpret_cast(context->getProcAddress("glSetFenceNV")); + d->FinishFenceNV = reinterpret_cast(context->getProcAddress("glFinishFenceNV")); + d->GetFenceivNV = reinterpret_cast(context->getProcAddress("glGetFenceivNV")); + d->TestFenceNV = reinterpret_cast(context->getProcAddress("glTestFenceNV")); + d->IsFenceNV = reinterpret_cast(context->getProcAddress("glIsFenceNV")); + d->GenFencesNV = reinterpret_cast(context->getProcAddress("glGenFencesNV")); + d->DeleteFencesNV = reinterpret_cast(context->getProcAddress("glDeleteFencesNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_fragment_program::QOpenGLExtension_NV_fragment_program() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_fragment_programPrivate)) +{ +} + +bool QOpenGLExtension_NV_fragment_program::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_fragment_program); + + d->GetProgramNamedParameterdvNV = reinterpret_cast(context->getProcAddress("glGetProgramNamedParameterdvNV")); + d->GetProgramNamedParameterfvNV = reinterpret_cast(context->getProcAddress("glGetProgramNamedParameterfvNV")); + d->ProgramNamedParameter4dvNV = reinterpret_cast(context->getProcAddress("glProgramNamedParameter4dvNV")); + d->ProgramNamedParameter4fvNV = reinterpret_cast(context->getProcAddress("glProgramNamedParameter4fvNV")); + d->ProgramNamedParameter4dNV = reinterpret_cast(context->getProcAddress("glProgramNamedParameter4dNV")); + d->ProgramNamedParameter4fNV = reinterpret_cast(context->getProcAddress("glProgramNamedParameter4fNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_framebuffer_multisample_coverage::QOpenGLExtension_NV_framebuffer_multisample_coverage() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_framebuffer_multisample_coveragePrivate)) +{ +} + +bool QOpenGLExtension_NV_framebuffer_multisample_coverage::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_framebuffer_multisample_coverage); + + d->RenderbufferStorageMultisampleCoverageNV = reinterpret_cast(context->getProcAddress("glRenderbufferStorageMultisampleCoverageNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_geometry_program4::QOpenGLExtension_NV_geometry_program4() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_geometry_program4Private)) +{ +} + +bool QOpenGLExtension_NV_geometry_program4::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_geometry_program4); + + d->FramebufferTextureFaceEXT = reinterpret_cast(context->getProcAddress("glFramebufferTextureFaceEXT")); + d->FramebufferTextureLayerEXT = reinterpret_cast(context->getProcAddress("glFramebufferTextureLayerEXT")); + d->FramebufferTextureEXT = reinterpret_cast(context->getProcAddress("glFramebufferTextureEXT")); + d->ProgramVertexLimitNV = reinterpret_cast(context->getProcAddress("glProgramVertexLimitNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_gpu_program4::QOpenGLExtension_NV_gpu_program4() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_gpu_program4Private)) +{ +} + +bool QOpenGLExtension_NV_gpu_program4::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_gpu_program4); + + d->GetProgramEnvParameterIuivNV = reinterpret_cast(context->getProcAddress("glGetProgramEnvParameterIuivNV")); + d->GetProgramEnvParameterIivNV = reinterpret_cast(context->getProcAddress("glGetProgramEnvParameterIivNV")); + d->GetProgramLocalParameterIuivNV = reinterpret_cast(context->getProcAddress("glGetProgramLocalParameterIuivNV")); + d->GetProgramLocalParameterIivNV = reinterpret_cast(context->getProcAddress("glGetProgramLocalParameterIivNV")); + d->ProgramEnvParametersI4uivNV = reinterpret_cast(context->getProcAddress("glProgramEnvParametersI4uivNV")); + d->ProgramEnvParameterI4uivNV = reinterpret_cast(context->getProcAddress("glProgramEnvParameterI4uivNV")); + d->ProgramEnvParameterI4uiNV = reinterpret_cast(context->getProcAddress("glProgramEnvParameterI4uiNV")); + d->ProgramEnvParametersI4ivNV = reinterpret_cast(context->getProcAddress("glProgramEnvParametersI4ivNV")); + d->ProgramEnvParameterI4ivNV = reinterpret_cast(context->getProcAddress("glProgramEnvParameterI4ivNV")); + d->ProgramEnvParameterI4iNV = reinterpret_cast(context->getProcAddress("glProgramEnvParameterI4iNV")); + d->ProgramLocalParametersI4uivNV = reinterpret_cast(context->getProcAddress("glProgramLocalParametersI4uivNV")); + d->ProgramLocalParameterI4uivNV = reinterpret_cast(context->getProcAddress("glProgramLocalParameterI4uivNV")); + d->ProgramLocalParameterI4uiNV = reinterpret_cast(context->getProcAddress("glProgramLocalParameterI4uiNV")); + d->ProgramLocalParametersI4ivNV = reinterpret_cast(context->getProcAddress("glProgramLocalParametersI4ivNV")); + d->ProgramLocalParameterI4ivNV = reinterpret_cast(context->getProcAddress("glProgramLocalParameterI4ivNV")); + d->ProgramLocalParameterI4iNV = reinterpret_cast(context->getProcAddress("glProgramLocalParameterI4iNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_gpu_program5::QOpenGLExtension_NV_gpu_program5() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_gpu_program5Private)) +{ +} + +bool QOpenGLExtension_NV_gpu_program5::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_gpu_program5); + + d->GetProgramSubroutineParameteruivNV = reinterpret_cast(context->getProcAddress("glGetProgramSubroutineParameteruivNV")); + d->ProgramSubroutineParametersuivNV = reinterpret_cast(context->getProcAddress("glProgramSubroutineParametersuivNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_gpu_shader5::QOpenGLExtension_NV_gpu_shader5() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_gpu_shader5Private)) +{ +} + +bool QOpenGLExtension_NV_gpu_shader5::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_gpu_shader5); + + d->ProgramUniform4ui64vNV = reinterpret_cast(context->getProcAddress("glProgramUniform4ui64vNV")); + d->ProgramUniform3ui64vNV = reinterpret_cast(context->getProcAddress("glProgramUniform3ui64vNV")); + d->ProgramUniform2ui64vNV = reinterpret_cast(context->getProcAddress("glProgramUniform2ui64vNV")); + d->ProgramUniform1ui64vNV = reinterpret_cast(context->getProcAddress("glProgramUniform1ui64vNV")); + d->ProgramUniform4ui64NV = reinterpret_cast(context->getProcAddress("glProgramUniform4ui64NV")); + d->ProgramUniform3ui64NV = reinterpret_cast(context->getProcAddress("glProgramUniform3ui64NV")); + d->ProgramUniform2ui64NV = reinterpret_cast(context->getProcAddress("glProgramUniform2ui64NV")); + d->ProgramUniform1ui64NV = reinterpret_cast(context->getProcAddress("glProgramUniform1ui64NV")); + d->ProgramUniform4i64vNV = reinterpret_cast(context->getProcAddress("glProgramUniform4i64vNV")); + d->ProgramUniform3i64vNV = reinterpret_cast(context->getProcAddress("glProgramUniform3i64vNV")); + d->ProgramUniform2i64vNV = reinterpret_cast(context->getProcAddress("glProgramUniform2i64vNV")); + d->ProgramUniform1i64vNV = reinterpret_cast(context->getProcAddress("glProgramUniform1i64vNV")); + d->ProgramUniform4i64NV = reinterpret_cast(context->getProcAddress("glProgramUniform4i64NV")); + d->ProgramUniform3i64NV = reinterpret_cast(context->getProcAddress("glProgramUniform3i64NV")); + d->ProgramUniform2i64NV = reinterpret_cast(context->getProcAddress("glProgramUniform2i64NV")); + d->ProgramUniform1i64NV = reinterpret_cast(context->getProcAddress("glProgramUniform1i64NV")); + d->GetUniformi64vNV = reinterpret_cast(context->getProcAddress("glGetUniformi64vNV")); + d->Uniform4ui64vNV = reinterpret_cast(context->getProcAddress("glUniform4ui64vNV")); + d->Uniform3ui64vNV = reinterpret_cast(context->getProcAddress("glUniform3ui64vNV")); + d->Uniform2ui64vNV = reinterpret_cast(context->getProcAddress("glUniform2ui64vNV")); + d->Uniform1ui64vNV = reinterpret_cast(context->getProcAddress("glUniform1ui64vNV")); + d->Uniform4ui64NV = reinterpret_cast(context->getProcAddress("glUniform4ui64NV")); + d->Uniform3ui64NV = reinterpret_cast(context->getProcAddress("glUniform3ui64NV")); + d->Uniform2ui64NV = reinterpret_cast(context->getProcAddress("glUniform2ui64NV")); + d->Uniform1ui64NV = reinterpret_cast(context->getProcAddress("glUniform1ui64NV")); + d->Uniform4i64vNV = reinterpret_cast(context->getProcAddress("glUniform4i64vNV")); + d->Uniform3i64vNV = reinterpret_cast(context->getProcAddress("glUniform3i64vNV")); + d->Uniform2i64vNV = reinterpret_cast(context->getProcAddress("glUniform2i64vNV")); + d->Uniform1i64vNV = reinterpret_cast(context->getProcAddress("glUniform1i64vNV")); + d->Uniform4i64NV = reinterpret_cast(context->getProcAddress("glUniform4i64NV")); + d->Uniform3i64NV = reinterpret_cast(context->getProcAddress("glUniform3i64NV")); + d->Uniform2i64NV = reinterpret_cast(context->getProcAddress("glUniform2i64NV")); + d->Uniform1i64NV = reinterpret_cast(context->getProcAddress("glUniform1i64NV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_half_float::QOpenGLExtension_NV_half_float() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_half_floatPrivate)) +{ +} + +bool QOpenGLExtension_NV_half_float::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_half_float); + + d->VertexAttribs4hvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs4hvNV")); + d->VertexAttribs3hvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs3hvNV")); + d->VertexAttribs2hvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs2hvNV")); + d->VertexAttribs1hvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs1hvNV")); + d->VertexAttrib4hvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib4hvNV")); + d->VertexAttrib4hNV = reinterpret_cast(context->getProcAddress("glVertexAttrib4hNV")); + d->VertexAttrib3hvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib3hvNV")); + d->VertexAttrib3hNV = reinterpret_cast(context->getProcAddress("glVertexAttrib3hNV")); + d->VertexAttrib2hvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib2hvNV")); + d->VertexAttrib2hNV = reinterpret_cast(context->getProcAddress("glVertexAttrib2hNV")); + d->VertexAttrib1hvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib1hvNV")); + d->VertexAttrib1hNV = reinterpret_cast(context->getProcAddress("glVertexAttrib1hNV")); + d->VertexWeighthvNV = reinterpret_cast(context->getProcAddress("glVertexWeighthvNV")); + d->VertexWeighthNV = reinterpret_cast(context->getProcAddress("glVertexWeighthNV")); + d->SecondaryColor3hvNV = reinterpret_cast(context->getProcAddress("glSecondaryColor3hvNV")); + d->SecondaryColor3hNV = reinterpret_cast(context->getProcAddress("glSecondaryColor3hNV")); + d->FogCoordhvNV = reinterpret_cast(context->getProcAddress("glFogCoordhvNV")); + d->FogCoordhNV = reinterpret_cast(context->getProcAddress("glFogCoordhNV")); + d->MultiTexCoord4hvNV = reinterpret_cast(context->getProcAddress("glMultiTexCoord4hvNV")); + d->MultiTexCoord4hNV = reinterpret_cast(context->getProcAddress("glMultiTexCoord4hNV")); + d->MultiTexCoord3hvNV = reinterpret_cast(context->getProcAddress("glMultiTexCoord3hvNV")); + d->MultiTexCoord3hNV = reinterpret_cast(context->getProcAddress("glMultiTexCoord3hNV")); + d->MultiTexCoord2hvNV = reinterpret_cast(context->getProcAddress("glMultiTexCoord2hvNV")); + d->MultiTexCoord2hNV = reinterpret_cast(context->getProcAddress("glMultiTexCoord2hNV")); + d->MultiTexCoord1hvNV = reinterpret_cast(context->getProcAddress("glMultiTexCoord1hvNV")); + d->MultiTexCoord1hNV = reinterpret_cast(context->getProcAddress("glMultiTexCoord1hNV")); + d->TexCoord4hvNV = reinterpret_cast(context->getProcAddress("glTexCoord4hvNV")); + d->TexCoord4hNV = reinterpret_cast(context->getProcAddress("glTexCoord4hNV")); + d->TexCoord3hvNV = reinterpret_cast(context->getProcAddress("glTexCoord3hvNV")); + d->TexCoord3hNV = reinterpret_cast(context->getProcAddress("glTexCoord3hNV")); + d->TexCoord2hvNV = reinterpret_cast(context->getProcAddress("glTexCoord2hvNV")); + d->TexCoord2hNV = reinterpret_cast(context->getProcAddress("glTexCoord2hNV")); + d->TexCoord1hvNV = reinterpret_cast(context->getProcAddress("glTexCoord1hvNV")); + d->TexCoord1hNV = reinterpret_cast(context->getProcAddress("glTexCoord1hNV")); + d->Color4hvNV = reinterpret_cast(context->getProcAddress("glColor4hvNV")); + d->Color4hNV = reinterpret_cast(context->getProcAddress("glColor4hNV")); + d->Color3hvNV = reinterpret_cast(context->getProcAddress("glColor3hvNV")); + d->Color3hNV = reinterpret_cast(context->getProcAddress("glColor3hNV")); + d->Normal3hvNV = reinterpret_cast(context->getProcAddress("glNormal3hvNV")); + d->Normal3hNV = reinterpret_cast(context->getProcAddress("glNormal3hNV")); + d->Vertex4hvNV = reinterpret_cast(context->getProcAddress("glVertex4hvNV")); + d->Vertex4hNV = reinterpret_cast(context->getProcAddress("glVertex4hNV")); + d->Vertex3hvNV = reinterpret_cast(context->getProcAddress("glVertex3hvNV")); + d->Vertex3hNV = reinterpret_cast(context->getProcAddress("glVertex3hNV")); + d->Vertex2hvNV = reinterpret_cast(context->getProcAddress("glVertex2hvNV")); + d->Vertex2hNV = reinterpret_cast(context->getProcAddress("glVertex2hNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_occlusion_query::QOpenGLExtension_NV_occlusion_query() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_occlusion_queryPrivate)) +{ +} + +bool QOpenGLExtension_NV_occlusion_query::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_occlusion_query); + + d->GetOcclusionQueryuivNV = reinterpret_cast(context->getProcAddress("glGetOcclusionQueryuivNV")); + d->GetOcclusionQueryivNV = reinterpret_cast(context->getProcAddress("glGetOcclusionQueryivNV")); + d->EndOcclusionQueryNV = reinterpret_cast(context->getProcAddress("glEndOcclusionQueryNV")); + d->BeginOcclusionQueryNV = reinterpret_cast(context->getProcAddress("glBeginOcclusionQueryNV")); + d->IsOcclusionQueryNV = reinterpret_cast(context->getProcAddress("glIsOcclusionQueryNV")); + d->DeleteOcclusionQueriesNV = reinterpret_cast(context->getProcAddress("glDeleteOcclusionQueriesNV")); + d->GenOcclusionQueriesNV = reinterpret_cast(context->getProcAddress("glGenOcclusionQueriesNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_parameter_buffer_object::QOpenGLExtension_NV_parameter_buffer_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_parameter_buffer_objectPrivate)) +{ +} + +bool QOpenGLExtension_NV_parameter_buffer_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_parameter_buffer_object); + + d->ProgramBufferParametersIuivNV = reinterpret_cast(context->getProcAddress("glProgramBufferParametersIuivNV")); + d->ProgramBufferParametersIivNV = reinterpret_cast(context->getProcAddress("glProgramBufferParametersIivNV")); + d->ProgramBufferParametersfvNV = reinterpret_cast(context->getProcAddress("glProgramBufferParametersfvNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_path_rendering::QOpenGLExtension_NV_path_rendering() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_path_renderingPrivate)) +{ +} + +bool QOpenGLExtension_NV_path_rendering::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_path_rendering); + + d->PointAlongPathNV = reinterpret_cast(context->getProcAddress("glPointAlongPathNV")); + d->GetPathLengthNV = reinterpret_cast(context->getProcAddress("glGetPathLengthNV")); + d->IsPointInStrokePathNV = reinterpret_cast(context->getProcAddress("glIsPointInStrokePathNV")); + d->IsPointInFillPathNV = reinterpret_cast(context->getProcAddress("glIsPointInFillPathNV")); + d->GetPathTexGenfvNV = reinterpret_cast(context->getProcAddress("glGetPathTexGenfvNV")); + d->GetPathTexGenivNV = reinterpret_cast(context->getProcAddress("glGetPathTexGenivNV")); + d->GetPathColorGenfvNV = reinterpret_cast(context->getProcAddress("glGetPathColorGenfvNV")); + d->GetPathColorGenivNV = reinterpret_cast(context->getProcAddress("glGetPathColorGenivNV")); + d->GetPathSpacingNV = reinterpret_cast(context->getProcAddress("glGetPathSpacingNV")); + d->GetPathMetricRangeNV = reinterpret_cast(context->getProcAddress("glGetPathMetricRangeNV")); + d->GetPathMetricsNV = reinterpret_cast(context->getProcAddress("glGetPathMetricsNV")); + d->GetPathDashArrayNV = reinterpret_cast(context->getProcAddress("glGetPathDashArrayNV")); + d->GetPathCoordsNV = reinterpret_cast(context->getProcAddress("glGetPathCoordsNV")); + d->GetPathCommandsNV = reinterpret_cast(context->getProcAddress("glGetPathCommandsNV")); + d->GetPathParameterfvNV = reinterpret_cast(context->getProcAddress("glGetPathParameterfvNV")); + d->GetPathParameterivNV = reinterpret_cast(context->getProcAddress("glGetPathParameterivNV")); + d->CoverStrokePathInstancedNV = reinterpret_cast(context->getProcAddress("glCoverStrokePathInstancedNV")); + d->CoverFillPathInstancedNV = reinterpret_cast(context->getProcAddress("glCoverFillPathInstancedNV")); + d->CoverStrokePathNV = reinterpret_cast(context->getProcAddress("glCoverStrokePathNV")); + d->CoverFillPathNV = reinterpret_cast(context->getProcAddress("glCoverFillPathNV")); + d->PathFogGenNV = reinterpret_cast(context->getProcAddress("glPathFogGenNV")); + d->PathTexGenNV = reinterpret_cast(context->getProcAddress("glPathTexGenNV")); + d->PathColorGenNV = reinterpret_cast(context->getProcAddress("glPathColorGenNV")); + d->PathCoverDepthFuncNV = reinterpret_cast(context->getProcAddress("glPathCoverDepthFuncNV")); + d->StencilStrokePathInstancedNV = reinterpret_cast(context->getProcAddress("glStencilStrokePathInstancedNV")); + d->StencilFillPathInstancedNV = reinterpret_cast(context->getProcAddress("glStencilFillPathInstancedNV")); + d->StencilStrokePathNV = reinterpret_cast(context->getProcAddress("glStencilStrokePathNV")); + d->StencilFillPathNV = reinterpret_cast(context->getProcAddress("glStencilFillPathNV")); + d->PathStencilDepthOffsetNV = reinterpret_cast(context->getProcAddress("glPathStencilDepthOffsetNV")); + d->PathStencilFuncNV = reinterpret_cast(context->getProcAddress("glPathStencilFuncNV")); + d->PathDashArrayNV = reinterpret_cast(context->getProcAddress("glPathDashArrayNV")); + d->PathParameterfNV = reinterpret_cast(context->getProcAddress("glPathParameterfNV")); + d->PathParameterfvNV = reinterpret_cast(context->getProcAddress("glPathParameterfvNV")); + d->PathParameteriNV = reinterpret_cast(context->getProcAddress("glPathParameteriNV")); + d->PathParameterivNV = reinterpret_cast(context->getProcAddress("glPathParameterivNV")); + d->TransformPathNV = reinterpret_cast(context->getProcAddress("glTransformPathNV")); + d->InterpolatePathsNV = reinterpret_cast(context->getProcAddress("glInterpolatePathsNV")); + d->CopyPathNV = reinterpret_cast(context->getProcAddress("glCopyPathNV")); + d->WeightPathsNV = reinterpret_cast(context->getProcAddress("glWeightPathsNV")); + d->PathGlyphRangeNV = reinterpret_cast(context->getProcAddress("glPathGlyphRangeNV")); + d->PathGlyphsNV = reinterpret_cast(context->getProcAddress("glPathGlyphsNV")); + d->PathStringNV = reinterpret_cast(context->getProcAddress("glPathStringNV")); + d->PathSubCoordsNV = reinterpret_cast(context->getProcAddress("glPathSubCoordsNV")); + d->PathSubCommandsNV = reinterpret_cast(context->getProcAddress("glPathSubCommandsNV")); + d->PathCoordsNV = reinterpret_cast(context->getProcAddress("glPathCoordsNV")); + d->PathCommandsNV = reinterpret_cast(context->getProcAddress("glPathCommandsNV")); + d->IsPathNV = reinterpret_cast(context->getProcAddress("glIsPathNV")); + d->DeletePathsNV = reinterpret_cast(context->getProcAddress("glDeletePathsNV")); + d->GenPathsNV = reinterpret_cast(context->getProcAddress("glGenPathsNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_pixel_data_range::QOpenGLExtension_NV_pixel_data_range() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_pixel_data_rangePrivate)) +{ +} + +bool QOpenGLExtension_NV_pixel_data_range::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_pixel_data_range); + + d->FlushPixelDataRangeNV = reinterpret_cast(context->getProcAddress("glFlushPixelDataRangeNV")); + d->PixelDataRangeNV = reinterpret_cast(context->getProcAddress("glPixelDataRangeNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_point_sprite::QOpenGLExtension_NV_point_sprite() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_point_spritePrivate)) +{ +} + +bool QOpenGLExtension_NV_point_sprite::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_point_sprite); + + d->PointParameterivNV = reinterpret_cast(context->getProcAddress("glPointParameterivNV")); + d->PointParameteriNV = reinterpret_cast(context->getProcAddress("glPointParameteriNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_present_video::QOpenGLExtension_NV_present_video() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_present_videoPrivate)) +{ +} + +bool QOpenGLExtension_NV_present_video::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_present_video); + + d->GetVideoui64vNV = reinterpret_cast(context->getProcAddress("glGetVideoui64vNV")); + d->GetVideoi64vNV = reinterpret_cast(context->getProcAddress("glGetVideoi64vNV")); + d->GetVideouivNV = reinterpret_cast(context->getProcAddress("glGetVideouivNV")); + d->GetVideoivNV = reinterpret_cast(context->getProcAddress("glGetVideoivNV")); + d->PresentFrameDualFillNV = reinterpret_cast(context->getProcAddress("glPresentFrameDualFillNV")); + d->PresentFrameKeyedNV = reinterpret_cast(context->getProcAddress("glPresentFrameKeyedNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_primitive_restart::QOpenGLExtension_NV_primitive_restart() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_primitive_restartPrivate)) +{ +} + +bool QOpenGLExtension_NV_primitive_restart::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_primitive_restart); + + d->PrimitiveRestartIndexNV = reinterpret_cast(context->getProcAddress("glPrimitiveRestartIndexNV")); + d->PrimitiveRestartNV = reinterpret_cast(context->getProcAddress("glPrimitiveRestartNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_register_combiners::QOpenGLExtension_NV_register_combiners() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_register_combinersPrivate)) +{ +} + +bool QOpenGLExtension_NV_register_combiners::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_register_combiners); + + d->GetFinalCombinerInputParameterivNV = reinterpret_cast(context->getProcAddress("glGetFinalCombinerInputParameterivNV")); + d->GetFinalCombinerInputParameterfvNV = reinterpret_cast(context->getProcAddress("glGetFinalCombinerInputParameterfvNV")); + d->GetCombinerOutputParameterivNV = reinterpret_cast(context->getProcAddress("glGetCombinerOutputParameterivNV")); + d->GetCombinerOutputParameterfvNV = reinterpret_cast(context->getProcAddress("glGetCombinerOutputParameterfvNV")); + d->GetCombinerInputParameterivNV = reinterpret_cast(context->getProcAddress("glGetCombinerInputParameterivNV")); + d->GetCombinerInputParameterfvNV = reinterpret_cast(context->getProcAddress("glGetCombinerInputParameterfvNV")); + d->FinalCombinerInputNV = reinterpret_cast(context->getProcAddress("glFinalCombinerInputNV")); + d->CombinerOutputNV = reinterpret_cast(context->getProcAddress("glCombinerOutputNV")); + d->CombinerInputNV = reinterpret_cast(context->getProcAddress("glCombinerInputNV")); + d->CombinerParameteriNV = reinterpret_cast(context->getProcAddress("glCombinerParameteriNV")); + d->CombinerParameterivNV = reinterpret_cast(context->getProcAddress("glCombinerParameterivNV")); + d->CombinerParameterfNV = reinterpret_cast(context->getProcAddress("glCombinerParameterfNV")); + d->CombinerParameterfvNV = reinterpret_cast(context->getProcAddress("glCombinerParameterfvNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_register_combiners2::QOpenGLExtension_NV_register_combiners2() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_register_combiners2Private)) +{ +} + +bool QOpenGLExtension_NV_register_combiners2::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_register_combiners2); + + d->GetCombinerStageParameterfvNV = reinterpret_cast(context->getProcAddress("glGetCombinerStageParameterfvNV")); + d->CombinerStageParameterfvNV = reinterpret_cast(context->getProcAddress("glCombinerStageParameterfvNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_shader_buffer_load::QOpenGLExtension_NV_shader_buffer_load() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_shader_buffer_loadPrivate)) +{ +} + +bool QOpenGLExtension_NV_shader_buffer_load::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_shader_buffer_load); + + d->ProgramUniformui64vNV = reinterpret_cast(context->getProcAddress("glProgramUniformui64vNV")); + d->ProgramUniformui64NV = reinterpret_cast(context->getProcAddress("glProgramUniformui64NV")); + d->GetUniformui64vNV = reinterpret_cast(context->getProcAddress("glGetUniformui64vNV")); + d->Uniformui64vNV = reinterpret_cast(context->getProcAddress("glUniformui64vNV")); + d->Uniformui64NV = reinterpret_cast(context->getProcAddress("glUniformui64NV")); + d->GetIntegerui64vNV = reinterpret_cast(context->getProcAddress("glGetIntegerui64vNV")); + d->GetNamedBufferParameterui64vNV = reinterpret_cast(context->getProcAddress("glGetNamedBufferParameterui64vNV")); + d->GetBufferParameterui64vNV = reinterpret_cast(context->getProcAddress("glGetBufferParameterui64vNV")); + d->IsNamedBufferResidentNV = reinterpret_cast(context->getProcAddress("glIsNamedBufferResidentNV")); + d->MakeNamedBufferNonResidentNV = reinterpret_cast(context->getProcAddress("glMakeNamedBufferNonResidentNV")); + d->MakeNamedBufferResidentNV = reinterpret_cast(context->getProcAddress("glMakeNamedBufferResidentNV")); + d->IsBufferResidentNV = reinterpret_cast(context->getProcAddress("glIsBufferResidentNV")); + d->MakeBufferNonResidentNV = reinterpret_cast(context->getProcAddress("glMakeBufferNonResidentNV")); + d->MakeBufferResidentNV = reinterpret_cast(context->getProcAddress("glMakeBufferResidentNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_texture_barrier::QOpenGLExtension_NV_texture_barrier() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_texture_barrierPrivate)) +{ +} + +bool QOpenGLExtension_NV_texture_barrier::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_texture_barrier); + + d->TextureBarrierNV = reinterpret_cast(context->getProcAddress("glTextureBarrierNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_texture_multisample::QOpenGLExtension_NV_texture_multisample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_texture_multisamplePrivate)) +{ +} + +bool QOpenGLExtension_NV_texture_multisample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_texture_multisample); + + d->TextureImage3DMultisampleCoverageNV = reinterpret_cast(context->getProcAddress("glTextureImage3DMultisampleCoverageNV")); + d->TextureImage2DMultisampleCoverageNV = reinterpret_cast(context->getProcAddress("glTextureImage2DMultisampleCoverageNV")); + d->TextureImage3DMultisampleNV = reinterpret_cast(context->getProcAddress("glTextureImage3DMultisampleNV")); + d->TextureImage2DMultisampleNV = reinterpret_cast(context->getProcAddress("glTextureImage2DMultisampleNV")); + d->TexImage3DMultisampleCoverageNV = reinterpret_cast(context->getProcAddress("glTexImage3DMultisampleCoverageNV")); + d->TexImage2DMultisampleCoverageNV = reinterpret_cast(context->getProcAddress("glTexImage2DMultisampleCoverageNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_transform_feedback::QOpenGLExtension_NV_transform_feedback() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_transform_feedbackPrivate)) +{ +} + +bool QOpenGLExtension_NV_transform_feedback::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_transform_feedback); + + d->TransformFeedbackStreamAttribsNV = reinterpret_cast(context->getProcAddress("glTransformFeedbackStreamAttribsNV")); + d->GetTransformFeedbackVaryingNV = reinterpret_cast(context->getProcAddress("glGetTransformFeedbackVaryingNV")); + d->GetActiveVaryingNV = reinterpret_cast(context->getProcAddress("glGetActiveVaryingNV")); + d->GetVaryingLocationNV = reinterpret_cast(context->getProcAddress("glGetVaryingLocationNV")); + d->ActiveVaryingNV = reinterpret_cast(context->getProcAddress("glActiveVaryingNV")); + d->TransformFeedbackVaryingsNV = reinterpret_cast(context->getProcAddress("glTransformFeedbackVaryingsNV")); + d->BindBufferBaseNV = reinterpret_cast(context->getProcAddress("glBindBufferBaseNV")); + d->BindBufferOffsetNV = reinterpret_cast(context->getProcAddress("glBindBufferOffsetNV")); + d->BindBufferRangeNV = reinterpret_cast(context->getProcAddress("glBindBufferRangeNV")); + d->TransformFeedbackAttribsNV = reinterpret_cast(context->getProcAddress("glTransformFeedbackAttribsNV")); + d->EndTransformFeedbackNV = reinterpret_cast(context->getProcAddress("glEndTransformFeedbackNV")); + d->BeginTransformFeedbackNV = reinterpret_cast(context->getProcAddress("glBeginTransformFeedbackNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_transform_feedback2::QOpenGLExtension_NV_transform_feedback2() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_transform_feedback2Private)) +{ +} + +bool QOpenGLExtension_NV_transform_feedback2::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_transform_feedback2); + + d->DrawTransformFeedbackNV = reinterpret_cast(context->getProcAddress("glDrawTransformFeedbackNV")); + d->ResumeTransformFeedbackNV = reinterpret_cast(context->getProcAddress("glResumeTransformFeedbackNV")); + d->PauseTransformFeedbackNV = reinterpret_cast(context->getProcAddress("glPauseTransformFeedbackNV")); + d->IsTransformFeedbackNV = reinterpret_cast(context->getProcAddress("glIsTransformFeedbackNV")); + d->GenTransformFeedbacksNV = reinterpret_cast(context->getProcAddress("glGenTransformFeedbacksNV")); + d->DeleteTransformFeedbacksNV = reinterpret_cast(context->getProcAddress("glDeleteTransformFeedbacksNV")); + d->BindTransformFeedbackNV = reinterpret_cast(context->getProcAddress("glBindTransformFeedbackNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_vdpau_interop::QOpenGLExtension_NV_vdpau_interop() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_vdpau_interopPrivate)) +{ +} + +bool QOpenGLExtension_NV_vdpau_interop::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_vdpau_interop); + + d->VDPAUUnmapSurfacesNV = reinterpret_cast(context->getProcAddress("glVDPAUUnmapSurfacesNV")); + d->VDPAUMapSurfacesNV = reinterpret_cast(context->getProcAddress("glVDPAUMapSurfacesNV")); + d->VDPAUSurfaceAccessNV = reinterpret_cast(context->getProcAddress("glVDPAUSurfaceAccessNV")); + d->VDPAUGetSurfaceivNV = reinterpret_cast(context->getProcAddress("glVDPAUGetSurfaceivNV")); + d->VDPAUUnregisterSurfaceNV = reinterpret_cast(context->getProcAddress("glVDPAUUnregisterSurfaceNV")); + d->VDPAUIsSurfaceNV = reinterpret_cast(context->getProcAddress("glVDPAUIsSurfaceNV")); + d->VDPAURegisterOutputSurfaceNV = reinterpret_cast(context->getProcAddress("glVDPAURegisterOutputSurfaceNV")); + d->VDPAURegisterVideoSurfaceNV = reinterpret_cast(context->getProcAddress("glVDPAURegisterVideoSurfaceNV")); + d->VDPAUFiniNV = reinterpret_cast(context->getProcAddress("glVDPAUFiniNV")); + d->VDPAUInitNV = reinterpret_cast(context->getProcAddress("glVDPAUInitNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_vertex_array_range::QOpenGLExtension_NV_vertex_array_range() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_vertex_array_rangePrivate)) +{ +} + +bool QOpenGLExtension_NV_vertex_array_range::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_vertex_array_range); + + d->VertexArrayRangeNV = reinterpret_cast(context->getProcAddress("glVertexArrayRangeNV")); + d->FlushVertexArrayRangeNV = reinterpret_cast(context->getProcAddress("glFlushVertexArrayRangeNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_vertex_attrib_integer_64bit::QOpenGLExtension_NV_vertex_attrib_integer_64bit() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_vertex_attrib_integer_64bitPrivate)) +{ +} + +bool QOpenGLExtension_NV_vertex_attrib_integer_64bit::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + + d->VertexAttribLFormatNV = reinterpret_cast(context->getProcAddress("glVertexAttribLFormatNV")); + d->GetVertexAttribLui64vNV = reinterpret_cast(context->getProcAddress("glGetVertexAttribLui64vNV")); + d->GetVertexAttribLi64vNV = reinterpret_cast(context->getProcAddress("glGetVertexAttribLi64vNV")); + d->VertexAttribL4ui64vNV = reinterpret_cast(context->getProcAddress("glVertexAttribL4ui64vNV")); + d->VertexAttribL3ui64vNV = reinterpret_cast(context->getProcAddress("glVertexAttribL3ui64vNV")); + d->VertexAttribL2ui64vNV = reinterpret_cast(context->getProcAddress("glVertexAttribL2ui64vNV")); + d->VertexAttribL1ui64vNV = reinterpret_cast(context->getProcAddress("glVertexAttribL1ui64vNV")); + d->VertexAttribL4ui64NV = reinterpret_cast(context->getProcAddress("glVertexAttribL4ui64NV")); + d->VertexAttribL3ui64NV = reinterpret_cast(context->getProcAddress("glVertexAttribL3ui64NV")); + d->VertexAttribL2ui64NV = reinterpret_cast(context->getProcAddress("glVertexAttribL2ui64NV")); + d->VertexAttribL1ui64NV = reinterpret_cast(context->getProcAddress("glVertexAttribL1ui64NV")); + d->VertexAttribL4i64vNV = reinterpret_cast(context->getProcAddress("glVertexAttribL4i64vNV")); + d->VertexAttribL3i64vNV = reinterpret_cast(context->getProcAddress("glVertexAttribL3i64vNV")); + d->VertexAttribL2i64vNV = reinterpret_cast(context->getProcAddress("glVertexAttribL2i64vNV")); + d->VertexAttribL1i64vNV = reinterpret_cast(context->getProcAddress("glVertexAttribL1i64vNV")); + d->VertexAttribL4i64NV = reinterpret_cast(context->getProcAddress("glVertexAttribL4i64NV")); + d->VertexAttribL3i64NV = reinterpret_cast(context->getProcAddress("glVertexAttribL3i64NV")); + d->VertexAttribL2i64NV = reinterpret_cast(context->getProcAddress("glVertexAttribL2i64NV")); + d->VertexAttribL1i64NV = reinterpret_cast(context->getProcAddress("glVertexAttribL1i64NV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_vertex_buffer_unified_memory::QOpenGLExtension_NV_vertex_buffer_unified_memory() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_vertex_buffer_unified_memoryPrivate)) +{ +} + +bool QOpenGLExtension_NV_vertex_buffer_unified_memory::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + + d->GetIntegerui64i_vNV = reinterpret_cast(context->getProcAddress("glGetIntegerui64i_vNV")); + d->VertexAttribIFormatNV = reinterpret_cast(context->getProcAddress("glVertexAttribIFormatNV")); + d->VertexAttribFormatNV = reinterpret_cast(context->getProcAddress("glVertexAttribFormatNV")); + d->FogCoordFormatNV = reinterpret_cast(context->getProcAddress("glFogCoordFormatNV")); + d->SecondaryColorFormatNV = reinterpret_cast(context->getProcAddress("glSecondaryColorFormatNV")); + d->EdgeFlagFormatNV = reinterpret_cast(context->getProcAddress("glEdgeFlagFormatNV")); + d->TexCoordFormatNV = reinterpret_cast(context->getProcAddress("glTexCoordFormatNV")); + d->IndexFormatNV = reinterpret_cast(context->getProcAddress("glIndexFormatNV")); + d->ColorFormatNV = reinterpret_cast(context->getProcAddress("glColorFormatNV")); + d->NormalFormatNV = reinterpret_cast(context->getProcAddress("glNormalFormatNV")); + d->VertexFormatNV = reinterpret_cast(context->getProcAddress("glVertexFormatNV")); + d->BufferAddressRangeNV = reinterpret_cast(context->getProcAddress("glBufferAddressRangeNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_vertex_program::QOpenGLExtension_NV_vertex_program() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_vertex_programPrivate)) +{ +} + +bool QOpenGLExtension_NV_vertex_program::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_vertex_program); + + d->VertexAttribs4ubvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs4ubvNV")); + d->VertexAttribs4svNV = reinterpret_cast(context->getProcAddress("glVertexAttribs4svNV")); + d->VertexAttribs4fvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs4fvNV")); + d->VertexAttribs4dvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs4dvNV")); + d->VertexAttribs3svNV = reinterpret_cast(context->getProcAddress("glVertexAttribs3svNV")); + d->VertexAttribs3fvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs3fvNV")); + d->VertexAttribs3dvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs3dvNV")); + d->VertexAttribs2svNV = reinterpret_cast(context->getProcAddress("glVertexAttribs2svNV")); + d->VertexAttribs2fvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs2fvNV")); + d->VertexAttribs2dvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs2dvNV")); + d->VertexAttribs1svNV = reinterpret_cast(context->getProcAddress("glVertexAttribs1svNV")); + d->VertexAttribs1fvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs1fvNV")); + d->VertexAttribs1dvNV = reinterpret_cast(context->getProcAddress("glVertexAttribs1dvNV")); + d->VertexAttrib4ubvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib4ubvNV")); + d->VertexAttrib4ubNV = reinterpret_cast(context->getProcAddress("glVertexAttrib4ubNV")); + d->VertexAttrib4svNV = reinterpret_cast(context->getProcAddress("glVertexAttrib4svNV")); + d->VertexAttrib4sNV = reinterpret_cast(context->getProcAddress("glVertexAttrib4sNV")); + d->VertexAttrib4fvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib4fvNV")); + d->VertexAttrib4fNV = reinterpret_cast(context->getProcAddress("glVertexAttrib4fNV")); + d->VertexAttrib4dvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib4dvNV")); + d->VertexAttrib4dNV = reinterpret_cast(context->getProcAddress("glVertexAttrib4dNV")); + d->VertexAttrib3svNV = reinterpret_cast(context->getProcAddress("glVertexAttrib3svNV")); + d->VertexAttrib3sNV = reinterpret_cast(context->getProcAddress("glVertexAttrib3sNV")); + d->VertexAttrib3fvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib3fvNV")); + d->VertexAttrib3fNV = reinterpret_cast(context->getProcAddress("glVertexAttrib3fNV")); + d->VertexAttrib3dvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib3dvNV")); + d->VertexAttrib3dNV = reinterpret_cast(context->getProcAddress("glVertexAttrib3dNV")); + d->VertexAttrib2svNV = reinterpret_cast(context->getProcAddress("glVertexAttrib2svNV")); + d->VertexAttrib2sNV = reinterpret_cast(context->getProcAddress("glVertexAttrib2sNV")); + d->VertexAttrib2fvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib2fvNV")); + d->VertexAttrib2fNV = reinterpret_cast(context->getProcAddress("glVertexAttrib2fNV")); + d->VertexAttrib2dvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib2dvNV")); + d->VertexAttrib2dNV = reinterpret_cast(context->getProcAddress("glVertexAttrib2dNV")); + d->VertexAttrib1svNV = reinterpret_cast(context->getProcAddress("glVertexAttrib1svNV")); + d->VertexAttrib1sNV = reinterpret_cast(context->getProcAddress("glVertexAttrib1sNV")); + d->VertexAttrib1fvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib1fvNV")); + d->VertexAttrib1fNV = reinterpret_cast(context->getProcAddress("glVertexAttrib1fNV")); + d->VertexAttrib1dvNV = reinterpret_cast(context->getProcAddress("glVertexAttrib1dvNV")); + d->VertexAttrib1dNV = reinterpret_cast(context->getProcAddress("glVertexAttrib1dNV")); + d->VertexAttribPointerNV = reinterpret_cast(context->getProcAddress("glVertexAttribPointerNV")); + d->TrackMatrixNV = reinterpret_cast(context->getProcAddress("glTrackMatrixNV")); + d->RequestResidentProgramsNV = reinterpret_cast(context->getProcAddress("glRequestResidentProgramsNV")); + d->ProgramParameters4fvNV = reinterpret_cast(context->getProcAddress("glProgramParameters4fvNV")); + d->ProgramParameters4dvNV = reinterpret_cast(context->getProcAddress("glProgramParameters4dvNV")); + d->ProgramParameter4fvNV = reinterpret_cast(context->getProcAddress("glProgramParameter4fvNV")); + d->ProgramParameter4fNV = reinterpret_cast(context->getProcAddress("glProgramParameter4fNV")); + d->ProgramParameter4dvNV = reinterpret_cast(context->getProcAddress("glProgramParameter4dvNV")); + d->ProgramParameter4dNV = reinterpret_cast(context->getProcAddress("glProgramParameter4dNV")); + d->LoadProgramNV = reinterpret_cast(context->getProcAddress("glLoadProgramNV")); + d->IsProgramNV = reinterpret_cast(context->getProcAddress("glIsProgramNV")); + d->GetVertexAttribPointervNV = reinterpret_cast(context->getProcAddress("glGetVertexAttribPointervNV")); + d->GetVertexAttribivNV = reinterpret_cast(context->getProcAddress("glGetVertexAttribivNV")); + d->GetVertexAttribfvNV = reinterpret_cast(context->getProcAddress("glGetVertexAttribfvNV")); + d->GetVertexAttribdvNV = reinterpret_cast(context->getProcAddress("glGetVertexAttribdvNV")); + d->GetTrackMatrixivNV = reinterpret_cast(context->getProcAddress("glGetTrackMatrixivNV")); + d->GetProgramStringNV = reinterpret_cast(context->getProcAddress("glGetProgramStringNV")); + d->GetProgramivNV = reinterpret_cast(context->getProcAddress("glGetProgramivNV")); + d->GetProgramParameterfvNV = reinterpret_cast(context->getProcAddress("glGetProgramParameterfvNV")); + d->GetProgramParameterdvNV = reinterpret_cast(context->getProcAddress("glGetProgramParameterdvNV")); + d->GenProgramsNV = reinterpret_cast(context->getProcAddress("glGenProgramsNV")); + d->ExecuteProgramNV = reinterpret_cast(context->getProcAddress("glExecuteProgramNV")); + d->DeleteProgramsNV = reinterpret_cast(context->getProcAddress("glDeleteProgramsNV")); + d->BindProgramNV = reinterpret_cast(context->getProcAddress("glBindProgramNV")); + d->AreProgramsResidentNV = reinterpret_cast(context->getProcAddress("glAreProgramsResidentNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_vertex_program4::QOpenGLExtension_NV_vertex_program4() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_vertex_program4Private)) +{ +} + +bool QOpenGLExtension_NV_vertex_program4::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_vertex_program4); + + d->GetVertexAttribIuivEXT = reinterpret_cast(context->getProcAddress("glGetVertexAttribIuivEXT")); + d->GetVertexAttribIivEXT = reinterpret_cast(context->getProcAddress("glGetVertexAttribIivEXT")); + d->VertexAttribIPointerEXT = reinterpret_cast(context->getProcAddress("glVertexAttribIPointerEXT")); + d->VertexAttribI4usvEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI4usvEXT")); + d->VertexAttribI4ubvEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI4ubvEXT")); + d->VertexAttribI4svEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI4svEXT")); + d->VertexAttribI4bvEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI4bvEXT")); + d->VertexAttribI4uivEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI4uivEXT")); + d->VertexAttribI3uivEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI3uivEXT")); + d->VertexAttribI2uivEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI2uivEXT")); + d->VertexAttribI1uivEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI1uivEXT")); + d->VertexAttribI4ivEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI4ivEXT")); + d->VertexAttribI3ivEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI3ivEXT")); + d->VertexAttribI2ivEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI2ivEXT")); + d->VertexAttribI1ivEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI1ivEXT")); + d->VertexAttribI4uiEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI4uiEXT")); + d->VertexAttribI3uiEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI3uiEXT")); + d->VertexAttribI2uiEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI2uiEXT")); + d->VertexAttribI1uiEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI1uiEXT")); + d->VertexAttribI4iEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI4iEXT")); + d->VertexAttribI3iEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI3iEXT")); + d->VertexAttribI2iEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI2iEXT")); + d->VertexAttribI1iEXT = reinterpret_cast(context->getProcAddress("glVertexAttribI1iEXT")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_NV_video_capture::QOpenGLExtension_NV_video_capture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_video_capturePrivate)) +{ +} + +bool QOpenGLExtension_NV_video_capture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_video_capture); + + d->VideoCaptureStreamParameterdvNV = reinterpret_cast(context->getProcAddress("glVideoCaptureStreamParameterdvNV")); + d->VideoCaptureStreamParameterfvNV = reinterpret_cast(context->getProcAddress("glVideoCaptureStreamParameterfvNV")); + d->VideoCaptureStreamParameterivNV = reinterpret_cast(context->getProcAddress("glVideoCaptureStreamParameterivNV")); + d->VideoCaptureNV = reinterpret_cast(context->getProcAddress("glVideoCaptureNV")); + d->GetVideoCaptureStreamdvNV = reinterpret_cast(context->getProcAddress("glGetVideoCaptureStreamdvNV")); + d->GetVideoCaptureStreamfvNV = reinterpret_cast(context->getProcAddress("glGetVideoCaptureStreamfvNV")); + d->GetVideoCaptureStreamivNV = reinterpret_cast(context->getProcAddress("glGetVideoCaptureStreamivNV")); + d->GetVideoCaptureivNV = reinterpret_cast(context->getProcAddress("glGetVideoCaptureivNV")); + d->EndVideoCaptureNV = reinterpret_cast(context->getProcAddress("glEndVideoCaptureNV")); + d->BindVideoCaptureStreamTextureNV = reinterpret_cast(context->getProcAddress("glBindVideoCaptureStreamTextureNV")); + d->BindVideoCaptureStreamBufferNV = reinterpret_cast(context->getProcAddress("glBindVideoCaptureStreamBufferNV")); + d->BeginVideoCaptureNV = reinterpret_cast(context->getProcAddress("glBeginVideoCaptureNV")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_PGI_misc_hints::QOpenGLExtension_PGI_misc_hints() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_PGI_misc_hintsPrivate)) +{ +} + +bool QOpenGLExtension_PGI_misc_hints::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_PGI_misc_hints); + + d->HintPGI = reinterpret_cast(context->getProcAddress("glHintPGI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIS_detail_texture::QOpenGLExtension_SGIS_detail_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIS_detail_texturePrivate)) +{ +} + +bool QOpenGLExtension_SGIS_detail_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIS_detail_texture); + + d->GetDetailTexFuncSGIS = reinterpret_cast(context->getProcAddress("glGetDetailTexFuncSGIS")); + d->DetailTexFuncSGIS = reinterpret_cast(context->getProcAddress("glDetailTexFuncSGIS")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIS_fog_function::QOpenGLExtension_SGIS_fog_function() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIS_fog_functionPrivate)) +{ +} + +bool QOpenGLExtension_SGIS_fog_function::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIS_fog_function); + + d->GetFogFuncSGIS = reinterpret_cast(context->getProcAddress("glGetFogFuncSGIS")); + d->FogFuncSGIS = reinterpret_cast(context->getProcAddress("glFogFuncSGIS")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIS_multisample::QOpenGLExtension_SGIS_multisample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIS_multisamplePrivate)) +{ +} + +bool QOpenGLExtension_SGIS_multisample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIS_multisample); + + d->SamplePatternSGIS = reinterpret_cast(context->getProcAddress("glSamplePatternSGIS")); + d->SampleMaskSGIS = reinterpret_cast(context->getProcAddress("glSampleMaskSGIS")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIS_pixel_texture::QOpenGLExtension_SGIS_pixel_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIS_pixel_texturePrivate)) +{ +} + +bool QOpenGLExtension_SGIS_pixel_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIS_pixel_texture); + + d->GetPixelTexGenParameterfvSGIS = reinterpret_cast(context->getProcAddress("glGetPixelTexGenParameterfvSGIS")); + d->GetPixelTexGenParameterivSGIS = reinterpret_cast(context->getProcAddress("glGetPixelTexGenParameterivSGIS")); + d->PixelTexGenParameterfvSGIS = reinterpret_cast(context->getProcAddress("glPixelTexGenParameterfvSGIS")); + d->PixelTexGenParameterfSGIS = reinterpret_cast(context->getProcAddress("glPixelTexGenParameterfSGIS")); + d->PixelTexGenParameterivSGIS = reinterpret_cast(context->getProcAddress("glPixelTexGenParameterivSGIS")); + d->PixelTexGenParameteriSGIS = reinterpret_cast(context->getProcAddress("glPixelTexGenParameteriSGIS")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIS_point_parameters::QOpenGLExtension_SGIS_point_parameters() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIS_point_parametersPrivate)) +{ +} + +bool QOpenGLExtension_SGIS_point_parameters::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIS_point_parameters); + + d->PointParameterfvSGIS = reinterpret_cast(context->getProcAddress("glPointParameterfvSGIS")); + d->PointParameterfSGIS = reinterpret_cast(context->getProcAddress("glPointParameterfSGIS")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIS_sharpen_texture::QOpenGLExtension_SGIS_sharpen_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIS_sharpen_texturePrivate)) +{ +} + +bool QOpenGLExtension_SGIS_sharpen_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIS_sharpen_texture); + + d->GetSharpenTexFuncSGIS = reinterpret_cast(context->getProcAddress("glGetSharpenTexFuncSGIS")); + d->SharpenTexFuncSGIS = reinterpret_cast(context->getProcAddress("glSharpenTexFuncSGIS")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIS_texture4D::QOpenGLExtension_SGIS_texture4D() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIS_texture4DPrivate)) +{ +} + +bool QOpenGLExtension_SGIS_texture4D::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIS_texture4D); + + d->TexSubImage4DSGIS = reinterpret_cast(context->getProcAddress("glTexSubImage4DSGIS")); + d->TexImage4DSGIS = reinterpret_cast(context->getProcAddress("glTexImage4DSGIS")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIS_texture_color_mask::QOpenGLExtension_SGIS_texture_color_mask() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIS_texture_color_maskPrivate)) +{ +} + +bool QOpenGLExtension_SGIS_texture_color_mask::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIS_texture_color_mask); + + d->TextureColorMaskSGIS = reinterpret_cast(context->getProcAddress("glTextureColorMaskSGIS")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIS_texture_filter4::QOpenGLExtension_SGIS_texture_filter4() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIS_texture_filter4Private)) +{ +} + +bool QOpenGLExtension_SGIS_texture_filter4::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIS_texture_filter4); + + d->TexFilterFuncSGIS = reinterpret_cast(context->getProcAddress("glTexFilterFuncSGIS")); + d->GetTexFilterFuncSGIS = reinterpret_cast(context->getProcAddress("glGetTexFilterFuncSGIS")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_async::QOpenGLExtension_SGIX_async() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_asyncPrivate)) +{ +} + +bool QOpenGLExtension_SGIX_async::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_async); + + d->IsAsyncMarkerSGIX = reinterpret_cast(context->getProcAddress("glIsAsyncMarkerSGIX")); + d->DeleteAsyncMarkersSGIX = reinterpret_cast(context->getProcAddress("glDeleteAsyncMarkersSGIX")); + d->GenAsyncMarkersSGIX = reinterpret_cast(context->getProcAddress("glGenAsyncMarkersSGIX")); + d->PollAsyncSGIX = reinterpret_cast(context->getProcAddress("glPollAsyncSGIX")); + d->FinishAsyncSGIX = reinterpret_cast(context->getProcAddress("glFinishAsyncSGIX")); + d->AsyncMarkerSGIX = reinterpret_cast(context->getProcAddress("glAsyncMarkerSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_flush_raster::QOpenGLExtension_SGIX_flush_raster() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_flush_rasterPrivate)) +{ +} + +bool QOpenGLExtension_SGIX_flush_raster::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_flush_raster); + + d->FlushRasterSGIX = reinterpret_cast(context->getProcAddress("glFlushRasterSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_fragment_lighting::QOpenGLExtension_SGIX_fragment_lighting() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_fragment_lightingPrivate)) +{ +} + +bool QOpenGLExtension_SGIX_fragment_lighting::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + + d->LightEnviSGIX = reinterpret_cast(context->getProcAddress("glLightEnviSGIX")); + d->GetFragmentMaterialivSGIX = reinterpret_cast(context->getProcAddress("glGetFragmentMaterialivSGIX")); + d->GetFragmentMaterialfvSGIX = reinterpret_cast(context->getProcAddress("glGetFragmentMaterialfvSGIX")); + d->GetFragmentLightivSGIX = reinterpret_cast(context->getProcAddress("glGetFragmentLightivSGIX")); + d->GetFragmentLightfvSGIX = reinterpret_cast(context->getProcAddress("glGetFragmentLightfvSGIX")); + d->FragmentMaterialivSGIX = reinterpret_cast(context->getProcAddress("glFragmentMaterialivSGIX")); + d->FragmentMaterialiSGIX = reinterpret_cast(context->getProcAddress("glFragmentMaterialiSGIX")); + d->FragmentMaterialfvSGIX = reinterpret_cast(context->getProcAddress("glFragmentMaterialfvSGIX")); + d->FragmentMaterialfSGIX = reinterpret_cast(context->getProcAddress("glFragmentMaterialfSGIX")); + d->FragmentLightModelivSGIX = reinterpret_cast(context->getProcAddress("glFragmentLightModelivSGIX")); + d->FragmentLightModeliSGIX = reinterpret_cast(context->getProcAddress("glFragmentLightModeliSGIX")); + d->FragmentLightModelfvSGIX = reinterpret_cast(context->getProcAddress("glFragmentLightModelfvSGIX")); + d->FragmentLightModelfSGIX = reinterpret_cast(context->getProcAddress("glFragmentLightModelfSGIX")); + d->FragmentLightivSGIX = reinterpret_cast(context->getProcAddress("glFragmentLightivSGIX")); + d->FragmentLightiSGIX = reinterpret_cast(context->getProcAddress("glFragmentLightiSGIX")); + d->FragmentLightfvSGIX = reinterpret_cast(context->getProcAddress("glFragmentLightfvSGIX")); + d->FragmentLightfSGIX = reinterpret_cast(context->getProcAddress("glFragmentLightfSGIX")); + d->FragmentColorMaterialSGIX = reinterpret_cast(context->getProcAddress("glFragmentColorMaterialSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_framezoom::QOpenGLExtension_SGIX_framezoom() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_framezoomPrivate)) +{ +} + +bool QOpenGLExtension_SGIX_framezoom::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_framezoom); + + d->FrameZoomSGIX = reinterpret_cast(context->getProcAddress("glFrameZoomSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_igloo_interface::QOpenGLExtension_SGIX_igloo_interface() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_igloo_interfacePrivate)) +{ +} + +bool QOpenGLExtension_SGIX_igloo_interface::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_igloo_interface); + + d->IglooInterfaceSGIX = reinterpret_cast(context->getProcAddress("glIglooInterfaceSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_instruments::QOpenGLExtension_SGIX_instruments() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_instrumentsPrivate)) +{ +} + +bool QOpenGLExtension_SGIX_instruments::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_instruments); + + d->StopInstrumentsSGIX = reinterpret_cast(context->getProcAddress("glStopInstrumentsSGIX")); + d->StartInstrumentsSGIX = reinterpret_cast(context->getProcAddress("glStartInstrumentsSGIX")); + d->ReadInstrumentsSGIX = reinterpret_cast(context->getProcAddress("glReadInstrumentsSGIX")); + d->PollInstrumentsSGIX = reinterpret_cast(context->getProcAddress("glPollInstrumentsSGIX")); + d->InstrumentsBufferSGIX = reinterpret_cast(context->getProcAddress("glInstrumentsBufferSGIX")); + d->GetInstrumentsSGIX = reinterpret_cast(context->getProcAddress("glGetInstrumentsSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_list_priority::QOpenGLExtension_SGIX_list_priority() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_list_priorityPrivate)) +{ +} + +bool QOpenGLExtension_SGIX_list_priority::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_list_priority); + + d->ListParameterivSGIX = reinterpret_cast(context->getProcAddress("glListParameterivSGIX")); + d->ListParameteriSGIX = reinterpret_cast(context->getProcAddress("glListParameteriSGIX")); + d->ListParameterfvSGIX = reinterpret_cast(context->getProcAddress("glListParameterfvSGIX")); + d->ListParameterfSGIX = reinterpret_cast(context->getProcAddress("glListParameterfSGIX")); + d->GetListParameterivSGIX = reinterpret_cast(context->getProcAddress("glGetListParameterivSGIX")); + d->GetListParameterfvSGIX = reinterpret_cast(context->getProcAddress("glGetListParameterfvSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_pixel_texture::QOpenGLExtension_SGIX_pixel_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_pixel_texturePrivate)) +{ +} + +bool QOpenGLExtension_SGIX_pixel_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_pixel_texture); + + d->PixelTexGenSGIX = reinterpret_cast(context->getProcAddress("glPixelTexGenSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_polynomial_ffd::QOpenGLExtension_SGIX_polynomial_ffd() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_polynomial_ffdPrivate)) +{ +} + +bool QOpenGLExtension_SGIX_polynomial_ffd::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_polynomial_ffd); + + d->LoadIdentityDeformationMapSGIX = reinterpret_cast(context->getProcAddress("glLoadIdentityDeformationMapSGIX")); + d->DeformSGIX = reinterpret_cast(context->getProcAddress("glDeformSGIX")); + d->DeformationMap3fSGIX = reinterpret_cast(context->getProcAddress("glDeformationMap3fSGIX")); + d->DeformationMap3dSGIX = reinterpret_cast(context->getProcAddress("glDeformationMap3dSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_reference_plane::QOpenGLExtension_SGIX_reference_plane() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_reference_planePrivate)) +{ +} + +bool QOpenGLExtension_SGIX_reference_plane::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_reference_plane); + + d->ReferencePlaneSGIX = reinterpret_cast(context->getProcAddress("glReferencePlaneSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_sprite::QOpenGLExtension_SGIX_sprite() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_spritePrivate)) +{ +} + +bool QOpenGLExtension_SGIX_sprite::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_sprite); + + d->SpriteParameterivSGIX = reinterpret_cast(context->getProcAddress("glSpriteParameterivSGIX")); + d->SpriteParameteriSGIX = reinterpret_cast(context->getProcAddress("glSpriteParameteriSGIX")); + d->SpriteParameterfvSGIX = reinterpret_cast(context->getProcAddress("glSpriteParameterfvSGIX")); + d->SpriteParameterfSGIX = reinterpret_cast(context->getProcAddress("glSpriteParameterfSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGIX_tag_sample_buffer::QOpenGLExtension_SGIX_tag_sample_buffer() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGIX_tag_sample_bufferPrivate)) +{ +} + +bool QOpenGLExtension_SGIX_tag_sample_buffer::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGIX_tag_sample_buffer); + + d->TagSampleBufferSGIX = reinterpret_cast(context->getProcAddress("glTagSampleBufferSGIX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SGI_color_table::QOpenGLExtension_SGI_color_table() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SGI_color_tablePrivate)) +{ +} + +bool QOpenGLExtension_SGI_color_table::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SGI_color_table); + + d->GetColorTableParameterivSGI = reinterpret_cast(context->getProcAddress("glGetColorTableParameterivSGI")); + d->GetColorTableParameterfvSGI = reinterpret_cast(context->getProcAddress("glGetColorTableParameterfvSGI")); + d->GetColorTableSGI = reinterpret_cast(context->getProcAddress("glGetColorTableSGI")); + d->CopyColorTableSGI = reinterpret_cast(context->getProcAddress("glCopyColorTableSGI")); + d->ColorTableParameterivSGI = reinterpret_cast(context->getProcAddress("glColorTableParameterivSGI")); + d->ColorTableParameterfvSGI = reinterpret_cast(context->getProcAddress("glColorTableParameterfvSGI")); + d->ColorTableSGI = reinterpret_cast(context->getProcAddress("glColorTableSGI")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SUNX_constant_data::QOpenGLExtension_SUNX_constant_data() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SUNX_constant_dataPrivate)) +{ +} + +bool QOpenGLExtension_SUNX_constant_data::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SUNX_constant_data); + + d->FinishTextureSUNX = reinterpret_cast(context->getProcAddress("glFinishTextureSUNX")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SUN_global_alpha::QOpenGLExtension_SUN_global_alpha() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SUN_global_alphaPrivate)) +{ +} + +bool QOpenGLExtension_SUN_global_alpha::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SUN_global_alpha); + + d->GlobalAlphaFactoruiSUN = reinterpret_cast(context->getProcAddress("glGlobalAlphaFactoruiSUN")); + d->GlobalAlphaFactorusSUN = reinterpret_cast(context->getProcAddress("glGlobalAlphaFactorusSUN")); + d->GlobalAlphaFactorubSUN = reinterpret_cast(context->getProcAddress("glGlobalAlphaFactorubSUN")); + d->GlobalAlphaFactordSUN = reinterpret_cast(context->getProcAddress("glGlobalAlphaFactordSUN")); + d->GlobalAlphaFactorfSUN = reinterpret_cast(context->getProcAddress("glGlobalAlphaFactorfSUN")); + d->GlobalAlphaFactoriSUN = reinterpret_cast(context->getProcAddress("glGlobalAlphaFactoriSUN")); + d->GlobalAlphaFactorsSUN = reinterpret_cast(context->getProcAddress("glGlobalAlphaFactorsSUN")); + d->GlobalAlphaFactorbSUN = reinterpret_cast(context->getProcAddress("glGlobalAlphaFactorbSUN")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SUN_mesh_array::QOpenGLExtension_SUN_mesh_array() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SUN_mesh_arrayPrivate)) +{ +} + +bool QOpenGLExtension_SUN_mesh_array::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SUN_mesh_array); + + d->DrawMeshArraysSUN = reinterpret_cast(context->getProcAddress("glDrawMeshArraysSUN")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SUN_triangle_list::QOpenGLExtension_SUN_triangle_list() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SUN_triangle_listPrivate)) +{ +} + +bool QOpenGLExtension_SUN_triangle_list::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SUN_triangle_list); + + d->ReplacementCodePointerSUN = reinterpret_cast(context->getProcAddress("glReplacementCodePointerSUN")); + d->ReplacementCodeubvSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeubvSUN")); + d->ReplacementCodeusvSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeusvSUN")); + d->ReplacementCodeuivSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuivSUN")); + d->ReplacementCodeubSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeubSUN")); + d->ReplacementCodeusSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeusSUN")); + d->ReplacementCodeuiSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiSUN")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + +QOpenGLExtension_SUN_vertex::QOpenGLExtension_SUN_vertex() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_SUN_vertexPrivate)) +{ +} + +bool QOpenGLExtension_SUN_vertex::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_SUN_vertex); + + d->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN")); + d->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN")); + d->ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN")); + d->ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN")); + d->ReplacementCodeuiTexCoord2fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiTexCoord2fVertex3fvSUN")); + d->ReplacementCodeuiTexCoord2fVertex3fSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiTexCoord2fVertex3fSUN")); + d->ReplacementCodeuiColor4fNormal3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fvSUN")); + d->ReplacementCodeuiColor4fNormal3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fSUN")); + d->ReplacementCodeuiNormal3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiNormal3fVertex3fvSUN")); + d->ReplacementCodeuiNormal3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiNormal3fVertex3fSUN")); + d->ReplacementCodeuiColor3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiColor3fVertex3fvSUN")); + d->ReplacementCodeuiColor3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiColor3fVertex3fSUN")); + d->ReplacementCodeuiColor4ubVertex3fvSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiColor4ubVertex3fvSUN")); + d->ReplacementCodeuiColor4ubVertex3fSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiColor4ubVertex3fSUN")); + d->ReplacementCodeuiVertex3fvSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiVertex3fvSUN")); + d->ReplacementCodeuiVertex3fSUN = reinterpret_cast(context->getProcAddress("glReplacementCodeuiVertex3fSUN")); + d->TexCoord4fColor4fNormal3fVertex4fvSUN = reinterpret_cast(context->getProcAddress("glTexCoord4fColor4fNormal3fVertex4fvSUN")); + d->TexCoord4fColor4fNormal3fVertex4fSUN = reinterpret_cast(context->getProcAddress("glTexCoord4fColor4fNormal3fVertex4fSUN")); + d->TexCoord2fColor4fNormal3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glTexCoord2fColor4fNormal3fVertex3fvSUN")); + d->TexCoord2fColor4fNormal3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glTexCoord2fColor4fNormal3fVertex3fSUN")); + d->TexCoord2fNormal3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glTexCoord2fNormal3fVertex3fvSUN")); + d->TexCoord2fNormal3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glTexCoord2fNormal3fVertex3fSUN")); + d->TexCoord2fColor3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glTexCoord2fColor3fVertex3fvSUN")); + d->TexCoord2fColor3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glTexCoord2fColor3fVertex3fSUN")); + d->TexCoord2fColor4ubVertex3fvSUN = reinterpret_cast(context->getProcAddress("glTexCoord2fColor4ubVertex3fvSUN")); + d->TexCoord2fColor4ubVertex3fSUN = reinterpret_cast(context->getProcAddress("glTexCoord2fColor4ubVertex3fSUN")); + d->TexCoord4fVertex4fvSUN = reinterpret_cast(context->getProcAddress("glTexCoord4fVertex4fvSUN")); + d->TexCoord4fVertex4fSUN = reinterpret_cast(context->getProcAddress("glTexCoord4fVertex4fSUN")); + d->TexCoord2fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glTexCoord2fVertex3fvSUN")); + d->TexCoord2fVertex3fSUN = reinterpret_cast(context->getProcAddress("glTexCoord2fVertex3fSUN")); + d->Color4fNormal3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glColor4fNormal3fVertex3fvSUN")); + d->Color4fNormal3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glColor4fNormal3fVertex3fSUN")); + d->Normal3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glNormal3fVertex3fvSUN")); + d->Normal3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glNormal3fVertex3fSUN")); + d->Color3fVertex3fvSUN = reinterpret_cast(context->getProcAddress("glColor3fVertex3fvSUN")); + d->Color3fVertex3fSUN = reinterpret_cast(context->getProcAddress("glColor3fVertex3fSUN")); + d->Color4ubVertex3fvSUN = reinterpret_cast(context->getProcAddress("glColor4ubVertex3fvSUN")); + d->Color4ubVertex3fSUN = reinterpret_cast(context->getProcAddress("glColor4ubVertex3fSUN")); + d->Color4ubVertex2fvSUN = reinterpret_cast(context->getProcAddress("glColor4ubVertex2fvSUN")); + d->Color4ubVertex2fSUN = reinterpret_cast(context->getProcAddress("glColor4ubVertex2fSUN")); + QAbstractOpenGLExtension::initializeOpenGLFunctions(); + return true; +} + + +#else + +QOpenGLExtension_OES_EGL_image::QOpenGLExtension_OES_EGL_image() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_OES_EGL_imagePrivate)) +{ +} + +bool QOpenGLExtension_OES_EGL_image::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_OES_EGL_image); + + d->EGLImageTargetTexture2DOES = (void (QOPENGLF_APIENTRYP)(GLenum target, GLeglImageOES image))context->getProcAddress("glEGLImageTargetTexture2DOES"); + d->EGLImageTargetRenderbufferStorageOES = (void (QOPENGLF_APIENTRYP)(GLenum target, GLeglImageOES image))context->getProcAddress("glEGLImageTargetRenderbufferStorageOESs"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_OES_get_program_binary::QOpenGLExtension_OES_get_program_binary() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_OES_get_program_binaryPrivate)) +{ +} + +bool QOpenGLExtension_OES_get_program_binary::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_OES_get_program_binary); + + d->GetProgramBinaryOES = (void (QOPENGLF_APIENTRYP)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary))context->getProcAddress("glGetProgramBinaryOES"); + d->ProgramBinaryOES = (void (QOPENGLF_APIENTRYP)(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length))context->getProcAddress("glProgramBinaryOES"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_OES_mapbuffer::QOpenGLExtension_OES_mapbuffer() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_OES_mapbufferPrivate)) +{ +} + +bool QOpenGLExtension_OES_mapbuffer::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_OES_mapbuffer); + + d->MapBufferOES = (void* (QOPENGLF_APIENTRYP)(GLenum target, GLenum access))context->getProcAddress("glMapBufferOES"); + d->UnmapBufferOES = (GLboolean (QOPENGLF_APIENTRYP)(GLenum target))context->getProcAddress("glUnmapBufferOES"); + d->GetBufferPointervOES = (void (QOPENGLF_APIENTRYP)(GLenum target, GLenum pname, GLvoid** params))context->getProcAddress("glGetBufferPointervOES"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_OES_texture_3D::QOpenGLExtension_OES_texture_3D() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_OES_texture_3DPrivate)) +{ +} + +bool QOpenGLExtension_OES_texture_3D::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_OES_texture_3D); + + d->TexImage3DOES = (void (QOPENGLF_APIENTRYP)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels))context->getProcAddress("glTexImage3DOES"); + d->TexSubImage3DOES = (void (QOPENGLF_APIENTRYP)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels))context->getProcAddress("glTexSubImage3DOES"); + d->CopyTexSubImage3DOES = (void (QOPENGLF_APIENTRYP)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height))context->getProcAddress("glCopyTexSubImage3DOES"); + d->CompressedTexImage3DOES = (void (QOPENGLF_APIENTRYP)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data))context->getProcAddress("glCompressedTexImage3DOES"); + d->CompressedTexSubImage3DOES = (void (QOPENGLF_APIENTRYP)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data))context->getProcAddress("glCompressedTexSubImage3DOES"); + d->FramebufferTexture3DOES = (void (QOPENGLF_APIENTRYP)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset))context->getProcAddress("glFramebufferTexture3DOES"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_OES_vertex_array_object::QOpenGLExtension_OES_vertex_array_object() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_OES_vertex_array_objectPrivate)) +{ +} + +bool QOpenGLExtension_OES_vertex_array_object::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_OES_vertex_array_object); + + d->BindVertexArrayOES = (void (QOPENGLF_APIENTRYP)(GLuint array))context->getProcAddress("glBindVertexArrayOES"); + d->DeleteVertexArraysOES = (void (QOPENGLF_APIENTRYP)(GLsizei n, const GLuint *arrays))context->getProcAddress("glDeleteVertexArraysOES"); + d->GenVertexArraysOES = (void (QOPENGLF_APIENTRYP)(GLsizei n, GLuint *arrays))context->getProcAddress("glGenVertexArraysOES"); + d->IsVertexArrayOES = (GLboolean (QOPENGLF_APIENTRYP)(GLuint array))context->getProcAddress("glIsVertexArrayOES"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_AMD_performance_monitor::QOpenGLExtension_AMD_performance_monitor() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_AMD_performance_monitorPrivate)) +{ +} + +bool QOpenGLExtension_AMD_performance_monitor::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_AMD_performance_monitor); + + d->GetPerfMonitorGroupsAMD = (void (QOPENGLF_APIENTRYP)(GLint *numGroups, GLsizei groupsSize, GLuint *groups))context->getProcAddress("glGetPerfMonitorGroupsAMD"); + d->GetPerfMonitorCountersAMD = (void (QOPENGLF_APIENTRYP)(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters))context->getProcAddress("glGetPerfMonitorCountersAMD"); + d->GetPerfMonitorGroupStringAMD = (void (QOPENGLF_APIENTRYP)(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString))context->getProcAddress("glGetPerfMonitorGroupStringAMD"); + d->GetPerfMonitorCounterStringAMD = (void (QOPENGLF_APIENTRYP)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString))context->getProcAddress("glGetPerfMonitorCounterStringAMD"); + d->GetPerfMonitorCounterInfoAMD = (void (QOPENGLF_APIENTRYP)(GLuint group, GLuint counter, GLenum pname, GLvoid *data))context->getProcAddress("glGetPerfMonitorCounterInfoAMD"); + d->GenPerfMonitorsAMD = (void (QOPENGLF_APIENTRYP)(GLsizei n, GLuint *monitors))context->getProcAddress("glGenPerfMonitorsAMD"); + d->DeletePerfMonitorsAMD = (void (QOPENGLF_APIENTRYP)(GLsizei n, GLuint *monitors))context->getProcAddress("glDeletePerfMonitorsAMD"); + d->SelectPerfMonitorCountersAMD = (void (QOPENGLF_APIENTRYP)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList))context->getProcAddress("glSelectPerfMonitorCountersAMD"); + d->BeginPerfMonitorAMD = (void (QOPENGLF_APIENTRYP)(GLuint monitor))context->getProcAddress("glBeginPerfMonitorAMD"); + d->EndPerfMonitorAMD = (void (QOPENGLF_APIENTRYP )(GLuint monitor))context->getProcAddress("glEndPerfMonitorAMD"); + d->GetPerfMonitorCounterDataAMD = (void (QOPENGLF_APIENTRYP)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten))context->getProcAddress("glGetPerfMonitorCounterDataAMD"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_ANGLE_framebuffer_blit::QOpenGLExtension_ANGLE_framebuffer_blit() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ANGLE_framebuffer_blitPrivate)) +{ +} + +bool QOpenGLExtension_ANGLE_framebuffer_blit::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ANGLE_framebuffer_blit); + + d->BlitFramebufferANGLE = (void (QOPENGLF_APIENTRYP)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter))context->getProcAddress("glBlitFramebufferANGLE"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_ANGLE_framebuffer_multisample::QOpenGLExtension_ANGLE_framebuffer_multisample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ANGLE_framebuffer_multisamplePrivate)) +{ +} + +bool QOpenGLExtension_ANGLE_framebuffer_multisample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ANGLE_framebuffer_multisample); + + d->RenderbufferStorageMultisampleANGLE = (void (QOPENGLF_APIENTRYP)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height))context->getProcAddress("glRenderbufferStorageMultisampleANGLE"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_ANGLE_instanced_arrays::QOpenGLExtension_ANGLE_instanced_arrays() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ANGLE_instanced_arraysPrivate)) +{ +} + +bool QOpenGLExtension_ANGLE_instanced_arrays::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ANGLE_instanced_arrays); + + d->DrawArraysInstancedANGLE = (void (QOPENGLF_APIENTRYP)(GLenum mode, GLint first, GLsizei count, GLsizei primcount))context->getProcAddress("glDrawArraysInstancedANGLE"); + d->DrawElementsInstancedANGLE = (void (QOPENGLF_APIENTRYP)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount))context->getProcAddress("glDrawElementsInstancedANGLE"); + d->VertexAttribDivisorANGLE = (void (QOPENGLF_APIENTRYP)(GLuint index, GLuint divisor))context->getProcAddress("glVertexAttribDivisorANGLE"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_ANGLE_translated_shader_source::QOpenGLExtension_ANGLE_translated_shader_source() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_ANGLE_translated_shader_sourcePrivate)) +{ +} + +bool QOpenGLExtension_ANGLE_translated_shader_source::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_ANGLE_translated_shader_source); + + d->GetTranslatedShaderSourceANGLE = (void (QOPENGLF_APIENTRYP)(GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source))context->getProcAddress("glGetTranslatedShaderSourceANGLE"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_APPLE_framebuffer_multisample::QOpenGLExtension_APPLE_framebuffer_multisample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_APPLE_framebuffer_multisamplePrivate)) +{ +} + +bool QOpenGLExtension_APPLE_framebuffer_multisample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_APPLE_framebuffer_multisample); + + d->RenderbufferStorageMultisampleAPPLE = (void (QOPENGLF_APIENTRYP)(GLenum, GLsizei, GLenum, GLsizei, GLsizei))context->getProcAddress("glRenderbufferStorageMultisampleAPPLE"); + d->ResolveMultisampleFramebufferAPPLE = (void (QOPENGLF_APIENTRYP)(void))context->getProcAddress("glResolveMultisampleFramebufferAPPLE"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_EXT_debug_label::QOpenGLExtension_EXT_debug_label() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_debug_labelPrivate)) +{ +} + +bool QOpenGLExtension_EXT_debug_label::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_debug_label); + + d->LabelObjectEXT = (void (QOPENGLF_APIENTRYP)(GLenum type, GLuint object, GLsizei length, const GLchar *label))context->getProcAddress("glLabelObjectEXT"); + d->GetObjectLabelEXT = (void (QOPENGLF_APIENTRYP)(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label))context->getProcAddress("glGetObjectLabelEXT"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_EXT_debug_marker::QOpenGLExtension_EXT_debug_marker() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_debug_markerPrivate)) +{ +} + +bool QOpenGLExtension_EXT_debug_marker::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_debug_marker); + + d->InsertEventMarkerEXT = (void (QOPENGLF_APIENTRYP)(GLsizei length, const GLchar *marker))context->getProcAddress("glInsertEventMarkerEXT"); + d->PushGroupMarkerEXT = (void (QOPENGLF_APIENTRYP)(GLsizei length, const GLchar *marker))context->getProcAddress("glPushGroupMarkerEXT"); + d->PopGroupMarkerEXT = (void (QOPENGLF_APIENTRYP)(void))context->getProcAddress("glPopGroupMarkerEXT"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_EXT_discard_framebuffer::QOpenGLExtension_EXT_discard_framebuffer() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_discard_framebufferPrivate)) +{ +} + +bool QOpenGLExtension_EXT_discard_framebuffer::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_discard_framebuffer); + + d->DiscardFramebufferEXT = (void (QOPENGLF_APIENTRYP)(GLenum target, GLsizei numAttachments, const GLenum *attachments))context->getProcAddress("glDiscardFramebufferEXT"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_EXT_multisampled_render_to_texture::QOpenGLExtension_EXT_multisampled_render_to_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_multisampled_render_to_texturePrivate)) +{ +} + +bool QOpenGLExtension_EXT_multisampled_render_to_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_multisampled_render_to_texture); + + d->RenderbufferStorageMultisampleEXT = (void (QOPENGLF_APIENTRYP)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height))context->getProcAddress("glRenderbufferStorageMultisampleEXT"); + d->FramebufferTexture2DMultisampleEXT = (void (QOPENGLF_APIENTRYP)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples))context->getProcAddress("glFramebufferTexture2DMultisampleEXT"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_EXT_multi_draw_arrays::QOpenGLExtension_EXT_multi_draw_arrays() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_multi_draw_arraysPrivate)) +{ +} + +bool QOpenGLExtension_EXT_multi_draw_arrays::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_multi_draw_arrays); + + d->MultiDrawArraysEXT = (void (QOPENGLF_APIENTRYP)(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount))context->getProcAddress("glMultiDrawArraysEXT"); + d->MultiDrawElementsEXT = (void (QOPENGLF_APIENTRYP)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount))context->getProcAddress("glMultiDrawElementsEXT"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_EXT_occlusion_query_boolean::QOpenGLExtension_EXT_occlusion_query_boolean() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_occlusion_query_booleanPrivate)) +{ +} + +bool QOpenGLExtension_EXT_occlusion_query_boolean::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_occlusion_query_boolean); + + d->GenQueriesEXT = (void (QOPENGLF_APIENTRYP)(GLsizei n, GLuint *ids))context->getProcAddress("glGenQueriesEXT"); + d->DeleteQueriesEXT = (void (QOPENGLF_APIENTRYP)(GLsizei n, const GLuint *ids))context->getProcAddress("glDeleteQueriesEXT"); + d->IsQueryEXT = (GLboolean (QOPENGLF_APIENTRYP)(GLuint id))context->getProcAddress("glIsQueryEXT"); + d->BeginQueryEXT = (void (QOPENGLF_APIENTRYP)(GLenum target, GLuint id))context->getProcAddress("glBeginQueryEXT"); + d->EndQueryEXT = (void (QOPENGLF_APIENTRYP)(GLenum target))context->getProcAddress("glEndQueryEXT"); + d->GetQueryivEXT = (void (QOPENGLF_APIENTRYP)(GLenum target, GLenum pname, GLint *params))context->getProcAddress("glGetQueryivEXT"); + d->GetQueryObjectuivEXT = (void (QOPENGLF_APIENTRYP)(GLuint id, GLenum pname, GLuint *params))context->getProcAddress("glGetQueryObjectuivEXT"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_EXT_robustness::QOpenGLExtension_EXT_robustness() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_robustnessPrivate)) +{ +} + +bool QOpenGLExtension_EXT_robustness::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_robustness); + + d->GetGraphicsResetStatusEXT = (GLenum (QOPENGLF_APIENTRYP)(void))context->getProcAddress("glGetGraphicsResetStatusEXT"); + d->ReadnPixelsEXT = (void (QOPENGLF_APIENTRYP)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data))context->getProcAddress("glReadnPixelsEXT"); + d->GetnUniformfvEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei bufSize, float *params))context->getProcAddress("glGetnUniformfvEXT"); + d->GetnUniformivEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei bufSize, GLint *params))context->getProcAddress("glGetnUniformivEXT"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_EXT_separate_shader_objects::QOpenGLExtension_EXT_separate_shader_objects() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_separate_shader_objectsPrivate)) +{ +} + +bool QOpenGLExtension_EXT_separate_shader_objects::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + + d->UseProgramStagesEXT = (void (QOPENGLF_APIENTRYP)(GLuint pipeline, GLbitfield stages, GLuint program))context->getProcAddress("glUseProgramStagesEXT"); + d->ActiveShaderProgramEXT = (void (QOPENGLF_APIENTRYP)(GLuint pipeline, GLuint program))context->getProcAddress("glActiveShaderProgramEXT"); + d->CreateShaderProgramvEXT = (GLuint (QOPENGLF_APIENTRYP)(GLenum type, GLsizei count, const GLchar **strings))context->getProcAddress("glCreateShaderProgramvEXT"); + d->BindProgramPipelineEXT = (void (QOPENGLF_APIENTRYP)(GLuint pipeline))context->getProcAddress("glBindProgramPipelineEXT"); + d->DeleteProgramPipelinesEXT = (void (QOPENGLF_APIENTRYP)(GLsizei n, const GLuint *pipelines))context->getProcAddress("glDeleteProgramPipelinesEXT"); + d->GenProgramPipelinesEXT = (void (QOPENGLF_APIENTRYP)(GLsizei n, GLuint *pipelines))context->getProcAddress("glGenProgramPipelinesEXT"); + d->IsProgramPipelineEXT = (GLboolean (QOPENGLF_APIENTRYP)(GLuint pipeline))context->getProcAddress("glIsProgramPipelineEXT"); + d->ProgramParameteriEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLenum pname, GLint value))context->getProcAddress("glProgramParameteriEXT"); + d->GetProgramPipelineivEXT = (void (QOPENGLF_APIENTRYP)(GLuint pipeline, GLenum pname, GLint *params))context->getProcAddress("glGetProgramPipelineivEXT"); + d->ProgramUniform1iEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLint x))context->getProcAddress("glProgramUniform1iEXT"); + d->ProgramUniform2iEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLint x, GLint y))context->getProcAddress("glProgramUniform2iEXT"); + d->ProgramUniform3iEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLint x, GLint y, GLint z))context->getProcAddress("glProgramUniform3iEXT"); + d->ProgramUniform4iEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w))context->getProcAddress("glProgramUniform4iEXT"); + d->ProgramUniform1fEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLfloat x))context->getProcAddress("glProgramUniform1fEXT"); + d->ProgramUniform2fEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLfloat x, GLfloat y))context->getProcAddress("glProgramUniform2fEXT"); + d->ProgramUniform3fEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z))context->getProcAddress("glProgramUniform3fEXT"); + d->ProgramUniform4fEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w))context->getProcAddress("glProgramUniform4fEXT"); + d->ProgramUniform1ivEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, const GLint *value))context->getProcAddress("glProgramUniform1ivEXT"); + d->ProgramUniform2ivEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, const GLint *value))context->getProcAddress("glProgramUniform2ivEXT"); + d->ProgramUniform3ivEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, const GLint *value))context->getProcAddress("glProgramUniform3ivEXT"); + d->ProgramUniform4ivEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, const GLint *value))context->getProcAddress("glProgramUniform4ivEXT"); + d->ProgramUniform1fvEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, const GLfloat *value))context->getProcAddress("glProgramUniform1fvEXT"); + d->ProgramUniform2fvEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, const GLfloat *value))context->getProcAddress("glProgramUniform2fvEXT"); + d->ProgramUniform3fvEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, const GLfloat *value))context->getProcAddress("glProgramUniform3fvEXT"); + d->ProgramUniform4fvEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, const GLfloat *value))context->getProcAddress("glProgramUniform4fvEXT"); + d->ProgramUniformMatrix2fvEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))context->getProcAddress("glProgramUniformMatrix2fvEXT"); + d->ProgramUniformMatrix3fvEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))context->getProcAddress("glProgramUniformMatrix3fvEXT"); + d->ProgramUniformMatrix4fvEXT = (void (QOPENGLF_APIENTRYP)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))context->getProcAddress("glProgramUniformMatrix4fvEXT"); + d->ValidateProgramPipelineEXT = (void (QOPENGLF_APIENTRYP)(GLuint pipeline))context->getProcAddress("glValidateProgramPipelineEXT"); + d->GetProgramPipelineInfoLogEXT = (void (QOPENGLF_APIENTRYP)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog))context->getProcAddress("glGetProgramPipelineInfoLogEXT"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_EXT_texture_storage::QOpenGLExtension_EXT_texture_storage() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_EXT_texture_storagePrivate)) +{ +} + +bool QOpenGLExtension_EXT_texture_storage::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_EXT_texture_storage); + + d->TexStorage1DEXT = (void (QOPENGLF_APIENTRYP)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width))context->getProcAddress("glTexStorage1DEXT"); + d->TexStorage2DEXT = (void (QOPENGLF_APIENTRYP)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height))context->getProcAddress("glTexStorage2DEXT"); + d->TexStorage3DEXT = (void (QOPENGLF_APIENTRYP)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth))context->getProcAddress("glTexStorage3DEXT"); + d->TextureStorage1DEXT = (void (QOPENGLF_APIENTRYP)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width))context->getProcAddress("glTextureStorage1DEXT"); + d->TextureStorage2DEXT = (void (QOPENGLF_APIENTRYP)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height))context->getProcAddress("glTextureStorage2DEXT"); + d->TextureStorage3DEXT = (void (QOPENGLF_APIENTRYP)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth))context->getProcAddress("glTextureStorage3DEXT"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_IMG_multisampled_render_to_texture::QOpenGLExtension_IMG_multisampled_render_to_texture() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_IMG_multisampled_render_to_texturePrivate)) +{ +} + +bool QOpenGLExtension_IMG_multisampled_render_to_texture::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_IMG_multisampled_render_to_texture); + + d->RenderbufferStorageMultisampleIMG = (void (QOPENGLF_APIENTRYP)(GLenum, GLsizei, GLenum, GLsizei, GLsizei))context->getProcAddress("glRenderbufferStorageMultisampleIMG"); + d->FramebufferTexture2DMultisampleIMG = (void (QOPENGLF_APIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei))context->getProcAddress("glFramebufferTexture2DMultisampleIMG"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_NV_coverage_sample::QOpenGLExtension_NV_coverage_sample() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_coverage_samplePrivate)) +{ +} + +bool QOpenGLExtension_NV_coverage_sample::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_coverage_sample); + + d->CoverageMaskNV = (void (QOPENGLF_APIENTRYP)(GLboolean mask))context->getProcAddress("glCoverageMaskNV"); + d->CoverageOperationNV = (void (QOPENGLF_APIENTRYP)(GLenum operation))context->getProcAddress("glCoverageOperationNV"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_NV_draw_buffers::QOpenGLExtension_NV_draw_buffers() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_draw_buffersPrivate)) +{ +} + +bool QOpenGLExtension_NV_draw_buffers::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_draw_buffers); + + d->DrawBuffersNV = (void (QOPENGLF_APIENTRYP)(GLsizei n, const GLenum *bufs))context->getProcAddress("glDrawBuffersNV"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_NV_fence::QOpenGLExtension_NV_fence() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_fencePrivate)) +{ +} + +bool QOpenGLExtension_NV_fence::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_fence); + + d->DeleteFencesNV = (void (QOPENGLF_APIENTRYP)(GLsizei n, const GLuint *fences))context->getProcAddress("glDeleteFencesNV"); + d->GenFencesNV = (void (QOPENGLF_APIENTRYP)(GLsizei n, GLuint *fences))context->getProcAddress("glGenFencesNV"); + d->IsFenceNV = (GLboolean (QOPENGLF_APIENTRYP)(GLuint fence))context->getProcAddress("glIsFenceNV"); + d->TestFenceNV = (GLboolean (QOPENGLF_APIENTRYP)(GLuint fence))context->getProcAddress("glTestFenceNV"); + d->GetFenceivNV = (void (QOPENGLF_APIENTRYP)(GLuint fence, GLenum pname, GLint *params))context->getProcAddress("glGetFenceivNV"); + d->FinishFenceNV = (void (QOPENGLF_APIENTRYP)(GLuint fence))context->getProcAddress("glFinishFenceNV"); + d->SetFenceNV = (void (QOPENGLF_APIENTRYP)(GLuint fence, GLenum condition))context->getProcAddress("glSetFenceNV"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_NV_read_buffer::QOpenGLExtension_NV_read_buffer() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_NV_read_bufferPrivate)) +{ +} + +bool QOpenGLExtension_NV_read_buffer::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_NV_read_buffer); + + d->ReadBufferNV = (void (QOPENGLF_APIENTRYP)(GLenum mode))context->getProcAddress("glReadBufferNV"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_QCOM_alpha_test::QOpenGLExtension_QCOM_alpha_test() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_QCOM_alpha_testPrivate)) +{ +} + +bool QOpenGLExtension_QCOM_alpha_test::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_QCOM_alpha_test); + + d->AlphaFuncQCOM = (void (QOPENGLF_APIENTRYP )(GLenum func, GLclampf ref))context->getProcAddress("glAlphaFuncQCOM"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_QCOM_driver_control::QOpenGLExtension_QCOM_driver_control() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_QCOM_driver_controlPrivate)) +{ +} + +bool QOpenGLExtension_QCOM_driver_control::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_QCOM_driver_control); + + d->GetDriverControlsQCOM = (void (QOPENGLF_APIENTRYP)(GLint *num, GLsizei size, GLuint *driverControls))context->getProcAddress("glGetDriverControlsQCOM"); + d->GetDriverControlStringQCOM = (void (QOPENGLF_APIENTRYP)(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString))context->getProcAddress("glGetDriverControlStringQCOM"); + d->EnableDriverControlQCOM = (void (QOPENGLF_APIENTRYP)(GLuint driverControl))context->getProcAddress("glEnableDriverControlQCOM"); + d->DisableDriverControlQCOM = (void (QOPENGLF_APIENTRYP)(GLuint driverControl))context->getProcAddress("glDisableDriverControlQCOM"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_QCOM_extended_get::QOpenGLExtension_QCOM_extended_get() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_QCOM_extended_getPrivate)) +{ +} + +bool QOpenGLExtension_QCOM_extended_get::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_QCOM_extended_get); + + d->ExtGetTexturesQCOM = (void (QOPENGLF_APIENTRYP)(GLuint *textures, GLint maxTextures, GLint *numTextures))context->getProcAddress("glExtGetTexturesQCOM"); + d->ExtGetBuffersQCOM = (void (QOPENGLF_APIENTRYP)(GLuint *buffers, GLint maxBuffers, GLint *numBuffers))context->getProcAddress("glExtGetBuffersQCOM"); + d->ExtGetRenderbuffersQCOM = (void (QOPENGLF_APIENTRYP)(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers))context->getProcAddress("glExtGetRenderbuffersQCOM"); + d->ExtGetFramebuffersQCOM = (void (QOPENGLF_APIENTRYP)(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers))context->getProcAddress("glExtGetFramebuffersQCOM"); + d->ExtGetTexLevelParameterivQCOM = (void (QOPENGLF_APIENTRYP)(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params))context->getProcAddress("glExtGetTexLevelParameterivQCOM"); + d->ExtTexObjectStateOverrideiQCOM = (void (QOPENGLF_APIENTRYP)(GLenum target, GLenum pname, GLint param))context->getProcAddress("glExtTexObjectStateOverrideiQCOM"); + d->ExtGetTexSubImageQCOM = (void (QOPENGLF_APIENTRYP)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels))context->getProcAddress("glExtGetTexSubImageQCOM"); + d->ExtGetBufferPointervQCOM = (void (QOPENGLF_APIENTRYP)(GLenum target, GLvoid **params))context->getProcAddress("glExtGetBufferPointervQCOM"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_QCOM_extended_get2::QOpenGLExtension_QCOM_extended_get2() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_QCOM_extended_get2Private)) +{ +} + +bool QOpenGLExtension_QCOM_extended_get2::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_QCOM_extended_get2); + + d->ExtGetShadersQCOM = (void (QOPENGLF_APIENTRYP)(GLuint *shaders, GLint maxShaders, GLint *numShaders))context->getProcAddress("glExtGetShadersQCOM"); + d->ExtGetProgramsQCOM = (void (QOPENGLF_APIENTRYP)(GLuint *programs, GLint maxPrograms, GLint *numPrograms))context->getProcAddress("glExtGetProgramsQCOM"); + d->ExtIsProgramBinaryQCOM = (GLboolean (QOPENGLF_APIENTRYP)(GLuint program))context->getProcAddress("glExtIsProgramBinaryQCOM"); + d->ExtGetProgramBinarySourceQCOM = (void (QOPENGLF_APIENTRYP)(GLuint program, GLenum shadertype, GLchar *source, GLint *length))context->getProcAddress("glExtGetProgramBinarySourceQCOM"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +QOpenGLExtension_QCOM_tiled_rendering::QOpenGLExtension_QCOM_tiled_rendering() + : QAbstractOpenGLExtension(*(new QOpenGLExtension_QCOM_tiled_renderingPrivate)) +{ +} + +bool QOpenGLExtension_QCOM_tiled_rendering::initializeOpenGLFunctions() +{ + if (isInitialized()) + return true; + + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("A current OpenGL context is required to resolve OpenGL extension functions"); + return false; + } + + // Resolve the functions + Q_D(QOpenGLExtension_QCOM_tiled_rendering); + + d->StartTilingQCOM = (void (QOPENGLF_APIENTRYP)(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask))context->getProcAddress("glStartTilingQCOM"); + d->EndTilingQCOM = (void (QOPENGLF_APIENTRYP)(GLbitfield preserveMask))context->getProcAddress("glEndTilingQCOM"); + return QAbstractOpenGLExtension::initializeOpenGLFunctions(); +} + +#endif + +QT_END_NAMESPACE + diff --git a/src/openglextensions/qopenglextensions.h b/src/openglextensions/qopenglextensions.h new file mode 100644 index 0000000000..c64e11e65c --- /dev/null +++ b/src/openglextensions/qopenglextensions.h @@ -0,0 +1,19468 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +** +** This file was generated by glgen version 0.1 +** Command line was: glgen +** +** glgen is Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) +** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +** +****************************************************************************/ + +#ifndef QOPENGLEXTENSIONS_H +#define QOPENGLEXTENSIONS_H + +#ifndef QT_NO_OPENGL + +#include +#include + +class QOpenGLContext; + +QT_BEGIN_NAMESPACE + +#if 0 +// silence syncqt warnings +#pragma qt_class(QOpenGLExtensions) +#pragma qt_sync_stop_processing +#endif + + +class QAbstractOpenGLExtensionPrivate +{ +public: + QAbstractOpenGLExtensionPrivate() : initialized(false) {} + bool initialized; +}; + +class QAbstractOpenGLExtension +{ +public: + virtual ~QAbstractOpenGLExtension(); + + virtual bool initializeOpenGLFunctions(); + + Q_DECLARE_PRIVATE(QAbstractOpenGLExtension) + +protected: + bool isInitialized() const; + + QAbstractOpenGLExtension() {} + QAbstractOpenGLExtension(QAbstractOpenGLExtensionPrivate &dd) : d_ptr(&dd) {} + QAbstractOpenGLExtensionPrivate *d_ptr; +}; + +#if !defined(QT_OPENGL_ES_2) + +class QOpenGLExtension_3DFX_tbufferPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TbufferMask3DFX)(GLuint mask); +}; + +class QOpenGLExtension_3DFX_tbuffer : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_3DFX_tbuffer(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTbufferMask3DFX(GLuint mask); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_3DFX_tbuffer) +}; + +inline void QOpenGLExtension_3DFX_tbuffer::glTbufferMask3DFX(GLuint mask) +{ + Q_D(QOpenGLExtension_3DFX_tbuffer); + d->TbufferMask3DFX(mask); +} + +class QOpenGLExtension_AMD_debug_outputPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLuint (QOPENGLF_APIENTRYP GetDebugMessageLogAMD)(GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); + void (QOPENGLF_APIENTRYP DebugMessageCallbackAMD)(GLDEBUGPROCAMD callback, GLvoid *userParam); + void (QOPENGLF_APIENTRYP DebugMessageInsertAMD)(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); + void (QOPENGLF_APIENTRYP DebugMessageEnableAMD)(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +}; + +class QOpenGLExtension_AMD_debug_output : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_AMD_debug_output(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLuint glGetDebugMessageLogAMD(GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); + void glDebugMessageCallbackAMD(GLDEBUGPROCAMD callback, GLvoid *userParam); + void glDebugMessageInsertAMD(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); + void glDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_AMD_debug_output) +}; + +inline GLuint QOpenGLExtension_AMD_debug_output::glGetDebugMessageLogAMD(GLuint count, GLsizei bufsize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message) +{ + Q_D(QOpenGLExtension_AMD_debug_output); + return d->GetDebugMessageLogAMD(count, bufsize, categories, severities, ids, lengths, message); +} + +inline void QOpenGLExtension_AMD_debug_output::glDebugMessageCallbackAMD(GLDEBUGPROCAMD callback, GLvoid *userParam) +{ + Q_D(QOpenGLExtension_AMD_debug_output); + d->DebugMessageCallbackAMD(callback, userParam); +} + +inline void QOpenGLExtension_AMD_debug_output::glDebugMessageInsertAMD(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf) +{ + Q_D(QOpenGLExtension_AMD_debug_output); + d->DebugMessageInsertAMD(category, severity, id, length, buf); +} + +inline void QOpenGLExtension_AMD_debug_output::glDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled) +{ + Q_D(QOpenGLExtension_AMD_debug_output); + d->DebugMessageEnableAMD(category, severity, count, ids, enabled); +} + +class QOpenGLExtension_AMD_draw_buffers_blendPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BlendEquationSeparateIndexedAMD)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void (QOPENGLF_APIENTRYP BlendEquationIndexedAMD)(GLuint buf, GLenum mode); + void (QOPENGLF_APIENTRYP BlendFuncSeparateIndexedAMD)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void (QOPENGLF_APIENTRYP BlendFuncIndexedAMD)(GLuint buf, GLenum src, GLenum dst); +}; + +class QOpenGLExtension_AMD_draw_buffers_blend : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_AMD_draw_buffers_blend(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBlendEquationSeparateIndexedAMD(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void glBlendEquationIndexedAMD(GLuint buf, GLenum mode); + void glBlendFuncSeparateIndexedAMD(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBlendFuncIndexedAMD(GLuint buf, GLenum src, GLenum dst); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_AMD_draw_buffers_blend) +}; + +inline void QOpenGLExtension_AMD_draw_buffers_blend::glBlendEquationSeparateIndexedAMD(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + Q_D(QOpenGLExtension_AMD_draw_buffers_blend); + d->BlendEquationSeparateIndexedAMD(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLExtension_AMD_draw_buffers_blend::glBlendEquationIndexedAMD(GLuint buf, GLenum mode) +{ + Q_D(QOpenGLExtension_AMD_draw_buffers_blend); + d->BlendEquationIndexedAMD(buf, mode); +} + +inline void QOpenGLExtension_AMD_draw_buffers_blend::glBlendFuncSeparateIndexedAMD(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + Q_D(QOpenGLExtension_AMD_draw_buffers_blend); + d->BlendFuncSeparateIndexedAMD(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLExtension_AMD_draw_buffers_blend::glBlendFuncIndexedAMD(GLuint buf, GLenum src, GLenum dst) +{ + Q_D(QOpenGLExtension_AMD_draw_buffers_blend); + d->BlendFuncIndexedAMD(buf, src, dst); +} + +class QOpenGLExtension_AMD_multi_draw_indirectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MultiDrawElementsIndirectAMD)(GLenum mode, GLenum type, const GLvoid *indirect, GLsizei primcount, GLsizei stride); + void (QOPENGLF_APIENTRYP MultiDrawArraysIndirectAMD)(GLenum mode, const GLvoid *indirect, GLsizei primcount, GLsizei stride); +}; + +class QOpenGLExtension_AMD_multi_draw_indirect : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_AMD_multi_draw_indirect(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMultiDrawElementsIndirectAMD(GLenum mode, GLenum type, const GLvoid *indirect, GLsizei primcount, GLsizei stride); + void glMultiDrawArraysIndirectAMD(GLenum mode, const GLvoid *indirect, GLsizei primcount, GLsizei stride); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_AMD_multi_draw_indirect) +}; + +inline void QOpenGLExtension_AMD_multi_draw_indirect::glMultiDrawElementsIndirectAMD(GLenum mode, GLenum type, const GLvoid *indirect, GLsizei primcount, GLsizei stride) +{ + Q_D(QOpenGLExtension_AMD_multi_draw_indirect); + d->MultiDrawElementsIndirectAMD(mode, type, indirect, primcount, stride); +} + +inline void QOpenGLExtension_AMD_multi_draw_indirect::glMultiDrawArraysIndirectAMD(GLenum mode, const GLvoid *indirect, GLsizei primcount, GLsizei stride) +{ + Q_D(QOpenGLExtension_AMD_multi_draw_indirect); + d->MultiDrawArraysIndirectAMD(mode, indirect, primcount, stride); +} + +class QOpenGLExtension_AMD_name_gen_deletePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLboolean (QOPENGLF_APIENTRYP IsNameAMD)(GLenum identifier, GLuint name); + void (QOPENGLF_APIENTRYP DeleteNamesAMD)(GLenum identifier, GLuint num, const GLuint *names); + void (QOPENGLF_APIENTRYP GenNamesAMD)(GLenum identifier, GLuint num, GLuint *names); +}; + +class QOpenGLExtension_AMD_name_gen_delete : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_AMD_name_gen_delete(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLboolean glIsNameAMD(GLenum identifier, GLuint name); + void glDeleteNamesAMD(GLenum identifier, GLuint num, const GLuint *names); + void glGenNamesAMD(GLenum identifier, GLuint num, GLuint *names); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_AMD_name_gen_delete) +}; + +inline GLboolean QOpenGLExtension_AMD_name_gen_delete::glIsNameAMD(GLenum identifier, GLuint name) +{ + Q_D(QOpenGLExtension_AMD_name_gen_delete); + return d->IsNameAMD(identifier, name); +} + +inline void QOpenGLExtension_AMD_name_gen_delete::glDeleteNamesAMD(GLenum identifier, GLuint num, const GLuint *names) +{ + Q_D(QOpenGLExtension_AMD_name_gen_delete); + d->DeleteNamesAMD(identifier, num, names); +} + +inline void QOpenGLExtension_AMD_name_gen_delete::glGenNamesAMD(GLenum identifier, GLuint num, GLuint *names) +{ + Q_D(QOpenGLExtension_AMD_name_gen_delete); + d->GenNamesAMD(identifier, num, names); +} + +class QOpenGLExtension_AMD_performance_monitorPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetPerfMonitorCounterDataAMD)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); + void (QOPENGLF_APIENTRYP EndPerfMonitorAMD)(GLuint monitor); + void (QOPENGLF_APIENTRYP BeginPerfMonitorAMD)(GLuint monitor); + void (QOPENGLF_APIENTRYP SelectPerfMonitorCountersAMD)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); + void (QOPENGLF_APIENTRYP DeletePerfMonitorsAMD)(GLsizei n, GLuint *monitors); + void (QOPENGLF_APIENTRYP GenPerfMonitorsAMD)(GLsizei n, GLuint *monitors); + void (QOPENGLF_APIENTRYP GetPerfMonitorCounterInfoAMD)(GLuint group, GLuint counter, GLenum pname, GLvoid *data); + void (QOPENGLF_APIENTRYP GetPerfMonitorCounterStringAMD)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); + void (QOPENGLF_APIENTRYP GetPerfMonitorGroupStringAMD)(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); + void (QOPENGLF_APIENTRYP GetPerfMonitorCountersAMD)(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); + void (QOPENGLF_APIENTRYP GetPerfMonitorGroupsAMD)(GLint *numGroups, GLsizei groupsSize, GLuint *groups); +}; + +class QOpenGLExtension_AMD_performance_monitor : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_AMD_performance_monitor(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); + void glEndPerfMonitorAMD(GLuint monitor); + void glBeginPerfMonitorAMD(GLuint monitor); + void glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); + void glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors); + void glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors); + void glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid *data); + void glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); + void glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); + void glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); + void glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_AMD_performance_monitor) +}; + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glEndPerfMonitorAMD(GLuint monitor) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->EndPerfMonitorAMD(monitor); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glBeginPerfMonitorAMD(GLuint monitor) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->BeginPerfMonitorAMD(monitor); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->SelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, counterList); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->DeletePerfMonitorsAMD(n, monitors); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GenPerfMonitorsAMD(n, monitors); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid *data) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorCounterInfoAMD(group, counter, pname, data); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorGroupStringAMD(group, bufSize, length, groupString); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorGroupsAMD(numGroups, groupsSize, groups); +} + +class QOpenGLExtension_AMD_sample_positionsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP SetMultisamplefvAMD)(GLenum pname, GLuint index, const GLfloat *val); +}; + +class QOpenGLExtension_AMD_sample_positions : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_AMD_sample_positions(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glSetMultisamplefvAMD(GLenum pname, GLuint index, const GLfloat *val); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_AMD_sample_positions) +}; + +inline void QOpenGLExtension_AMD_sample_positions::glSetMultisamplefvAMD(GLenum pname, GLuint index, const GLfloat *val) +{ + Q_D(QOpenGLExtension_AMD_sample_positions); + d->SetMultisamplefvAMD(pname, index, val); +} + +class QOpenGLExtension_AMD_sparse_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexStorageSparseAMD)(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); +}; + +class QOpenGLExtension_AMD_sparse_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_AMD_sparse_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexStorageSparseAMD(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_AMD_sparse_texture) +}; + +inline void QOpenGLExtension_AMD_sparse_texture::glTexStorageSparseAMD(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags) +{ + Q_D(QOpenGLExtension_AMD_sparse_texture); + d->TexStorageSparseAMD(target, internalFormat, width, height, depth, layers, flags); +} + +class QOpenGLExtension_AMD_stencil_operation_extendedPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP StencilOpValueAMD)(GLenum face, GLuint value); +}; + +class QOpenGLExtension_AMD_stencil_operation_extended : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_AMD_stencil_operation_extended(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glStencilOpValueAMD(GLenum face, GLuint value); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_AMD_stencil_operation_extended) +}; + +inline void QOpenGLExtension_AMD_stencil_operation_extended::glStencilOpValueAMD(GLenum face, GLuint value) +{ + Q_D(QOpenGLExtension_AMD_stencil_operation_extended); + d->StencilOpValueAMD(face, value); +} + +class QOpenGLExtension_AMD_vertex_shader_tesselatorPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TessellationModeAMD)(GLenum mode); + void (QOPENGLF_APIENTRYP TessellationFactorAMD)(GLfloat factor); +}; + +class QOpenGLExtension_AMD_vertex_shader_tesselator : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_AMD_vertex_shader_tesselator(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTessellationModeAMD(GLenum mode); + void glTessellationFactorAMD(GLfloat factor); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_AMD_vertex_shader_tesselator) +}; + +inline void QOpenGLExtension_AMD_vertex_shader_tesselator::glTessellationModeAMD(GLenum mode) +{ + Q_D(QOpenGLExtension_AMD_vertex_shader_tesselator); + d->TessellationModeAMD(mode); +} + +inline void QOpenGLExtension_AMD_vertex_shader_tesselator::glTessellationFactorAMD(GLfloat factor) +{ + Q_D(QOpenGLExtension_AMD_vertex_shader_tesselator); + d->TessellationFactorAMD(factor); +} + +class QOpenGLExtension_APPLE_element_arrayPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MultiDrawRangeElementArrayAPPLE)(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); + void (QOPENGLF_APIENTRYP MultiDrawElementArrayAPPLE)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); + void (QOPENGLF_APIENTRYP DrawRangeElementArrayAPPLE)(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); + void (QOPENGLF_APIENTRYP DrawElementArrayAPPLE)(GLenum mode, GLint first, GLsizei count); + void (QOPENGLF_APIENTRYP ElementPointerAPPLE)(GLenum type, const GLvoid *pointer); +}; + +class QOpenGLExtension_APPLE_element_array : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_APPLE_element_array(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMultiDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); + void glMultiDrawElementArrayAPPLE(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); + void glDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); + void glDrawElementArrayAPPLE(GLenum mode, GLint first, GLsizei count); + void glElementPointerAPPLE(GLenum type, const GLvoid *pointer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_APPLE_element_array) +}; + +inline void QOpenGLExtension_APPLE_element_array::glMultiDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount) +{ + Q_D(QOpenGLExtension_APPLE_element_array); + d->MultiDrawRangeElementArrayAPPLE(mode, start, end, first, count, primcount); +} + +inline void QOpenGLExtension_APPLE_element_array::glMultiDrawElementArrayAPPLE(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount) +{ + Q_D(QOpenGLExtension_APPLE_element_array); + d->MultiDrawElementArrayAPPLE(mode, first, count, primcount); +} + +inline void QOpenGLExtension_APPLE_element_array::glDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count) +{ + Q_D(QOpenGLExtension_APPLE_element_array); + d->DrawRangeElementArrayAPPLE(mode, start, end, first, count); +} + +inline void QOpenGLExtension_APPLE_element_array::glDrawElementArrayAPPLE(GLenum mode, GLint first, GLsizei count) +{ + Q_D(QOpenGLExtension_APPLE_element_array); + d->DrawElementArrayAPPLE(mode, first, count); +} + +inline void QOpenGLExtension_APPLE_element_array::glElementPointerAPPLE(GLenum type, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_APPLE_element_array); + d->ElementPointerAPPLE(type, pointer); +} + +class QOpenGLExtension_APPLE_fencePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FinishObjectAPPLE)(GLenum object, GLint name); + GLboolean (QOPENGLF_APIENTRYP TestObjectAPPLE)(GLenum object, GLuint name); + void (QOPENGLF_APIENTRYP FinishFenceAPPLE)(GLuint fence); + GLboolean (QOPENGLF_APIENTRYP TestFenceAPPLE)(GLuint fence); + GLboolean (QOPENGLF_APIENTRYP IsFenceAPPLE)(GLuint fence); + void (QOPENGLF_APIENTRYP SetFenceAPPLE)(GLuint fence); + void (QOPENGLF_APIENTRYP DeleteFencesAPPLE)(GLsizei n, const GLuint *fences); + void (QOPENGLF_APIENTRYP GenFencesAPPLE)(GLsizei n, GLuint *fences); +}; + +class QOpenGLExtension_APPLE_fence : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_APPLE_fence(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFinishObjectAPPLE(GLenum object, GLint name); + GLboolean glTestObjectAPPLE(GLenum object, GLuint name); + void glFinishFenceAPPLE(GLuint fence); + GLboolean glTestFenceAPPLE(GLuint fence); + GLboolean glIsFenceAPPLE(GLuint fence); + void glSetFenceAPPLE(GLuint fence); + void glDeleteFencesAPPLE(GLsizei n, const GLuint *fences); + void glGenFencesAPPLE(GLsizei n, GLuint *fences); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_APPLE_fence) +}; + +inline void QOpenGLExtension_APPLE_fence::glFinishObjectAPPLE(GLenum object, GLint name) +{ + Q_D(QOpenGLExtension_APPLE_fence); + d->FinishObjectAPPLE(object, name); +} + +inline GLboolean QOpenGLExtension_APPLE_fence::glTestObjectAPPLE(GLenum object, GLuint name) +{ + Q_D(QOpenGLExtension_APPLE_fence); + return d->TestObjectAPPLE(object, name); +} + +inline void QOpenGLExtension_APPLE_fence::glFinishFenceAPPLE(GLuint fence) +{ + Q_D(QOpenGLExtension_APPLE_fence); + d->FinishFenceAPPLE(fence); +} + +inline GLboolean QOpenGLExtension_APPLE_fence::glTestFenceAPPLE(GLuint fence) +{ + Q_D(QOpenGLExtension_APPLE_fence); + return d->TestFenceAPPLE(fence); +} + +inline GLboolean QOpenGLExtension_APPLE_fence::glIsFenceAPPLE(GLuint fence) +{ + Q_D(QOpenGLExtension_APPLE_fence); + return d->IsFenceAPPLE(fence); +} + +inline void QOpenGLExtension_APPLE_fence::glSetFenceAPPLE(GLuint fence) +{ + Q_D(QOpenGLExtension_APPLE_fence); + d->SetFenceAPPLE(fence); +} + +inline void QOpenGLExtension_APPLE_fence::glDeleteFencesAPPLE(GLsizei n, const GLuint *fences) +{ + Q_D(QOpenGLExtension_APPLE_fence); + d->DeleteFencesAPPLE(n, fences); +} + +inline void QOpenGLExtension_APPLE_fence::glGenFencesAPPLE(GLsizei n, GLuint *fences) +{ + Q_D(QOpenGLExtension_APPLE_fence); + d->GenFencesAPPLE(n, fences); +} + +class QOpenGLExtension_APPLE_flush_buffer_rangePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); + void (QOPENGLF_APIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); +}; + +class QOpenGLExtension_APPLE_flush_buffer_range : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_APPLE_flush_buffer_range(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFlushMappedBufferRangeAPPLE(GLenum target, GLintptr offset, GLsizeiptr size); + void glBufferParameteriAPPLE(GLenum target, GLenum pname, GLint param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_APPLE_flush_buffer_range) +}; + +inline void QOpenGLExtension_APPLE_flush_buffer_range::glFlushMappedBufferRangeAPPLE(GLenum target, GLintptr offset, GLsizeiptr size) +{ + Q_D(QOpenGLExtension_APPLE_flush_buffer_range); + d->FlushMappedBufferRangeAPPLE(target, offset, size); +} + +inline void QOpenGLExtension_APPLE_flush_buffer_range::glBufferParameteriAPPLE(GLenum target, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_APPLE_flush_buffer_range); + d->BufferParameteriAPPLE(target, pname, param); +} + +class QOpenGLExtension_APPLE_object_purgeablePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint *params); + GLenum (QOPENGLF_APIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); + GLenum (QOPENGLF_APIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); +}; + +class QOpenGLExtension_APPLE_object_purgeable : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_APPLE_object_purgeable(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, GLint *params); + GLenum glObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option); + GLenum glObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_APPLE_object_purgeable) +}; + +inline void QOpenGLExtension_APPLE_object_purgeable::glGetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_APPLE_object_purgeable); + d->GetObjectParameterivAPPLE(objectType, name, pname, params); +} + +inline GLenum QOpenGLExtension_APPLE_object_purgeable::glObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) +{ + Q_D(QOpenGLExtension_APPLE_object_purgeable); + return d->ObjectUnpurgeableAPPLE(objectType, name, option); +} + +inline GLenum QOpenGLExtension_APPLE_object_purgeable::glObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) +{ + Q_D(QOpenGLExtension_APPLE_object_purgeable); + return d->ObjectPurgeableAPPLE(objectType, name, option); +} + +class QOpenGLExtension_APPLE_texture_rangePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, GLvoid* *params); + void (QOPENGLF_APIENTRYP TextureRangeAPPLE)(GLenum target, GLsizei length, const GLvoid *pointer); +}; + +class QOpenGLExtension_APPLE_texture_range : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_APPLE_texture_range(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetTexParameterPointervAPPLE(GLenum target, GLenum pname, GLvoid* *params); + void glTextureRangeAPPLE(GLenum target, GLsizei length, const GLvoid *pointer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_APPLE_texture_range) +}; + +inline void QOpenGLExtension_APPLE_texture_range::glGetTexParameterPointervAPPLE(GLenum target, GLenum pname, GLvoid* *params) +{ + Q_D(QOpenGLExtension_APPLE_texture_range); + d->GetTexParameterPointervAPPLE(target, pname, params); +} + +inline void QOpenGLExtension_APPLE_texture_range::glTextureRangeAPPLE(GLenum target, GLsizei length, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_APPLE_texture_range); + d->TextureRangeAPPLE(target, length, pointer); +} + +class QOpenGLExtension_APPLE_vertex_array_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLboolean (QOPENGLF_APIENTRYP IsVertexArrayAPPLE)(GLuint array); + void (QOPENGLF_APIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint *arrays); + void (QOPENGLF_APIENTRYP DeleteVertexArraysAPPLE)(GLsizei n, const GLuint *arrays); + void (QOPENGLF_APIENTRYP BindVertexArrayAPPLE)(GLuint array); +}; + +class QOpenGLExtension_APPLE_vertex_array_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_APPLE_vertex_array_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLboolean glIsVertexArrayAPPLE(GLuint array); + void glGenVertexArraysAPPLE(GLsizei n, GLuint *arrays); + void glDeleteVertexArraysAPPLE(GLsizei n, const GLuint *arrays); + void glBindVertexArrayAPPLE(GLuint array); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_APPLE_vertex_array_object) +}; + +inline GLboolean QOpenGLExtension_APPLE_vertex_array_object::glIsVertexArrayAPPLE(GLuint array) +{ + Q_D(QOpenGLExtension_APPLE_vertex_array_object); + return d->IsVertexArrayAPPLE(array); +} + +inline void QOpenGLExtension_APPLE_vertex_array_object::glGenVertexArraysAPPLE(GLsizei n, GLuint *arrays) +{ + Q_D(QOpenGLExtension_APPLE_vertex_array_object); + d->GenVertexArraysAPPLE(n, arrays); +} + +inline void QOpenGLExtension_APPLE_vertex_array_object::glDeleteVertexArraysAPPLE(GLsizei n, const GLuint *arrays) +{ + Q_D(QOpenGLExtension_APPLE_vertex_array_object); + d->DeleteVertexArraysAPPLE(n, arrays); +} + +inline void QOpenGLExtension_APPLE_vertex_array_object::glBindVertexArrayAPPLE(GLuint array) +{ + Q_D(QOpenGLExtension_APPLE_vertex_array_object); + d->BindVertexArrayAPPLE(array); +} + +class QOpenGLExtension_APPLE_vertex_array_rangePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexArrayParameteriAPPLE)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP FlushVertexArrayRangeAPPLE)(GLsizei length, GLvoid *pointer); + void (QOPENGLF_APIENTRYP VertexArrayRangeAPPLE)(GLsizei length, GLvoid *pointer); +}; + +class QOpenGLExtension_APPLE_vertex_array_range : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_APPLE_vertex_array_range(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexArrayParameteriAPPLE(GLenum pname, GLint param); + void glFlushVertexArrayRangeAPPLE(GLsizei length, GLvoid *pointer); + void glVertexArrayRangeAPPLE(GLsizei length, GLvoid *pointer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_APPLE_vertex_array_range) +}; + +inline void QOpenGLExtension_APPLE_vertex_array_range::glVertexArrayParameteriAPPLE(GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_APPLE_vertex_array_range); + d->VertexArrayParameteriAPPLE(pname, param); +} + +inline void QOpenGLExtension_APPLE_vertex_array_range::glFlushVertexArrayRangeAPPLE(GLsizei length, GLvoid *pointer) +{ + Q_D(QOpenGLExtension_APPLE_vertex_array_range); + d->FlushVertexArrayRangeAPPLE(length, pointer); +} + +inline void QOpenGLExtension_APPLE_vertex_array_range::glVertexArrayRangeAPPLE(GLsizei length, GLvoid *pointer) +{ + Q_D(QOpenGLExtension_APPLE_vertex_array_range); + d->VertexArrayRangeAPPLE(length, pointer); +} + +class QOpenGLExtension_APPLE_vertex_program_evaluatorsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MapVertexAttrib2fAPPLE)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void (QOPENGLF_APIENTRYP MapVertexAttrib2dAPPLE)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void (QOPENGLF_APIENTRYP MapVertexAttrib1fAPPLE)(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void (QOPENGLF_APIENTRYP MapVertexAttrib1dAPPLE)(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + GLboolean (QOPENGLF_APIENTRYP IsVertexAttribEnabledAPPLE)(GLuint index, GLenum pname); + void (QOPENGLF_APIENTRYP DisableVertexAttribAPPLE)(GLuint index, GLenum pname); + void (QOPENGLF_APIENTRYP EnableVertexAttribAPPLE)(GLuint index, GLenum pname); +}; + +class QOpenGLExtension_APPLE_vertex_program_evaluators : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_APPLE_vertex_program_evaluators(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMapVertexAttrib2fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); + void glMapVertexAttrib2dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); + void glMapVertexAttrib1fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); + void glMapVertexAttrib1dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); + GLboolean glIsVertexAttribEnabledAPPLE(GLuint index, GLenum pname); + void glDisableVertexAttribAPPLE(GLuint index, GLenum pname); + void glEnableVertexAttribAPPLE(GLuint index, GLenum pname); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_APPLE_vertex_program_evaluators) +}; + +inline void QOpenGLExtension_APPLE_vertex_program_evaluators::glMapVertexAttrib2fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) +{ + Q_D(QOpenGLExtension_APPLE_vertex_program_evaluators); + d->MapVertexAttrib2fAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLExtension_APPLE_vertex_program_evaluators::glMapVertexAttrib2dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) +{ + Q_D(QOpenGLExtension_APPLE_vertex_program_evaluators); + d->MapVertexAttrib2dAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); +} + +inline void QOpenGLExtension_APPLE_vertex_program_evaluators::glMapVertexAttrib1fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) +{ + Q_D(QOpenGLExtension_APPLE_vertex_program_evaluators); + d->MapVertexAttrib1fAPPLE(index, size, u1, u2, stride, order, points); +} + +inline void QOpenGLExtension_APPLE_vertex_program_evaluators::glMapVertexAttrib1dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) +{ + Q_D(QOpenGLExtension_APPLE_vertex_program_evaluators); + d->MapVertexAttrib1dAPPLE(index, size, u1, u2, stride, order, points); +} + +inline GLboolean QOpenGLExtension_APPLE_vertex_program_evaluators::glIsVertexAttribEnabledAPPLE(GLuint index, GLenum pname) +{ + Q_D(QOpenGLExtension_APPLE_vertex_program_evaluators); + return d->IsVertexAttribEnabledAPPLE(index, pname); +} + +inline void QOpenGLExtension_APPLE_vertex_program_evaluators::glDisableVertexAttribAPPLE(GLuint index, GLenum pname) +{ + Q_D(QOpenGLExtension_APPLE_vertex_program_evaluators); + d->DisableVertexAttribAPPLE(index, pname); +} + +inline void QOpenGLExtension_APPLE_vertex_program_evaluators::glEnableVertexAttribAPPLE(GLuint index, GLenum pname) +{ + Q_D(QOpenGLExtension_APPLE_vertex_program_evaluators); + d->EnableVertexAttribAPPLE(index, pname); +} + +class QOpenGLExtension_ARB_ES2_compatibilityPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ClearDepthf)(GLfloat dd); + void (QOPENGLF_APIENTRYP DepthRangef)(GLfloat n, GLfloat f); + void (QOPENGLF_APIENTRYP GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); + void (QOPENGLF_APIENTRYP ShaderBinary)(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); + void (QOPENGLF_APIENTRYP ReleaseShaderCompiler)(); +}; + +class QOpenGLExtension_ARB_ES2_compatibility : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_ES2_compatibility(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glClearDepthf(GLfloat dd); + void glDepthRangef(GLfloat n, GLfloat f); + void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); + void glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); + void glReleaseShaderCompiler(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_ES2_compatibility) +}; + +inline void QOpenGLExtension_ARB_ES2_compatibility::glClearDepthf(GLfloat dd) +{ + Q_D(QOpenGLExtension_ARB_ES2_compatibility); + d->ClearDepthf(dd); +} + +inline void QOpenGLExtension_ARB_ES2_compatibility::glDepthRangef(GLfloat n, GLfloat f) +{ + Q_D(QOpenGLExtension_ARB_ES2_compatibility); + d->DepthRangef(n, f); +} + +inline void QOpenGLExtension_ARB_ES2_compatibility::glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) +{ + Q_D(QOpenGLExtension_ARB_ES2_compatibility); + d->GetShaderPrecisionFormat(shadertype, precisiontype, range, precision); +} + +inline void QOpenGLExtension_ARB_ES2_compatibility::glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length) +{ + Q_D(QOpenGLExtension_ARB_ES2_compatibility); + d->ShaderBinary(count, shaders, binaryformat, binary, length); +} + +inline void QOpenGLExtension_ARB_ES2_compatibility::glReleaseShaderCompiler() +{ + Q_D(QOpenGLExtension_ARB_ES2_compatibility); + d->ReleaseShaderCompiler(); +} + +class QOpenGLExtension_ARB_base_instancePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawElementsInstancedBaseVertexBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); + void (QOPENGLF_APIENTRYP DrawElementsInstancedBaseInstance)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); + void (QOPENGLF_APIENTRYP DrawArraysInstancedBaseInstance)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +}; + +class QOpenGLExtension_ARB_base_instance : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_base_instance(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); + void glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); + void glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_base_instance) +}; + +inline void QOpenGLExtension_ARB_base_instance::glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) +{ + Q_D(QOpenGLExtension_ARB_base_instance); + d->DrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance); +} + +inline void QOpenGLExtension_ARB_base_instance::glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance) +{ + Q_D(QOpenGLExtension_ARB_base_instance); + d->DrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance); +} + +inline void QOpenGLExtension_ARB_base_instance::glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) +{ + Q_D(QOpenGLExtension_ARB_base_instance); + d->DrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance); +} + +class QOpenGLExtension_ARB_blend_func_extendedPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLint (QOPENGLF_APIENTRYP GetFragDataIndex)(GLuint program, const GLchar *name); + void (QOPENGLF_APIENTRYP BindFragDataLocationIndexed)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +}; + +class QOpenGLExtension_ARB_blend_func_extended : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_blend_func_extended(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLint glGetFragDataIndex(GLuint program, const GLchar *name); + void glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_blend_func_extended) +}; + +inline GLint QOpenGLExtension_ARB_blend_func_extended::glGetFragDataIndex(GLuint program, const GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_blend_func_extended); + return d->GetFragDataIndex(program, name); +} + +inline void QOpenGLExtension_ARB_blend_func_extended::glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_blend_func_extended); + d->BindFragDataLocationIndexed(program, colorNumber, index, name); +} + +class QOpenGLExtension_ARB_cl_eventPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLsync (QOPENGLF_APIENTRYP CreateSyncFromCLeventARB)(struct _cl_context * context, struct _cl_event * event, GLbitfield flags); +}; + +class QOpenGLExtension_ARB_cl_event : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_cl_event(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLsync glCreateSyncFromCLeventARB(struct _cl_context * context, struct _cl_event * event, GLbitfield flags); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_cl_event) +}; + +inline GLsync QOpenGLExtension_ARB_cl_event::glCreateSyncFromCLeventARB(struct _cl_context * context, struct _cl_event * event, GLbitfield flags) +{ + Q_D(QOpenGLExtension_ARB_cl_event); + return d->CreateSyncFromCLeventARB(context, event, flags); +} + +class QOpenGLExtension_ARB_clear_buffer_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ClearBufferSubData)(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + void (QOPENGLF_APIENTRYP ClearBufferData)(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); +}; + +class QOpenGLExtension_ARB_clear_buffer_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_clear_buffer_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + void glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_clear_buffer_object) +}; + +inline void QOpenGLExtension_ARB_clear_buffer_object::glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) +{ + Q_D(QOpenGLExtension_ARB_clear_buffer_object); + d->ClearBufferSubData(target, internalformat, offset, size, format, type, data); +} + +inline void QOpenGLExtension_ARB_clear_buffer_object::glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data) +{ + Q_D(QOpenGLExtension_ARB_clear_buffer_object); + d->ClearBufferData(target, internalformat, format, type, data); +} + +class QOpenGLExtension_ARB_color_buffer_floatPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ClampColorARB)(GLenum target, GLenum clamp); +}; + +class QOpenGLExtension_ARB_color_buffer_float : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_color_buffer_float(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glClampColorARB(GLenum target, GLenum clamp); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_color_buffer_float) +}; + +inline void QOpenGLExtension_ARB_color_buffer_float::glClampColorARB(GLenum target, GLenum clamp) +{ + Q_D(QOpenGLExtension_ARB_color_buffer_float); + d->ClampColorARB(target, clamp); +} + +class QOpenGLExtension_ARB_compute_shaderPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DispatchComputeIndirect)(GLintptr indirect); + void (QOPENGLF_APIENTRYP DispatchCompute)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +}; + +class QOpenGLExtension_ARB_compute_shader : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_compute_shader(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDispatchComputeIndirect(GLintptr indirect); + void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_compute_shader) +}; + +inline void QOpenGLExtension_ARB_compute_shader::glDispatchComputeIndirect(GLintptr indirect) +{ + Q_D(QOpenGLExtension_ARB_compute_shader); + d->DispatchComputeIndirect(indirect); +} + +inline void QOpenGLExtension_ARB_compute_shader::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) +{ + Q_D(QOpenGLExtension_ARB_compute_shader); + d->DispatchCompute(num_groups_x, num_groups_y, num_groups_z); +} + +class QOpenGLExtension_ARB_copy_bufferPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +}; + +class QOpenGLExtension_ARB_copy_buffer : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_copy_buffer(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_copy_buffer) +}; + +inline void QOpenGLExtension_ARB_copy_buffer::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + Q_D(QOpenGLExtension_ARB_copy_buffer); + d->CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); +} + +class QOpenGLExtension_ARB_copy_imagePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP CopyImageSubData)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +}; + +class QOpenGLExtension_ARB_copy_image : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_copy_image(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_copy_image) +}; + +inline void QOpenGLExtension_ARB_copy_image::glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) +{ + Q_D(QOpenGLExtension_ARB_copy_image); + d->CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); +} + +class QOpenGLExtension_ARB_debug_outputPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLuint (QOPENGLF_APIENTRYP GetDebugMessageLogARB)(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); + void (QOPENGLF_APIENTRYP DebugMessageCallbackARB)(GLDEBUGPROCARB callback, const GLvoid *userParam); + void (QOPENGLF_APIENTRYP DebugMessageInsertARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); + void (QOPENGLF_APIENTRYP DebugMessageControlARB)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +}; + +class QOpenGLExtension_ARB_debug_output : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_debug_output(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLuint glGetDebugMessageLogARB(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); + void glDebugMessageCallbackARB(GLDEBUGPROCARB callback, const GLvoid *userParam); + void glDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); + void glDebugMessageControlARB(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_debug_output) +}; + +inline GLuint QOpenGLExtension_ARB_debug_output::glGetDebugMessageLogARB(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog) +{ + Q_D(QOpenGLExtension_ARB_debug_output); + return d->GetDebugMessageLogARB(count, bufsize, sources, types, ids, severities, lengths, messageLog); +} + +inline void QOpenGLExtension_ARB_debug_output::glDebugMessageCallbackARB(GLDEBUGPROCARB callback, const GLvoid *userParam) +{ + Q_D(QOpenGLExtension_ARB_debug_output); + d->DebugMessageCallbackARB(callback, userParam); +} + +inline void QOpenGLExtension_ARB_debug_output::glDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf) +{ + Q_D(QOpenGLExtension_ARB_debug_output); + d->DebugMessageInsertARB(source, type, id, severity, length, buf); +} + +inline void QOpenGLExtension_ARB_debug_output::glDebugMessageControlARB(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled) +{ + Q_D(QOpenGLExtension_ARB_debug_output); + d->DebugMessageControlARB(source, type, severity, count, ids, enabled); +} + +class QOpenGLExtension_ARB_draw_buffersPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawBuffersARB)(GLsizei n, const GLenum *bufs); +}; + +class QOpenGLExtension_ARB_draw_buffers : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_draw_buffers(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawBuffersARB(GLsizei n, const GLenum *bufs); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_draw_buffers) +}; + +inline void QOpenGLExtension_ARB_draw_buffers::glDrawBuffersARB(GLsizei n, const GLenum *bufs) +{ + Q_D(QOpenGLExtension_ARB_draw_buffers); + d->DrawBuffersARB(n, bufs); +} + +class QOpenGLExtension_ARB_draw_buffers_blendPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void (QOPENGLF_APIENTRYP BlendFunciARB)(GLuint buf, GLenum src, GLenum dst); + void (QOPENGLF_APIENTRYP BlendEquationSeparateiARB)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void (QOPENGLF_APIENTRYP BlendEquationiARB)(GLuint buf, GLenum mode); +}; + +class QOpenGLExtension_ARB_draw_buffers_blend : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_draw_buffers_blend(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBlendFuncSeparateiARB(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + void glBlendFunciARB(GLuint buf, GLenum src, GLenum dst); + void glBlendEquationSeparateiARB(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + void glBlendEquationiARB(GLuint buf, GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_draw_buffers_blend) +}; + +inline void QOpenGLExtension_ARB_draw_buffers_blend::glBlendFuncSeparateiARB(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) +{ + Q_D(QOpenGLExtension_ARB_draw_buffers_blend); + d->BlendFuncSeparateiARB(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); +} + +inline void QOpenGLExtension_ARB_draw_buffers_blend::glBlendFunciARB(GLuint buf, GLenum src, GLenum dst) +{ + Q_D(QOpenGLExtension_ARB_draw_buffers_blend); + d->BlendFunciARB(buf, src, dst); +} + +inline void QOpenGLExtension_ARB_draw_buffers_blend::glBlendEquationSeparateiARB(GLuint buf, GLenum modeRGB, GLenum modeAlpha) +{ + Q_D(QOpenGLExtension_ARB_draw_buffers_blend); + d->BlendEquationSeparateiARB(buf, modeRGB, modeAlpha); +} + +inline void QOpenGLExtension_ARB_draw_buffers_blend::glBlendEquationiARB(GLuint buf, GLenum mode) +{ + Q_D(QOpenGLExtension_ARB_draw_buffers_blend); + d->BlendEquationiARB(buf, mode); +} + +class QOpenGLExtension_ARB_draw_elements_base_vertexPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void (QOPENGLF_APIENTRYP DrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void (QOPENGLF_APIENTRYP DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void (QOPENGLF_APIENTRYP DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); +}; + +class QOpenGLExtension_ARB_draw_elements_base_vertex : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_draw_elements_base_vertex(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex); + void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex); + void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_draw_elements_base_vertex) +}; + +inline void QOpenGLExtension_ARB_draw_elements_base_vertex::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex) +{ + Q_D(QOpenGLExtension_ARB_draw_elements_base_vertex); + d->MultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex); +} + +inline void QOpenGLExtension_ARB_draw_elements_base_vertex::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex) +{ + Q_D(QOpenGLExtension_ARB_draw_elements_base_vertex); + d->DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex); +} + +inline void QOpenGLExtension_ARB_draw_elements_base_vertex::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + Q_D(QOpenGLExtension_ARB_draw_elements_base_vertex); + d->DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex); +} + +inline void QOpenGLExtension_ARB_draw_elements_base_vertex::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) +{ + Q_D(QOpenGLExtension_ARB_draw_elements_base_vertex); + d->DrawElementsBaseVertex(mode, count, type, indices, basevertex); +} + +class QOpenGLExtension_ARB_draw_indirectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawElementsIndirect)(GLenum mode, GLenum type, const GLvoid *indirect); + void (QOPENGLF_APIENTRYP DrawArraysIndirect)(GLenum mode, const GLvoid *indirect); +}; + +class QOpenGLExtension_ARB_draw_indirect : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_draw_indirect(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect); + void glDrawArraysIndirect(GLenum mode, const GLvoid *indirect); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_draw_indirect) +}; + +inline void QOpenGLExtension_ARB_draw_indirect::glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect) +{ + Q_D(QOpenGLExtension_ARB_draw_indirect); + d->DrawElementsIndirect(mode, type, indirect); +} + +inline void QOpenGLExtension_ARB_draw_indirect::glDrawArraysIndirect(GLenum mode, const GLvoid *indirect) +{ + Q_D(QOpenGLExtension_ARB_draw_indirect); + d->DrawArraysIndirect(mode, indirect); +} + +class QOpenGLExtension_ARB_draw_instancedPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); + void (QOPENGLF_APIENTRYP DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); +}; + +class QOpenGLExtension_ARB_draw_instanced : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_draw_instanced(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); + void glDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei primcount); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_draw_instanced) +}; + +inline void QOpenGLExtension_ARB_draw_instanced::glDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount) +{ + Q_D(QOpenGLExtension_ARB_draw_instanced); + d->DrawElementsInstancedARB(mode, count, type, indices, primcount); +} + +inline void QOpenGLExtension_ARB_draw_instanced::glDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +{ + Q_D(QOpenGLExtension_ARB_draw_instanced); + d->DrawArraysInstancedARB(mode, first, count, primcount); +} + +class QOpenGLExtension_ARB_framebuffer_no_attachmentsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetFramebufferParameteriv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP FramebufferParameteri)(GLenum target, GLenum pname, GLint param); +}; + +class QOpenGLExtension_ARB_framebuffer_no_attachments : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_framebuffer_no_attachments(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glFramebufferParameteri(GLenum target, GLenum pname, GLint param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_framebuffer_no_attachments) +}; + +inline void QOpenGLExtension_ARB_framebuffer_no_attachments::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_no_attachments); + d->GetFramebufferParameteriv(target, pname, params); +} + +inline void QOpenGLExtension_ARB_framebuffer_no_attachments::glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_no_attachments); + d->FramebufferParameteri(target, pname, param); +} + +class QOpenGLExtension_ARB_framebuffer_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void (QOPENGLF_APIENTRYP RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void (QOPENGLF_APIENTRYP GenerateMipmap)(GLenum target); + void (QOPENGLF_APIENTRYP GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void (QOPENGLF_APIENTRYP FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void (QOPENGLF_APIENTRYP FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void (QOPENGLF_APIENTRYP FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum (QOPENGLF_APIENTRYP CheckFramebufferStatus)(GLenum target); + void (QOPENGLF_APIENTRYP GenFramebuffers)(GLsizei n, GLuint *framebuffers); + void (QOPENGLF_APIENTRYP DeleteFramebuffers)(GLsizei n, const GLuint *framebuffers); + void (QOPENGLF_APIENTRYP BindFramebuffer)(GLenum target, GLuint framebuffer); + GLboolean (QOPENGLF_APIENTRYP IsFramebuffer)(GLuint framebuffer); + void (QOPENGLF_APIENTRYP GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP GenRenderbuffers)(GLsizei n, GLuint *renderbuffers); + void (QOPENGLF_APIENTRYP DeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers); + void (QOPENGLF_APIENTRYP BindRenderbuffer)(GLenum target, GLuint renderbuffer); + GLboolean (QOPENGLF_APIENTRYP IsRenderbuffer)(GLuint renderbuffer); +}; + +class QOpenGLExtension_ARB_framebuffer_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_framebuffer_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + void glGenerateMipmap(GLenum target); + void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatus(GLenum target); + void glGenFramebuffers(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); + void glBindFramebuffer(GLenum target, GLuint framebuffer); + GLboolean glIsFramebuffer(GLuint framebuffer); + void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbuffer(GLuint renderbuffer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_framebuffer_object) +}; + +inline void QOpenGLExtension_ARB_framebuffer_object::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->FramebufferTextureLayer(target, attachment, texture, level, layer); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->RenderbufferStorageMultisample(target, samples, internalformat, width, height); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glGenerateMipmap(GLenum target) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->GenerateMipmap(target); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->GetFramebufferAttachmentParameteriv(target, attachment, pname, params); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->FramebufferTexture2D(target, attachment, textarget, texture, level); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->FramebufferTexture1D(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLExtension_ARB_framebuffer_object::glCheckFramebufferStatus(GLenum target) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + return d->CheckFramebufferStatus(target); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glGenFramebuffers(GLsizei n, GLuint *framebuffers) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->GenFramebuffers(n, framebuffers); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->DeleteFramebuffers(n, framebuffers); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glBindFramebuffer(GLenum target, GLuint framebuffer) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->BindFramebuffer(target, framebuffer); +} + +inline GLboolean QOpenGLExtension_ARB_framebuffer_object::glIsFramebuffer(GLuint framebuffer) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + return d->IsFramebuffer(framebuffer); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->GetRenderbufferParameteriv(target, pname, params); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->RenderbufferStorage(target, internalformat, width, height); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->GenRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->DeleteRenderbuffers(n, renderbuffers); +} + +inline void QOpenGLExtension_ARB_framebuffer_object::glBindRenderbuffer(GLenum target, GLuint renderbuffer) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + d->BindRenderbuffer(target, renderbuffer); +} + +inline GLboolean QOpenGLExtension_ARB_framebuffer_object::glIsRenderbuffer(GLuint renderbuffer) +{ + Q_D(QOpenGLExtension_ARB_framebuffer_object); + return d->IsRenderbuffer(renderbuffer); +} + +class QOpenGLExtension_ARB_geometry_shader4Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); + void (QOPENGLF_APIENTRYP FramebufferTextureLayerARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void (QOPENGLF_APIENTRYP FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level); + void (QOPENGLF_APIENTRYP ProgramParameteriARB)(GLuint program, GLenum pname, GLint value); +}; + +class QOpenGLExtension_ARB_geometry_shader4 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_geometry_shader4(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFramebufferTextureFaceARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); + void glFramebufferTextureLayerARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glFramebufferTextureARB(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glProgramParameteriARB(GLuint program, GLenum pname, GLint value); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_geometry_shader4) +}; + +inline void QOpenGLExtension_ARB_geometry_shader4::glFramebufferTextureFaceARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face) +{ + Q_D(QOpenGLExtension_ARB_geometry_shader4); + d->FramebufferTextureFaceARB(target, attachment, texture, level, face); +} + +inline void QOpenGLExtension_ARB_geometry_shader4::glFramebufferTextureLayerARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + Q_D(QOpenGLExtension_ARB_geometry_shader4); + d->FramebufferTextureLayerARB(target, attachment, texture, level, layer); +} + +inline void QOpenGLExtension_ARB_geometry_shader4::glFramebufferTextureARB(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + Q_D(QOpenGLExtension_ARB_geometry_shader4); + d->FramebufferTextureARB(target, attachment, texture, level); +} + +inline void QOpenGLExtension_ARB_geometry_shader4::glProgramParameteriARB(GLuint program, GLenum pname, GLint value) +{ + Q_D(QOpenGLExtension_ARB_geometry_shader4); + d->ProgramParameteriARB(program, pname, value); +} + +class QOpenGLExtension_ARB_get_program_binaryPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ProgramParameteri)(GLuint program, GLenum pname, GLint value); + void (QOPENGLF_APIENTRYP ProgramBinary)(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); + void (QOPENGLF_APIENTRYP GetProgramBinary)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +}; + +class QOpenGLExtension_ARB_get_program_binary : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_get_program_binary(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glProgramParameteri(GLuint program, GLenum pname, GLint value); + void glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); + void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_get_program_binary) +}; + +inline void QOpenGLExtension_ARB_get_program_binary::glProgramParameteri(GLuint program, GLenum pname, GLint value) +{ + Q_D(QOpenGLExtension_ARB_get_program_binary); + d->ProgramParameteri(program, pname, value); +} + +inline void QOpenGLExtension_ARB_get_program_binary::glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) +{ + Q_D(QOpenGLExtension_ARB_get_program_binary); + d->ProgramBinary(program, binaryFormat, binary, length); +} + +inline void QOpenGLExtension_ARB_get_program_binary::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) +{ + Q_D(QOpenGLExtension_ARB_get_program_binary); + d->GetProgramBinary(program, bufSize, length, binaryFormat, binary); +} + +class QOpenGLExtension_ARB_gpu_shader_fp64Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetUniformdv)(GLuint program, GLint location, GLdouble *params); + void (QOPENGLF_APIENTRYP UniformMatrix4x3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix4x2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix3x4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix3x2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix2x4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix2x3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix4dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix3dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP UniformMatrix2dv)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP Uniform4dv)(GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP Uniform3dv)(GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP Uniform2dv)(GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP Uniform1dv)(GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP Uniform4d)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP Uniform3d)(GLint location, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP Uniform2d)(GLint location, GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP Uniform1d)(GLint location, GLdouble x); +}; + +class QOpenGLExtension_ARB_gpu_shader_fp64 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_gpu_shader_fp64(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetUniformdv(GLuint program, GLint location, GLdouble *params); + void glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glUniform4dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform3dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform2dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform1dv(GLint location, GLsizei count, const GLdouble *value); + void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + void glUniform2d(GLint location, GLdouble x, GLdouble y); + void glUniform1d(GLint location, GLdouble x); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_gpu_shader_fp64) +}; + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glGetUniformdv(GLuint program, GLint location, GLdouble *params) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->GetUniformdv(program, location, params); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->UniformMatrix4x3dv(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->UniformMatrix4x2dv(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->UniformMatrix3x4dv(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->UniformMatrix3x2dv(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->UniformMatrix2x4dv(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->UniformMatrix2x3dv(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->UniformMatrix4dv(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->UniformMatrix3dv(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->UniformMatrix2dv(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniform4dv(GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->Uniform4dv(location, count, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniform3dv(GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->Uniform3dv(location, count, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniform2dv(GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->Uniform2dv(location, count, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniform1dv(GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->Uniform1dv(location, count, value); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->Uniform4d(location, x, y, z, w); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->Uniform3d(location, x, y, z); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniform2d(GLint location, GLdouble x, GLdouble y) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->Uniform2d(location, x, y); +} + +inline void QOpenGLExtension_ARB_gpu_shader_fp64::glUniform1d(GLint location, GLdouble x) +{ + Q_D(QOpenGLExtension_ARB_gpu_shader_fp64); + d->Uniform1d(location, x); +} + +class QOpenGLExtension_ARB_instanced_arraysPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexAttribDivisorARB)(GLuint index, GLuint divisor); +}; + +class QOpenGLExtension_ARB_instanced_arrays : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_instanced_arrays(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexAttribDivisorARB(GLuint index, GLuint divisor); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_instanced_arrays) +}; + +inline void QOpenGLExtension_ARB_instanced_arrays::glVertexAttribDivisorARB(GLuint index, GLuint divisor) +{ + Q_D(QOpenGLExtension_ARB_instanced_arrays); + d->VertexAttribDivisorARB(index, divisor); +} + +class QOpenGLExtension_ARB_internalformat_queryPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetInternalformativ)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); +}; + +class QOpenGLExtension_ARB_internalformat_query : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_internalformat_query(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_internalformat_query) +}; + +inline void QOpenGLExtension_ARB_internalformat_query::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_internalformat_query); + d->GetInternalformativ(target, internalformat, pname, bufSize, params); +} + +class QOpenGLExtension_ARB_internalformat_query2Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetInternalformati64v)(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); +}; + +class QOpenGLExtension_ARB_internalformat_query2 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_internalformat_query2(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_internalformat_query2) +}; + +inline void QOpenGLExtension_ARB_internalformat_query2::glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params) +{ + Q_D(QOpenGLExtension_ARB_internalformat_query2); + d->GetInternalformati64v(target, internalformat, pname, bufSize, params); +} + +class QOpenGLExtension_ARB_invalidate_subdataPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum *attachments); + void (QOPENGLF_APIENTRYP InvalidateBufferData)(GLuint buffer); + void (QOPENGLF_APIENTRYP InvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length); + void (QOPENGLF_APIENTRYP InvalidateTexImage)(GLuint texture, GLint level); + void (QOPENGLF_APIENTRYP InvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); +}; + +class QOpenGLExtension_ARB_invalidate_subdata : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_invalidate_subdata(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height); + void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments); + void glInvalidateBufferData(GLuint buffer); + void glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length); + void glInvalidateTexImage(GLuint texture, GLint level); + void glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_invalidate_subdata) +}; + +inline void QOpenGLExtension_ARB_invalidate_subdata::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_ARB_invalidate_subdata); + d->InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); +} + +inline void QOpenGLExtension_ARB_invalidate_subdata::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments) +{ + Q_D(QOpenGLExtension_ARB_invalidate_subdata); + d->InvalidateFramebuffer(target, numAttachments, attachments); +} + +inline void QOpenGLExtension_ARB_invalidate_subdata::glInvalidateBufferData(GLuint buffer) +{ + Q_D(QOpenGLExtension_ARB_invalidate_subdata); + d->InvalidateBufferData(buffer); +} + +inline void QOpenGLExtension_ARB_invalidate_subdata::glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) +{ + Q_D(QOpenGLExtension_ARB_invalidate_subdata); + d->InvalidateBufferSubData(buffer, offset, length); +} + +inline void QOpenGLExtension_ARB_invalidate_subdata::glInvalidateTexImage(GLuint texture, GLint level) +{ + Q_D(QOpenGLExtension_ARB_invalidate_subdata); + d->InvalidateTexImage(texture, level); +} + +inline void QOpenGLExtension_ARB_invalidate_subdata::glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) +{ + Q_D(QOpenGLExtension_ARB_invalidate_subdata); + d->InvalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth); +} + +class QOpenGLExtension_ARB_map_buffer_rangePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* (QOPENGLF_APIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +}; + +class QOpenGLExtension_ARB_map_buffer_range : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_map_buffer_range(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_map_buffer_range) +}; + +inline void QOpenGLExtension_ARB_map_buffer_range::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) +{ + Q_D(QOpenGLExtension_ARB_map_buffer_range); + d->FlushMappedBufferRange(target, offset, length); +} + +inline GLvoid* QOpenGLExtension_ARB_map_buffer_range::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + Q_D(QOpenGLExtension_ARB_map_buffer_range); + return d->MapBufferRange(target, offset, length, access); +} + +class QOpenGLExtension_ARB_matrix_palettePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MatrixIndexPointerARB)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP MatrixIndexuivARB)(GLint size, const GLuint *indices); + void (QOPENGLF_APIENTRYP MatrixIndexusvARB)(GLint size, const GLushort *indices); + void (QOPENGLF_APIENTRYP MatrixIndexubvARB)(GLint size, const GLubyte *indices); + void (QOPENGLF_APIENTRYP CurrentPaletteMatrixARB)(GLint index); +}; + +class QOpenGLExtension_ARB_matrix_palette : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_matrix_palette(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glMatrixIndexuivARB(GLint size, const GLuint *indices); + void glMatrixIndexusvARB(GLint size, const GLushort *indices); + void glMatrixIndexubvARB(GLint size, const GLubyte *indices); + void glCurrentPaletteMatrixARB(GLint index); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_matrix_palette) +}; + +inline void QOpenGLExtension_ARB_matrix_palette::glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_ARB_matrix_palette); + d->MatrixIndexPointerARB(size, type, stride, pointer); +} + +inline void QOpenGLExtension_ARB_matrix_palette::glMatrixIndexuivARB(GLint size, const GLuint *indices) +{ + Q_D(QOpenGLExtension_ARB_matrix_palette); + d->MatrixIndexuivARB(size, indices); +} + +inline void QOpenGLExtension_ARB_matrix_palette::glMatrixIndexusvARB(GLint size, const GLushort *indices) +{ + Q_D(QOpenGLExtension_ARB_matrix_palette); + d->MatrixIndexusvARB(size, indices); +} + +inline void QOpenGLExtension_ARB_matrix_palette::glMatrixIndexubvARB(GLint size, const GLubyte *indices) +{ + Q_D(QOpenGLExtension_ARB_matrix_palette); + d->MatrixIndexubvARB(size, indices); +} + +inline void QOpenGLExtension_ARB_matrix_palette::glCurrentPaletteMatrixARB(GLint index) +{ + Q_D(QOpenGLExtension_ARB_matrix_palette); + d->CurrentPaletteMatrixARB(index); +} + +class QOpenGLExtension_ARB_multi_draw_indirectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MultiDrawElementsIndirect)(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); + void (QOPENGLF_APIENTRYP MultiDrawArraysIndirect)(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +}; + +class QOpenGLExtension_ARB_multi_draw_indirect : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_multi_draw_indirect(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); + void glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_multi_draw_indirect) +}; + +inline void QOpenGLExtension_ARB_multi_draw_indirect::glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + Q_D(QOpenGLExtension_ARB_multi_draw_indirect); + d->MultiDrawElementsIndirect(mode, type, indirect, drawcount, stride); +} + +inline void QOpenGLExtension_ARB_multi_draw_indirect::glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride) +{ + Q_D(QOpenGLExtension_ARB_multi_draw_indirect); + d->MultiDrawArraysIndirect(mode, indirect, drawcount, stride); +} + +class QOpenGLExtension_ARB_multisamplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP SampleCoverageARB)(GLfloat value, GLboolean invert); +}; + +class QOpenGLExtension_ARB_multisample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_multisample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glSampleCoverageARB(GLfloat value, GLboolean invert); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_multisample) +}; + +inline void QOpenGLExtension_ARB_multisample::glSampleCoverageARB(GLfloat value, GLboolean invert) +{ + Q_D(QOpenGLExtension_ARB_multisample); + d->SampleCoverageARB(value, invert); +} + +class QOpenGLExtension_ARB_multitexturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MultiTexCoord4svARB)(GLenum target, const GLshort *v); + void (QOPENGLF_APIENTRYP MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void (QOPENGLF_APIENTRYP MultiTexCoord4ivARB)(GLenum target, const GLint *v); + void (QOPENGLF_APIENTRYP MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q); + void (QOPENGLF_APIENTRYP MultiTexCoord4fvARB)(GLenum target, const GLfloat *v); + void (QOPENGLF_APIENTRYP MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void (QOPENGLF_APIENTRYP MultiTexCoord4dvARB)(GLenum target, const GLdouble *v); + void (QOPENGLF_APIENTRYP MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void (QOPENGLF_APIENTRYP MultiTexCoord3svARB)(GLenum target, const GLshort *v); + void (QOPENGLF_APIENTRYP MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r); + void (QOPENGLF_APIENTRYP MultiTexCoord3ivARB)(GLenum target, const GLint *v); + void (QOPENGLF_APIENTRYP MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r); + void (QOPENGLF_APIENTRYP MultiTexCoord3fvARB)(GLenum target, const GLfloat *v); + void (QOPENGLF_APIENTRYP MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void (QOPENGLF_APIENTRYP MultiTexCoord3dvARB)(GLenum target, const GLdouble *v); + void (QOPENGLF_APIENTRYP MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void (QOPENGLF_APIENTRYP MultiTexCoord2svARB)(GLenum target, const GLshort *v); + void (QOPENGLF_APIENTRYP MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t); + void (QOPENGLF_APIENTRYP MultiTexCoord2ivARB)(GLenum target, const GLint *v); + void (QOPENGLF_APIENTRYP MultiTexCoord2iARB)(GLenum target, GLint s, GLint t); + void (QOPENGLF_APIENTRYP MultiTexCoord2fvARB)(GLenum target, const GLfloat *v); + void (QOPENGLF_APIENTRYP MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t); + void (QOPENGLF_APIENTRYP MultiTexCoord2dvARB)(GLenum target, const GLdouble *v); + void (QOPENGLF_APIENTRYP MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t); + void (QOPENGLF_APIENTRYP MultiTexCoord1svARB)(GLenum target, const GLshort *v); + void (QOPENGLF_APIENTRYP MultiTexCoord1sARB)(GLenum target, GLshort s); + void (QOPENGLF_APIENTRYP MultiTexCoord1ivARB)(GLenum target, const GLint *v); + void (QOPENGLF_APIENTRYP MultiTexCoord1iARB)(GLenum target, GLint s); + void (QOPENGLF_APIENTRYP MultiTexCoord1fvARB)(GLenum target, const GLfloat *v); + void (QOPENGLF_APIENTRYP MultiTexCoord1fARB)(GLenum target, GLfloat s); + void (QOPENGLF_APIENTRYP MultiTexCoord1dvARB)(GLenum target, const GLdouble *v); + void (QOPENGLF_APIENTRYP MultiTexCoord1dARB)(GLenum target, GLdouble s); + void (QOPENGLF_APIENTRYP ClientActiveTextureARB)(GLenum texture); + void (QOPENGLF_APIENTRYP ActiveTextureARB)(GLenum texture); +}; + +class QOpenGLExtension_ARB_multitexture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_multitexture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMultiTexCoord4svARB(GLenum target, const GLshort *v); + void glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + void glMultiTexCoord4ivARB(GLenum target, const GLint *v); + void glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q); + void glMultiTexCoord4fvARB(GLenum target, const GLfloat *v); + void glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + void glMultiTexCoord4dvARB(GLenum target, const GLdouble *v); + void glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + void glMultiTexCoord3svARB(GLenum target, const GLshort *v); + void glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r); + void glMultiTexCoord3ivARB(GLenum target, const GLint *v); + void glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r); + void glMultiTexCoord3fvARB(GLenum target, const GLfloat *v); + void glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r); + void glMultiTexCoord3dvARB(GLenum target, const GLdouble *v); + void glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r); + void glMultiTexCoord2svARB(GLenum target, const GLshort *v); + void glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t); + void glMultiTexCoord2ivARB(GLenum target, const GLint *v); + void glMultiTexCoord2iARB(GLenum target, GLint s, GLint t); + void glMultiTexCoord2fvARB(GLenum target, const GLfloat *v); + void glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t); + void glMultiTexCoord2dvARB(GLenum target, const GLdouble *v); + void glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t); + void glMultiTexCoord1svARB(GLenum target, const GLshort *v); + void glMultiTexCoord1sARB(GLenum target, GLshort s); + void glMultiTexCoord1ivARB(GLenum target, const GLint *v); + void glMultiTexCoord1iARB(GLenum target, GLint s); + void glMultiTexCoord1fvARB(GLenum target, const GLfloat *v); + void glMultiTexCoord1fARB(GLenum target, GLfloat s); + void glMultiTexCoord1dvARB(GLenum target, const GLdouble *v); + void glMultiTexCoord1dARB(GLenum target, GLdouble s); + void glClientActiveTextureARB(GLenum texture); + void glActiveTextureARB(GLenum texture); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_multitexture) +}; + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord4svARB(GLenum target, const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord4svARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord4sARB(target, s, t, r, q); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord4ivARB(GLenum target, const GLint *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord4ivARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord4iARB(target, s, t, r, q); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord4fvARB(GLenum target, const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord4fvARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord4fARB(target, s, t, r, q); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord4dvARB(GLenum target, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord4dvARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord4dARB(target, s, t, r, q); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord3svARB(GLenum target, const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord3svARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord3sARB(target, s, t, r); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord3ivARB(GLenum target, const GLint *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord3ivARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord3iARB(target, s, t, r); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord3fvARB(GLenum target, const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord3fvARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord3fARB(target, s, t, r); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord3dvARB(GLenum target, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord3dvARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord3dARB(target, s, t, r); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord2svARB(GLenum target, const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord2svARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord2sARB(target, s, t); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord2ivARB(GLenum target, const GLint *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord2ivARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord2iARB(GLenum target, GLint s, GLint t) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord2iARB(target, s, t); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord2fvARB(GLenum target, const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord2fvARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord2fARB(target, s, t); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord2dvARB(GLenum target, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord2dvARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord2dARB(target, s, t); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord1svARB(GLenum target, const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord1svARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord1sARB(GLenum target, GLshort s) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord1sARB(target, s); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord1ivARB(GLenum target, const GLint *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord1ivARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord1iARB(GLenum target, GLint s) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord1iARB(target, s); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord1fvARB(GLenum target, const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord1fvARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord1fARB(GLenum target, GLfloat s) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord1fARB(target, s); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord1dvARB(GLenum target, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord1dvARB(target, v); +} + +inline void QOpenGLExtension_ARB_multitexture::glMultiTexCoord1dARB(GLenum target, GLdouble s) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->MultiTexCoord1dARB(target, s); +} + +inline void QOpenGLExtension_ARB_multitexture::glClientActiveTextureARB(GLenum texture) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->ClientActiveTextureARB(texture); +} + +inline void QOpenGLExtension_ARB_multitexture::glActiveTextureARB(GLenum texture) +{ + Q_D(QOpenGLExtension_ARB_multitexture); + d->ActiveTextureARB(texture); +} + +class QOpenGLExtension_ARB_occlusion_queryPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetQueryObjectivARB)(GLuint id, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetQueryivARB)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP EndQueryARB)(GLenum target); + void (QOPENGLF_APIENTRYP BeginQueryARB)(GLenum target, GLuint id); + GLboolean (QOPENGLF_APIENTRYP IsQueryARB)(GLuint id); + void (QOPENGLF_APIENTRYP DeleteQueriesARB)(GLsizei n, const GLuint *ids); + void (QOPENGLF_APIENTRYP GenQueriesARB)(GLsizei n, GLuint *ids); +}; + +class QOpenGLExtension_ARB_occlusion_query : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_occlusion_query(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint *params); + void glGetQueryObjectivARB(GLuint id, GLenum pname, GLint *params); + void glGetQueryivARB(GLenum target, GLenum pname, GLint *params); + void glEndQueryARB(GLenum target); + void glBeginQueryARB(GLenum target, GLuint id); + GLboolean glIsQueryARB(GLuint id); + void glDeleteQueriesARB(GLsizei n, const GLuint *ids); + void glGenQueriesARB(GLsizei n, GLuint *ids); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_occlusion_query) +}; + +inline void QOpenGLExtension_ARB_occlusion_query::glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint *params) +{ + Q_D(QOpenGLExtension_ARB_occlusion_query); + d->GetQueryObjectuivARB(id, pname, params); +} + +inline void QOpenGLExtension_ARB_occlusion_query::glGetQueryObjectivARB(GLuint id, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_occlusion_query); + d->GetQueryObjectivARB(id, pname, params); +} + +inline void QOpenGLExtension_ARB_occlusion_query::glGetQueryivARB(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_occlusion_query); + d->GetQueryivARB(target, pname, params); +} + +inline void QOpenGLExtension_ARB_occlusion_query::glEndQueryARB(GLenum target) +{ + Q_D(QOpenGLExtension_ARB_occlusion_query); + d->EndQueryARB(target); +} + +inline void QOpenGLExtension_ARB_occlusion_query::glBeginQueryARB(GLenum target, GLuint id) +{ + Q_D(QOpenGLExtension_ARB_occlusion_query); + d->BeginQueryARB(target, id); +} + +inline GLboolean QOpenGLExtension_ARB_occlusion_query::glIsQueryARB(GLuint id) +{ + Q_D(QOpenGLExtension_ARB_occlusion_query); + return d->IsQueryARB(id); +} + +inline void QOpenGLExtension_ARB_occlusion_query::glDeleteQueriesARB(GLsizei n, const GLuint *ids) +{ + Q_D(QOpenGLExtension_ARB_occlusion_query); + d->DeleteQueriesARB(n, ids); +} + +inline void QOpenGLExtension_ARB_occlusion_query::glGenQueriesARB(GLsizei n, GLuint *ids) +{ + Q_D(QOpenGLExtension_ARB_occlusion_query); + d->GenQueriesARB(n, ids); +} + +class QOpenGLExtension_ARB_point_parametersPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP PointParameterfvARB)(GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP PointParameterfARB)(GLenum pname, GLfloat param); +}; + +class QOpenGLExtension_ARB_point_parameters : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_point_parameters(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glPointParameterfvARB(GLenum pname, const GLfloat *params); + void glPointParameterfARB(GLenum pname, GLfloat param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_point_parameters) +}; + +inline void QOpenGLExtension_ARB_point_parameters::glPointParameterfvARB(GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_ARB_point_parameters); + d->PointParameterfvARB(pname, params); +} + +inline void QOpenGLExtension_ARB_point_parameters::glPointParameterfARB(GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_ARB_point_parameters); + d->PointParameterfARB(pname, param); +} + +class QOpenGLExtension_ARB_program_interface_queryPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLint (QOPENGLF_APIENTRYP GetProgramResourceLocationIndex)(GLuint program, GLenum programInterface, const GLchar *name); + GLint (QOPENGLF_APIENTRYP GetProgramResourceLocation)(GLuint program, GLenum programInterface, const GLchar *name); + void (QOPENGLF_APIENTRYP GetProgramResourceiv)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); + void (QOPENGLF_APIENTRYP GetProgramResourceName)(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); + GLuint (QOPENGLF_APIENTRYP GetProgramResourceIndex)(GLuint program, GLenum programInterface, const GLchar *name); + void (QOPENGLF_APIENTRYP GetProgramInterfaceiv)(GLuint program, GLenum programInterface, GLenum pname, GLint *params); +}; + +class QOpenGLExtension_ARB_program_interface_query : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_program_interface_query(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLint glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name); + GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name); + void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); + void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); + GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name); + void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_program_interface_query) +}; + +inline GLint QOpenGLExtension_ARB_program_interface_query::glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_program_interface_query); + return d->GetProgramResourceLocationIndex(program, programInterface, name); +} + +inline GLint QOpenGLExtension_ARB_program_interface_query::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_program_interface_query); + return d->GetProgramResourceLocation(program, programInterface, name); +} + +inline void QOpenGLExtension_ARB_program_interface_query::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_program_interface_query); + d->GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params); +} + +inline void QOpenGLExtension_ARB_program_interface_query::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_program_interface_query); + d->GetProgramResourceName(program, programInterface, index, bufSize, length, name); +} + +inline GLuint QOpenGLExtension_ARB_program_interface_query::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_program_interface_query); + return d->GetProgramResourceIndex(program, programInterface, name); +} + +inline void QOpenGLExtension_ARB_program_interface_query::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_program_interface_query); + d->GetProgramInterfaceiv(program, programInterface, pname, params); +} + +class QOpenGLExtension_ARB_provoking_vertexPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ProvokingVertex)(GLenum mode); +}; + +class QOpenGLExtension_ARB_provoking_vertex : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_provoking_vertex(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glProvokingVertex(GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_provoking_vertex) +}; + +inline void QOpenGLExtension_ARB_provoking_vertex::glProvokingVertex(GLenum mode) +{ + Q_D(QOpenGLExtension_ARB_provoking_vertex); + d->ProvokingVertex(mode); +} + +class QOpenGLExtension_ARB_robustnessPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetnUniformdvARB)(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); + void (QOPENGLF_APIENTRYP GetnUniformuivARB)(GLuint program, GLint location, GLsizei bufSize, GLuint *params); + void (QOPENGLF_APIENTRYP GetnUniformivARB)(GLuint program, GLint location, GLsizei bufSize, GLint *params); + void (QOPENGLF_APIENTRYP GetnUniformfvARB)(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); + void (QOPENGLF_APIENTRYP GetnCompressedTexImageARB)(GLenum target, GLint lod, GLsizei bufSize, GLvoid *img); + void (QOPENGLF_APIENTRYP ReadnPixelsARB)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); + void (QOPENGLF_APIENTRYP GetnTexImageARB)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); + void (QOPENGLF_APIENTRYP GetnMinmaxARB)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); + void (QOPENGLF_APIENTRYP GetnHistogramARB)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); + void (QOPENGLF_APIENTRYP GetnSeparableFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); + void (QOPENGLF_APIENTRYP GetnConvolutionFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); + void (QOPENGLF_APIENTRYP GetnColorTableARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table); + void (QOPENGLF_APIENTRYP GetnPolygonStippleARB)(GLsizei bufSize, GLubyte *pattern); + void (QOPENGLF_APIENTRYP GetnPixelMapusvARB)(GLenum map, GLsizei bufSize, GLushort *values); + void (QOPENGLF_APIENTRYP GetnPixelMapuivARB)(GLenum map, GLsizei bufSize, GLuint *values); + void (QOPENGLF_APIENTRYP GetnPixelMapfvARB)(GLenum map, GLsizei bufSize, GLfloat *values); + void (QOPENGLF_APIENTRYP GetnMapivARB)(GLenum target, GLenum query, GLsizei bufSize, GLint *v); + void (QOPENGLF_APIENTRYP GetnMapfvARB)(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); + void (QOPENGLF_APIENTRYP GetnMapdvARB)(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); + GLenum (QOPENGLF_APIENTRYP GetGraphicsResetStatusARB)(); +}; + +class QOpenGLExtension_ARB_robustness : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_robustness(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetnUniformdvARB(GLuint program, GLint location, GLsizei bufSize, GLdouble *params); + void glGetnUniformuivARB(GLuint program, GLint location, GLsizei bufSize, GLuint *params); + void glGetnUniformivARB(GLuint program, GLint location, GLsizei bufSize, GLint *params); + void glGetnUniformfvARB(GLuint program, GLint location, GLsizei bufSize, GLfloat *params); + void glGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, GLvoid *img); + void glReadnPixelsARB(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data); + void glGetnTexImageARB(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img); + void glGetnMinmaxARB(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); + void glGetnHistogramARB(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values); + void glGetnSeparableFilterARB(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span); + void glGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image); + void glGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table); + void glGetnPolygonStippleARB(GLsizei bufSize, GLubyte *pattern); + void glGetnPixelMapusvARB(GLenum map, GLsizei bufSize, GLushort *values); + void glGetnPixelMapuivARB(GLenum map, GLsizei bufSize, GLuint *values); + void glGetnPixelMapfvARB(GLenum map, GLsizei bufSize, GLfloat *values); + void glGetnMapivARB(GLenum target, GLenum query, GLsizei bufSize, GLint *v); + void glGetnMapfvARB(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v); + void glGetnMapdvARB(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v); + GLenum glGetGraphicsResetStatusARB(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_robustness) +}; + +inline void QOpenGLExtension_ARB_robustness::glGetnUniformdvARB(GLuint program, GLint location, GLsizei bufSize, GLdouble *params) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnUniformdvARB(program, location, bufSize, params); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnUniformuivARB(GLuint program, GLint location, GLsizei bufSize, GLuint *params) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnUniformuivARB(program, location, bufSize, params); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnUniformivARB(GLuint program, GLint location, GLsizei bufSize, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnUniformivARB(program, location, bufSize, params); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnUniformfvARB(GLuint program, GLint location, GLsizei bufSize, GLfloat *params) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnUniformfvARB(program, location, bufSize, params); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, GLvoid *img) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnCompressedTexImageARB(target, lod, bufSize, img); +} + +inline void QOpenGLExtension_ARB_robustness::glReadnPixelsARB(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->ReadnPixelsARB(x, y, width, height, format, type, bufSize, data); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnTexImageARB(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnTexImageARB(target, level, format, type, bufSize, img); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnMinmaxARB(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnMinmaxARB(target, reset, format, type, bufSize, values); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnHistogramARB(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnHistogramARB(target, reset, format, type, bufSize, values); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnSeparableFilterARB(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnSeparableFilterARB(target, format, type, rowBufSize, row, columnBufSize, column, span); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnConvolutionFilterARB(target, format, type, bufSize, image); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnColorTableARB(target, format, type, bufSize, table); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnPolygonStippleARB(GLsizei bufSize, GLubyte *pattern) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnPolygonStippleARB(bufSize, pattern); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnPixelMapusvARB(GLenum map, GLsizei bufSize, GLushort *values) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnPixelMapusvARB(map, bufSize, values); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnPixelMapuivARB(GLenum map, GLsizei bufSize, GLuint *values) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnPixelMapuivARB(map, bufSize, values); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnPixelMapfvARB(GLenum map, GLsizei bufSize, GLfloat *values) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnPixelMapfvARB(map, bufSize, values); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnMapivARB(GLenum target, GLenum query, GLsizei bufSize, GLint *v) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnMapivARB(target, query, bufSize, v); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnMapfvARB(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnMapfvARB(target, query, bufSize, v); +} + +inline void QOpenGLExtension_ARB_robustness::glGetnMapdvARB(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_robustness); + d->GetnMapdvARB(target, query, bufSize, v); +} + +inline GLenum QOpenGLExtension_ARB_robustness::glGetGraphicsResetStatusARB() +{ + Q_D(QOpenGLExtension_ARB_robustness); + return d->GetGraphicsResetStatusARB(); +} + +class QOpenGLExtension_ARB_sample_shadingPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MinSampleShadingARB)(GLfloat value); +}; + +class QOpenGLExtension_ARB_sample_shading : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_sample_shading(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMinSampleShadingARB(GLfloat value); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_sample_shading) +}; + +inline void QOpenGLExtension_ARB_sample_shading::glMinSampleShadingARB(GLfloat value) +{ + Q_D(QOpenGLExtension_ARB_sample_shading); + d->MinSampleShadingARB(value); +} + +class QOpenGLExtension_ARB_sampler_objectsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint *param); + void (QOPENGLF_APIENTRYP SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint *param); + void (QOPENGLF_APIENTRYP SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *param); + void (QOPENGLF_APIENTRYP SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *param); + void (QOPENGLF_APIENTRYP SamplerParameteri)(GLuint sampler, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP BindSampler)(GLuint unit, GLuint sampler); + GLboolean (QOPENGLF_APIENTRYP IsSampler)(GLuint sampler); + void (QOPENGLF_APIENTRYP DeleteSamplers)(GLsizei count, const GLuint *samplers); + void (QOPENGLF_APIENTRYP GenSamplers)(GLsizei count, GLuint *samplers); +}; + +class QOpenGLExtension_ARB_sampler_objects : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_sampler_objects(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params); + void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params); + void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params); + void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params); + void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param); + void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param); + void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param); + void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + void glBindSampler(GLuint unit, GLuint sampler); + GLboolean glIsSampler(GLuint sampler); + void glDeleteSamplers(GLsizei count, const GLuint *samplers); + void glGenSamplers(GLsizei count, GLuint *samplers); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_sampler_objects) +}; + +inline void QOpenGLExtension_ARB_sampler_objects::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->GetSamplerParameterIuiv(sampler, pname, params); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->GetSamplerParameterfv(sampler, pname, params); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->GetSamplerParameterIiv(sampler, pname, params); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->GetSamplerParameteriv(sampler, pname, params); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->SamplerParameterIuiv(sampler, pname, param); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->SamplerParameterIiv(sampler, pname, param); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->SamplerParameterfv(sampler, pname, param); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->SamplerParameterf(sampler, pname, param); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->SamplerParameteriv(sampler, pname, param); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->SamplerParameteri(sampler, pname, param); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glBindSampler(GLuint unit, GLuint sampler) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->BindSampler(unit, sampler); +} + +inline GLboolean QOpenGLExtension_ARB_sampler_objects::glIsSampler(GLuint sampler) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + return d->IsSampler(sampler); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glDeleteSamplers(GLsizei count, const GLuint *samplers) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->DeleteSamplers(count, samplers); +} + +inline void QOpenGLExtension_ARB_sampler_objects::glGenSamplers(GLsizei count, GLuint *samplers) +{ + Q_D(QOpenGLExtension_ARB_sampler_objects); + d->GenSamplers(count, samplers); +} + +class QOpenGLExtension_ARB_separate_shader_objectsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetProgramPipelineInfoLog)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void (QOPENGLF_APIENTRYP ValidateProgramPipeline)(GLuint pipeline); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2dv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform4uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform4ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void (QOPENGLF_APIENTRYP ProgramUniform4dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform4d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + void (QOPENGLF_APIENTRYP ProgramUniform4fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform4f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void (QOPENGLF_APIENTRYP ProgramUniform4iv)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform4i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void (QOPENGLF_APIENTRYP ProgramUniform3uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform3ui)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void (QOPENGLF_APIENTRYP ProgramUniform3dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform3d)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + void (QOPENGLF_APIENTRYP ProgramUniform3fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform3f)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void (QOPENGLF_APIENTRYP ProgramUniform3iv)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform3i)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void (QOPENGLF_APIENTRYP ProgramUniform2uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform2ui)(GLuint program, GLint location, GLuint v0, GLuint v1); + void (QOPENGLF_APIENTRYP ProgramUniform2dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform2d)(GLuint program, GLint location, GLdouble v0, GLdouble v1); + void (QOPENGLF_APIENTRYP ProgramUniform2fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform2f)(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void (QOPENGLF_APIENTRYP ProgramUniform2iv)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform2i)(GLuint program, GLint location, GLint v0, GLint v1); + void (QOPENGLF_APIENTRYP ProgramUniform1uiv)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform1ui)(GLuint program, GLint location, GLuint v0); + void (QOPENGLF_APIENTRYP ProgramUniform1dv)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform1d)(GLuint program, GLint location, GLdouble v0); + void (QOPENGLF_APIENTRYP ProgramUniform1fv)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform1f)(GLuint program, GLint location, GLfloat v0); + void (QOPENGLF_APIENTRYP ProgramUniform1iv)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform1i)(GLuint program, GLint location, GLint v0); + void (QOPENGLF_APIENTRYP GetProgramPipelineiv)(GLuint pipeline, GLenum pname, GLint *params); + GLboolean (QOPENGLF_APIENTRYP IsProgramPipeline)(GLuint pipeline); + void (QOPENGLF_APIENTRYP GenProgramPipelines)(GLsizei n, GLuint *pipelines); + void (QOPENGLF_APIENTRYP DeleteProgramPipelines)(GLsizei n, const GLuint *pipelines); + void (QOPENGLF_APIENTRYP BindProgramPipeline)(GLuint pipeline); + GLuint (QOPENGLF_APIENTRYP CreateShaderProgramv)(GLenum type, GLsizei count, const GLchar* const *strings); + void (QOPENGLF_APIENTRYP ActiveShaderProgram)(GLuint pipeline, GLuint program); + void (QOPENGLF_APIENTRYP UseProgramStages)(GLuint pipeline, GLbitfield stages, GLuint program); +}; + +class QOpenGLExtension_ARB_separate_shader_objects : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_separate_shader_objects(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void glValidateProgramPipeline(GLuint pipeline); + void glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); + void glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); + void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); + void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); + void glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform1d(GLuint program, GLint location, GLdouble v0); + void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); + void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform1i(GLuint program, GLint location, GLint v0); + void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params); + GLboolean glIsProgramPipeline(GLuint pipeline); + void glGenProgramPipelines(GLsizei n, GLuint *pipelines); + void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines); + void glBindProgramPipeline(GLuint pipeline); + GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings); + void glActiveShaderProgram(GLuint pipeline, GLuint program); + void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_separate_shader_objects) +}; + +inline void QOpenGLExtension_ARB_separate_shader_objects::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glValidateProgramPipeline(GLuint pipeline) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ValidateProgramPipeline(pipeline); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix4x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix3x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix4x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix2x4dv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix3x2dv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix2x3dv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix4dv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix3dv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix2dv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform4uiv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform4dv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform4d(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform4fv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform4f(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform4iv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform4i(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform3uiv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform3ui(program, location, v0, v1, v2); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform3dv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform3d(program, location, v0, v1, v2); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform3fv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform3f(program, location, v0, v1, v2); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform3iv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform3i(program, location, v0, v1, v2); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform2uiv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform2ui(program, location, v0, v1); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform2dv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform2d(program, location, v0, v1); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform2fv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform2f(program, location, v0, v1); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform2iv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform2i(program, location, v0, v1); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform1uiv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform1ui(program, location, v0); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform1dv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform1d(GLuint program, GLint location, GLdouble v0) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform1d(program, location, v0); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform1fv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform1f(program, location, v0); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform1iv(program, location, count, value); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ProgramUniform1i(program, location, v0); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->GetProgramPipelineiv(pipeline, pname, params); +} + +inline GLboolean QOpenGLExtension_ARB_separate_shader_objects::glIsProgramPipeline(GLuint pipeline) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + return d->IsProgramPipeline(pipeline); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glGenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->GenProgramPipelines(n, pipelines); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->DeleteProgramPipelines(n, pipelines); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glBindProgramPipeline(GLuint pipeline) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->BindProgramPipeline(pipeline); +} + +inline GLuint QOpenGLExtension_ARB_separate_shader_objects::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + return d->CreateShaderProgramv(type, count, strings); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glActiveShaderProgram(GLuint pipeline, GLuint program) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->ActiveShaderProgram(pipeline, program); +} + +inline void QOpenGLExtension_ARB_separate_shader_objects::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ + Q_D(QOpenGLExtension_ARB_separate_shader_objects); + d->UseProgramStages(pipeline, stages, program); +} + +class QOpenGLExtension_ARB_shader_atomic_countersPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetActiveAtomicCounterBufferiv)(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); +}; + +class QOpenGLExtension_ARB_shader_atomic_counters : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_shader_atomic_counters(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_shader_atomic_counters) +}; + +inline void QOpenGLExtension_ARB_shader_atomic_counters::glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_shader_atomic_counters); + d->GetActiveAtomicCounterBufferiv(program, bufferIndex, pname, params); +} + +class QOpenGLExtension_ARB_shader_image_load_storePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MemoryBarrier)(GLbitfield barriers); + void (QOPENGLF_APIENTRYP BindImageTexture)(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); +}; + +class QOpenGLExtension_ARB_shader_image_load_store : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_shader_image_load_store(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMemoryBarrier(GLbitfield barriers); + void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_shader_image_load_store) +}; + +inline void QOpenGLExtension_ARB_shader_image_load_store::glMemoryBarrier(GLbitfield barriers) +{ + Q_D(QOpenGLExtension_ARB_shader_image_load_store); + d->MemoryBarrier(barriers); +} + +inline void QOpenGLExtension_ARB_shader_image_load_store::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) +{ + Q_D(QOpenGLExtension_ARB_shader_image_load_store); + d->BindImageTexture(unit, texture, level, layered, layer, access, format); +} + +class QOpenGLExtension_ARB_shader_objectsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetShaderSourceARB)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); + void (QOPENGLF_APIENTRYP GetUniformivARB)(GLhandleARB programObj, GLint location, GLint *params); + void (QOPENGLF_APIENTRYP GetUniformfvARB)(GLhandleARB programObj, GLint location, GLfloat *params); + void (QOPENGLF_APIENTRYP GetActiveUniformARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); + GLint (QOPENGLF_APIENTRYP GetUniformLocationARB)(GLhandleARB programObj, const GLcharARB *name); + void (QOPENGLF_APIENTRYP GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); + void (QOPENGLF_APIENTRYP GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); + void (QOPENGLF_APIENTRYP GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP Uniform4ivARB)(GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP Uniform3ivARB)(GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP Uniform2ivARB)(GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP Uniform1ivARB)(GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP Uniform4fvARB)(GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP Uniform3fvARB)(GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP Uniform2fvARB)(GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP Uniform1fvARB)(GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void (QOPENGLF_APIENTRYP Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2); + void (QOPENGLF_APIENTRYP Uniform2iARB)(GLint location, GLint v0, GLint v1); + void (QOPENGLF_APIENTRYP Uniform1iARB)(GLint location, GLint v0); + void (QOPENGLF_APIENTRYP Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void (QOPENGLF_APIENTRYP Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void (QOPENGLF_APIENTRYP Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1); + void (QOPENGLF_APIENTRYP Uniform1fARB)(GLint location, GLfloat v0); + void (QOPENGLF_APIENTRYP ValidateProgramARB)(GLhandleARB programObj); + void (QOPENGLF_APIENTRYP UseProgramObjectARB)(GLhandleARB programObj); + void (QOPENGLF_APIENTRYP LinkProgramARB)(GLhandleARB programObj); + void (QOPENGLF_APIENTRYP AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj); + GLhandleARB (QOPENGLF_APIENTRYP CreateProgramObjectARB)(); + void (QOPENGLF_APIENTRYP CompileShaderARB)(GLhandleARB shaderObj); + void (QOPENGLF_APIENTRYP ShaderSourceARB)(GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length); + GLhandleARB (QOPENGLF_APIENTRYP CreateShaderObjectARB)(GLenum shaderType); + void (QOPENGLF_APIENTRYP DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj); + GLhandleARB (QOPENGLF_APIENTRYP GetHandleARB)(GLenum pname); + void (QOPENGLF_APIENTRYP DeleteObjectARB)(GLhandleARB obj); +}; + +class QOpenGLExtension_ARB_shader_objects : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_shader_objects(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); + void glGetUniformivARB(GLhandleARB programObj, GLint location, GLint *params); + void glGetUniformfvARB(GLhandleARB programObj, GLint location, GLfloat *params); + void glGetActiveUniformARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); + GLint glGetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name); + void glGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); + void glGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); + void glGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint *params); + void glGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat *params); + void glUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glUniform4ivARB(GLint location, GLsizei count, const GLint *value); + void glUniform3ivARB(GLint location, GLsizei count, const GLint *value); + void glUniform2ivARB(GLint location, GLsizei count, const GLint *value); + void glUniform1ivARB(GLint location, GLsizei count, const GLint *value); + void glUniform4fvARB(GLint location, GLsizei count, const GLfloat *value); + void glUniform3fvARB(GLint location, GLsizei count, const GLfloat *value); + void glUniform2fvARB(GLint location, GLsizei count, const GLfloat *value); + void glUniform1fvARB(GLint location, GLsizei count, const GLfloat *value); + void glUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2); + void glUniform2iARB(GLint location, GLint v0, GLint v1); + void glUniform1iARB(GLint location, GLint v0); + void glUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glUniform2fARB(GLint location, GLfloat v0, GLfloat v1); + void glUniform1fARB(GLint location, GLfloat v0); + void glValidateProgramARB(GLhandleARB programObj); + void glUseProgramObjectARB(GLhandleARB programObj); + void glLinkProgramARB(GLhandleARB programObj); + void glAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj); + GLhandleARB glCreateProgramObjectARB(); + void glCompileShaderARB(GLhandleARB shaderObj); + void glShaderSourceARB(GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length); + GLhandleARB glCreateShaderObjectARB(GLenum shaderType); + void glDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj); + GLhandleARB glGetHandleARB(GLenum pname); + void glDeleteObjectARB(GLhandleARB obj); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_shader_objects) +}; + +inline void QOpenGLExtension_ARB_shader_objects::glGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->GetShaderSourceARB(obj, maxLength, length, source); +} + +inline void QOpenGLExtension_ARB_shader_objects::glGetUniformivARB(GLhandleARB programObj, GLint location, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->GetUniformivARB(programObj, location, params); +} + +inline void QOpenGLExtension_ARB_shader_objects::glGetUniformfvARB(GLhandleARB programObj, GLint location, GLfloat *params) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->GetUniformfvARB(programObj, location, params); +} + +inline void QOpenGLExtension_ARB_shader_objects::glGetActiveUniformARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->GetActiveUniformARB(programObj, index, maxLength, length, size, type, name); +} + +inline GLint QOpenGLExtension_ARB_shader_objects::glGetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + return d->GetUniformLocationARB(programObj, name); +} + +inline void QOpenGLExtension_ARB_shader_objects::glGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->GetAttachedObjectsARB(containerObj, maxCount, count, obj); +} + +inline void QOpenGLExtension_ARB_shader_objects::glGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->GetInfoLogARB(obj, maxLength, length, infoLog); +} + +inline void QOpenGLExtension_ARB_shader_objects::glGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->GetObjectParameterivARB(obj, pname, params); +} + +inline void QOpenGLExtension_ARB_shader_objects::glGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->GetObjectParameterfvARB(obj, pname, params); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->UniformMatrix4fvARB(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->UniformMatrix3fvARB(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->UniformMatrix2fvARB(location, count, transpose, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform4ivARB(GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform4ivARB(location, count, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform3ivARB(GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform3ivARB(location, count, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform2ivARB(GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform2ivARB(location, count, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform1ivARB(GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform1ivARB(location, count, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform4fvARB(GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform4fvARB(location, count, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform3fvARB(GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform3fvARB(location, count, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform2fvARB(GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform2fvARB(location, count, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform1fvARB(GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform1fvARB(location, count, value); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform4iARB(location, v0, v1, v2, v3); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform3iARB(location, v0, v1, v2); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform2iARB(GLint location, GLint v0, GLint v1) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform2iARB(location, v0, v1); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform1iARB(GLint location, GLint v0) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform1iARB(location, v0); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform4fARB(location, v0, v1, v2, v3); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform3fARB(location, v0, v1, v2); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform2fARB(GLint location, GLfloat v0, GLfloat v1) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform2fARB(location, v0, v1); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUniform1fARB(GLint location, GLfloat v0) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->Uniform1fARB(location, v0); +} + +inline void QOpenGLExtension_ARB_shader_objects::glValidateProgramARB(GLhandleARB programObj) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->ValidateProgramARB(programObj); +} + +inline void QOpenGLExtension_ARB_shader_objects::glUseProgramObjectARB(GLhandleARB programObj) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->UseProgramObjectARB(programObj); +} + +inline void QOpenGLExtension_ARB_shader_objects::glLinkProgramARB(GLhandleARB programObj) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->LinkProgramARB(programObj); +} + +inline void QOpenGLExtension_ARB_shader_objects::glAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->AttachObjectARB(containerObj, obj); +} + +inline GLhandleARB QOpenGLExtension_ARB_shader_objects::glCreateProgramObjectARB() +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + return d->CreateProgramObjectARB(); +} + +inline void QOpenGLExtension_ARB_shader_objects::glCompileShaderARB(GLhandleARB shaderObj) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->CompileShaderARB(shaderObj); +} + +inline void QOpenGLExtension_ARB_shader_objects::glShaderSourceARB(GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->ShaderSourceARB(shaderObj, count, string, length); +} + +inline GLhandleARB QOpenGLExtension_ARB_shader_objects::glCreateShaderObjectARB(GLenum shaderType) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + return d->CreateShaderObjectARB(shaderType); +} + +inline void QOpenGLExtension_ARB_shader_objects::glDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->DetachObjectARB(containerObj, attachedObj); +} + +inline GLhandleARB QOpenGLExtension_ARB_shader_objects::glGetHandleARB(GLenum pname) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + return d->GetHandleARB(pname); +} + +inline void QOpenGLExtension_ARB_shader_objects::glDeleteObjectARB(GLhandleARB obj) +{ + Q_D(QOpenGLExtension_ARB_shader_objects); + d->DeleteObjectARB(obj); +} + +class QOpenGLExtension_ARB_shader_storage_buffer_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ShaderStorageBlockBinding)(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); +}; + +class QOpenGLExtension_ARB_shader_storage_buffer_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_shader_storage_buffer_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_shader_storage_buffer_object) +}; + +inline void QOpenGLExtension_ARB_shader_storage_buffer_object::glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) +{ + Q_D(QOpenGLExtension_ARB_shader_storage_buffer_object); + d->ShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding); +} + +class QOpenGLExtension_ARB_shader_subroutinePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetProgramStageiv)(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void (QOPENGLF_APIENTRYP GetUniformSubroutineuiv)(GLenum shadertype, GLint location, GLuint *params); + void (QOPENGLF_APIENTRYP UniformSubroutinesuiv)(GLenum shadertype, GLsizei count, const GLuint *indices); + void (QOPENGLF_APIENTRYP GetActiveSubroutineName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void (QOPENGLF_APIENTRYP GetActiveSubroutineUniformName)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void (QOPENGLF_APIENTRYP GetActiveSubroutineUniformiv)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint (QOPENGLF_APIENTRYP GetSubroutineIndex)(GLuint program, GLenum shadertype, const GLchar *name); + GLint (QOPENGLF_APIENTRYP GetSubroutineUniformLocation)(GLuint program, GLenum shadertype, const GLchar *name); +}; + +class QOpenGLExtension_ARB_shader_subroutine : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_shader_subroutine(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values); + void glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params); + void glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices); + void glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name); + void glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); + GLuint glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name); + GLint glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_shader_subroutine) +}; + +inline void QOpenGLExtension_ARB_shader_subroutine::glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint *values) +{ + Q_D(QOpenGLExtension_ARB_shader_subroutine); + d->GetProgramStageiv(program, shadertype, pname, values); +} + +inline void QOpenGLExtension_ARB_shader_subroutine::glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params) +{ + Q_D(QOpenGLExtension_ARB_shader_subroutine); + d->GetUniformSubroutineuiv(shadertype, location, params); +} + +inline void QOpenGLExtension_ARB_shader_subroutine::glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices) +{ + Q_D(QOpenGLExtension_ARB_shader_subroutine); + d->UniformSubroutinesuiv(shadertype, count, indices); +} + +inline void QOpenGLExtension_ARB_shader_subroutine::glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_shader_subroutine); + d->GetActiveSubroutineName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLExtension_ARB_shader_subroutine::glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_shader_subroutine); + d->GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name); +} + +inline void QOpenGLExtension_ARB_shader_subroutine::glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values) +{ + Q_D(QOpenGLExtension_ARB_shader_subroutine); + d->GetActiveSubroutineUniformiv(program, shadertype, index, pname, values); +} + +inline GLuint QOpenGLExtension_ARB_shader_subroutine::glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_shader_subroutine); + return d->GetSubroutineIndex(program, shadertype, name); +} + +inline GLint QOpenGLExtension_ARB_shader_subroutine::glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_shader_subroutine); + return d->GetSubroutineUniformLocation(program, shadertype, name); +} + +class QOpenGLExtension_ARB_shading_language_includePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetNamedStringivARB)(GLint namelen, const GLchar *name, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetNamedStringARB)(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); + GLboolean (QOPENGLF_APIENTRYP IsNamedStringARB)(GLint namelen, const GLchar *name); + void (QOPENGLF_APIENTRYP CompileShaderIncludeARB)(GLuint shader, GLsizei count, const GLchar* *path, const GLint *length); + void (QOPENGLF_APIENTRYP DeleteNamedStringARB)(GLint namelen, const GLchar *name); + void (QOPENGLF_APIENTRYP NamedStringARB)(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); +}; + +class QOpenGLExtension_ARB_shading_language_include : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_shading_language_include(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetNamedStringivARB(GLint namelen, const GLchar *name, GLenum pname, GLint *params); + void glGetNamedStringARB(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string); + GLboolean glIsNamedStringARB(GLint namelen, const GLchar *name); + void glCompileShaderIncludeARB(GLuint shader, GLsizei count, const GLchar* *path, const GLint *length); + void glDeleteNamedStringARB(GLint namelen, const GLchar *name); + void glNamedStringARB(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_shading_language_include) +}; + +inline void QOpenGLExtension_ARB_shading_language_include::glGetNamedStringivARB(GLint namelen, const GLchar *name, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_shading_language_include); + d->GetNamedStringivARB(namelen, name, pname, params); +} + +inline void QOpenGLExtension_ARB_shading_language_include::glGetNamedStringARB(GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string) +{ + Q_D(QOpenGLExtension_ARB_shading_language_include); + d->GetNamedStringARB(namelen, name, bufSize, stringlen, string); +} + +inline GLboolean QOpenGLExtension_ARB_shading_language_include::glIsNamedStringARB(GLint namelen, const GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_shading_language_include); + return d->IsNamedStringARB(namelen, name); +} + +inline void QOpenGLExtension_ARB_shading_language_include::glCompileShaderIncludeARB(GLuint shader, GLsizei count, const GLchar* *path, const GLint *length) +{ + Q_D(QOpenGLExtension_ARB_shading_language_include); + d->CompileShaderIncludeARB(shader, count, path, length); +} + +inline void QOpenGLExtension_ARB_shading_language_include::glDeleteNamedStringARB(GLint namelen, const GLchar *name) +{ + Q_D(QOpenGLExtension_ARB_shading_language_include); + d->DeleteNamedStringARB(namelen, name); +} + +inline void QOpenGLExtension_ARB_shading_language_include::glNamedStringARB(GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string) +{ + Q_D(QOpenGLExtension_ARB_shading_language_include); + d->NamedStringARB(type, namelen, name, stringlen, string); +} + +class QOpenGLExtension_ARB_syncPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void (QOPENGLF_APIENTRYP GetInteger64v)(GLenum pname, GLint64 *params); + void (QOPENGLF_APIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum (QOPENGLF_APIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); + void (QOPENGLF_APIENTRYP DeleteSync)(GLsync sync); + GLboolean (QOPENGLF_APIENTRYP IsSync)(GLsync sync); + GLsync (QOPENGLF_APIENTRYP FenceSync)(GLenum condition, GLbitfield flags); +}; + +class QOpenGLExtension_ARB_sync : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_sync(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glGetInteger64v(GLenum pname, GLint64 *params); + void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + void glDeleteSync(GLsync sync); + GLboolean glIsSync(GLsync sync); + GLsync glFenceSync(GLenum condition, GLbitfield flags); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_sync) +}; + +inline void QOpenGLExtension_ARB_sync::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + Q_D(QOpenGLExtension_ARB_sync); + d->GetSynciv(sync, pname, bufSize, length, values); +} + +inline void QOpenGLExtension_ARB_sync::glGetInteger64v(GLenum pname, GLint64 *params) +{ + Q_D(QOpenGLExtension_ARB_sync); + d->GetInteger64v(pname, params); +} + +inline void QOpenGLExtension_ARB_sync::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + Q_D(QOpenGLExtension_ARB_sync); + d->WaitSync(sync, flags, timeout); +} + +inline GLenum QOpenGLExtension_ARB_sync::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) +{ + Q_D(QOpenGLExtension_ARB_sync); + return d->ClientWaitSync(sync, flags, timeout); +} + +inline void QOpenGLExtension_ARB_sync::glDeleteSync(GLsync sync) +{ + Q_D(QOpenGLExtension_ARB_sync); + d->DeleteSync(sync); +} + +inline GLboolean QOpenGLExtension_ARB_sync::glIsSync(GLsync sync) +{ + Q_D(QOpenGLExtension_ARB_sync); + return d->IsSync(sync); +} + +inline GLsync QOpenGLExtension_ARB_sync::glFenceSync(GLenum condition, GLbitfield flags) +{ + Q_D(QOpenGLExtension_ARB_sync); + return d->FenceSync(condition, flags); +} + +class QOpenGLExtension_ARB_tessellation_shaderPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP PatchParameterfv)(GLenum pname, const GLfloat *values); + void (QOPENGLF_APIENTRYP PatchParameteri)(GLenum pname, GLint value); +}; + +class QOpenGLExtension_ARB_tessellation_shader : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_tessellation_shader(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glPatchParameterfv(GLenum pname, const GLfloat *values); + void glPatchParameteri(GLenum pname, GLint value); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_tessellation_shader) +}; + +inline void QOpenGLExtension_ARB_tessellation_shader::glPatchParameterfv(GLenum pname, const GLfloat *values) +{ + Q_D(QOpenGLExtension_ARB_tessellation_shader); + d->PatchParameterfv(pname, values); +} + +inline void QOpenGLExtension_ARB_tessellation_shader::glPatchParameteri(GLenum pname, GLint value) +{ + Q_D(QOpenGLExtension_ARB_tessellation_shader); + d->PatchParameteri(pname, value); +} + +class QOpenGLExtension_ARB_texture_buffer_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexBufferARB)(GLenum target, GLenum internalformat, GLuint buffer); +}; + +class QOpenGLExtension_ARB_texture_buffer_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_texture_buffer_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexBufferARB(GLenum target, GLenum internalformat, GLuint buffer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_texture_buffer_object) +}; + +inline void QOpenGLExtension_ARB_texture_buffer_object::glTexBufferARB(GLenum target, GLenum internalformat, GLuint buffer) +{ + Q_D(QOpenGLExtension_ARB_texture_buffer_object); + d->TexBufferARB(target, internalformat, buffer); +} + +class QOpenGLExtension_ARB_texture_buffer_rangePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexBufferRange)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +}; + +class QOpenGLExtension_ARB_texture_buffer_range : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_texture_buffer_range(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_texture_buffer_range) +}; + +inline void QOpenGLExtension_ARB_texture_buffer_range::glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + Q_D(QOpenGLExtension_ARB_texture_buffer_range); + d->TexBufferRange(target, internalformat, buffer, offset, size); +} + +class QOpenGLExtension_ARB_texture_compressionPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid *img); + void (QOPENGLF_APIENTRYP CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void (QOPENGLF_APIENTRYP CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +}; + +class QOpenGLExtension_ARB_texture_compression : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_texture_compression(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetCompressedTexImageARB(GLenum target, GLint level, GLvoid *img); + void glCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); + void glCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_texture_compression) +}; + +inline void QOpenGLExtension_ARB_texture_compression::glGetCompressedTexImageARB(GLenum target, GLint level, GLvoid *img) +{ + Q_D(QOpenGLExtension_ARB_texture_compression); + d->GetCompressedTexImageARB(target, level, img); +} + +inline void QOpenGLExtension_ARB_texture_compression::glCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + Q_D(QOpenGLExtension_ARB_texture_compression); + d->CompressedTexSubImage1DARB(target, level, xoffset, width, format, imageSize, data); +} + +inline void QOpenGLExtension_ARB_texture_compression::glCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + Q_D(QOpenGLExtension_ARB_texture_compression); + d->CompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data); +} + +inline void QOpenGLExtension_ARB_texture_compression::glCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data) +{ + Q_D(QOpenGLExtension_ARB_texture_compression); + d->CompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLExtension_ARB_texture_compression::glCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data) +{ + Q_D(QOpenGLExtension_ARB_texture_compression); + d->CompressedTexImage1DARB(target, level, internalformat, width, border, imageSize, data); +} + +inline void QOpenGLExtension_ARB_texture_compression::glCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) +{ + Q_D(QOpenGLExtension_ARB_texture_compression); + d->CompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, data); +} + +inline void QOpenGLExtension_ARB_texture_compression::glCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data) +{ + Q_D(QOpenGLExtension_ARB_texture_compression); + d->CompressedTexImage3DARB(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +class QOpenGLExtension_ARB_texture_multisamplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP SampleMaski)(GLuint index, GLbitfield mask); + void (QOPENGLF_APIENTRYP GetMultisamplefv)(GLenum pname, GLuint index, GLfloat *val); + void (QOPENGLF_APIENTRYP TexImage3DMultisample)(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void (QOPENGLF_APIENTRYP TexImage2DMultisample)(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +}; + +class QOpenGLExtension_ARB_texture_multisample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_texture_multisample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glSampleMaski(GLuint index, GLbitfield mask); + void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); + void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_texture_multisample) +}; + +inline void QOpenGLExtension_ARB_texture_multisample::glSampleMaski(GLuint index, GLbitfield mask) +{ + Q_D(QOpenGLExtension_ARB_texture_multisample); + d->SampleMaski(index, mask); +} + +inline void QOpenGLExtension_ARB_texture_multisample::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val) +{ + Q_D(QOpenGLExtension_ARB_texture_multisample); + d->GetMultisamplefv(pname, index, val); +} + +inline void QOpenGLExtension_ARB_texture_multisample::glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + Q_D(QOpenGLExtension_ARB_texture_multisample); + d->TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLExtension_ARB_texture_multisample::glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + Q_D(QOpenGLExtension_ARB_texture_multisample); + d->TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +class QOpenGLExtension_ARB_texture_storagePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexStorage3D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void (QOPENGLF_APIENTRYP TexStorage2D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP TexStorage1D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +}; + +class QOpenGLExtension_ARB_texture_storage : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_texture_storage(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_texture_storage) +}; + +inline void QOpenGLExtension_ARB_texture_storage::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + Q_D(QOpenGLExtension_ARB_texture_storage); + d->TexStorage3D(target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLExtension_ARB_texture_storage::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_ARB_texture_storage); + d->TexStorage2D(target, levels, internalformat, width, height); +} + +inline void QOpenGLExtension_ARB_texture_storage::glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + Q_D(QOpenGLExtension_ARB_texture_storage); + d->TexStorage1D(target, levels, internalformat, width); +} + +class QOpenGLExtension_ARB_texture_storage_multisamplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexStorage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void (QOPENGLF_APIENTRYP TexStorage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +}; + +class QOpenGLExtension_ARB_texture_storage_multisample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_texture_storage_multisample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_texture_storage_multisample) +}; + +inline void QOpenGLExtension_ARB_texture_storage_multisample::glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + Q_D(QOpenGLExtension_ARB_texture_storage_multisample); + d->TexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLExtension_ARB_texture_storage_multisample::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + Q_D(QOpenGLExtension_ARB_texture_storage_multisample); + d->TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations); +} + +class QOpenGLExtension_ARB_texture_viewPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TextureView)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +}; + +class QOpenGLExtension_ARB_texture_view : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_texture_view(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_texture_view) +}; + +inline void QOpenGLExtension_ARB_texture_view::glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) +{ + Q_D(QOpenGLExtension_ARB_texture_view); + d->TextureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); +} + +class QOpenGLExtension_ARB_timer_queryPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 *params); + void (QOPENGLF_APIENTRYP GetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 *params); + void (QOPENGLF_APIENTRYP QueryCounter)(GLuint id, GLenum target); +}; + +class QOpenGLExtension_ARB_timer_query : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_timer_query(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params); + void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params); + void glQueryCounter(GLuint id, GLenum target); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_timer_query) +}; + +inline void QOpenGLExtension_ARB_timer_query::glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) +{ + Q_D(QOpenGLExtension_ARB_timer_query); + d->GetQueryObjectui64v(id, pname, params); +} + +inline void QOpenGLExtension_ARB_timer_query::glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) +{ + Q_D(QOpenGLExtension_ARB_timer_query); + d->GetQueryObjecti64v(id, pname, params); +} + +inline void QOpenGLExtension_ARB_timer_query::glQueryCounter(GLuint id, GLenum target) +{ + Q_D(QOpenGLExtension_ARB_timer_query); + d->QueryCounter(id, target); +} + +class QOpenGLExtension_ARB_transform_feedback2Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawTransformFeedback)(GLenum mode, GLuint id); + void (QOPENGLF_APIENTRYP ResumeTransformFeedback)(); + void (QOPENGLF_APIENTRYP PauseTransformFeedback)(); + GLboolean (QOPENGLF_APIENTRYP IsTransformFeedback)(GLuint id); + void (QOPENGLF_APIENTRYP GenTransformFeedbacks)(GLsizei n, GLuint *ids); + void (QOPENGLF_APIENTRYP DeleteTransformFeedbacks)(GLsizei n, const GLuint *ids); + void (QOPENGLF_APIENTRYP BindTransformFeedback)(GLenum target, GLuint id); +}; + +class QOpenGLExtension_ARB_transform_feedback2 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_transform_feedback2(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawTransformFeedback(GLenum mode, GLuint id); + void glResumeTransformFeedback(); + void glPauseTransformFeedback(); + GLboolean glIsTransformFeedback(GLuint id); + void glGenTransformFeedbacks(GLsizei n, GLuint *ids); + void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids); + void glBindTransformFeedback(GLenum target, GLuint id); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_transform_feedback2) +}; + +inline void QOpenGLExtension_ARB_transform_feedback2::glDrawTransformFeedback(GLenum mode, GLuint id) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback2); + d->DrawTransformFeedback(mode, id); +} + +inline void QOpenGLExtension_ARB_transform_feedback2::glResumeTransformFeedback() +{ + Q_D(QOpenGLExtension_ARB_transform_feedback2); + d->ResumeTransformFeedback(); +} + +inline void QOpenGLExtension_ARB_transform_feedback2::glPauseTransformFeedback() +{ + Q_D(QOpenGLExtension_ARB_transform_feedback2); + d->PauseTransformFeedback(); +} + +inline GLboolean QOpenGLExtension_ARB_transform_feedback2::glIsTransformFeedback(GLuint id) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback2); + return d->IsTransformFeedback(id); +} + +inline void QOpenGLExtension_ARB_transform_feedback2::glGenTransformFeedbacks(GLsizei n, GLuint *ids) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback2); + d->GenTransformFeedbacks(n, ids); +} + +inline void QOpenGLExtension_ARB_transform_feedback2::glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback2); + d->DeleteTransformFeedbacks(n, ids); +} + +inline void QOpenGLExtension_ARB_transform_feedback2::glBindTransformFeedback(GLenum target, GLuint id) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback2); + d->BindTransformFeedback(target, id); +} + +class QOpenGLExtension_ARB_transform_feedback3Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetQueryIndexediv)(GLenum target, GLuint index, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP EndQueryIndexed)(GLenum target, GLuint index); + void (QOPENGLF_APIENTRYP BeginQueryIndexed)(GLenum target, GLuint index, GLuint id); + void (QOPENGLF_APIENTRYP DrawTransformFeedbackStream)(GLenum mode, GLuint id, GLuint stream); +}; + +class QOpenGLExtension_ARB_transform_feedback3 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_transform_feedback3(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params); + void glEndQueryIndexed(GLenum target, GLuint index); + void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_transform_feedback3) +}; + +inline void QOpenGLExtension_ARB_transform_feedback3::glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback3); + d->GetQueryIndexediv(target, index, pname, params); +} + +inline void QOpenGLExtension_ARB_transform_feedback3::glEndQueryIndexed(GLenum target, GLuint index) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback3); + d->EndQueryIndexed(target, index); +} + +inline void QOpenGLExtension_ARB_transform_feedback3::glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback3); + d->BeginQueryIndexed(target, index, id); +} + +inline void QOpenGLExtension_ARB_transform_feedback3::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback3); + d->DrawTransformFeedbackStream(mode, id, stream); +} + +class QOpenGLExtension_ARB_transform_feedback_instancedPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawTransformFeedbackStreamInstanced)(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void (QOPENGLF_APIENTRYP DrawTransformFeedbackInstanced)(GLenum mode, GLuint id, GLsizei instancecount); +}; + +class QOpenGLExtension_ARB_transform_feedback_instanced : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_transform_feedback_instanced(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); + void glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_transform_feedback_instanced) +}; + +inline void QOpenGLExtension_ARB_transform_feedback_instanced::glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback_instanced); + d->DrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount); +} + +inline void QOpenGLExtension_ARB_transform_feedback_instanced::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) +{ + Q_D(QOpenGLExtension_ARB_transform_feedback_instanced); + d->DrawTransformFeedbackInstanced(mode, id, instancecount); +} + +class QOpenGLExtension_ARB_transpose_matrixPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MultTransposeMatrixdARB)(const GLdouble *m); + void (QOPENGLF_APIENTRYP MultTransposeMatrixfARB)(const GLfloat *m); + void (QOPENGLF_APIENTRYP LoadTransposeMatrixdARB)(const GLdouble *m); + void (QOPENGLF_APIENTRYP LoadTransposeMatrixfARB)(const GLfloat *m); +}; + +class QOpenGLExtension_ARB_transpose_matrix : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_transpose_matrix(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMultTransposeMatrixdARB(const GLdouble *m); + void glMultTransposeMatrixfARB(const GLfloat *m); + void glLoadTransposeMatrixdARB(const GLdouble *m); + void glLoadTransposeMatrixfARB(const GLfloat *m); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_transpose_matrix) +}; + +inline void QOpenGLExtension_ARB_transpose_matrix::glMultTransposeMatrixdARB(const GLdouble *m) +{ + Q_D(QOpenGLExtension_ARB_transpose_matrix); + d->MultTransposeMatrixdARB(m); +} + +inline void QOpenGLExtension_ARB_transpose_matrix::glMultTransposeMatrixfARB(const GLfloat *m) +{ + Q_D(QOpenGLExtension_ARB_transpose_matrix); + d->MultTransposeMatrixfARB(m); +} + +inline void QOpenGLExtension_ARB_transpose_matrix::glLoadTransposeMatrixdARB(const GLdouble *m) +{ + Q_D(QOpenGLExtension_ARB_transpose_matrix); + d->LoadTransposeMatrixdARB(m); +} + +inline void QOpenGLExtension_ARB_transpose_matrix::glLoadTransposeMatrixfARB(const GLfloat *m) +{ + Q_D(QOpenGLExtension_ARB_transpose_matrix); + d->LoadTransposeMatrixfARB(m); +} + +class QOpenGLExtension_ARB_uniform_buffer_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP UniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void (QOPENGLF_APIENTRYP GetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void (QOPENGLF_APIENTRYP GetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint (QOPENGLF_APIENTRYP GetUniformBlockIndex)(GLuint program, const GLchar *uniformBlockName); + void (QOPENGLF_APIENTRYP GetActiveUniformName)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void (QOPENGLF_APIENTRYP GetActiveUniformsiv)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetUniformIndices)(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); +}; + +class QOpenGLExtension_ARB_uniform_buffer_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_uniform_buffer_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); + void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); + GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName); + void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); + void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); + void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_uniform_buffer_object) +}; + +inline void QOpenGLExtension_ARB_uniform_buffer_object::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +{ + Q_D(QOpenGLExtension_ARB_uniform_buffer_object); + d->UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); +} + +inline void QOpenGLExtension_ARB_uniform_buffer_object::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) +{ + Q_D(QOpenGLExtension_ARB_uniform_buffer_object); + d->GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); +} + +inline void QOpenGLExtension_ARB_uniform_buffer_object::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_uniform_buffer_object); + d->GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); +} + +inline GLuint QOpenGLExtension_ARB_uniform_buffer_object::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + Q_D(QOpenGLExtension_ARB_uniform_buffer_object); + return d->GetUniformBlockIndex(program, uniformBlockName); +} + +inline void QOpenGLExtension_ARB_uniform_buffer_object::glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName) +{ + Q_D(QOpenGLExtension_ARB_uniform_buffer_object); + d->GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName); +} + +inline void QOpenGLExtension_ARB_uniform_buffer_object::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_uniform_buffer_object); + d->GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +inline void QOpenGLExtension_ARB_uniform_buffer_object::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices) +{ + Q_D(QOpenGLExtension_ARB_uniform_buffer_object); + d->GetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +class QOpenGLExtension_ARB_vertex_array_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLboolean (QOPENGLF_APIENTRYP IsVertexArray)(GLuint array); + void (QOPENGLF_APIENTRYP GenVertexArrays)(GLsizei n, GLuint *arrays); + void (QOPENGLF_APIENTRYP DeleteVertexArrays)(GLsizei n, const GLuint *arrays); + void (QOPENGLF_APIENTRYP BindVertexArray)(GLuint array); +}; + +class QOpenGLExtension_ARB_vertex_array_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_vertex_array_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLboolean glIsVertexArray(GLuint array); + void glGenVertexArrays(GLsizei n, GLuint *arrays); + void glDeleteVertexArrays(GLsizei n, const GLuint *arrays); + void glBindVertexArray(GLuint array); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_vertex_array_object) +}; + +inline GLboolean QOpenGLExtension_ARB_vertex_array_object::glIsVertexArray(GLuint array) +{ + Q_D(QOpenGLExtension_ARB_vertex_array_object); + return d->IsVertexArray(array); +} + +inline void QOpenGLExtension_ARB_vertex_array_object::glGenVertexArrays(GLsizei n, GLuint *arrays) +{ + Q_D(QOpenGLExtension_ARB_vertex_array_object); + d->GenVertexArrays(n, arrays); +} + +inline void QOpenGLExtension_ARB_vertex_array_object::glDeleteVertexArrays(GLsizei n, const GLuint *arrays) +{ + Q_D(QOpenGLExtension_ARB_vertex_array_object); + d->DeleteVertexArrays(n, arrays); +} + +inline void QOpenGLExtension_ARB_vertex_array_object::glBindVertexArray(GLuint array) +{ + Q_D(QOpenGLExtension_ARB_vertex_array_object); + d->BindVertexArray(array); +} + +class QOpenGLExtension_ARB_vertex_attrib_64bitPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetVertexAttribLdv)(GLuint index, GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP VertexAttribLPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP VertexAttribL4dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL3dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL2dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL1dv)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP VertexAttribL3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP VertexAttribL2d)(GLuint index, GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP VertexAttribL1d)(GLuint index, GLdouble x); +}; + +class QOpenGLExtension_ARB_vertex_attrib_64bit : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_vertex_attrib_64bit(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params); + void glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glVertexAttribL4dv(GLuint index, const GLdouble *v); + void glVertexAttribL3dv(GLuint index, const GLdouble *v); + void glVertexAttribL2dv(GLuint index, const GLdouble *v); + void glVertexAttribL1dv(GLuint index, const GLdouble *v); + void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); + void glVertexAttribL1d(GLuint index, GLdouble x); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_vertex_attrib_64bit) +}; + +inline void QOpenGLExtension_ARB_vertex_attrib_64bit::glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + d->GetVertexAttribLdv(index, pname, params); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_64bit::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + d->VertexAttribLPointer(index, size, type, stride, pointer); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_64bit::glVertexAttribL4dv(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + d->VertexAttribL4dv(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_64bit::glVertexAttribL3dv(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + d->VertexAttribL3dv(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_64bit::glVertexAttribL2dv(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + d->VertexAttribL2dv(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_64bit::glVertexAttribL1dv(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + d->VertexAttribL1dv(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_64bit::glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + d->VertexAttribL4d(index, x, y, z, w); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_64bit::glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + d->VertexAttribL3d(index, x, y, z); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_64bit::glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + d->VertexAttribL2d(index, x, y); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_64bit::glVertexAttribL1d(GLuint index, GLdouble x) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_64bit); + d->VertexAttribL1d(index, x); +} + +class QOpenGLExtension_ARB_vertex_attrib_bindingPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexBindingDivisor)(GLuint bindingindex, GLuint divisor); + void (QOPENGLF_APIENTRYP VertexAttribBinding)(GLuint attribindex, GLuint bindingindex); + void (QOPENGLF_APIENTRYP VertexAttribLFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void (QOPENGLF_APIENTRYP VertexAttribIFormat)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void (QOPENGLF_APIENTRYP VertexAttribFormat)(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void (QOPENGLF_APIENTRYP BindVertexBuffer)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); +}; + +class QOpenGLExtension_ARB_vertex_attrib_binding : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_vertex_attrib_binding(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor); + void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex); + void glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_vertex_attrib_binding) +}; + +inline void QOpenGLExtension_ARB_vertex_attrib_binding::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_binding); + d->VertexBindingDivisor(bindingindex, divisor); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_binding::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_binding); + d->VertexAttribBinding(attribindex, bindingindex); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_binding::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_binding); + d->VertexAttribLFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_binding::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_binding); + d->VertexAttribIFormat(attribindex, size, type, relativeoffset); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_binding::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_binding); + d->VertexAttribFormat(attribindex, size, type, normalized, relativeoffset); +} + +inline void QOpenGLExtension_ARB_vertex_attrib_binding::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + Q_D(QOpenGLExtension_ARB_vertex_attrib_binding); + d->BindVertexBuffer(bindingindex, buffer, offset, stride); +} + +class QOpenGLExtension_ARB_vertex_blendPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexBlendARB)(GLint count); + void (QOPENGLF_APIENTRYP WeightPointerARB)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP WeightuivARB)(GLint size, const GLuint *weights); + void (QOPENGLF_APIENTRYP WeightusvARB)(GLint size, const GLushort *weights); + void (QOPENGLF_APIENTRYP WeightubvARB)(GLint size, const GLubyte *weights); + void (QOPENGLF_APIENTRYP WeightdvARB)(GLint size, const GLdouble *weights); + void (QOPENGLF_APIENTRYP WeightfvARB)(GLint size, const GLfloat *weights); + void (QOPENGLF_APIENTRYP WeightivARB)(GLint size, const GLint *weights); + void (QOPENGLF_APIENTRYP WeightsvARB)(GLint size, const GLshort *weights); + void (QOPENGLF_APIENTRYP WeightbvARB)(GLint size, const GLbyte *weights); +}; + +class QOpenGLExtension_ARB_vertex_blend : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_vertex_blend(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexBlendARB(GLint count); + void glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glWeightuivARB(GLint size, const GLuint *weights); + void glWeightusvARB(GLint size, const GLushort *weights); + void glWeightubvARB(GLint size, const GLubyte *weights); + void glWeightdvARB(GLint size, const GLdouble *weights); + void glWeightfvARB(GLint size, const GLfloat *weights); + void glWeightivARB(GLint size, const GLint *weights); + void glWeightsvARB(GLint size, const GLshort *weights); + void glWeightbvARB(GLint size, const GLbyte *weights); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_vertex_blend) +}; + +inline void QOpenGLExtension_ARB_vertex_blend::glVertexBlendARB(GLint count) +{ + Q_D(QOpenGLExtension_ARB_vertex_blend); + d->VertexBlendARB(count); +} + +inline void QOpenGLExtension_ARB_vertex_blend::glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_ARB_vertex_blend); + d->WeightPointerARB(size, type, stride, pointer); +} + +inline void QOpenGLExtension_ARB_vertex_blend::glWeightuivARB(GLint size, const GLuint *weights) +{ + Q_D(QOpenGLExtension_ARB_vertex_blend); + d->WeightuivARB(size, weights); +} + +inline void QOpenGLExtension_ARB_vertex_blend::glWeightusvARB(GLint size, const GLushort *weights) +{ + Q_D(QOpenGLExtension_ARB_vertex_blend); + d->WeightusvARB(size, weights); +} + +inline void QOpenGLExtension_ARB_vertex_blend::glWeightubvARB(GLint size, const GLubyte *weights) +{ + Q_D(QOpenGLExtension_ARB_vertex_blend); + d->WeightubvARB(size, weights); +} + +inline void QOpenGLExtension_ARB_vertex_blend::glWeightdvARB(GLint size, const GLdouble *weights) +{ + Q_D(QOpenGLExtension_ARB_vertex_blend); + d->WeightdvARB(size, weights); +} + +inline void QOpenGLExtension_ARB_vertex_blend::glWeightfvARB(GLint size, const GLfloat *weights) +{ + Q_D(QOpenGLExtension_ARB_vertex_blend); + d->WeightfvARB(size, weights); +} + +inline void QOpenGLExtension_ARB_vertex_blend::glWeightivARB(GLint size, const GLint *weights) +{ + Q_D(QOpenGLExtension_ARB_vertex_blend); + d->WeightivARB(size, weights); +} + +inline void QOpenGLExtension_ARB_vertex_blend::glWeightsvARB(GLint size, const GLshort *weights) +{ + Q_D(QOpenGLExtension_ARB_vertex_blend); + d->WeightsvARB(size, weights); +} + +inline void QOpenGLExtension_ARB_vertex_blend::glWeightbvARB(GLint size, const GLbyte *weights) +{ + Q_D(QOpenGLExtension_ARB_vertex_blend); + d->WeightbvARB(size, weights); +} + +class QOpenGLExtension_ARB_vertex_buffer_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid* *params); + void (QOPENGLF_APIENTRYP GetBufferParameterivARB)(GLenum target, GLenum pname, GLint *params); + GLboolean (QOPENGLF_APIENTRYP UnmapBufferARB)(GLenum target); + GLvoid* (QOPENGLF_APIENTRYP MapBufferARB)(GLenum target, GLenum access); + void (QOPENGLF_APIENTRYP GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); + void (QOPENGLF_APIENTRYP BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); + void (QOPENGLF_APIENTRYP BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); + GLboolean (QOPENGLF_APIENTRYP IsBufferARB)(GLuint buffer); + void (QOPENGLF_APIENTRYP GenBuffersARB)(GLsizei n, GLuint *buffers); + void (QOPENGLF_APIENTRYP DeleteBuffersARB)(GLsizei n, const GLuint *buffers); + void (QOPENGLF_APIENTRYP BindBufferARB)(GLenum target, GLuint buffer); +}; + +class QOpenGLExtension_ARB_vertex_buffer_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_vertex_buffer_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetBufferPointervARB(GLenum target, GLenum pname, GLvoid* *params); + void glGetBufferParameterivARB(GLenum target, GLenum pname, GLint *params); + GLboolean glUnmapBufferARB(GLenum target); + GLvoid* glMapBufferARB(GLenum target, GLenum access); + void glGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); + void glBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); + void glBufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); + GLboolean glIsBufferARB(GLuint buffer); + void glGenBuffersARB(GLsizei n, GLuint *buffers); + void glDeleteBuffersARB(GLsizei n, const GLuint *buffers); + void glBindBufferARB(GLenum target, GLuint buffer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_vertex_buffer_object) +}; + +inline void QOpenGLExtension_ARB_vertex_buffer_object::glGetBufferPointervARB(GLenum target, GLenum pname, GLvoid* *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + d->GetBufferPointervARB(target, pname, params); +} + +inline void QOpenGLExtension_ARB_vertex_buffer_object::glGetBufferParameterivARB(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + d->GetBufferParameterivARB(target, pname, params); +} + +inline GLboolean QOpenGLExtension_ARB_vertex_buffer_object::glUnmapBufferARB(GLenum target) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + return d->UnmapBufferARB(target); +} + +inline GLvoid* QOpenGLExtension_ARB_vertex_buffer_object::glMapBufferARB(GLenum target, GLenum access) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + return d->MapBufferARB(target, access); +} + +inline void QOpenGLExtension_ARB_vertex_buffer_object::glGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + d->GetBufferSubDataARB(target, offset, size, data); +} + +inline void QOpenGLExtension_ARB_vertex_buffer_object::glBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + d->BufferSubDataARB(target, offset, size, data); +} + +inline void QOpenGLExtension_ARB_vertex_buffer_object::glBufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + d->BufferDataARB(target, size, data, usage); +} + +inline GLboolean QOpenGLExtension_ARB_vertex_buffer_object::glIsBufferARB(GLuint buffer) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + return d->IsBufferARB(buffer); +} + +inline void QOpenGLExtension_ARB_vertex_buffer_object::glGenBuffersARB(GLsizei n, GLuint *buffers) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + d->GenBuffersARB(n, buffers); +} + +inline void QOpenGLExtension_ARB_vertex_buffer_object::glDeleteBuffersARB(GLsizei n, const GLuint *buffers) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + d->DeleteBuffersARB(n, buffers); +} + +inline void QOpenGLExtension_ARB_vertex_buffer_object::glBindBufferARB(GLenum target, GLuint buffer) +{ + Q_D(QOpenGLExtension_ARB_vertex_buffer_object); + d->BindBufferARB(target, buffer); +} + +class QOpenGLExtension_ARB_vertex_programPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLboolean (QOPENGLF_APIENTRYP IsProgramARB)(GLuint program); + void (QOPENGLF_APIENTRYP GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid* *pointer); + void (QOPENGLF_APIENTRYP GetVertexAttribivARB)(GLuint index, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP GetProgramStringARB)(GLenum target, GLenum pname, GLvoid *string); + void (QOPENGLF_APIENTRYP GetProgramivARB)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat *params); + void (QOPENGLF_APIENTRYP GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble *params); + void (QOPENGLF_APIENTRYP GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat *params); + void (QOPENGLF_APIENTRYP GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble *params); + void (QOPENGLF_APIENTRYP ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat *params); + void (QOPENGLF_APIENTRYP ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble *params); + void (QOPENGLF_APIENTRYP ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat *params); + void (QOPENGLF_APIENTRYP ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble *params); + void (QOPENGLF_APIENTRYP ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP GenProgramsARB)(GLsizei n, GLuint *programs); + void (QOPENGLF_APIENTRYP DeleteProgramsARB)(GLsizei n, const GLuint *programs); + void (QOPENGLF_APIENTRYP BindProgramARB)(GLenum target, GLuint program); + void (QOPENGLF_APIENTRYP ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid *string); + void (QOPENGLF_APIENTRYP DisableVertexAttribArrayARB)(GLuint index); + void (QOPENGLF_APIENTRYP EnableVertexAttribArrayARB)(GLuint index); + void (QOPENGLF_APIENTRYP VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP VertexAttrib4usvARB)(GLuint index, const GLushort *v); + void (QOPENGLF_APIENTRYP VertexAttrib4uivARB)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttrib4ubvARB)(GLuint index, const GLubyte *v); + void (QOPENGLF_APIENTRYP VertexAttrib4svARB)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void (QOPENGLF_APIENTRYP VertexAttrib4ivARB)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttrib4fvARB)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP VertexAttrib4dvARB)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP VertexAttrib4bvARB)(GLuint index, const GLbyte *v); + void (QOPENGLF_APIENTRYP VertexAttrib4NusvARB)(GLuint index, const GLushort *v); + void (QOPENGLF_APIENTRYP VertexAttrib4NuivARB)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttrib4NubvARB)(GLuint index, const GLubyte *v); + void (QOPENGLF_APIENTRYP VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void (QOPENGLF_APIENTRYP VertexAttrib4NsvARB)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib4NivARB)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttrib4NbvARB)(GLuint index, const GLbyte *v); + void (QOPENGLF_APIENTRYP VertexAttrib3svARB)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z); + void (QOPENGLF_APIENTRYP VertexAttrib3fvARB)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP VertexAttrib3dvARB)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP VertexAttrib2svARB)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y); + void (QOPENGLF_APIENTRYP VertexAttrib2fvARB)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP VertexAttrib2dvARB)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP VertexAttrib1svARB)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib1sARB)(GLuint index, GLshort x); + void (QOPENGLF_APIENTRYP VertexAttrib1fvARB)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib1fARB)(GLuint index, GLfloat x); + void (QOPENGLF_APIENTRYP VertexAttrib1dvARB)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib1dARB)(GLuint index, GLdouble x); +}; + +class QOpenGLExtension_ARB_vertex_program : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_vertex_program(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLboolean glIsProgramARB(GLuint program); + void glGetVertexAttribPointervARB(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribivARB(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble *params); + void glGetProgramStringARB(GLenum target, GLenum pname, GLvoid *string); + void glGetProgramivARB(GLenum target, GLenum pname, GLint *params); + void glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat *params); + void glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble *params); + void glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat *params); + void glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble *params); + void glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat *params); + void glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble *params); + void glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat *params); + void glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble *params); + void glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glGenProgramsARB(GLsizei n, GLuint *programs); + void glDeleteProgramsARB(GLsizei n, const GLuint *programs); + void glBindProgramARB(GLenum target, GLuint program); + void glProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid *string); + void glDisableVertexAttribArrayARB(GLuint index); + void glEnableVertexAttribArrayARB(GLuint index); + void glVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); + void glVertexAttrib4usvARB(GLuint index, const GLushort *v); + void glVertexAttrib4uivARB(GLuint index, const GLuint *v); + void glVertexAttrib4ubvARB(GLuint index, const GLubyte *v); + void glVertexAttrib4svARB(GLuint index, const GLshort *v); + void glVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4ivARB(GLuint index, const GLint *v); + void glVertexAttrib4fvARB(GLuint index, const GLfloat *v); + void glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dvARB(GLuint index, const GLdouble *v); + void glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib4bvARB(GLuint index, const GLbyte *v); + void glVertexAttrib4NusvARB(GLuint index, const GLushort *v); + void glVertexAttrib4NuivARB(GLuint index, const GLuint *v); + void glVertexAttrib4NubvARB(GLuint index, const GLubyte *v); + void glVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4NsvARB(GLuint index, const GLshort *v); + void glVertexAttrib4NivARB(GLuint index, const GLint *v); + void glVertexAttrib4NbvARB(GLuint index, const GLbyte *v); + void glVertexAttrib3svARB(GLuint index, const GLshort *v); + void glVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fvARB(GLuint index, const GLfloat *v); + void glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dvARB(GLuint index, const GLdouble *v); + void glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2svARB(GLuint index, const GLshort *v); + void glVertexAttrib2sARB(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fvARB(GLuint index, const GLfloat *v); + void glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dvARB(GLuint index, const GLdouble *v); + void glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1svARB(GLuint index, const GLshort *v); + void glVertexAttrib1sARB(GLuint index, GLshort x); + void glVertexAttrib1fvARB(GLuint index, const GLfloat *v); + void glVertexAttrib1fARB(GLuint index, GLfloat x); + void glVertexAttrib1dvARB(GLuint index, const GLdouble *v); + void glVertexAttrib1dARB(GLuint index, GLdouble x); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_vertex_program) +}; + +inline GLboolean QOpenGLExtension_ARB_vertex_program::glIsProgramARB(GLuint program) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + return d->IsProgramARB(program); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGetVertexAttribPointervARB(GLuint index, GLenum pname, GLvoid* *pointer) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GetVertexAttribPointervARB(index, pname, pointer); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGetVertexAttribivARB(GLuint index, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GetVertexAttribivARB(index, pname, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GetVertexAttribfvARB(index, pname, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GetVertexAttribdvARB(index, pname, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGetProgramStringARB(GLenum target, GLenum pname, GLvoid *string) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GetProgramStringARB(target, pname, string); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGetProgramivARB(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GetProgramivARB(target, pname, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GetProgramLocalParameterfvARB(target, index, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GetProgramLocalParameterdvARB(target, index, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GetProgramEnvParameterfvARB(target, index, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GetProgramEnvParameterdvARB(target, index, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->ProgramLocalParameter4fvARB(target, index, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->ProgramLocalParameter4fARB(target, index, x, y, z, w); +} + +inline void QOpenGLExtension_ARB_vertex_program::glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->ProgramLocalParameter4dvARB(target, index, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->ProgramLocalParameter4dARB(target, index, x, y, z, w); +} + +inline void QOpenGLExtension_ARB_vertex_program::glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->ProgramEnvParameter4fvARB(target, index, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->ProgramEnvParameter4fARB(target, index, x, y, z, w); +} + +inline void QOpenGLExtension_ARB_vertex_program::glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble *params) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->ProgramEnvParameter4dvARB(target, index, params); +} + +inline void QOpenGLExtension_ARB_vertex_program::glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->ProgramEnvParameter4dARB(target, index, x, y, z, w); +} + +inline void QOpenGLExtension_ARB_vertex_program::glGenProgramsARB(GLsizei n, GLuint *programs) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->GenProgramsARB(n, programs); +} + +inline void QOpenGLExtension_ARB_vertex_program::glDeleteProgramsARB(GLsizei n, const GLuint *programs) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->DeleteProgramsARB(n, programs); +} + +inline void QOpenGLExtension_ARB_vertex_program::glBindProgramARB(GLenum target, GLuint program) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->BindProgramARB(target, program); +} + +inline void QOpenGLExtension_ARB_vertex_program::glProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid *string) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->ProgramStringARB(target, format, len, string); +} + +inline void QOpenGLExtension_ARB_vertex_program::glDisableVertexAttribArrayARB(GLuint index) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->DisableVertexAttribArrayARB(index); +} + +inline void QOpenGLExtension_ARB_vertex_program::glEnableVertexAttribArrayARB(GLuint index) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->EnableVertexAttribArrayARB(index); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttribPointerARB(index, size, type, normalized, stride, pointer); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4usvARB(GLuint index, const GLushort *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4usvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4uivARB(GLuint index, const GLuint *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4uivARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4ubvARB(GLuint index, const GLubyte *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4ubvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4svARB(GLuint index, const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4svARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4sARB(index, x, y, z, w); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4ivARB(GLuint index, const GLint *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4ivARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4fvARB(GLuint index, const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4fvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4fARB(index, x, y, z, w); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4dvARB(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4dvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4dARB(index, x, y, z, w); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4bvARB(GLuint index, const GLbyte *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4bvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4NusvARB(GLuint index, const GLushort *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4NusvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4NuivARB(GLuint index, const GLuint *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4NuivARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4NubvARB(GLuint index, const GLubyte *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4NubvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4NubARB(index, x, y, z, w); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4NsvARB(GLuint index, const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4NsvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4NivARB(GLuint index, const GLint *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4NivARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib4NbvARB(GLuint index, const GLbyte *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib4NbvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib3svARB(GLuint index, const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib3svARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib3sARB(index, x, y, z); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib3fvARB(GLuint index, const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib3fvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib3fARB(index, x, y, z); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib3dvARB(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib3dvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib3dARB(index, x, y, z); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib2svARB(GLuint index, const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib2svARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib2sARB(GLuint index, GLshort x, GLshort y) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib2sARB(index, x, y); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib2fvARB(GLuint index, const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib2fvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib2fARB(index, x, y); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib2dvARB(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib2dvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib2dARB(index, x, y); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib1svARB(GLuint index, const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib1svARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib1sARB(GLuint index, GLshort x) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib1sARB(index, x); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib1fvARB(GLuint index, const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib1fvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib1fARB(GLuint index, GLfloat x) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib1fARB(index, x); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib1dvARB(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib1dvARB(index, v); +} + +inline void QOpenGLExtension_ARB_vertex_program::glVertexAttrib1dARB(GLuint index, GLdouble x) +{ + Q_D(QOpenGLExtension_ARB_vertex_program); + d->VertexAttrib1dARB(index, x); +} + +class QOpenGLExtension_ARB_vertex_shaderPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLint (QOPENGLF_APIENTRYP GetAttribLocationARB)(GLhandleARB programObj, const GLcharARB *name); + void (QOPENGLF_APIENTRYP GetActiveAttribARB)(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); + void (QOPENGLF_APIENTRYP BindAttribLocationARB)(GLhandleARB programObj, GLuint index, const GLcharARB *name); +}; + +class QOpenGLExtension_ARB_vertex_shader : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_vertex_shader(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLint glGetAttribLocationARB(GLhandleARB programObj, const GLcharARB *name); + void glGetActiveAttribARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); + void glBindAttribLocationARB(GLhandleARB programObj, GLuint index, const GLcharARB *name); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_vertex_shader) +}; + +inline GLint QOpenGLExtension_ARB_vertex_shader::glGetAttribLocationARB(GLhandleARB programObj, const GLcharARB *name) +{ + Q_D(QOpenGLExtension_ARB_vertex_shader); + return d->GetAttribLocationARB(programObj, name); +} + +inline void QOpenGLExtension_ARB_vertex_shader::glGetActiveAttribARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name) +{ + Q_D(QOpenGLExtension_ARB_vertex_shader); + d->GetActiveAttribARB(programObj, index, maxLength, length, size, type, name); +} + +inline void QOpenGLExtension_ARB_vertex_shader::glBindAttribLocationARB(GLhandleARB programObj, GLuint index, const GLcharARB *name) +{ + Q_D(QOpenGLExtension_ARB_vertex_shader); + d->BindAttribLocationARB(programObj, index, name); +} + +class QOpenGLExtension_ARB_vertex_type_2_10_10_10_revPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void (QOPENGLF_APIENTRYP VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void (QOPENGLF_APIENTRYP VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void (QOPENGLF_APIENTRYP VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void (QOPENGLF_APIENTRYP SecondaryColorP3uiv)(GLenum type, const GLuint *color); + void (QOPENGLF_APIENTRYP SecondaryColorP3ui)(GLenum type, GLuint color); + void (QOPENGLF_APIENTRYP ColorP4uiv)(GLenum type, const GLuint *color); + void (QOPENGLF_APIENTRYP ColorP4ui)(GLenum type, GLuint color); + void (QOPENGLF_APIENTRYP ColorP3uiv)(GLenum type, const GLuint *color); + void (QOPENGLF_APIENTRYP ColorP3ui)(GLenum type, GLuint color); + void (QOPENGLF_APIENTRYP NormalP3uiv)(GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP NormalP3ui)(GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP4uiv)(GLenum texture, GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP4ui)(GLenum texture, GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP3uiv)(GLenum texture, GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP3ui)(GLenum texture, GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP2uiv)(GLenum texture, GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP2ui)(GLenum texture, GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP1uiv)(GLenum texture, GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP MultiTexCoordP1ui)(GLenum texture, GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP TexCoordP4uiv)(GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP TexCoordP4ui)(GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP TexCoordP3uiv)(GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP TexCoordP3ui)(GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP TexCoordP2uiv)(GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP TexCoordP2ui)(GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP TexCoordP1uiv)(GLenum type, const GLuint *coords); + void (QOPENGLF_APIENTRYP TexCoordP1ui)(GLenum type, GLuint coords); + void (QOPENGLF_APIENTRYP VertexP4uiv)(GLenum type, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexP4ui)(GLenum type, GLuint value); + void (QOPENGLF_APIENTRYP VertexP3uiv)(GLenum type, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexP3ui)(GLenum type, GLuint value); + void (QOPENGLF_APIENTRYP VertexP2uiv)(GLenum type, const GLuint *value); + void (QOPENGLF_APIENTRYP VertexP2ui)(GLenum type, GLuint value); +}; + +class QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); + void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + void glSecondaryColorP3uiv(GLenum type, const GLuint *color); + void glSecondaryColorP3ui(GLenum type, GLuint color); + void glColorP4uiv(GLenum type, const GLuint *color); + void glColorP4ui(GLenum type, GLuint color); + void glColorP3uiv(GLenum type, const GLuint *color); + void glColorP3ui(GLenum type, GLuint color); + void glNormalP3uiv(GLenum type, const GLuint *coords); + void glNormalP3ui(GLenum type, GLuint coords); + void glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + void glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords); + void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + void glTexCoordP4uiv(GLenum type, const GLuint *coords); + void glTexCoordP4ui(GLenum type, GLuint coords); + void glTexCoordP3uiv(GLenum type, const GLuint *coords); + void glTexCoordP3ui(GLenum type, GLuint coords); + void glTexCoordP2uiv(GLenum type, const GLuint *coords); + void glTexCoordP2ui(GLenum type, GLuint coords); + void glTexCoordP1uiv(GLenum type, const GLuint *coords); + void glTexCoordP1ui(GLenum type, GLuint coords); + void glVertexP4uiv(GLenum type, const GLuint *value); + void glVertexP4ui(GLenum type, GLuint value); + void glVertexP3uiv(GLenum type, const GLuint *value); + void glVertexP3ui(GLenum type, GLuint value); + void glVertexP2uiv(GLenum type, const GLuint *value); + void glVertexP2ui(GLenum type, GLuint value); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev) +}; + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexAttribP4uiv(index, type, normalized, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexAttribP4ui(index, type, normalized, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexAttribP3uiv(index, type, normalized, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexAttribP3ui(index, type, normalized, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexAttribP2uiv(index, type, normalized, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexAttribP2ui(index, type, normalized, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexAttribP1uiv(index, type, normalized, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexAttribP1ui(index, type, normalized, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glSecondaryColorP3uiv(GLenum type, const GLuint *color) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->SecondaryColorP3uiv(type, color); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glSecondaryColorP3ui(GLenum type, GLuint color) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->SecondaryColorP3ui(type, color); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glColorP4uiv(GLenum type, const GLuint *color) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->ColorP4uiv(type, color); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glColorP4ui(GLenum type, GLuint color) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->ColorP4ui(type, color); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glColorP3uiv(GLenum type, const GLuint *color) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->ColorP3uiv(type, color); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glColorP3ui(GLenum type, GLuint color) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->ColorP3ui(type, color); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glNormalP3uiv(GLenum type, const GLuint *coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->NormalP3uiv(type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glNormalP3ui(GLenum type, GLuint coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->NormalP3ui(type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->MultiTexCoordP4uiv(texture, type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->MultiTexCoordP4ui(texture, type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->MultiTexCoordP3uiv(texture, type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->MultiTexCoordP3ui(texture, type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->MultiTexCoordP2uiv(texture, type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->MultiTexCoordP2ui(texture, type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->MultiTexCoordP1uiv(texture, type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->MultiTexCoordP1ui(texture, type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glTexCoordP4uiv(GLenum type, const GLuint *coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->TexCoordP4uiv(type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glTexCoordP4ui(GLenum type, GLuint coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->TexCoordP4ui(type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glTexCoordP3uiv(GLenum type, const GLuint *coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->TexCoordP3uiv(type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glTexCoordP3ui(GLenum type, GLuint coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->TexCoordP3ui(type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glTexCoordP2uiv(GLenum type, const GLuint *coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->TexCoordP2uiv(type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glTexCoordP2ui(GLenum type, GLuint coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->TexCoordP2ui(type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glTexCoordP1uiv(GLenum type, const GLuint *coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->TexCoordP1uiv(type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glTexCoordP1ui(GLenum type, GLuint coords) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->TexCoordP1ui(type, coords); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexP4uiv(GLenum type, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexP4uiv(type, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexP4ui(GLenum type, GLuint value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexP4ui(type, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexP3uiv(GLenum type, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexP3uiv(type, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexP3ui(GLenum type, GLuint value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexP3ui(type, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexP2uiv(GLenum type, const GLuint *value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexP2uiv(type, value); +} + +inline void QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev::glVertexP2ui(GLenum type, GLuint value) +{ + Q_D(QOpenGLExtension_ARB_vertex_type_2_10_10_10_rev); + d->VertexP2ui(type, value); +} + +class QOpenGLExtension_ARB_viewport_arrayPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetDoublei_v)(GLenum target, GLuint index, GLdouble *data); + void (QOPENGLF_APIENTRYP GetFloati_v)(GLenum target, GLuint index, GLfloat *data); + void (QOPENGLF_APIENTRYP DepthRangeIndexed)(GLuint index, GLdouble n, GLdouble f); + void (QOPENGLF_APIENTRYP DepthRangeArrayv)(GLuint first, GLsizei count, const GLdouble *v); + void (QOPENGLF_APIENTRYP ScissorIndexedv)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP ScissorIndexed)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP ScissorArrayv)(GLuint first, GLsizei count, const GLint *v); + void (QOPENGLF_APIENTRYP ViewportIndexedfv)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP ViewportIndexedf)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + void (QOPENGLF_APIENTRYP ViewportArrayv)(GLuint first, GLsizei count, const GLfloat *v); +}; + +class QOpenGLExtension_ARB_viewport_array : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_viewport_array(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetDoublei_v(GLenum target, GLuint index, GLdouble *data); + void glGetFloati_v(GLenum target, GLuint index, GLfloat *data); + void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); + void glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v); + void glScissorIndexedv(GLuint index, const GLint *v); + void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + void glScissorArrayv(GLuint first, GLsizei count, const GLint *v); + void glViewportIndexedfv(GLuint index, const GLfloat *v); + void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + void glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_viewport_array) +}; + +inline void QOpenGLExtension_ARB_viewport_array::glGetDoublei_v(GLenum target, GLuint index, GLdouble *data) +{ + Q_D(QOpenGLExtension_ARB_viewport_array); + d->GetDoublei_v(target, index, data); +} + +inline void QOpenGLExtension_ARB_viewport_array::glGetFloati_v(GLenum target, GLuint index, GLfloat *data) +{ + Q_D(QOpenGLExtension_ARB_viewport_array); + d->GetFloati_v(target, index, data); +} + +inline void QOpenGLExtension_ARB_viewport_array::glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) +{ + Q_D(QOpenGLExtension_ARB_viewport_array); + d->DepthRangeIndexed(index, n, f); +} + +inline void QOpenGLExtension_ARB_viewport_array::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_viewport_array); + d->DepthRangeArrayv(first, count, v); +} + +inline void QOpenGLExtension_ARB_viewport_array::glScissorIndexedv(GLuint index, const GLint *v) +{ + Q_D(QOpenGLExtension_ARB_viewport_array); + d->ScissorIndexedv(index, v); +} + +inline void QOpenGLExtension_ARB_viewport_array::glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_ARB_viewport_array); + d->ScissorIndexed(index, left, bottom, width, height); +} + +inline void QOpenGLExtension_ARB_viewport_array::glScissorArrayv(GLuint first, GLsizei count, const GLint *v) +{ + Q_D(QOpenGLExtension_ARB_viewport_array); + d->ScissorArrayv(first, count, v); +} + +inline void QOpenGLExtension_ARB_viewport_array::glViewportIndexedfv(GLuint index, const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_viewport_array); + d->ViewportIndexedfv(index, v); +} + +inline void QOpenGLExtension_ARB_viewport_array::glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +{ + Q_D(QOpenGLExtension_ARB_viewport_array); + d->ViewportIndexedf(index, x, y, w, h); +} + +inline void QOpenGLExtension_ARB_viewport_array::glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_viewport_array); + d->ViewportArrayv(first, count, v); +} + +class QOpenGLExtension_ARB_window_posPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP WindowPos3svARB)(const GLshort *v); + void (QOPENGLF_APIENTRYP WindowPos3sARB)(GLshort x, GLshort y, GLshort z); + void (QOPENGLF_APIENTRYP WindowPos3ivARB)(const GLint *v); + void (QOPENGLF_APIENTRYP WindowPos3iARB)(GLint x, GLint y, GLint z); + void (QOPENGLF_APIENTRYP WindowPos3fvARB)(const GLfloat *v); + void (QOPENGLF_APIENTRYP WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP WindowPos3dvARB)(const GLdouble *v); + void (QOPENGLF_APIENTRYP WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP WindowPos2svARB)(const GLshort *v); + void (QOPENGLF_APIENTRYP WindowPos2sARB)(GLshort x, GLshort y); + void (QOPENGLF_APIENTRYP WindowPos2ivARB)(const GLint *v); + void (QOPENGLF_APIENTRYP WindowPos2iARB)(GLint x, GLint y); + void (QOPENGLF_APIENTRYP WindowPos2fvARB)(const GLfloat *v); + void (QOPENGLF_APIENTRYP WindowPos2fARB)(GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP WindowPos2dvARB)(const GLdouble *v); + void (QOPENGLF_APIENTRYP WindowPos2dARB)(GLdouble x, GLdouble y); +}; + +class QOpenGLExtension_ARB_window_pos : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ARB_window_pos(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glWindowPos3svARB(const GLshort *v); + void glWindowPos3sARB(GLshort x, GLshort y, GLshort z); + void glWindowPos3ivARB(const GLint *v); + void glWindowPos3iARB(GLint x, GLint y, GLint z); + void glWindowPos3fvARB(const GLfloat *v); + void glWindowPos3fARB(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dvARB(const GLdouble *v); + void glWindowPos3dARB(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2svARB(const GLshort *v); + void glWindowPos2sARB(GLshort x, GLshort y); + void glWindowPos2ivARB(const GLint *v); + void glWindowPos2iARB(GLint x, GLint y); + void glWindowPos2fvARB(const GLfloat *v); + void glWindowPos2fARB(GLfloat x, GLfloat y); + void glWindowPos2dvARB(const GLdouble *v); + void glWindowPos2dARB(GLdouble x, GLdouble y); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ARB_window_pos) +}; + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos3svARB(const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos3svARB(v); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos3sARB(GLshort x, GLshort y, GLshort z) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos3sARB(x, y, z); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos3ivARB(const GLint *v) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos3ivARB(v); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos3iARB(GLint x, GLint y, GLint z) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos3iARB(x, y, z); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos3fvARB(const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos3fvARB(v); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos3fARB(GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos3fARB(x, y, z); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos3dvARB(const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos3dvARB(v); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos3dARB(GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos3dARB(x, y, z); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos2svARB(const GLshort *v) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos2svARB(v); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos2sARB(GLshort x, GLshort y) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos2sARB(x, y); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos2ivARB(const GLint *v) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos2ivARB(v); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos2iARB(GLint x, GLint y) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos2iARB(x, y); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos2fvARB(const GLfloat *v) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos2fvARB(v); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos2fARB(GLfloat x, GLfloat y) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos2fARB(x, y); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos2dvARB(const GLdouble *v) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos2dvARB(v); +} + +inline void QOpenGLExtension_ARB_window_pos::glWindowPos2dARB(GLdouble x, GLdouble y) +{ + Q_D(QOpenGLExtension_ARB_window_pos); + d->WindowPos2dARB(x, y); +} + +class QOpenGLExtension_ATI_draw_buffersPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawBuffersATI)(GLsizei n, const GLenum *bufs); +}; + +class QOpenGLExtension_ATI_draw_buffers : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ATI_draw_buffers(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawBuffersATI(GLsizei n, const GLenum *bufs); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ATI_draw_buffers) +}; + +inline void QOpenGLExtension_ATI_draw_buffers::glDrawBuffersATI(GLsizei n, const GLenum *bufs) +{ + Q_D(QOpenGLExtension_ATI_draw_buffers); + d->DrawBuffersATI(n, bufs); +} + +class QOpenGLExtension_ATI_element_arrayPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawRangeElementArrayATI)(GLenum mode, GLuint start, GLuint end, GLsizei count); + void (QOPENGLF_APIENTRYP DrawElementArrayATI)(GLenum mode, GLsizei count); + void (QOPENGLF_APIENTRYP ElementPointerATI)(GLenum type, const GLvoid *pointer); +}; + +class QOpenGLExtension_ATI_element_array : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ATI_element_array(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawRangeElementArrayATI(GLenum mode, GLuint start, GLuint end, GLsizei count); + void glDrawElementArrayATI(GLenum mode, GLsizei count); + void glElementPointerATI(GLenum type, const GLvoid *pointer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ATI_element_array) +}; + +inline void QOpenGLExtension_ATI_element_array::glDrawRangeElementArrayATI(GLenum mode, GLuint start, GLuint end, GLsizei count) +{ + Q_D(QOpenGLExtension_ATI_element_array); + d->DrawRangeElementArrayATI(mode, start, end, count); +} + +inline void QOpenGLExtension_ATI_element_array::glDrawElementArrayATI(GLenum mode, GLsizei count) +{ + Q_D(QOpenGLExtension_ATI_element_array); + d->DrawElementArrayATI(mode, count); +} + +inline void QOpenGLExtension_ATI_element_array::glElementPointerATI(GLenum type, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_ATI_element_array); + d->ElementPointerATI(type, pointer); +} + +class QOpenGLExtension_ATI_envmap_bumpmapPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat *param); + void (QOPENGLF_APIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint *param); + void (QOPENGLF_APIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat *param); + void (QOPENGLF_APIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint *param); +}; + +class QOpenGLExtension_ATI_envmap_bumpmap : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ATI_envmap_bumpmap(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetTexBumpParameterfvATI(GLenum pname, GLfloat *param); + void glGetTexBumpParameterivATI(GLenum pname, GLint *param); + void glTexBumpParameterfvATI(GLenum pname, const GLfloat *param); + void glTexBumpParameterivATI(GLenum pname, const GLint *param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ATI_envmap_bumpmap) +}; + +inline void QOpenGLExtension_ATI_envmap_bumpmap::glGetTexBumpParameterfvATI(GLenum pname, GLfloat *param) +{ + Q_D(QOpenGLExtension_ATI_envmap_bumpmap); + d->GetTexBumpParameterfvATI(pname, param); +} + +inline void QOpenGLExtension_ATI_envmap_bumpmap::glGetTexBumpParameterivATI(GLenum pname, GLint *param) +{ + Q_D(QOpenGLExtension_ATI_envmap_bumpmap); + d->GetTexBumpParameterivATI(pname, param); +} + +inline void QOpenGLExtension_ATI_envmap_bumpmap::glTexBumpParameterfvATI(GLenum pname, const GLfloat *param) +{ + Q_D(QOpenGLExtension_ATI_envmap_bumpmap); + d->TexBumpParameterfvATI(pname, param); +} + +inline void QOpenGLExtension_ATI_envmap_bumpmap::glTexBumpParameterivATI(GLenum pname, const GLint *param) +{ + Q_D(QOpenGLExtension_ATI_envmap_bumpmap); + d->TexBumpParameterivATI(pname, param); +} + +class QOpenGLExtension_ATI_fragment_shaderPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat *value); + void (QOPENGLF_APIENTRYP AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); + void (QOPENGLF_APIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); + void (QOPENGLF_APIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); + void (QOPENGLF_APIENTRYP ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); + void (QOPENGLF_APIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); + void (QOPENGLF_APIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); + void (QOPENGLF_APIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); + void (QOPENGLF_APIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); + void (QOPENGLF_APIENTRYP EndFragmentShaderATI)(); + void (QOPENGLF_APIENTRYP BeginFragmentShaderATI)(); + void (QOPENGLF_APIENTRYP DeleteFragmentShaderATI)(GLuint id); + void (QOPENGLF_APIENTRYP BindFragmentShaderATI)(GLuint id); + GLuint (QOPENGLF_APIENTRYP GenFragmentShadersATI)(GLuint range); +}; + +class QOpenGLExtension_ATI_fragment_shader : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ATI_fragment_shader(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glSetFragmentShaderConstantATI(GLuint dst, const GLfloat *value); + void glAlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); + void glAlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); + void glAlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); + void glColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); + void glColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); + void glColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); + void glSampleMapATI(GLuint dst, GLuint interp, GLenum swizzle); + void glPassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle); + void glEndFragmentShaderATI(); + void glBeginFragmentShaderATI(); + void glDeleteFragmentShaderATI(GLuint id); + void glBindFragmentShaderATI(GLuint id); + GLuint glGenFragmentShadersATI(GLuint range); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ATI_fragment_shader) +}; + +inline void QOpenGLExtension_ATI_fragment_shader::glSetFragmentShaderConstantATI(GLuint dst, const GLfloat *value) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->SetFragmentShaderConstantATI(dst, value); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glAlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->AlphaFragmentOp3ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glAlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->AlphaFragmentOp2ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glAlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->AlphaFragmentOp1ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->ColorFragmentOp3ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->ColorFragmentOp2ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->ColorFragmentOp1ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glSampleMapATI(GLuint dst, GLuint interp, GLenum swizzle) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->SampleMapATI(dst, interp, swizzle); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glPassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->PassTexCoordATI(dst, coord, swizzle); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glEndFragmentShaderATI() +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->EndFragmentShaderATI(); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glBeginFragmentShaderATI() +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->BeginFragmentShaderATI(); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glDeleteFragmentShaderATI(GLuint id) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->DeleteFragmentShaderATI(id); +} + +inline void QOpenGLExtension_ATI_fragment_shader::glBindFragmentShaderATI(GLuint id) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + d->BindFragmentShaderATI(id); +} + +inline GLuint QOpenGLExtension_ATI_fragment_shader::glGenFragmentShadersATI(GLuint range) +{ + Q_D(QOpenGLExtension_ATI_fragment_shader); + return d->GenFragmentShadersATI(range); +} + +class QOpenGLExtension_ATI_map_object_bufferPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP UnmapObjectBufferATI)(GLuint buffer); + GLvoid* (QOPENGLF_APIENTRYP MapObjectBufferATI)(GLuint buffer); +}; + +class QOpenGLExtension_ATI_map_object_buffer : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ATI_map_object_buffer(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glUnmapObjectBufferATI(GLuint buffer); + GLvoid* glMapObjectBufferATI(GLuint buffer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ATI_map_object_buffer) +}; + +inline void QOpenGLExtension_ATI_map_object_buffer::glUnmapObjectBufferATI(GLuint buffer) +{ + Q_D(QOpenGLExtension_ATI_map_object_buffer); + d->UnmapObjectBufferATI(buffer); +} + +inline GLvoid* QOpenGLExtension_ATI_map_object_buffer::glMapObjectBufferATI(GLuint buffer) +{ + Q_D(QOpenGLExtension_ATI_map_object_buffer); + return d->MapObjectBufferATI(buffer); +} + +class QOpenGLExtension_ATI_pn_trianglesPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP PNTrianglesfATI)(GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP PNTrianglesiATI)(GLenum pname, GLint param); +}; + +class QOpenGLExtension_ATI_pn_triangles : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ATI_pn_triangles(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glPNTrianglesfATI(GLenum pname, GLfloat param); + void glPNTrianglesiATI(GLenum pname, GLint param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ATI_pn_triangles) +}; + +inline void QOpenGLExtension_ATI_pn_triangles::glPNTrianglesfATI(GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_ATI_pn_triangles); + d->PNTrianglesfATI(pname, param); +} + +inline void QOpenGLExtension_ATI_pn_triangles::glPNTrianglesiATI(GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_ATI_pn_triangles); + d->PNTrianglesiATI(pname, param); +} + +class QOpenGLExtension_ATI_separate_stencilPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); + void (QOPENGLF_APIENTRYP StencilOpSeparateATI)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +}; + +class QOpenGLExtension_ATI_separate_stencil : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ATI_separate_stencil(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glStencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); + void glStencilOpSeparateATI(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ATI_separate_stencil) +}; + +inline void QOpenGLExtension_ATI_separate_stencil::glStencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask) +{ + Q_D(QOpenGLExtension_ATI_separate_stencil); + d->StencilFuncSeparateATI(frontfunc, backfunc, ref, mask); +} + +inline void QOpenGLExtension_ATI_separate_stencil::glStencilOpSeparateATI(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) +{ + Q_D(QOpenGLExtension_ATI_separate_stencil); + d->StencilOpSeparateATI(face, sfail, dpfail, dppass); +} + +class QOpenGLExtension_ATI_vertex_array_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetVariantArrayObjectivATI)(GLuint id, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetVariantArrayObjectfvATI)(GLuint id, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP VariantArrayObjectATI)(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); + void (QOPENGLF_APIENTRYP GetArrayObjectivATI)(GLenum array, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetArrayObjectfvATI)(GLenum array, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP ArrayObjectATI)(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); + void (QOPENGLF_APIENTRYP FreeObjectBufferATI)(GLuint buffer); + void (QOPENGLF_APIENTRYP GetObjectBufferivATI)(GLuint buffer, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetObjectBufferfvATI)(GLuint buffer, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP UpdateObjectBufferATI)(GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); + GLboolean (QOPENGLF_APIENTRYP IsObjectBufferATI)(GLuint buffer); + GLuint (QOPENGLF_APIENTRYP NewObjectBufferATI)(GLsizei size, const GLvoid *pointer, GLenum usage); +}; + +class QOpenGLExtension_ATI_vertex_array_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ATI_vertex_array_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetVariantArrayObjectivATI(GLuint id, GLenum pname, GLint *params); + void glGetVariantArrayObjectfvATI(GLuint id, GLenum pname, GLfloat *params); + void glVariantArrayObjectATI(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); + void glGetArrayObjectivATI(GLenum array, GLenum pname, GLint *params); + void glGetArrayObjectfvATI(GLenum array, GLenum pname, GLfloat *params); + void glArrayObjectATI(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); + void glFreeObjectBufferATI(GLuint buffer); + void glGetObjectBufferivATI(GLuint buffer, GLenum pname, GLint *params); + void glGetObjectBufferfvATI(GLuint buffer, GLenum pname, GLfloat *params); + void glUpdateObjectBufferATI(GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); + GLboolean glIsObjectBufferATI(GLuint buffer); + GLuint glNewObjectBufferATI(GLsizei size, const GLvoid *pointer, GLenum usage); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ATI_vertex_array_object) +}; + +inline void QOpenGLExtension_ATI_vertex_array_object::glGetVariantArrayObjectivATI(GLuint id, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + d->GetVariantArrayObjectivATI(id, pname, params); +} + +inline void QOpenGLExtension_ATI_vertex_array_object::glGetVariantArrayObjectfvATI(GLuint id, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + d->GetVariantArrayObjectfvATI(id, pname, params); +} + +inline void QOpenGLExtension_ATI_vertex_array_object::glVariantArrayObjectATI(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + d->VariantArrayObjectATI(id, type, stride, buffer, offset); +} + +inline void QOpenGLExtension_ATI_vertex_array_object::glGetArrayObjectivATI(GLenum array, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + d->GetArrayObjectivATI(array, pname, params); +} + +inline void QOpenGLExtension_ATI_vertex_array_object::glGetArrayObjectfvATI(GLenum array, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + d->GetArrayObjectfvATI(array, pname, params); +} + +inline void QOpenGLExtension_ATI_vertex_array_object::glArrayObjectATI(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + d->ArrayObjectATI(array, size, type, stride, buffer, offset); +} + +inline void QOpenGLExtension_ATI_vertex_array_object::glFreeObjectBufferATI(GLuint buffer) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + d->FreeObjectBufferATI(buffer); +} + +inline void QOpenGLExtension_ATI_vertex_array_object::glGetObjectBufferivATI(GLuint buffer, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + d->GetObjectBufferivATI(buffer, pname, params); +} + +inline void QOpenGLExtension_ATI_vertex_array_object::glGetObjectBufferfvATI(GLuint buffer, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + d->GetObjectBufferfvATI(buffer, pname, params); +} + +inline void QOpenGLExtension_ATI_vertex_array_object::glUpdateObjectBufferATI(GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + d->UpdateObjectBufferATI(buffer, offset, size, pointer, preserve); +} + +inline GLboolean QOpenGLExtension_ATI_vertex_array_object::glIsObjectBufferATI(GLuint buffer) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + return d->IsObjectBufferATI(buffer); +} + +inline GLuint QOpenGLExtension_ATI_vertex_array_object::glNewObjectBufferATI(GLsizei size, const GLvoid *pointer, GLenum usage) +{ + Q_D(QOpenGLExtension_ATI_vertex_array_object); + return d->NewObjectBufferATI(size, pointer, usage); +} + +class QOpenGLExtension_ATI_vertex_attrib_array_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetVertexAttribArrayObjectivATI)(GLuint index, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetVertexAttribArrayObjectfvATI)(GLuint index, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP VertexAttribArrayObjectATI)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); +}; + +class QOpenGLExtension_ATI_vertex_attrib_array_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ATI_vertex_attrib_array_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetVertexAttribArrayObjectivATI(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribArrayObjectfvATI(GLuint index, GLenum pname, GLfloat *params); + void glVertexAttribArrayObjectATI(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ATI_vertex_attrib_array_object) +}; + +inline void QOpenGLExtension_ATI_vertex_attrib_array_object::glGetVertexAttribArrayObjectivATI(GLuint index, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_ATI_vertex_attrib_array_object); + d->GetVertexAttribArrayObjectivATI(index, pname, params); +} + +inline void QOpenGLExtension_ATI_vertex_attrib_array_object::glGetVertexAttribArrayObjectfvATI(GLuint index, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_ATI_vertex_attrib_array_object); + d->GetVertexAttribArrayObjectfvATI(index, pname, params); +} + +inline void QOpenGLExtension_ATI_vertex_attrib_array_object::glVertexAttribArrayObjectATI(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset) +{ + Q_D(QOpenGLExtension_ATI_vertex_attrib_array_object); + d->VertexAttribArrayObjectATI(index, size, type, normalized, stride, buffer, offset); +} + +class QOpenGLExtension_ATI_vertex_streamsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexBlendEnvfATI)(GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP VertexBlendEnviATI)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP ClientActiveVertexStreamATI)(GLenum stream); + void (QOPENGLF_APIENTRYP NormalStream3dvATI)(GLenum stream, const GLdouble *coords); + void (QOPENGLF_APIENTRYP NormalStream3dATI)(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); + void (QOPENGLF_APIENTRYP NormalStream3fvATI)(GLenum stream, const GLfloat *coords); + void (QOPENGLF_APIENTRYP NormalStream3fATI)(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); + void (QOPENGLF_APIENTRYP NormalStream3ivATI)(GLenum stream, const GLint *coords); + void (QOPENGLF_APIENTRYP NormalStream3iATI)(GLenum stream, GLint nx, GLint ny, GLint nz); + void (QOPENGLF_APIENTRYP NormalStream3svATI)(GLenum stream, const GLshort *coords); + void (QOPENGLF_APIENTRYP NormalStream3sATI)(GLenum stream, GLshort nx, GLshort ny, GLshort nz); + void (QOPENGLF_APIENTRYP NormalStream3bvATI)(GLenum stream, const GLbyte *coords); + void (QOPENGLF_APIENTRYP NormalStream3bATI)(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); + void (QOPENGLF_APIENTRYP VertexStream4dvATI)(GLenum stream, const GLdouble *coords); + void (QOPENGLF_APIENTRYP VertexStream4dATI)(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP VertexStream4fvATI)(GLenum stream, const GLfloat *coords); + void (QOPENGLF_APIENTRYP VertexStream4fATI)(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP VertexStream4ivATI)(GLenum stream, const GLint *coords); + void (QOPENGLF_APIENTRYP VertexStream4iATI)(GLenum stream, GLint x, GLint y, GLint z, GLint w); + void (QOPENGLF_APIENTRYP VertexStream4svATI)(GLenum stream, const GLshort *coords); + void (QOPENGLF_APIENTRYP VertexStream4sATI)(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); + void (QOPENGLF_APIENTRYP VertexStream3dvATI)(GLenum stream, const GLdouble *coords); + void (QOPENGLF_APIENTRYP VertexStream3dATI)(GLenum stream, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP VertexStream3fvATI)(GLenum stream, const GLfloat *coords); + void (QOPENGLF_APIENTRYP VertexStream3fATI)(GLenum stream, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP VertexStream3ivATI)(GLenum stream, const GLint *coords); + void (QOPENGLF_APIENTRYP VertexStream3iATI)(GLenum stream, GLint x, GLint y, GLint z); + void (QOPENGLF_APIENTRYP VertexStream3svATI)(GLenum stream, const GLshort *coords); + void (QOPENGLF_APIENTRYP VertexStream3sATI)(GLenum stream, GLshort x, GLshort y, GLshort z); + void (QOPENGLF_APIENTRYP VertexStream2dvATI)(GLenum stream, const GLdouble *coords); + void (QOPENGLF_APIENTRYP VertexStream2dATI)(GLenum stream, GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP VertexStream2fvATI)(GLenum stream, const GLfloat *coords); + void (QOPENGLF_APIENTRYP VertexStream2fATI)(GLenum stream, GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP VertexStream2ivATI)(GLenum stream, const GLint *coords); + void (QOPENGLF_APIENTRYP VertexStream2iATI)(GLenum stream, GLint x, GLint y); + void (QOPENGLF_APIENTRYP VertexStream2svATI)(GLenum stream, const GLshort *coords); + void (QOPENGLF_APIENTRYP VertexStream2sATI)(GLenum stream, GLshort x, GLshort y); + void (QOPENGLF_APIENTRYP VertexStream1dvATI)(GLenum stream, const GLdouble *coords); + void (QOPENGLF_APIENTRYP VertexStream1dATI)(GLenum stream, GLdouble x); + void (QOPENGLF_APIENTRYP VertexStream1fvATI)(GLenum stream, const GLfloat *coords); + void (QOPENGLF_APIENTRYP VertexStream1fATI)(GLenum stream, GLfloat x); + void (QOPENGLF_APIENTRYP VertexStream1ivATI)(GLenum stream, const GLint *coords); + void (QOPENGLF_APIENTRYP VertexStream1iATI)(GLenum stream, GLint x); + void (QOPENGLF_APIENTRYP VertexStream1svATI)(GLenum stream, const GLshort *coords); + void (QOPENGLF_APIENTRYP VertexStream1sATI)(GLenum stream, GLshort x); +}; + +class QOpenGLExtension_ATI_vertex_streams : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ATI_vertex_streams(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexBlendEnvfATI(GLenum pname, GLfloat param); + void glVertexBlendEnviATI(GLenum pname, GLint param); + void glClientActiveVertexStreamATI(GLenum stream); + void glNormalStream3dvATI(GLenum stream, const GLdouble *coords); + void glNormalStream3dATI(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); + void glNormalStream3fvATI(GLenum stream, const GLfloat *coords); + void glNormalStream3fATI(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); + void glNormalStream3ivATI(GLenum stream, const GLint *coords); + void glNormalStream3iATI(GLenum stream, GLint nx, GLint ny, GLint nz); + void glNormalStream3svATI(GLenum stream, const GLshort *coords); + void glNormalStream3sATI(GLenum stream, GLshort nx, GLshort ny, GLshort nz); + void glNormalStream3bvATI(GLenum stream, const GLbyte *coords); + void glNormalStream3bATI(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); + void glVertexStream4dvATI(GLenum stream, const GLdouble *coords); + void glVertexStream4dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexStream4fvATI(GLenum stream, const GLfloat *coords); + void glVertexStream4fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexStream4ivATI(GLenum stream, const GLint *coords); + void glVertexStream4iATI(GLenum stream, GLint x, GLint y, GLint z, GLint w); + void glVertexStream4svATI(GLenum stream, const GLshort *coords); + void glVertexStream4sATI(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexStream3dvATI(GLenum stream, const GLdouble *coords); + void glVertexStream3dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z); + void glVertexStream3fvATI(GLenum stream, const GLfloat *coords); + void glVertexStream3fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z); + void glVertexStream3ivATI(GLenum stream, const GLint *coords); + void glVertexStream3iATI(GLenum stream, GLint x, GLint y, GLint z); + void glVertexStream3svATI(GLenum stream, const GLshort *coords); + void glVertexStream3sATI(GLenum stream, GLshort x, GLshort y, GLshort z); + void glVertexStream2dvATI(GLenum stream, const GLdouble *coords); + void glVertexStream2dATI(GLenum stream, GLdouble x, GLdouble y); + void glVertexStream2fvATI(GLenum stream, const GLfloat *coords); + void glVertexStream2fATI(GLenum stream, GLfloat x, GLfloat y); + void glVertexStream2ivATI(GLenum stream, const GLint *coords); + void glVertexStream2iATI(GLenum stream, GLint x, GLint y); + void glVertexStream2svATI(GLenum stream, const GLshort *coords); + void glVertexStream2sATI(GLenum stream, GLshort x, GLshort y); + void glVertexStream1dvATI(GLenum stream, const GLdouble *coords); + void glVertexStream1dATI(GLenum stream, GLdouble x); + void glVertexStream1fvATI(GLenum stream, const GLfloat *coords); + void glVertexStream1fATI(GLenum stream, GLfloat x); + void glVertexStream1ivATI(GLenum stream, const GLint *coords); + void glVertexStream1iATI(GLenum stream, GLint x); + void glVertexStream1svATI(GLenum stream, const GLshort *coords); + void glVertexStream1sATI(GLenum stream, GLshort x); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ATI_vertex_streams) +}; + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexBlendEnvfATI(GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexBlendEnvfATI(pname, param); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexBlendEnviATI(GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexBlendEnviATI(pname, param); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glClientActiveVertexStreamATI(GLenum stream) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->ClientActiveVertexStreamATI(stream); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glNormalStream3dvATI(GLenum stream, const GLdouble *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->NormalStream3dvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glNormalStream3dATI(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->NormalStream3dATI(stream, nx, ny, nz); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glNormalStream3fvATI(GLenum stream, const GLfloat *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->NormalStream3fvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glNormalStream3fATI(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->NormalStream3fATI(stream, nx, ny, nz); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glNormalStream3ivATI(GLenum stream, const GLint *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->NormalStream3ivATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glNormalStream3iATI(GLenum stream, GLint nx, GLint ny, GLint nz) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->NormalStream3iATI(stream, nx, ny, nz); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glNormalStream3svATI(GLenum stream, const GLshort *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->NormalStream3svATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glNormalStream3sATI(GLenum stream, GLshort nx, GLshort ny, GLshort nz) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->NormalStream3sATI(stream, nx, ny, nz); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glNormalStream3bvATI(GLenum stream, const GLbyte *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->NormalStream3bvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glNormalStream3bATI(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->NormalStream3bATI(stream, nx, ny, nz); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream4dvATI(GLenum stream, const GLdouble *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream4dvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream4dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream4dATI(stream, x, y, z, w); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream4fvATI(GLenum stream, const GLfloat *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream4fvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream4fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream4fATI(stream, x, y, z, w); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream4ivATI(GLenum stream, const GLint *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream4ivATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream4iATI(GLenum stream, GLint x, GLint y, GLint z, GLint w) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream4iATI(stream, x, y, z, w); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream4svATI(GLenum stream, const GLshort *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream4svATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream4sATI(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream4sATI(stream, x, y, z, w); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream3dvATI(GLenum stream, const GLdouble *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream3dvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream3dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream3dATI(stream, x, y, z); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream3fvATI(GLenum stream, const GLfloat *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream3fvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream3fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream3fATI(stream, x, y, z); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream3ivATI(GLenum stream, const GLint *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream3ivATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream3iATI(GLenum stream, GLint x, GLint y, GLint z) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream3iATI(stream, x, y, z); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream3svATI(GLenum stream, const GLshort *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream3svATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream3sATI(GLenum stream, GLshort x, GLshort y, GLshort z) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream3sATI(stream, x, y, z); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream2dvATI(GLenum stream, const GLdouble *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream2dvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream2dATI(GLenum stream, GLdouble x, GLdouble y) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream2dATI(stream, x, y); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream2fvATI(GLenum stream, const GLfloat *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream2fvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream2fATI(GLenum stream, GLfloat x, GLfloat y) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream2fATI(stream, x, y); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream2ivATI(GLenum stream, const GLint *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream2ivATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream2iATI(GLenum stream, GLint x, GLint y) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream2iATI(stream, x, y); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream2svATI(GLenum stream, const GLshort *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream2svATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream2sATI(GLenum stream, GLshort x, GLshort y) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream2sATI(stream, x, y); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream1dvATI(GLenum stream, const GLdouble *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream1dvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream1dATI(GLenum stream, GLdouble x) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream1dATI(stream, x); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream1fvATI(GLenum stream, const GLfloat *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream1fvATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream1fATI(GLenum stream, GLfloat x) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream1fATI(stream, x); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream1ivATI(GLenum stream, const GLint *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream1ivATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream1iATI(GLenum stream, GLint x) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream1iATI(stream, x); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream1svATI(GLenum stream, const GLshort *coords) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream1svATI(stream, coords); +} + +inline void QOpenGLExtension_ATI_vertex_streams::glVertexStream1sATI(GLenum stream, GLshort x) +{ + Q_D(QOpenGLExtension_ATI_vertex_streams); + d->VertexStream1sATI(stream, x); +} + +class QOpenGLExtension_EXT_bindable_uniformPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLintptr (QOPENGLF_APIENTRYP GetUniformOffsetEXT)(GLuint program, GLint location); + GLint (QOPENGLF_APIENTRYP GetUniformBufferSizeEXT)(GLuint program, GLint location); + void (QOPENGLF_APIENTRYP UniformBufferEXT)(GLuint program, GLint location, GLuint buffer); +}; + +class QOpenGLExtension_EXT_bindable_uniform : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_bindable_uniform(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLintptr glGetUniformOffsetEXT(GLuint program, GLint location); + GLint glGetUniformBufferSizeEXT(GLuint program, GLint location); + void glUniformBufferEXT(GLuint program, GLint location, GLuint buffer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_bindable_uniform) +}; + +inline GLintptr QOpenGLExtension_EXT_bindable_uniform::glGetUniformOffsetEXT(GLuint program, GLint location) +{ + Q_D(QOpenGLExtension_EXT_bindable_uniform); + return d->GetUniformOffsetEXT(program, location); +} + +inline GLint QOpenGLExtension_EXT_bindable_uniform::glGetUniformBufferSizeEXT(GLuint program, GLint location) +{ + Q_D(QOpenGLExtension_EXT_bindable_uniform); + return d->GetUniformBufferSizeEXT(program, location); +} + +inline void QOpenGLExtension_EXT_bindable_uniform::glUniformBufferEXT(GLuint program, GLint location, GLuint buffer) +{ + Q_D(QOpenGLExtension_EXT_bindable_uniform); + d->UniformBufferEXT(program, location, buffer); +} + +class QOpenGLExtension_EXT_blend_colorPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BlendColorEXT)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +}; + +class QOpenGLExtension_EXT_blend_color : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_blend_color(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBlendColorEXT(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_blend_color) +}; + +inline void QOpenGLExtension_EXT_blend_color::glBlendColorEXT(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) +{ + Q_D(QOpenGLExtension_EXT_blend_color); + d->BlendColorEXT(red, green, blue, alpha); +} + +class QOpenGLExtension_EXT_blend_equation_separatePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeAlpha); +}; + +class QOpenGLExtension_EXT_blend_equation_separate : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_blend_equation_separate(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeAlpha); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_blend_equation_separate) +}; + +inline void QOpenGLExtension_EXT_blend_equation_separate::glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeAlpha) +{ + Q_D(QOpenGLExtension_EXT_blend_equation_separate); + d->BlendEquationSeparateEXT(modeRGB, modeAlpha); +} + +class QOpenGLExtension_EXT_blend_func_separatePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +}; + +class QOpenGLExtension_EXT_blend_func_separate : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_blend_func_separate(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_blend_func_separate) +}; + +inline void QOpenGLExtension_EXT_blend_func_separate::glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + Q_D(QOpenGLExtension_EXT_blend_func_separate); + d->BlendFuncSeparateEXT(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + +class QOpenGLExtension_EXT_blend_minmaxPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BlendEquationEXT)(GLenum mode); +}; + +class QOpenGLExtension_EXT_blend_minmax : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_blend_minmax(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBlendEquationEXT(GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_blend_minmax) +}; + +inline void QOpenGLExtension_EXT_blend_minmax::glBlendEquationEXT(GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_blend_minmax); + d->BlendEquationEXT(mode); +} + +class QOpenGLExtension_EXT_color_subtablePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP CopyColorSubTableEXT)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void (QOPENGLF_APIENTRYP ColorSubTableEXT)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +}; + +class QOpenGLExtension_EXT_color_subtable : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_color_subtable(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glCopyColorSubTableEXT(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + void glColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_color_subtable) +}; + +inline void QOpenGLExtension_EXT_color_subtable::glCopyColorSubTableEXT(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +{ + Q_D(QOpenGLExtension_EXT_color_subtable); + d->CopyColorSubTableEXT(target, start, x, y, width); +} + +inline void QOpenGLExtension_EXT_color_subtable::glColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data) +{ + Q_D(QOpenGLExtension_EXT_color_subtable); + d->ColorSubTableEXT(target, start, count, format, type, data); +} + +class QOpenGLExtension_EXT_compiled_vertex_arrayPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP UnlockArraysEXT)(); + void (QOPENGLF_APIENTRYP LockArraysEXT)(GLint first, GLsizei count); +}; + +class QOpenGLExtension_EXT_compiled_vertex_array : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_compiled_vertex_array(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glUnlockArraysEXT(); + void glLockArraysEXT(GLint first, GLsizei count); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_compiled_vertex_array) +}; + +inline void QOpenGLExtension_EXT_compiled_vertex_array::glUnlockArraysEXT() +{ + Q_D(QOpenGLExtension_EXT_compiled_vertex_array); + d->UnlockArraysEXT(); +} + +inline void QOpenGLExtension_EXT_compiled_vertex_array::glLockArraysEXT(GLint first, GLsizei count) +{ + Q_D(QOpenGLExtension_EXT_compiled_vertex_array); + d->LockArraysEXT(first, count); +} + +class QOpenGLExtension_EXT_convolutionPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP SeparableFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void (QOPENGLF_APIENTRYP GetSeparableFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void (QOPENGLF_APIENTRYP GetConvolutionParameterivEXT)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetConvolutionParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetConvolutionFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid *image); + void (QOPENGLF_APIENTRYP CopyConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP CopyConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void (QOPENGLF_APIENTRYP ConvolutionParameterivEXT)(GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP ConvolutionParameteriEXT)(GLenum target, GLenum pname, GLint params); + void (QOPENGLF_APIENTRYP ConvolutionParameterfvEXT)(GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP ConvolutionParameterfEXT)(GLenum target, GLenum pname, GLfloat params); + void (QOPENGLF_APIENTRYP ConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void (QOPENGLF_APIENTRYP ConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +}; + +class QOpenGLExtension_EXT_convolution : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_convolution(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glSeparableFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); + void glGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); + void glGetConvolutionParameterivEXT(GLenum target, GLenum pname, GLint *params); + void glGetConvolutionParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); + void glGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid *image); + void glCopyConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glConvolutionParameterivEXT(GLenum target, GLenum pname, const GLint *params); + void glConvolutionParameteriEXT(GLenum target, GLenum pname, GLint params); + void glConvolutionParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params); + void glConvolutionParameterfEXT(GLenum target, GLenum pname, GLfloat params); + void glConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); + void glConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_convolution) +}; + +inline void QOpenGLExtension_EXT_convolution::glSeparableFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->SeparableFilter2DEXT(target, internalformat, width, height, format, type, row, column); +} + +inline void QOpenGLExtension_EXT_convolution::glGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->GetSeparableFilterEXT(target, format, type, row, column, span); +} + +inline void QOpenGLExtension_EXT_convolution::glGetConvolutionParameterivEXT(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->GetConvolutionParameterivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_convolution::glGetConvolutionParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->GetConvolutionParameterfvEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_convolution::glGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid *image) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->GetConvolutionFilterEXT(target, format, type, image); +} + +inline void QOpenGLExtension_EXT_convolution::glCopyConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->CopyConvolutionFilter2DEXT(target, internalformat, x, y, width, height); +} + +inline void QOpenGLExtension_EXT_convolution::glCopyConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->CopyConvolutionFilter1DEXT(target, internalformat, x, y, width); +} + +inline void QOpenGLExtension_EXT_convolution::glConvolutionParameterivEXT(GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->ConvolutionParameterivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_convolution::glConvolutionParameteriEXT(GLenum target, GLenum pname, GLint params) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->ConvolutionParameteriEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_convolution::glConvolutionParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->ConvolutionParameterfvEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_convolution::glConvolutionParameterfEXT(GLenum target, GLenum pname, GLfloat params) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->ConvolutionParameterfEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_convolution::glConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->ConvolutionFilter2DEXT(target, internalformat, width, height, format, type, image); +} + +inline void QOpenGLExtension_EXT_convolution::glConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image) +{ + Q_D(QOpenGLExtension_EXT_convolution); + d->ConvolutionFilter1DEXT(target, internalformat, width, format, type, image); +} + +class QOpenGLExtension_EXT_coordinate_framePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BinormalPointerEXT)(GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP TangentPointerEXT)(GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP Binormal3svEXT)(const GLshort *v); + void (QOPENGLF_APIENTRYP Binormal3sEXT)(GLshort bx, GLshort by, GLshort bz); + void (QOPENGLF_APIENTRYP Binormal3ivEXT)(const GLint *v); + void (QOPENGLF_APIENTRYP Binormal3iEXT)(GLint bx, GLint by, GLint bz); + void (QOPENGLF_APIENTRYP Binormal3fvEXT)(const GLfloat *v); + void (QOPENGLF_APIENTRYP Binormal3fEXT)(GLfloat bx, GLfloat by, GLfloat bz); + void (QOPENGLF_APIENTRYP Binormal3dvEXT)(const GLdouble *v); + void (QOPENGLF_APIENTRYP Binormal3dEXT)(GLdouble bx, GLdouble by, GLdouble bz); + void (QOPENGLF_APIENTRYP Binormal3bvEXT)(const GLbyte *v); + void (QOPENGLF_APIENTRYP Binormal3bEXT)(GLbyte bx, GLbyte by, GLbyte bz); + void (QOPENGLF_APIENTRYP Tangent3svEXT)(const GLshort *v); + void (QOPENGLF_APIENTRYP Tangent3sEXT)(GLshort tx, GLshort ty, GLshort tz); + void (QOPENGLF_APIENTRYP Tangent3ivEXT)(const GLint *v); + void (QOPENGLF_APIENTRYP Tangent3iEXT)(GLint tx, GLint ty, GLint tz); + void (QOPENGLF_APIENTRYP Tangent3fvEXT)(const GLfloat *v); + void (QOPENGLF_APIENTRYP Tangent3fEXT)(GLfloat tx, GLfloat ty, GLfloat tz); + void (QOPENGLF_APIENTRYP Tangent3dvEXT)(const GLdouble *v); + void (QOPENGLF_APIENTRYP Tangent3dEXT)(GLdouble tx, GLdouble ty, GLdouble tz); + void (QOPENGLF_APIENTRYP Tangent3bvEXT)(const GLbyte *v); + void (QOPENGLF_APIENTRYP Tangent3bEXT)(GLbyte tx, GLbyte ty, GLbyte tz); +}; + +class QOpenGLExtension_EXT_coordinate_frame : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_coordinate_frame(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBinormalPointerEXT(GLenum type, GLsizei stride, const GLvoid *pointer); + void glTangentPointerEXT(GLenum type, GLsizei stride, const GLvoid *pointer); + void glBinormal3svEXT(const GLshort *v); + void glBinormal3sEXT(GLshort bx, GLshort by, GLshort bz); + void glBinormal3ivEXT(const GLint *v); + void glBinormal3iEXT(GLint bx, GLint by, GLint bz); + void glBinormal3fvEXT(const GLfloat *v); + void glBinormal3fEXT(GLfloat bx, GLfloat by, GLfloat bz); + void glBinormal3dvEXT(const GLdouble *v); + void glBinormal3dEXT(GLdouble bx, GLdouble by, GLdouble bz); + void glBinormal3bvEXT(const GLbyte *v); + void glBinormal3bEXT(GLbyte bx, GLbyte by, GLbyte bz); + void glTangent3svEXT(const GLshort *v); + void glTangent3sEXT(GLshort tx, GLshort ty, GLshort tz); + void glTangent3ivEXT(const GLint *v); + void glTangent3iEXT(GLint tx, GLint ty, GLint tz); + void glTangent3fvEXT(const GLfloat *v); + void glTangent3fEXT(GLfloat tx, GLfloat ty, GLfloat tz); + void glTangent3dvEXT(const GLdouble *v); + void glTangent3dEXT(GLdouble tx, GLdouble ty, GLdouble tz); + void glTangent3bvEXT(const GLbyte *v); + void glTangent3bEXT(GLbyte tx, GLbyte ty, GLbyte tz); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_coordinate_frame) +}; + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormalPointerEXT(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->BinormalPointerEXT(type, stride, pointer); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangentPointerEXT(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->TangentPointerEXT(type, stride, pointer); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormal3svEXT(const GLshort *v) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Binormal3svEXT(v); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormal3sEXT(GLshort bx, GLshort by, GLshort bz) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Binormal3sEXT(bx, by, bz); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormal3ivEXT(const GLint *v) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Binormal3ivEXT(v); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormal3iEXT(GLint bx, GLint by, GLint bz) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Binormal3iEXT(bx, by, bz); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormal3fvEXT(const GLfloat *v) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Binormal3fvEXT(v); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormal3fEXT(GLfloat bx, GLfloat by, GLfloat bz) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Binormal3fEXT(bx, by, bz); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormal3dvEXT(const GLdouble *v) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Binormal3dvEXT(v); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormal3dEXT(GLdouble bx, GLdouble by, GLdouble bz) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Binormal3dEXT(bx, by, bz); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormal3bvEXT(const GLbyte *v) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Binormal3bvEXT(v); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glBinormal3bEXT(GLbyte bx, GLbyte by, GLbyte bz) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Binormal3bEXT(bx, by, bz); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangent3svEXT(const GLshort *v) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Tangent3svEXT(v); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangent3sEXT(GLshort tx, GLshort ty, GLshort tz) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Tangent3sEXT(tx, ty, tz); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangent3ivEXT(const GLint *v) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Tangent3ivEXT(v); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangent3iEXT(GLint tx, GLint ty, GLint tz) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Tangent3iEXT(tx, ty, tz); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangent3fvEXT(const GLfloat *v) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Tangent3fvEXT(v); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangent3fEXT(GLfloat tx, GLfloat ty, GLfloat tz) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Tangent3fEXT(tx, ty, tz); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangent3dvEXT(const GLdouble *v) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Tangent3dvEXT(v); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangent3dEXT(GLdouble tx, GLdouble ty, GLdouble tz) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Tangent3dEXT(tx, ty, tz); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangent3bvEXT(const GLbyte *v) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Tangent3bvEXT(v); +} + +inline void QOpenGLExtension_EXT_coordinate_frame::glTangent3bEXT(GLbyte tx, GLbyte ty, GLbyte tz) +{ + Q_D(QOpenGLExtension_EXT_coordinate_frame); + d->Tangent3bEXT(tx, ty, tz); +} + +class QOpenGLExtension_EXT_copy_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void (QOPENGLF_APIENTRYP CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void (QOPENGLF_APIENTRYP CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +}; + +class QOpenGLExtension_EXT_copy_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_copy_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glCopyTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTexImage2DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTexImage1DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_copy_texture) +}; + +inline void QOpenGLExtension_EXT_copy_texture::glCopyTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_copy_texture); + d->CopyTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLExtension_EXT_copy_texture::glCopyTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_copy_texture); + d->CopyTexSubImage2DEXT(target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLExtension_EXT_copy_texture::glCopyTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + Q_D(QOpenGLExtension_EXT_copy_texture); + d->CopyTexSubImage1DEXT(target, level, xoffset, x, y, width); +} + +inline void QOpenGLExtension_EXT_copy_texture::glCopyTexImage2DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + Q_D(QOpenGLExtension_EXT_copy_texture); + d->CopyTexImage2DEXT(target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLExtension_EXT_copy_texture::glCopyTexImage1DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + Q_D(QOpenGLExtension_EXT_copy_texture); + d->CopyTexImage1DEXT(target, level, internalformat, x, y, width, border); +} + +class QOpenGLExtension_EXT_cull_vertexPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP CullParameterfvEXT)(GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP CullParameterdvEXT)(GLenum pname, GLdouble *params); +}; + +class QOpenGLExtension_EXT_cull_vertex : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_cull_vertex(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glCullParameterfvEXT(GLenum pname, GLfloat *params); + void glCullParameterdvEXT(GLenum pname, GLdouble *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_cull_vertex) +}; + +inline void QOpenGLExtension_EXT_cull_vertex::glCullParameterfvEXT(GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_cull_vertex); + d->CullParameterfvEXT(pname, params); +} + +inline void QOpenGLExtension_EXT_cull_vertex::glCullParameterdvEXT(GLenum pname, GLdouble *params) +{ + Q_D(QOpenGLExtension_EXT_cull_vertex); + d->CullParameterdvEXT(pname, params); +} + +class QOpenGLExtension_EXT_depth_bounds_testPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); +}; + +class QOpenGLExtension_EXT_depth_bounds_test : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_depth_bounds_test(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDepthBoundsEXT(GLclampd zmin, GLclampd zmax); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_depth_bounds_test) +}; + +inline void QOpenGLExtension_EXT_depth_bounds_test::glDepthBoundsEXT(GLclampd zmin, GLclampd zmax) +{ + Q_D(QOpenGLExtension_EXT_depth_bounds_test); + d->DepthBoundsEXT(zmin, zmax); +} + +class QOpenGLExtension_EXT_direct_state_accessPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2dvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform4dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform3dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform2dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform1dvEXT)(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void (QOPENGLF_APIENTRYP ProgramUniform4dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP ProgramUniform3dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP ProgramUniform2dEXT)(GLuint program, GLint location, GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP ProgramUniform1dEXT)(GLuint program, GLint location, GLdouble x); + void (QOPENGLF_APIENTRYP MultiTexRenderbufferEXT)(GLenum texunit, GLenum target, GLuint renderbuffer); + void (QOPENGLF_APIENTRYP TextureRenderbufferEXT)(GLuint texture, GLenum target, GLuint renderbuffer); + void (QOPENGLF_APIENTRYP NamedFramebufferTextureFaceEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); + void (QOPENGLF_APIENTRYP NamedFramebufferTextureLayerEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); + void (QOPENGLF_APIENTRYP NamedFramebufferTextureEXT)(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); + void (QOPENGLF_APIENTRYP NamedRenderbufferStorageMultisampleCoverageEXT)(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP NamedRenderbufferStorageMultisampleEXT)(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP GetFramebufferParameterivEXT)(GLuint framebuffer, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP FramebufferReadBufferEXT)(GLuint framebuffer, GLenum mode); + void (QOPENGLF_APIENTRYP FramebufferDrawBuffersEXT)(GLuint framebuffer, GLsizei n, const GLenum *bufs); + void (QOPENGLF_APIENTRYP FramebufferDrawBufferEXT)(GLuint framebuffer, GLenum mode); + void (QOPENGLF_APIENTRYP GenerateMultiTexMipmapEXT)(GLenum texunit, GLenum target); + void (QOPENGLF_APIENTRYP GenerateTextureMipmapEXT)(GLuint texture, GLenum target); + void (QOPENGLF_APIENTRYP GetNamedFramebufferAttachmentParameterivEXT)(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP NamedFramebufferRenderbufferEXT)(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void (QOPENGLF_APIENTRYP NamedFramebufferTexture3DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void (QOPENGLF_APIENTRYP NamedFramebufferTexture2DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void (QOPENGLF_APIENTRYP NamedFramebufferTexture1DEXT)(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum (QOPENGLF_APIENTRYP CheckNamedFramebufferStatusEXT)(GLuint framebuffer, GLenum target); + void (QOPENGLF_APIENTRYP GetNamedRenderbufferParameterivEXT)(GLuint renderbuffer, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP NamedRenderbufferStorageEXT)(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP MultiTexBufferEXT)(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); + void (QOPENGLF_APIENTRYP TextureBufferEXT)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); + void (QOPENGLF_APIENTRYP GetNamedBufferSubDataEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data); + void (QOPENGLF_APIENTRYP GetNamedBufferPointervEXT)(GLuint buffer, GLenum pname, GLvoid* *params); + void (QOPENGLF_APIENTRYP GetNamedBufferParameterivEXT)(GLuint buffer, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP NamedCopyBufferSubDataEXT)(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void (QOPENGLF_APIENTRYP FlushMappedNamedBufferRangeEXT)(GLuint buffer, GLintptr offset, GLsizeiptr length); + GLvoid* (QOPENGLF_APIENTRYP MapNamedBufferRangeEXT)(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); + GLboolean (QOPENGLF_APIENTRYP UnmapNamedBufferEXT)(GLuint buffer); + GLvoid* (QOPENGLF_APIENTRYP MapNamedBufferEXT)(GLuint buffer, GLenum access); + void (QOPENGLF_APIENTRYP NamedBufferSubDataEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void (QOPENGLF_APIENTRYP NamedBufferDataEXT)(GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage); + void (QOPENGLF_APIENTRYP ProgramUniform4uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform3uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform2uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform1uivEXT)(GLuint program, GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP ProgramUniform4uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void (QOPENGLF_APIENTRYP ProgramUniform3uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void (QOPENGLF_APIENTRYP ProgramUniform2uiEXT)(GLuint program, GLint location, GLuint v0, GLuint v1); + void (QOPENGLF_APIENTRYP ProgramUniform1uiEXT)(GLuint program, GLint location, GLuint v0); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4x2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3x2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2x3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform4ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform3ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform2ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform1ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform4fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform3fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform2fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform1fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform4iEXT)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void (QOPENGLF_APIENTRYP ProgramUniform3iEXT)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void (QOPENGLF_APIENTRYP ProgramUniform2iEXT)(GLuint program, GLint location, GLint v0, GLint v1); + void (QOPENGLF_APIENTRYP ProgramUniform1iEXT)(GLuint program, GLint location, GLint v0); + void (QOPENGLF_APIENTRYP ProgramUniform4fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void (QOPENGLF_APIENTRYP ProgramUniform3fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void (QOPENGLF_APIENTRYP ProgramUniform2fEXT)(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void (QOPENGLF_APIENTRYP ProgramUniform1fEXT)(GLuint program, GLint location, GLfloat v0); + void (QOPENGLF_APIENTRYP GetMultiTexParameterIuivEXT)(GLenum texunit, GLenum target, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetMultiTexParameterIivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP MultiTexParameterIuivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLuint *params); + void (QOPENGLF_APIENTRYP MultiTexParameterIivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP GetTextureParameterIuivEXT)(GLuint texture, GLenum target, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetTextureParameterIivEXT)(GLuint texture, GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP TextureParameterIuivEXT)(GLuint texture, GLenum target, GLenum pname, const GLuint *params); + void (QOPENGLF_APIENTRYP TextureParameterIivEXT)(GLuint texture, GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP GetNamedProgramLocalParameterIuivEXT)(GLuint program, GLenum target, GLuint index, GLuint *params); + void (QOPENGLF_APIENTRYP GetNamedProgramLocalParameterIivEXT)(GLuint program, GLenum target, GLuint index, GLint *params); + void (QOPENGLF_APIENTRYP NamedProgramLocalParametersI4uivEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); + void (QOPENGLF_APIENTRYP NamedProgramLocalParameterI4uivEXT)(GLuint program, GLenum target, GLuint index, const GLuint *params); + void (QOPENGLF_APIENTRYP NamedProgramLocalParameterI4uiEXT)(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void (QOPENGLF_APIENTRYP NamedProgramLocalParametersI4ivEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); + void (QOPENGLF_APIENTRYP NamedProgramLocalParameterI4ivEXT)(GLuint program, GLenum target, GLuint index, const GLint *params); + void (QOPENGLF_APIENTRYP NamedProgramLocalParameterI4iEXT)(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); + void (QOPENGLF_APIENTRYP NamedProgramLocalParameters4fvEXT)(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); + void (QOPENGLF_APIENTRYP GetNamedProgramStringEXT)(GLuint program, GLenum target, GLenum pname, GLvoid *string); + void (QOPENGLF_APIENTRYP GetNamedProgramivEXT)(GLuint program, GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetNamedProgramLocalParameterfvEXT)(GLuint program, GLenum target, GLuint index, GLfloat *params); + void (QOPENGLF_APIENTRYP GetNamedProgramLocalParameterdvEXT)(GLuint program, GLenum target, GLuint index, GLdouble *params); + void (QOPENGLF_APIENTRYP NamedProgramLocalParameter4fvEXT)(GLuint program, GLenum target, GLuint index, const GLfloat *params); + void (QOPENGLF_APIENTRYP NamedProgramLocalParameter4fEXT)(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP NamedProgramLocalParameter4dvEXT)(GLuint program, GLenum target, GLuint index, const GLdouble *params); + void (QOPENGLF_APIENTRYP NamedProgramLocalParameter4dEXT)(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP NamedProgramStringEXT)(GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string); + void (QOPENGLF_APIENTRYP GetCompressedMultiTexImageEXT)(GLenum texunit, GLenum target, GLint lod, GLvoid *img); + void (QOPENGLF_APIENTRYP CompressedMultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP CompressedMultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP CompressedMultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP CompressedMultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP CompressedMultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP CompressedMultiTexImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP GetCompressedTextureImageEXT)(GLuint texture, GLenum target, GLint lod, GLvoid *img); + void (QOPENGLF_APIENTRYP CompressedTextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP CompressedTextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP CompressedTextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP CompressedTextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP CompressedTextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP CompressedTextureImage3DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); + void (QOPENGLF_APIENTRYP GetPointerIndexedvEXT)(GLenum target, GLuint index, GLvoid* *data); + void (QOPENGLF_APIENTRYP GetDoubleIndexedvEXT)(GLenum target, GLuint index, GLdouble *data); + void (QOPENGLF_APIENTRYP GetFloatIndexedvEXT)(GLenum target, GLuint index, GLfloat *data); + void (QOPENGLF_APIENTRYP GetMultiTexGenivEXT)(GLenum texunit, GLenum coord, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetMultiTexGenfvEXT)(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetMultiTexGendvEXT)(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP GetMultiTexEnvivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetMultiTexEnvfvEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP MultiTexGenivEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP MultiTexGeniEXT)(GLenum texunit, GLenum coord, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP MultiTexGenfvEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP MultiTexGenfEXT)(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP MultiTexGendvEXT)(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); + void (QOPENGLF_APIENTRYP MultiTexGendEXT)(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); + void (QOPENGLF_APIENTRYP MultiTexEnvivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP MultiTexEnviEXT)(GLenum texunit, GLenum target, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP MultiTexEnvfvEXT)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP MultiTexEnvfEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP MultiTexCoordPointerEXT)(GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP DisableClientStateIndexedEXT)(GLenum array, GLuint index); + void (QOPENGLF_APIENTRYP EnableClientStateIndexedEXT)(GLenum array, GLuint index); + void (QOPENGLF_APIENTRYP BindMultiTextureEXT)(GLenum texunit, GLenum target, GLuint texture); + void (QOPENGLF_APIENTRYP CopyMultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP MultiTexSubImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP MultiTexImage3DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP GetMultiTexLevelParameterivEXT)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetMultiTexLevelParameterfvEXT)(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetMultiTexParameterivEXT)(GLenum texunit, GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetMultiTexParameterfvEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetMultiTexImageEXT)(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + void (QOPENGLF_APIENTRYP CopyMultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP CopyMultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void (QOPENGLF_APIENTRYP CopyMultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void (QOPENGLF_APIENTRYP CopyMultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void (QOPENGLF_APIENTRYP MultiTexSubImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP MultiTexSubImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP MultiTexImage2DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP MultiTexImage1DEXT)(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP MultiTexParameterivEXT)(GLenum texunit, GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP MultiTexParameteriEXT)(GLenum texunit, GLenum target, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP MultiTexParameterfvEXT)(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP MultiTexParameterfEXT)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP CopyTextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP TextureSubImage3DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TextureImage3DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP GetTextureLevelParameterivEXT)(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetTextureLevelParameterfvEXT)(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetTextureParameterivEXT)(GLuint texture, GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetTextureParameterfvEXT)(GLuint texture, GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetTextureImageEXT)(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + void (QOPENGLF_APIENTRYP CopyTextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP CopyTextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void (QOPENGLF_APIENTRYP CopyTextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void (QOPENGLF_APIENTRYP CopyTextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void (QOPENGLF_APIENTRYP TextureSubImage2DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TextureSubImage1DEXT)(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TextureImage2DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TextureImage1DEXT)(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TextureParameterivEXT)(GLuint texture, GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP TextureParameteriEXT)(GLuint texture, GLenum target, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP TextureParameterfvEXT)(GLuint texture, GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP TextureParameterfEXT)(GLuint texture, GLenum target, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP MatrixMultTransposedEXT)(GLenum mode, const GLdouble *m); + void (QOPENGLF_APIENTRYP MatrixMultTransposefEXT)(GLenum mode, const GLfloat *m); + void (QOPENGLF_APIENTRYP MatrixLoadTransposedEXT)(GLenum mode, const GLdouble *m); + void (QOPENGLF_APIENTRYP MatrixLoadTransposefEXT)(GLenum mode, const GLfloat *m); + void (QOPENGLF_APIENTRYP MatrixPushEXT)(GLenum mode); + void (QOPENGLF_APIENTRYP MatrixPopEXT)(GLenum mode); + void (QOPENGLF_APIENTRYP MatrixOrthoEXT)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void (QOPENGLF_APIENTRYP MatrixFrustumEXT)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void (QOPENGLF_APIENTRYP MatrixTranslatedEXT)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP MatrixTranslatefEXT)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP MatrixScaledEXT)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP MatrixScalefEXT)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP MatrixRotatedEXT)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP MatrixRotatefEXT)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP MatrixLoadIdentityEXT)(GLenum mode); + void (QOPENGLF_APIENTRYP MatrixMultdEXT)(GLenum mode, const GLdouble *m); + void (QOPENGLF_APIENTRYP MatrixMultfEXT)(GLenum mode, const GLfloat *m); + void (QOPENGLF_APIENTRYP MatrixLoaddEXT)(GLenum mode, const GLdouble *m); + void (QOPENGLF_APIENTRYP MatrixLoadfEXT)(GLenum mode, const GLfloat *m); + void (QOPENGLF_APIENTRYP PushClientAttribDefaultEXT)(GLbitfield mask); + void (QOPENGLF_APIENTRYP ClientAttribDefaultEXT)(GLbitfield mask); + void (QOPENGLF_APIENTRYP TextureStorage3DMultisampleEXT)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void (QOPENGLF_APIENTRYP TextureStorage2DMultisampleEXT)(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void (QOPENGLF_APIENTRYP TextureBufferRangeEXT)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + void (QOPENGLF_APIENTRYP GetNamedFramebufferParameterivEXT)(GLuint framebuffer, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP NamedFramebufferParameteriEXT)(GLuint framebuffer, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP VertexArrayVertexBindingDivisorEXT)(GLuint vaobj, GLuint bindingindex, GLuint divisor); + void (QOPENGLF_APIENTRYP VertexArrayVertexAttribBindingEXT)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + void (QOPENGLF_APIENTRYP VertexArrayVertexAttribLFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void (QOPENGLF_APIENTRYP VertexArrayVertexAttribIFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void (QOPENGLF_APIENTRYP VertexArrayVertexAttribFormatEXT)(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void (QOPENGLF_APIENTRYP VertexArrayBindVertexBufferEXT)(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + void (QOPENGLF_APIENTRYP ClearNamedBufferSubDataEXT)(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + void (QOPENGLF_APIENTRYP ClearNamedBufferDataEXT)(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); + void (QOPENGLF_APIENTRYP TextureStorage3DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void (QOPENGLF_APIENTRYP TextureStorage2DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP TextureStorage1DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +}; + +class QOpenGLExtension_EXT_direct_state_access : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_direct_state_access(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glProgramUniformMatrix4x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniformMatrix2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); + void glProgramUniform4dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform3dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform2dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform1dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value); + void glProgramUniform4dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glProgramUniform3dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); + void glProgramUniform2dEXT(GLuint program, GLint location, GLdouble x, GLdouble y); + void glProgramUniform1dEXT(GLuint program, GLint location, GLdouble x); + void glMultiTexRenderbufferEXT(GLenum texunit, GLenum target, GLuint renderbuffer); + void glTextureRenderbufferEXT(GLuint texture, GLenum target, GLuint renderbuffer); + void glNamedFramebufferTextureFaceEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); + void glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glNamedFramebufferTextureEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); + void glNamedRenderbufferStorageMultisampleCoverageEXT(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); + void glNamedRenderbufferStorageMultisampleEXT(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glGetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params); + void glFramebufferReadBufferEXT(GLuint framebuffer, GLenum mode); + void glFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, const GLenum *bufs); + void glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum mode); + void glGenerateMultiTexMipmapEXT(GLenum texunit, GLenum target); + void glGenerateTextureMipmapEXT(GLuint texture, GLenum target); + void glGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); + void glNamedFramebufferRenderbufferEXT(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glNamedFramebufferTexture3DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glNamedFramebufferTexture2DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glNamedFramebufferTexture1DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target); + void glGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, GLint *params); + void glNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); + void glMultiTexBufferEXT(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); + void glTextureBufferEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); + void glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data); + void glGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, GLvoid* *params); + void glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params); + void glNamedCopyBufferSubDataEXT(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); + void glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length); + GLvoid* glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); + GLboolean glUnmapNamedBufferEXT(GLuint buffer); + GLvoid* glMapNamedBufferEXT(GLuint buffer, GLenum access); + void glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data); + void glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage); + void glProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value); + void glProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void glProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1); + void glProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0); + void glProgramUniformMatrix4x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void glProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void glProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1); + void glProgramUniform1iEXT(GLuint program, GLint location, GLint v0); + void glProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void glProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void glProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1); + void glProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0); + void glGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, GLuint *params); + void glGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params); + void glMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, const GLuint *params); + void glMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params); + void glGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, GLuint *params); + void glGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params); + void glTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, const GLuint *params); + void glTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, const GLint *params); + void glGetNamedProgramLocalParameterIuivEXT(GLuint program, GLenum target, GLuint index, GLuint *params); + void glGetNamedProgramLocalParameterIivEXT(GLuint program, GLenum target, GLuint index, GLint *params); + void glNamedProgramLocalParametersI4uivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); + void glNamedProgramLocalParameterI4uivEXT(GLuint program, GLenum target, GLuint index, const GLuint *params); + void glNamedProgramLocalParameterI4uiEXT(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glNamedProgramLocalParametersI4ivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); + void glNamedProgramLocalParameterI4ivEXT(GLuint program, GLenum target, GLuint index, const GLint *params); + void glNamedProgramLocalParameterI4iEXT(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); + void glNamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); + void glGetNamedProgramStringEXT(GLuint program, GLenum target, GLenum pname, GLvoid *string); + void glGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, GLint *params); + void glGetNamedProgramLocalParameterfvEXT(GLuint program, GLenum target, GLuint index, GLfloat *params); + void glGetNamedProgramLocalParameterdvEXT(GLuint program, GLenum target, GLuint index, GLdouble *params); + void glNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, const GLfloat *params); + void glNamedProgramLocalParameter4fEXT(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glNamedProgramLocalParameter4dvEXT(GLuint program, GLenum target, GLuint index, const GLdouble *params); + void glNamedProgramLocalParameter4dEXT(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glNamedProgramStringEXT(GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string); + void glGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, GLvoid *img); + void glCompressedMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); + void glCompressedMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); + void glCompressedMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); + void glCompressedMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); + void glCompressedMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); + void glCompressedMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); + void glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, GLvoid *img); + void glCompressedTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); + void glCompressedTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); + void glCompressedTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); + void glCompressedTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); + void glCompressedTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); + void glCompressedTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); + void glGetPointerIndexedvEXT(GLenum target, GLuint index, GLvoid* *data); + void glGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble *data); + void glGetFloatIndexedvEXT(GLenum target, GLuint index, GLfloat *data); + void glGetMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, GLint *params); + void glGetMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); + void glGetMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); + void glGetMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params); + void glGetMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); + void glMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, const GLint *params); + void glMultiTexGeniEXT(GLenum texunit, GLenum coord, GLenum pname, GLint param); + void glMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); + void glMultiTexGenfEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); + void glMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); + void glMultiTexGendEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); + void glMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params); + void glMultiTexEnviEXT(GLenum texunit, GLenum target, GLenum pname, GLint param); + void glMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); + void glMultiTexEnvfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + void glMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glDisableClientStateIndexedEXT(GLenum array, GLuint index); + void glEnableClientStateIndexedEXT(GLenum array, GLuint index); + void glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture); + void glCopyMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); + void glGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params); + void glGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params); + void glGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + void glCopyMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params); + void glMultiTexParameteriEXT(GLenum texunit, GLenum target, GLenum pname, GLint param); + void glMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); + void glMultiTexParameterfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + void glCopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); + void glGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); + void glGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params); + void glGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat *params); + void glGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); + void glCopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCopyTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + void glCopyTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); + void glCopyTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + void glTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + void glTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + void glTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, const GLint *params); + void glTextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint param); + void glTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, const GLfloat *params); + void glTextureParameterfEXT(GLuint texture, GLenum target, GLenum pname, GLfloat param); + void glMatrixMultTransposedEXT(GLenum mode, const GLdouble *m); + void glMatrixMultTransposefEXT(GLenum mode, const GLfloat *m); + void glMatrixLoadTransposedEXT(GLenum mode, const GLdouble *m); + void glMatrixLoadTransposefEXT(GLenum mode, const GLfloat *m); + void glMatrixPushEXT(GLenum mode); + void glMatrixPopEXT(GLenum mode); + void glMatrixOrthoEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMatrixFrustumEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); + void glMatrixTranslatedEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + void glMatrixTranslatefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + void glMatrixScaledEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + void glMatrixScalefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + void glMatrixRotatedEXT(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + void glMatrixRotatefEXT(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + void glMatrixLoadIdentityEXT(GLenum mode); + void glMatrixMultdEXT(GLenum mode, const GLdouble *m); + void glMatrixMultfEXT(GLenum mode, const GLfloat *m); + void glMatrixLoaddEXT(GLenum mode, const GLdouble *m); + void glMatrixLoadfEXT(GLenum mode, const GLfloat *m); + void glPushClientAttribDefaultEXT(GLbitfield mask); + void glClientAttribDefaultEXT(GLbitfield mask); + void glTextureStorage3DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); + void glTextureStorage2DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void glTextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params); + void glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param); + void glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor); + void glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + void glVertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void glVertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + void glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); + void glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); + void glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_direct_state_access) +}; + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix4x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix4x3dvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix4x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix4x2dvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix3x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix3x4dvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix3x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix3x2dvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix2x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix2x4dvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix2x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix2x3dvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix4dvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix3dvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix2dvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform4dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform4dvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform3dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform3dvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform2dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform2dvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform1dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform1dvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform4dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform4dEXT(program, location, x, y, z, w); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform3dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform3dEXT(program, location, x, y, z); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform2dEXT(GLuint program, GLint location, GLdouble x, GLdouble y) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform2dEXT(program, location, x, y); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform1dEXT(GLuint program, GLint location, GLdouble x) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform1dEXT(program, location, x); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexRenderbufferEXT(GLenum texunit, GLenum target, GLuint renderbuffer) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexRenderbufferEXT(texunit, target, renderbuffer); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureRenderbufferEXT(GLuint texture, GLenum target, GLuint renderbuffer) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureRenderbufferEXT(texture, target, renderbuffer); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedFramebufferTextureFaceEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedFramebufferTextureFaceEXT(framebuffer, attachment, texture, level, face); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedFramebufferTextureLayerEXT(framebuffer, attachment, texture, level, layer); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedFramebufferTextureEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedFramebufferTextureEXT(framebuffer, attachment, texture, level); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedRenderbufferStorageMultisampleCoverageEXT(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedRenderbufferStorageMultisampleCoverageEXT(renderbuffer, coverageSamples, colorSamples, internalformat, width, height); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedRenderbufferStorageMultisampleEXT(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedRenderbufferStorageMultisampleEXT(renderbuffer, samples, internalformat, width, height); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetFramebufferParameterivEXT(framebuffer, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glFramebufferReadBufferEXT(GLuint framebuffer, GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->FramebufferReadBufferEXT(framebuffer, mode); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, const GLenum *bufs) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->FramebufferDrawBuffersEXT(framebuffer, n, bufs); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->FramebufferDrawBufferEXT(framebuffer, mode); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGenerateMultiTexMipmapEXT(GLenum texunit, GLenum target) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GenerateMultiTexMipmapEXT(texunit, target); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGenerateTextureMipmapEXT(GLuint texture, GLenum target) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GenerateTextureMipmapEXT(texture, target); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedFramebufferRenderbufferEXT(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedFramebufferRenderbufferEXT(framebuffer, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedFramebufferTexture3DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedFramebufferTexture3DEXT(framebuffer, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedFramebufferTexture2DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedFramebufferTexture2DEXT(framebuffer, attachment, textarget, texture, level); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedFramebufferTexture1DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedFramebufferTexture1DEXT(framebuffer, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLExtension_EXT_direct_state_access::glCheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + return d->CheckNamedFramebufferStatusEXT(framebuffer, target); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedRenderbufferParameterivEXT(renderbuffer, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedRenderbufferStorageEXT(renderbuffer, internalformat, width, height); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexBufferEXT(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexBufferEXT(texunit, target, internalformat, buffer); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureBufferEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureBufferEXT(texture, target, internalformat, buffer); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedBufferSubDataEXT(buffer, offset, size, data); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, GLvoid* *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedBufferPointervEXT(buffer, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedBufferParameterivEXT(buffer, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedCopyBufferSubDataEXT(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedCopyBufferSubDataEXT(readBuffer, writeBuffer, readOffset, writeOffset, size); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->FlushMappedNamedBufferRangeEXT(buffer, offset, length); +} + +inline GLvoid* QOpenGLExtension_EXT_direct_state_access::glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + return d->MapNamedBufferRangeEXT(buffer, offset, length, access); +} + +inline GLboolean QOpenGLExtension_EXT_direct_state_access::glUnmapNamedBufferEXT(GLuint buffer) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + return d->UnmapNamedBufferEXT(buffer); +} + +inline GLvoid* QOpenGLExtension_EXT_direct_state_access::glMapNamedBufferEXT(GLuint buffer, GLenum access) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + return d->MapNamedBufferEXT(buffer, access); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedBufferSubDataEXT(buffer, offset, size, data); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedBufferDataEXT(buffer, size, data, usage); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform4uivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform3uivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform2uivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform1uivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform4uiEXT(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform3uiEXT(program, location, v0, v1, v2); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform2uiEXT(program, location, v0, v1); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform1uiEXT(program, location, v0); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix4x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix4x3fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix3x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix3x4fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix4x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix4x2fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix2x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix2x4fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix3x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix3x2fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix2x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix2x3fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix4fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix3fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniformMatrix2fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform4ivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform3ivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform2ivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform1ivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform4fvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform3fvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform2fvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform1fvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform4iEXT(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform3iEXT(program, location, v0, v1, v2); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform2iEXT(program, location, v0, v1); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform1iEXT(GLuint program, GLint location, GLint v0) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform1iEXT(program, location, v0); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform4fEXT(program, location, v0, v1, v2, v3); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform3fEXT(program, location, v0, v1, v2); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform2fEXT(program, location, v0, v1); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ProgramUniform1fEXT(program, location, v0); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexParameterIuivEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexParameterIivEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, const GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexParameterIuivEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexParameterIivEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetTextureParameterIuivEXT(texture, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetTextureParameterIivEXT(texture, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, const GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureParameterIuivEXT(texture, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureParameterIivEXT(texture, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedProgramLocalParameterIuivEXT(GLuint program, GLenum target, GLuint index, GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedProgramLocalParameterIuivEXT(program, target, index, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedProgramLocalParameterIivEXT(GLuint program, GLenum target, GLuint index, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedProgramLocalParameterIivEXT(program, target, index, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParametersI4uivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParametersI4uivEXT(program, target, index, count, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParameterI4uivEXT(GLuint program, GLenum target, GLuint index, const GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParameterI4uivEXT(program, target, index, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParameterI4uiEXT(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParameterI4uiEXT(program, target, index, x, y, z, w); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParametersI4ivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParametersI4ivEXT(program, target, index, count, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParameterI4ivEXT(GLuint program, GLenum target, GLuint index, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParameterI4ivEXT(program, target, index, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParameterI4iEXT(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParameterI4iEXT(program, target, index, x, y, z, w); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParameters4fvEXT(program, target, index, count, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedProgramStringEXT(GLuint program, GLenum target, GLenum pname, GLvoid *string) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedProgramStringEXT(program, target, pname, string); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedProgramivEXT(program, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedProgramLocalParameterfvEXT(GLuint program, GLenum target, GLuint index, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedProgramLocalParameterfvEXT(program, target, index, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedProgramLocalParameterdvEXT(GLuint program, GLenum target, GLuint index, GLdouble *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedProgramLocalParameterdvEXT(program, target, index, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParameter4fvEXT(program, target, index, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParameter4fEXT(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParameter4fEXT(program, target, index, x, y, z, w); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParameter4dvEXT(GLuint program, GLenum target, GLuint index, const GLdouble *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParameter4dvEXT(program, target, index, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramLocalParameter4dEXT(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramLocalParameter4dEXT(program, target, index, x, y, z, w); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedProgramStringEXT(GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedProgramStringEXT(program, target, format, len, string); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, GLvoid *img) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetCompressedMultiTexImageEXT(texunit, target, lod, img); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, GLvoid *img) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetCompressedTextureImageEXT(texture, target, lod, img); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedTextureImage1DEXT(texture, target, level, internalformat, width, border, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedTextureImage2DEXT(texture, target, level, internalformat, width, height, border, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCompressedTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CompressedTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, bits); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetPointerIndexedvEXT(GLenum target, GLuint index, GLvoid* *data) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetPointerIndexedvEXT(target, index, data); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble *data) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetDoubleIndexedvEXT(target, index, data); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetFloatIndexedvEXT(GLenum target, GLuint index, GLfloat *data) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetFloatIndexedvEXT(target, index, data); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexGenivEXT(texunit, coord, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexGenfvEXT(texunit, coord, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexGendvEXT(texunit, coord, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexEnvivEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexEnvfvEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexGenivEXT(texunit, coord, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexGeniEXT(GLenum texunit, GLenum coord, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexGeniEXT(texunit, coord, pname, param); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexGenfvEXT(texunit, coord, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexGenfEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexGenfEXT(texunit, coord, pname, param); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexGendvEXT(texunit, coord, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexGendEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble param) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexGendEXT(texunit, coord, pname, param); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexEnvivEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexEnviEXT(GLenum texunit, GLenum target, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexEnviEXT(texunit, target, pname, param); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexEnvfvEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexEnvfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexEnvfEXT(texunit, target, pname, param); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexCoordPointerEXT(texunit, size, type, stride, pointer); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glDisableClientStateIndexedEXT(GLenum array, GLuint index) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->DisableClientStateIndexedEXT(array, index); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glEnableClientStateIndexedEXT(GLenum array, GLuint index) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->EnableClientStateIndexedEXT(array, index); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->BindMultiTextureEXT(texunit, target, texture); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCopyMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CopyMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexLevelParameterivEXT(texunit, target, level, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexLevelParameterfvEXT(texunit, target, level, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexParameterivEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexParameterfvEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetMultiTexImageEXT(texunit, target, level, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCopyMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CopyMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCopyMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CopyMultiTexSubImage1DEXT(texunit, target, level, xoffset, x, y, width); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCopyMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CopyMultiTexImage2DEXT(texunit, target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCopyMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CopyMultiTexImage1DEXT(texunit, target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexImage1DEXT(texunit, target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexParameterivEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexParameteriEXT(GLenum texunit, GLenum target, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexParameteriEXT(texunit, target, pname, param); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexParameterfvEXT(texunit, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMultiTexParameterfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MultiTexParameterfEXT(texunit, target, pname, param); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CopyTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetTextureLevelParameterivEXT(texture, target, level, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetTextureLevelParameterfvEXT(texture, target, level, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetTextureParameterivEXT(texture, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetTextureParameterfvEXT(texture, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetTextureImageEXT(texture, target, level, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CopyTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, x, y, width, height); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCopyTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CopyTextureSubImage1DEXT(texture, target, level, xoffset, x, y, width); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCopyTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CopyTextureImage2DEXT(texture, target, level, internalformat, x, y, width, height, border); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glCopyTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->CopyTextureImage1DEXT(texture, target, level, internalformat, x, y, width, border); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureImage2DEXT(texture, target, level, internalformat, width, height, border, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureImage1DEXT(texture, target, level, internalformat, width, border, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureParameterivEXT(texture, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureParameteriEXT(texture, target, pname, param); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureParameterfvEXT(texture, target, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureParameterfEXT(GLuint texture, GLenum target, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureParameterfEXT(texture, target, pname, param); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixMultTransposedEXT(GLenum mode, const GLdouble *m) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixMultTransposedEXT(mode, m); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixMultTransposefEXT(GLenum mode, const GLfloat *m) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixMultTransposefEXT(mode, m); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixLoadTransposedEXT(GLenum mode, const GLdouble *m) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixLoadTransposedEXT(mode, m); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixLoadTransposefEXT(GLenum mode, const GLfloat *m) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixLoadTransposefEXT(mode, m); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixPushEXT(GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixPushEXT(mode); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixPopEXT(GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixPopEXT(mode); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixOrthoEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixOrthoEXT(mode, left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixFrustumEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixFrustumEXT(mode, left, right, bottom, top, zNear, zFar); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixTranslatedEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixTranslatedEXT(mode, x, y, z); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixTranslatefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixTranslatefEXT(mode, x, y, z); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixScaledEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixScaledEXT(mode, x, y, z); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixScalefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixScalefEXT(mode, x, y, z); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixRotatedEXT(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixRotatedEXT(mode, angle, x, y, z); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixRotatefEXT(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixRotatefEXT(mode, angle, x, y, z); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixLoadIdentityEXT(GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixLoadIdentityEXT(mode); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixMultdEXT(GLenum mode, const GLdouble *m) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixMultdEXT(mode, m); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixMultfEXT(GLenum mode, const GLfloat *m) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixMultfEXT(mode, m); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixLoaddEXT(GLenum mode, const GLdouble *m) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixLoaddEXT(mode, m); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glMatrixLoadfEXT(GLenum mode, const GLfloat *m) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->MatrixLoadfEXT(mode, m); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glPushClientAttribDefaultEXT(GLbitfield mask) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->PushClientAttribDefaultEXT(mask); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glClientAttribDefaultEXT(GLbitfield mask) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ClientAttribDefaultEXT(mask); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureStorage3DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureStorage3DMultisampleEXT(texture, target, samples, internalformat, width, height, depth, fixedsamplelocations); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureStorage2DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureStorage2DMultisampleEXT(texture, target, samples, internalformat, width, height, fixedsamplelocations); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureBufferRangeEXT(texture, target, internalformat, buffer, offset, size); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->GetNamedFramebufferParameterivEXT(framebuffer, pname, params); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->NamedFramebufferParameteriEXT(framebuffer, pname, param); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->VertexArrayVertexBindingDivisorEXT(vaobj, bindingindex, divisor); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->VertexArrayVertexAttribBindingEXT(vaobj, attribindex, bindingindex); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glVertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->VertexArrayVertexAttribLFormatEXT(vaobj, attribindex, size, type, relativeoffset); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glVertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->VertexArrayVertexAttribIFormatEXT(vaobj, attribindex, size, type, relativeoffset); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glVertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->VertexArrayVertexAttribFormatEXT(vaobj, attribindex, size, type, normalized, relativeoffset); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->VertexArrayBindVertexBufferEXT(vaobj, bindingindex, buffer, offset, stride); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ClearNamedBufferSubDataEXT(buffer, internalformat, offset, size, format, type, data); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->ClearNamedBufferDataEXT(buffer, internalformat, format, type, data); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureStorage2DEXT(texture, target, levels, internalformat, width, height); +} + +inline void QOpenGLExtension_EXT_direct_state_access::glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + Q_D(QOpenGLExtension_EXT_direct_state_access); + d->TextureStorage1DEXT(texture, target, levels, internalformat, width); +} + +class QOpenGLExtension_EXT_draw_buffers2Private : public QAbstractOpenGLExtensionPrivate +{ +public: + GLboolean (QOPENGLF_APIENTRYP IsEnabledIndexedEXT)(GLenum target, GLuint index); + void (QOPENGLF_APIENTRYP DisableIndexedEXT)(GLenum target, GLuint index); + void (QOPENGLF_APIENTRYP EnableIndexedEXT)(GLenum target, GLuint index); + void (QOPENGLF_APIENTRYP GetIntegerIndexedvEXT)(GLenum target, GLuint index, GLint *data); + void (QOPENGLF_APIENTRYP GetBooleanIndexedvEXT)(GLenum target, GLuint index, GLboolean *data); + void (QOPENGLF_APIENTRYP ColorMaskIndexedEXT)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +}; + +class QOpenGLExtension_EXT_draw_buffers2 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_draw_buffers2(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLboolean glIsEnabledIndexedEXT(GLenum target, GLuint index); + void glDisableIndexedEXT(GLenum target, GLuint index); + void glEnableIndexedEXT(GLenum target, GLuint index); + void glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint *data); + void glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean *data); + void glColorMaskIndexedEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_draw_buffers2) +}; + +inline GLboolean QOpenGLExtension_EXT_draw_buffers2::glIsEnabledIndexedEXT(GLenum target, GLuint index) +{ + Q_D(QOpenGLExtension_EXT_draw_buffers2); + return d->IsEnabledIndexedEXT(target, index); +} + +inline void QOpenGLExtension_EXT_draw_buffers2::glDisableIndexedEXT(GLenum target, GLuint index) +{ + Q_D(QOpenGLExtension_EXT_draw_buffers2); + d->DisableIndexedEXT(target, index); +} + +inline void QOpenGLExtension_EXT_draw_buffers2::glEnableIndexedEXT(GLenum target, GLuint index) +{ + Q_D(QOpenGLExtension_EXT_draw_buffers2); + d->EnableIndexedEXT(target, index); +} + +inline void QOpenGLExtension_EXT_draw_buffers2::glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint *data) +{ + Q_D(QOpenGLExtension_EXT_draw_buffers2); + d->GetIntegerIndexedvEXT(target, index, data); +} + +inline void QOpenGLExtension_EXT_draw_buffers2::glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean *data) +{ + Q_D(QOpenGLExtension_EXT_draw_buffers2); + d->GetBooleanIndexedvEXT(target, index, data); +} + +inline void QOpenGLExtension_EXT_draw_buffers2::glColorMaskIndexedEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) +{ + Q_D(QOpenGLExtension_EXT_draw_buffers2); + d->ColorMaskIndexedEXT(index, r, g, b, a); +} + +class QOpenGLExtension_EXT_draw_instancedPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); + void (QOPENGLF_APIENTRYP DrawArraysInstancedEXT)(GLenum mode, GLint start, GLsizei count, GLsizei primcount); +}; + +class QOpenGLExtension_EXT_draw_instanced : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_draw_instanced(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); + void glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_draw_instanced) +}; + +inline void QOpenGLExtension_EXT_draw_instanced::glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount) +{ + Q_D(QOpenGLExtension_EXT_draw_instanced); + d->DrawElementsInstancedEXT(mode, count, type, indices, primcount); +} + +inline void QOpenGLExtension_EXT_draw_instanced::glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount) +{ + Q_D(QOpenGLExtension_EXT_draw_instanced); + d->DrawArraysInstancedEXT(mode, start, count, primcount); +} + +class QOpenGLExtension_EXT_draw_range_elementsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +}; + +class QOpenGLExtension_EXT_draw_range_elements : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_draw_range_elements(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawRangeElementsEXT(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_draw_range_elements) +}; + +inline void QOpenGLExtension_EXT_draw_range_elements::glDrawRangeElementsEXT(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices) +{ + Q_D(QOpenGLExtension_EXT_draw_range_elements); + d->DrawRangeElementsEXT(mode, start, end, count, type, indices); +} + +class QOpenGLExtension_EXT_fog_coordPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP FogCoorddvEXT)(const GLdouble *coord); + void (QOPENGLF_APIENTRYP FogCoorddEXT)(GLdouble coord); + void (QOPENGLF_APIENTRYP FogCoordfvEXT)(const GLfloat *coord); + void (QOPENGLF_APIENTRYP FogCoordfEXT)(GLfloat coord); +}; + +class QOpenGLExtension_EXT_fog_coord : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_fog_coord(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid *pointer); + void glFogCoorddvEXT(const GLdouble *coord); + void glFogCoorddEXT(GLdouble coord); + void glFogCoordfvEXT(const GLfloat *coord); + void glFogCoordfEXT(GLfloat coord); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_fog_coord) +}; + +inline void QOpenGLExtension_EXT_fog_coord::glFogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_fog_coord); + d->FogCoordPointerEXT(type, stride, pointer); +} + +inline void QOpenGLExtension_EXT_fog_coord::glFogCoorddvEXT(const GLdouble *coord) +{ + Q_D(QOpenGLExtension_EXT_fog_coord); + d->FogCoorddvEXT(coord); +} + +inline void QOpenGLExtension_EXT_fog_coord::glFogCoorddEXT(GLdouble coord) +{ + Q_D(QOpenGLExtension_EXT_fog_coord); + d->FogCoorddEXT(coord); +} + +inline void QOpenGLExtension_EXT_fog_coord::glFogCoordfvEXT(const GLfloat *coord) +{ + Q_D(QOpenGLExtension_EXT_fog_coord); + d->FogCoordfvEXT(coord); +} + +inline void QOpenGLExtension_EXT_fog_coord::glFogCoordfEXT(GLfloat coord) +{ + Q_D(QOpenGLExtension_EXT_fog_coord); + d->FogCoordfEXT(coord); +} + +class QOpenGLExtension_EXT_framebuffer_blitPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +}; + +class QOpenGLExtension_EXT_framebuffer_blit : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_framebuffer_blit(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_framebuffer_blit) +}; + +inline void QOpenGLExtension_EXT_framebuffer_blit::glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_blit); + d->BlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +class QOpenGLExtension_EXT_framebuffer_multisamplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP RenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +}; + +class QOpenGLExtension_EXT_framebuffer_multisample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_framebuffer_multisample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_framebuffer_multisample) +}; + +inline void QOpenGLExtension_EXT_framebuffer_multisample::glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_multisample); + d->RenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height); +} + +class QOpenGLExtension_EXT_framebuffer_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GenerateMipmapEXT)(GLenum target); + void (QOPENGLF_APIENTRYP GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void (QOPENGLF_APIENTRYP FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void (QOPENGLF_APIENTRYP FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void (QOPENGLF_APIENTRYP FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum (QOPENGLF_APIENTRYP CheckFramebufferStatusEXT)(GLenum target); + void (QOPENGLF_APIENTRYP GenFramebuffersEXT)(GLsizei n, GLuint *framebuffers); + void (QOPENGLF_APIENTRYP DeleteFramebuffersEXT)(GLsizei n, const GLuint *framebuffers); + void (QOPENGLF_APIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); + GLboolean (QOPENGLF_APIENTRYP IsFramebufferEXT)(GLuint framebuffer); + void (QOPENGLF_APIENTRYP GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP GenRenderbuffersEXT)(GLsizei n, GLuint *renderbuffers); + void (QOPENGLF_APIENTRYP DeleteRenderbuffersEXT)(GLsizei n, const GLuint *renderbuffers); + void (QOPENGLF_APIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); + GLboolean (QOPENGLF_APIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); +}; + +class QOpenGLExtension_EXT_framebuffer_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_framebuffer_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGenerateMipmapEXT(GLenum target); + void glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint *params); + void glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + void glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + void glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + void glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLenum glCheckFramebufferStatusEXT(GLenum target); + void glGenFramebuffersEXT(GLsizei n, GLuint *framebuffers); + void glDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers); + void glBindFramebufferEXT(GLenum target, GLuint framebuffer); + GLboolean glIsFramebufferEXT(GLuint framebuffer); + void glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params); + void glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + void glGenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers); + void glDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers); + void glBindRenderbufferEXT(GLenum target, GLuint renderbuffer); + GLboolean glIsRenderbufferEXT(GLuint renderbuffer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_framebuffer_object) +}; + +inline void QOpenGLExtension_EXT_framebuffer_object::glGenerateMipmapEXT(GLenum target) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->GenerateMipmapEXT(target); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->GetFramebufferAttachmentParameterivEXT(target, attachment, pname, params); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->FramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->FramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->FramebufferTexture2DEXT(target, attachment, textarget, texture, level); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->FramebufferTexture1DEXT(target, attachment, textarget, texture, level); +} + +inline GLenum QOpenGLExtension_EXT_framebuffer_object::glCheckFramebufferStatusEXT(GLenum target) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + return d->CheckFramebufferStatusEXT(target); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glGenFramebuffersEXT(GLsizei n, GLuint *framebuffers) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->GenFramebuffersEXT(n, framebuffers); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->DeleteFramebuffersEXT(n, framebuffers); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glBindFramebufferEXT(GLenum target, GLuint framebuffer) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->BindFramebufferEXT(target, framebuffer); +} + +inline GLboolean QOpenGLExtension_EXT_framebuffer_object::glIsFramebufferEXT(GLuint framebuffer) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + return d->IsFramebufferEXT(framebuffer); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->GetRenderbufferParameterivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->RenderbufferStorageEXT(target, internalformat, width, height); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glGenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->GenRenderbuffersEXT(n, renderbuffers); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->DeleteRenderbuffersEXT(n, renderbuffers); +} + +inline void QOpenGLExtension_EXT_framebuffer_object::glBindRenderbufferEXT(GLenum target, GLuint renderbuffer) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + d->BindRenderbufferEXT(target, renderbuffer); +} + +inline GLboolean QOpenGLExtension_EXT_framebuffer_object::glIsRenderbufferEXT(GLuint renderbuffer) +{ + Q_D(QOpenGLExtension_EXT_framebuffer_object); + return d->IsRenderbufferEXT(renderbuffer); +} + +class QOpenGLExtension_EXT_geometry_shader4Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ProgramParameteriEXT)(GLuint program, GLenum pname, GLint value); +}; + +class QOpenGLExtension_EXT_geometry_shader4 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_geometry_shader4(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glProgramParameteriEXT(GLuint program, GLenum pname, GLint value); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_geometry_shader4) +}; + +inline void QOpenGLExtension_EXT_geometry_shader4::glProgramParameteriEXT(GLuint program, GLenum pname, GLint value) +{ + Q_D(QOpenGLExtension_EXT_geometry_shader4); + d->ProgramParameteriEXT(program, pname, value); +} + +class QOpenGLExtension_EXT_gpu_program_parametersPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); + void (QOPENGLF_APIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); +}; + +class QOpenGLExtension_EXT_gpu_program_parameters : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_gpu_program_parameters(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params); + void glProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_gpu_program_parameters) +}; + +inline void QOpenGLExtension_EXT_gpu_program_parameters::glProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_gpu_program_parameters); + d->ProgramLocalParameters4fvEXT(target, index, count, params); +} + +inline void QOpenGLExtension_EXT_gpu_program_parameters::glProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_gpu_program_parameters); + d->ProgramEnvParameters4fvEXT(target, index, count, params); +} + +class QOpenGLExtension_EXT_gpu_shader4Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP Uniform4uivEXT)(GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP Uniform3uivEXT)(GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP Uniform2uivEXT)(GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP Uniform1uivEXT)(GLint location, GLsizei count, const GLuint *value); + void (QOPENGLF_APIENTRYP Uniform4uiEXT)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void (QOPENGLF_APIENTRYP Uniform3uiEXT)(GLint location, GLuint v0, GLuint v1, GLuint v2); + void (QOPENGLF_APIENTRYP Uniform2uiEXT)(GLint location, GLuint v0, GLuint v1); + void (QOPENGLF_APIENTRYP Uniform1uiEXT)(GLint location, GLuint v0); + GLint (QOPENGLF_APIENTRYP GetFragDataLocationEXT)(GLuint program, const GLchar *name); + void (QOPENGLF_APIENTRYP BindFragDataLocationEXT)(GLuint program, GLuint color, const GLchar *name); + void (QOPENGLF_APIENTRYP GetUniformuivEXT)(GLuint program, GLint location, GLuint *params); +}; + +class QOpenGLExtension_EXT_gpu_shader4 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_gpu_shader4(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glUniform4uivEXT(GLint location, GLsizei count, const GLuint *value); + void glUniform3uivEXT(GLint location, GLsizei count, const GLuint *value); + void glUniform2uivEXT(GLint location, GLsizei count, const GLuint *value); + void glUniform1uivEXT(GLint location, GLsizei count, const GLuint *value); + void glUniform4uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void glUniform3uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2); + void glUniform2uiEXT(GLint location, GLuint v0, GLuint v1); + void glUniform1uiEXT(GLint location, GLuint v0); + GLint glGetFragDataLocationEXT(GLuint program, const GLchar *name); + void glBindFragDataLocationEXT(GLuint program, GLuint color, const GLchar *name); + void glGetUniformuivEXT(GLuint program, GLint location, GLuint *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_gpu_shader4) +}; + +inline void QOpenGLExtension_EXT_gpu_shader4::glUniform4uivEXT(GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + d->Uniform4uivEXT(location, count, value); +} + +inline void QOpenGLExtension_EXT_gpu_shader4::glUniform3uivEXT(GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + d->Uniform3uivEXT(location, count, value); +} + +inline void QOpenGLExtension_EXT_gpu_shader4::glUniform2uivEXT(GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + d->Uniform2uivEXT(location, count, value); +} + +inline void QOpenGLExtension_EXT_gpu_shader4::glUniform1uivEXT(GLint location, GLsizei count, const GLuint *value) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + d->Uniform1uivEXT(location, count, value); +} + +inline void QOpenGLExtension_EXT_gpu_shader4::glUniform4uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + d->Uniform4uiEXT(location, v0, v1, v2, v3); +} + +inline void QOpenGLExtension_EXT_gpu_shader4::glUniform3uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + d->Uniform3uiEXT(location, v0, v1, v2); +} + +inline void QOpenGLExtension_EXT_gpu_shader4::glUniform2uiEXT(GLint location, GLuint v0, GLuint v1) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + d->Uniform2uiEXT(location, v0, v1); +} + +inline void QOpenGLExtension_EXT_gpu_shader4::glUniform1uiEXT(GLint location, GLuint v0) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + d->Uniform1uiEXT(location, v0); +} + +inline GLint QOpenGLExtension_EXT_gpu_shader4::glGetFragDataLocationEXT(GLuint program, const GLchar *name) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + return d->GetFragDataLocationEXT(program, name); +} + +inline void QOpenGLExtension_EXT_gpu_shader4::glBindFragDataLocationEXT(GLuint program, GLuint color, const GLchar *name) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + d->BindFragDataLocationEXT(program, color, name); +} + +inline void QOpenGLExtension_EXT_gpu_shader4::glGetUniformuivEXT(GLuint program, GLint location, GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_gpu_shader4); + d->GetUniformuivEXT(program, location, params); +} + +class QOpenGLExtension_EXT_histogramPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ResetMinmaxEXT)(GLenum target); + void (QOPENGLF_APIENTRYP ResetHistogramEXT)(GLenum target); + void (QOPENGLF_APIENTRYP MinmaxEXT)(GLenum target, GLenum internalformat, GLboolean sink); + void (QOPENGLF_APIENTRYP HistogramEXT)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void (QOPENGLF_APIENTRYP GetMinmaxParameterivEXT)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetMinmaxParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetMinmaxEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void (QOPENGLF_APIENTRYP GetHistogramParameterivEXT)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetHistogramParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetHistogramEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +}; + +class QOpenGLExtension_EXT_histogram : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_histogram(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glResetMinmaxEXT(GLenum target); + void glResetHistogramEXT(GLenum target); + void glMinmaxEXT(GLenum target, GLenum internalformat, GLboolean sink); + void glHistogramEXT(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + void glGetMinmaxParameterivEXT(GLenum target, GLenum pname, GLint *params); + void glGetMinmaxParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); + void glGetMinmaxEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + void glGetHistogramParameterivEXT(GLenum target, GLenum pname, GLint *params); + void glGetHistogramParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); + void glGetHistogramEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_histogram) +}; + +inline void QOpenGLExtension_EXT_histogram::glResetMinmaxEXT(GLenum target) +{ + Q_D(QOpenGLExtension_EXT_histogram); + d->ResetMinmaxEXT(target); +} + +inline void QOpenGLExtension_EXT_histogram::glResetHistogramEXT(GLenum target) +{ + Q_D(QOpenGLExtension_EXT_histogram); + d->ResetHistogramEXT(target); +} + +inline void QOpenGLExtension_EXT_histogram::glMinmaxEXT(GLenum target, GLenum internalformat, GLboolean sink) +{ + Q_D(QOpenGLExtension_EXT_histogram); + d->MinmaxEXT(target, internalformat, sink); +} + +inline void QOpenGLExtension_EXT_histogram::glHistogramEXT(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +{ + Q_D(QOpenGLExtension_EXT_histogram); + d->HistogramEXT(target, width, internalformat, sink); +} + +inline void QOpenGLExtension_EXT_histogram::glGetMinmaxParameterivEXT(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_histogram); + d->GetMinmaxParameterivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_histogram::glGetMinmaxParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_histogram); + d->GetMinmaxParameterfvEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_histogram::glGetMinmaxEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + Q_D(QOpenGLExtension_EXT_histogram); + d->GetMinmaxEXT(target, reset, format, type, values); +} + +inline void QOpenGLExtension_EXT_histogram::glGetHistogramParameterivEXT(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_histogram); + d->GetHistogramParameterivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_histogram::glGetHistogramParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_histogram); + d->GetHistogramParameterfvEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_histogram::glGetHistogramEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +{ + Q_D(QOpenGLExtension_EXT_histogram); + d->GetHistogramEXT(target, reset, format, type, values); +} + +class QOpenGLExtension_EXT_index_funcPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP IndexFuncEXT)(GLenum func, GLclampf ref); +}; + +class QOpenGLExtension_EXT_index_func : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_index_func(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glIndexFuncEXT(GLenum func, GLclampf ref); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_index_func) +}; + +inline void QOpenGLExtension_EXT_index_func::glIndexFuncEXT(GLenum func, GLclampf ref) +{ + Q_D(QOpenGLExtension_EXT_index_func); + d->IndexFuncEXT(func, ref); +} + +class QOpenGLExtension_EXT_index_materialPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP IndexMaterialEXT)(GLenum face, GLenum mode); +}; + +class QOpenGLExtension_EXT_index_material : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_index_material(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glIndexMaterialEXT(GLenum face, GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_index_material) +}; + +inline void QOpenGLExtension_EXT_index_material::glIndexMaterialEXT(GLenum face, GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_index_material); + d->IndexMaterialEXT(face, mode); +} + +class QOpenGLExtension_EXT_light_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TextureMaterialEXT)(GLenum face, GLenum mode); + void (QOPENGLF_APIENTRYP TextureLightEXT)(GLenum pname); + void (QOPENGLF_APIENTRYP ApplyTextureEXT)(GLenum mode); +}; + +class QOpenGLExtension_EXT_light_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_light_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTextureMaterialEXT(GLenum face, GLenum mode); + void glTextureLightEXT(GLenum pname); + void glApplyTextureEXT(GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_light_texture) +}; + +inline void QOpenGLExtension_EXT_light_texture::glTextureMaterialEXT(GLenum face, GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_light_texture); + d->TextureMaterialEXT(face, mode); +} + +inline void QOpenGLExtension_EXT_light_texture::glTextureLightEXT(GLenum pname) +{ + Q_D(QOpenGLExtension_EXT_light_texture); + d->TextureLightEXT(pname); +} + +inline void QOpenGLExtension_EXT_light_texture::glApplyTextureEXT(GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_light_texture); + d->ApplyTextureEXT(mode); +} + +class QOpenGLExtension_EXT_multi_draw_arraysPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); + void (QOPENGLF_APIENTRYP MultiDrawArraysEXT)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +}; + +class QOpenGLExtension_EXT_multi_draw_arrays : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_multi_draw_arrays(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); + void glMultiDrawArraysEXT(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_multi_draw_arrays) +}; + +inline void QOpenGLExtension_EXT_multi_draw_arrays::glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount) +{ + Q_D(QOpenGLExtension_EXT_multi_draw_arrays); + d->MultiDrawElementsEXT(mode, count, type, indices, primcount); +} + +inline void QOpenGLExtension_EXT_multi_draw_arrays::glMultiDrawArraysEXT(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount) +{ + Q_D(QOpenGLExtension_EXT_multi_draw_arrays); + d->MultiDrawArraysEXT(mode, first, count, primcount); +} + +class QOpenGLExtension_EXT_multisamplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP SamplePatternEXT)(GLenum pattern); + void (QOPENGLF_APIENTRYP SampleMaskEXT)(GLclampf value, GLboolean invert); +}; + +class QOpenGLExtension_EXT_multisample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_multisample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glSamplePatternEXT(GLenum pattern); + void glSampleMaskEXT(GLclampf value, GLboolean invert); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_multisample) +}; + +inline void QOpenGLExtension_EXT_multisample::glSamplePatternEXT(GLenum pattern) +{ + Q_D(QOpenGLExtension_EXT_multisample); + d->SamplePatternEXT(pattern); +} + +inline void QOpenGLExtension_EXT_multisample::glSampleMaskEXT(GLclampf value, GLboolean invert) +{ + Q_D(QOpenGLExtension_EXT_multisample); + d->SampleMaskEXT(value, invert); +} + +class QOpenGLExtension_EXT_paletted_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid *data); + void (QOPENGLF_APIENTRYP ColorTableEXT)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +}; + +class QOpenGLExtension_EXT_paletted_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_paletted_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint *params); + void glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid *data); + void glColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_paletted_texture) +}; + +inline void QOpenGLExtension_EXT_paletted_texture::glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_paletted_texture); + d->GetColorTableParameterfvEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_paletted_texture::glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_paletted_texture); + d->GetColorTableParameterivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_paletted_texture::glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid *data) +{ + Q_D(QOpenGLExtension_EXT_paletted_texture); + d->GetColorTableEXT(target, format, type, data); +} + +inline void QOpenGLExtension_EXT_paletted_texture::glColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + Q_D(QOpenGLExtension_EXT_paletted_texture); + d->ColorTableEXT(target, internalFormat, width, format, type, table); +} + +class QOpenGLExtension_EXT_pixel_transformPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetPixelTransformParameterfvEXT)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetPixelTransformParameterivEXT)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP PixelTransformParameterfvEXT)(GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP PixelTransformParameterivEXT)(GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP PixelTransformParameterfEXT)(GLenum target, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP PixelTransformParameteriEXT)(GLenum target, GLenum pname, GLint param); +}; + +class QOpenGLExtension_EXT_pixel_transform : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_pixel_transform(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetPixelTransformParameterfvEXT(GLenum target, GLenum pname, GLfloat *params); + void glGetPixelTransformParameterivEXT(GLenum target, GLenum pname, GLint *params); + void glPixelTransformParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params); + void glPixelTransformParameterivEXT(GLenum target, GLenum pname, const GLint *params); + void glPixelTransformParameterfEXT(GLenum target, GLenum pname, GLfloat param); + void glPixelTransformParameteriEXT(GLenum target, GLenum pname, GLint param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_pixel_transform) +}; + +inline void QOpenGLExtension_EXT_pixel_transform::glGetPixelTransformParameterfvEXT(GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_pixel_transform); + d->GetPixelTransformParameterfvEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_pixel_transform::glGetPixelTransformParameterivEXT(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_pixel_transform); + d->GetPixelTransformParameterivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_pixel_transform::glPixelTransformParameterfvEXT(GLenum target, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_pixel_transform); + d->PixelTransformParameterfvEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_pixel_transform::glPixelTransformParameterivEXT(GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_pixel_transform); + d->PixelTransformParameterivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_pixel_transform::glPixelTransformParameterfEXT(GLenum target, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_EXT_pixel_transform); + d->PixelTransformParameterfEXT(target, pname, param); +} + +inline void QOpenGLExtension_EXT_pixel_transform::glPixelTransformParameteriEXT(GLenum target, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_EXT_pixel_transform); + d->PixelTransformParameteriEXT(target, pname, param); +} + +class QOpenGLExtension_EXT_point_parametersPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP PointParameterfvEXT)(GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP PointParameterfEXT)(GLenum pname, GLfloat param); +}; + +class QOpenGLExtension_EXT_point_parameters : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_point_parameters(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glPointParameterfvEXT(GLenum pname, const GLfloat *params); + void glPointParameterfEXT(GLenum pname, GLfloat param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_point_parameters) +}; + +inline void QOpenGLExtension_EXT_point_parameters::glPointParameterfvEXT(GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_EXT_point_parameters); + d->PointParameterfvEXT(pname, params); +} + +inline void QOpenGLExtension_EXT_point_parameters::glPointParameterfEXT(GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_EXT_point_parameters); + d->PointParameterfEXT(pname, param); +} + +class QOpenGLExtension_EXT_polygon_offsetPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); +}; + +class QOpenGLExtension_EXT_polygon_offset : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_polygon_offset(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glPolygonOffsetEXT(GLfloat factor, GLfloat bias); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_polygon_offset) +}; + +inline void QOpenGLExtension_EXT_polygon_offset::glPolygonOffsetEXT(GLfloat factor, GLfloat bias) +{ + Q_D(QOpenGLExtension_EXT_polygon_offset); + d->PolygonOffsetEXT(factor, bias); +} + +class QOpenGLExtension_EXT_provoking_vertexPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ProvokingVertexEXT)(GLenum mode); +}; + +class QOpenGLExtension_EXT_provoking_vertex : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_provoking_vertex(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glProvokingVertexEXT(GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_provoking_vertex) +}; + +inline void QOpenGLExtension_EXT_provoking_vertex::glProvokingVertexEXT(GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_provoking_vertex); + d->ProvokingVertexEXT(mode); +} + +class QOpenGLExtension_EXT_secondary_colorPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP SecondaryColor3usvEXT)(const GLushort *v); + void (QOPENGLF_APIENTRYP SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue); + void (QOPENGLF_APIENTRYP SecondaryColor3uivEXT)(const GLuint *v); + void (QOPENGLF_APIENTRYP SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); + void (QOPENGLF_APIENTRYP SecondaryColor3ubvEXT)(const GLubyte *v); + void (QOPENGLF_APIENTRYP SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue); + void (QOPENGLF_APIENTRYP SecondaryColor3svEXT)(const GLshort *v); + void (QOPENGLF_APIENTRYP SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue); + void (QOPENGLF_APIENTRYP SecondaryColor3ivEXT)(const GLint *v); + void (QOPENGLF_APIENTRYP SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); + void (QOPENGLF_APIENTRYP SecondaryColor3fvEXT)(const GLfloat *v); + void (QOPENGLF_APIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); + void (QOPENGLF_APIENTRYP SecondaryColor3dvEXT)(const GLdouble *v); + void (QOPENGLF_APIENTRYP SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); + void (QOPENGLF_APIENTRYP SecondaryColor3bvEXT)(const GLbyte *v); + void (QOPENGLF_APIENTRYP SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue); +}; + +class QOpenGLExtension_EXT_secondary_color : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_secondary_color(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glSecondaryColor3usvEXT(const GLushort *v); + void glSecondaryColor3usEXT(GLushort red, GLushort green, GLushort blue); + void glSecondaryColor3uivEXT(const GLuint *v); + void glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue); + void glSecondaryColor3ubvEXT(const GLubyte *v); + void glSecondaryColor3ubEXT(GLubyte red, GLubyte green, GLubyte blue); + void glSecondaryColor3svEXT(const GLshort *v); + void glSecondaryColor3sEXT(GLshort red, GLshort green, GLshort blue); + void glSecondaryColor3ivEXT(const GLint *v); + void glSecondaryColor3iEXT(GLint red, GLint green, GLint blue); + void glSecondaryColor3fvEXT(const GLfloat *v); + void glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue); + void glSecondaryColor3dvEXT(const GLdouble *v); + void glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue); + void glSecondaryColor3bvEXT(const GLbyte *v); + void glSecondaryColor3bEXT(GLbyte red, GLbyte green, GLbyte blue); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_secondary_color) +}; + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColorPointerEXT(size, type, stride, pointer); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3usvEXT(const GLushort *v) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3usvEXT(v); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3usEXT(GLushort red, GLushort green, GLushort blue) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3usEXT(red, green, blue); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3uivEXT(const GLuint *v) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3uivEXT(v); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3uiEXT(red, green, blue); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3ubvEXT(const GLubyte *v) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3ubvEXT(v); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3ubEXT(GLubyte red, GLubyte green, GLubyte blue) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3ubEXT(red, green, blue); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3svEXT(const GLshort *v) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3svEXT(v); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3sEXT(GLshort red, GLshort green, GLshort blue) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3sEXT(red, green, blue); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3ivEXT(const GLint *v) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3ivEXT(v); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3iEXT(GLint red, GLint green, GLint blue) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3iEXT(red, green, blue); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3fvEXT(const GLfloat *v) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3fvEXT(v); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3fEXT(red, green, blue); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3dvEXT(const GLdouble *v) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3dvEXT(v); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3dEXT(red, green, blue); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3bvEXT(const GLbyte *v) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3bvEXT(v); +} + +inline void QOpenGLExtension_EXT_secondary_color::glSecondaryColor3bEXT(GLbyte red, GLbyte green, GLbyte blue) +{ + Q_D(QOpenGLExtension_EXT_secondary_color); + d->SecondaryColor3bEXT(red, green, blue); +} + +class QOpenGLExtension_EXT_separate_shader_objectsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLuint (QOPENGLF_APIENTRYP CreateShaderProgramEXT)(GLenum type, const GLchar *string); + void (QOPENGLF_APIENTRYP ActiveProgramEXT)(GLuint program); + void (QOPENGLF_APIENTRYP UseShaderProgramEXT)(GLenum type, GLuint program); +}; + +class QOpenGLExtension_EXT_separate_shader_objects : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_separate_shader_objects(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLuint glCreateShaderProgramEXT(GLenum type, const GLchar *string); + void glActiveProgramEXT(GLuint program); + void glUseShaderProgramEXT(GLenum type, GLuint program); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_separate_shader_objects) +}; + +inline GLuint QOpenGLExtension_EXT_separate_shader_objects::glCreateShaderProgramEXT(GLenum type, const GLchar *string) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + return d->CreateShaderProgramEXT(type, string); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glActiveProgramEXT(GLuint program) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ActiveProgramEXT(program); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glUseShaderProgramEXT(GLenum type, GLuint program) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->UseShaderProgramEXT(type, program); +} + +class QOpenGLExtension_EXT_shader_image_load_storePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MemoryBarrierEXT)(GLbitfield barriers); + void (QOPENGLF_APIENTRYP BindImageTextureEXT)(GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); +}; + +class QOpenGLExtension_EXT_shader_image_load_store : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_shader_image_load_store(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMemoryBarrierEXT(GLbitfield barriers); + void glBindImageTextureEXT(GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_shader_image_load_store) +}; + +inline void QOpenGLExtension_EXT_shader_image_load_store::glMemoryBarrierEXT(GLbitfield barriers) +{ + Q_D(QOpenGLExtension_EXT_shader_image_load_store); + d->MemoryBarrierEXT(barriers); +} + +inline void QOpenGLExtension_EXT_shader_image_load_store::glBindImageTextureEXT(GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format) +{ + Q_D(QOpenGLExtension_EXT_shader_image_load_store); + d->BindImageTextureEXT(index, texture, level, layered, layer, access, format); +} + +class QOpenGLExtension_EXT_stencil_clear_tagPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP StencilClearTagEXT)(GLsizei stencilTagBits, GLuint stencilClearTag); +}; + +class QOpenGLExtension_EXT_stencil_clear_tag : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_stencil_clear_tag(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glStencilClearTagEXT(GLsizei stencilTagBits, GLuint stencilClearTag); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_stencil_clear_tag) +}; + +inline void QOpenGLExtension_EXT_stencil_clear_tag::glStencilClearTagEXT(GLsizei stencilTagBits, GLuint stencilClearTag) +{ + Q_D(QOpenGLExtension_EXT_stencil_clear_tag); + d->StencilClearTagEXT(stencilTagBits, stencilClearTag); +} + +class QOpenGLExtension_EXT_stencil_two_sidePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ActiveStencilFaceEXT)(GLenum face); +}; + +class QOpenGLExtension_EXT_stencil_two_side : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_stencil_two_side(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glActiveStencilFaceEXT(GLenum face); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_stencil_two_side) +}; + +inline void QOpenGLExtension_EXT_stencil_two_side::glActiveStencilFaceEXT(GLenum face) +{ + Q_D(QOpenGLExtension_EXT_stencil_two_side); + d->ActiveStencilFaceEXT(face); +} + +class QOpenGLExtension_EXT_subtexturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +}; + +class QOpenGLExtension_EXT_subtexture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_subtexture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); + void glTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_subtexture) +}; + +inline void QOpenGLExtension_EXT_subtexture::glTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_subtexture); + d->TexSubImage2DEXT(target, level, xoffset, yoffset, width, height, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_subtexture::glTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_subtexture); + d->TexSubImage1DEXT(target, level, xoffset, width, format, type, pixels); +} + +class QOpenGLExtension_EXT_texture3DPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +}; + +class QOpenGLExtension_EXT_texture3D : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_texture3D(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_texture3D) +}; + +inline void QOpenGLExtension_EXT_texture3D::glTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_texture3D); + d->TexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLExtension_EXT_texture3D::glTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_EXT_texture3D); + d->TexImage3DEXT(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + +class QOpenGLExtension_EXT_texture_buffer_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexBufferEXT)(GLenum target, GLenum internalformat, GLuint buffer); +}; + +class QOpenGLExtension_EXT_texture_buffer_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_texture_buffer_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_texture_buffer_object) +}; + +inline void QOpenGLExtension_EXT_texture_buffer_object::glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer) +{ + Q_D(QOpenGLExtension_EXT_texture_buffer_object); + d->TexBufferEXT(target, internalformat, buffer); +} + +class QOpenGLExtension_EXT_texture_integerPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ClearColorIuiEXT)(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void (QOPENGLF_APIENTRYP ClearColorIiEXT)(GLint red, GLint green, GLint blue, GLint alpha); + void (QOPENGLF_APIENTRYP GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint *params); + void (QOPENGLF_APIENTRYP TexParameterIivEXT)(GLenum target, GLenum pname, const GLint *params); +}; + +class QOpenGLExtension_EXT_texture_integer : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_texture_integer(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glClearColorIuiEXT(GLuint red, GLuint green, GLuint blue, GLuint alpha); + void glClearColorIiEXT(GLint red, GLint green, GLint blue, GLint alpha); + void glGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint *params); + void glGetTexParameterIivEXT(GLenum target, GLenum pname, GLint *params); + void glTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint *params); + void glTexParameterIivEXT(GLenum target, GLenum pname, const GLint *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_texture_integer) +}; + +inline void QOpenGLExtension_EXT_texture_integer::glClearColorIuiEXT(GLuint red, GLuint green, GLuint blue, GLuint alpha) +{ + Q_D(QOpenGLExtension_EXT_texture_integer); + d->ClearColorIuiEXT(red, green, blue, alpha); +} + +inline void QOpenGLExtension_EXT_texture_integer::glClearColorIiEXT(GLint red, GLint green, GLint blue, GLint alpha) +{ + Q_D(QOpenGLExtension_EXT_texture_integer); + d->ClearColorIiEXT(red, green, blue, alpha); +} + +inline void QOpenGLExtension_EXT_texture_integer::glGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_texture_integer); + d->GetTexParameterIuivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_texture_integer::glGetTexParameterIivEXT(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_texture_integer); + d->GetTexParameterIivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_texture_integer::glTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_texture_integer); + d->TexParameterIuivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_texture_integer::glTexParameterIivEXT(GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_EXT_texture_integer); + d->TexParameterIivEXT(target, pname, params); +} + +class QOpenGLExtension_EXT_texture_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP PrioritizeTexturesEXT)(GLsizei n, const GLuint *textures, const GLclampf *priorities); + GLboolean (QOPENGLF_APIENTRYP IsTextureEXT)(GLuint texture); + void (QOPENGLF_APIENTRYP GenTexturesEXT)(GLsizei n, GLuint *textures); + void (QOPENGLF_APIENTRYP DeleteTexturesEXT)(GLsizei n, const GLuint *textures); + void (QOPENGLF_APIENTRYP BindTextureEXT)(GLenum target, GLuint texture); + GLboolean (QOPENGLF_APIENTRYP AreTexturesResidentEXT)(GLsizei n, const GLuint *textures, GLboolean *residences); +}; + +class QOpenGLExtension_EXT_texture_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_texture_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glPrioritizeTexturesEXT(GLsizei n, const GLuint *textures, const GLclampf *priorities); + GLboolean glIsTextureEXT(GLuint texture); + void glGenTexturesEXT(GLsizei n, GLuint *textures); + void glDeleteTexturesEXT(GLsizei n, const GLuint *textures); + void glBindTextureEXT(GLenum target, GLuint texture); + GLboolean glAreTexturesResidentEXT(GLsizei n, const GLuint *textures, GLboolean *residences); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_texture_object) +}; + +inline void QOpenGLExtension_EXT_texture_object::glPrioritizeTexturesEXT(GLsizei n, const GLuint *textures, const GLclampf *priorities) +{ + Q_D(QOpenGLExtension_EXT_texture_object); + d->PrioritizeTexturesEXT(n, textures, priorities); +} + +inline GLboolean QOpenGLExtension_EXT_texture_object::glIsTextureEXT(GLuint texture) +{ + Q_D(QOpenGLExtension_EXT_texture_object); + return d->IsTextureEXT(texture); +} + +inline void QOpenGLExtension_EXT_texture_object::glGenTexturesEXT(GLsizei n, GLuint *textures) +{ + Q_D(QOpenGLExtension_EXT_texture_object); + d->GenTexturesEXT(n, textures); +} + +inline void QOpenGLExtension_EXT_texture_object::glDeleteTexturesEXT(GLsizei n, const GLuint *textures) +{ + Q_D(QOpenGLExtension_EXT_texture_object); + d->DeleteTexturesEXT(n, textures); +} + +inline void QOpenGLExtension_EXT_texture_object::glBindTextureEXT(GLenum target, GLuint texture) +{ + Q_D(QOpenGLExtension_EXT_texture_object); + d->BindTextureEXT(target, texture); +} + +inline GLboolean QOpenGLExtension_EXT_texture_object::glAreTexturesResidentEXT(GLsizei n, const GLuint *textures, GLboolean *residences) +{ + Q_D(QOpenGLExtension_EXT_texture_object); + return d->AreTexturesResidentEXT(n, textures, residences); +} + +class QOpenGLExtension_EXT_texture_perturb_normalPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TextureNormalEXT)(GLenum mode); +}; + +class QOpenGLExtension_EXT_texture_perturb_normal : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_texture_perturb_normal(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTextureNormalEXT(GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_texture_perturb_normal) +}; + +inline void QOpenGLExtension_EXT_texture_perturb_normal::glTextureNormalEXT(GLenum mode) +{ + Q_D(QOpenGLExtension_EXT_texture_perturb_normal); + d->TextureNormalEXT(mode); +} + +class QOpenGLExtension_EXT_timer_queryPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT *params); + void (QOPENGLF_APIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT *params); +}; + +class QOpenGLExtension_EXT_timer_query : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_timer_query(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64EXT *params); + void glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64EXT *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_timer_query) +}; + +inline void QOpenGLExtension_EXT_timer_query::glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64EXT *params) +{ + Q_D(QOpenGLExtension_EXT_timer_query); + d->GetQueryObjectui64vEXT(id, pname, params); +} + +inline void QOpenGLExtension_EXT_timer_query::glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64EXT *params) +{ + Q_D(QOpenGLExtension_EXT_timer_query); + d->GetQueryObjecti64vEXT(id, pname, params); +} + +class QOpenGLExtension_EXT_transform_feedbackPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void (QOPENGLF_APIENTRYP TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode); + void (QOPENGLF_APIENTRYP BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); + void (QOPENGLF_APIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); + void (QOPENGLF_APIENTRYP BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void (QOPENGLF_APIENTRYP EndTransformFeedbackEXT)(); + void (QOPENGLF_APIENTRYP BeginTransformFeedbackEXT)(GLenum primitiveMode); +}; + +class QOpenGLExtension_EXT_transform_feedback : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_transform_feedback(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetTransformFeedbackVaryingEXT(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + void glTransformFeedbackVaryingsEXT(GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode); + void glBindBufferBaseEXT(GLenum target, GLuint index, GLuint buffer); + void glBindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset); + void glBindBufferRangeEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glEndTransformFeedbackEXT(); + void glBeginTransformFeedbackEXT(GLenum primitiveMode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_transform_feedback) +}; + +inline void QOpenGLExtension_EXT_transform_feedback::glGetTransformFeedbackVaryingEXT(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + Q_D(QOpenGLExtension_EXT_transform_feedback); + d->GetTransformFeedbackVaryingEXT(program, index, bufSize, length, size, type, name); +} + +inline void QOpenGLExtension_EXT_transform_feedback::glTransformFeedbackVaryingsEXT(GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode) +{ + Q_D(QOpenGLExtension_EXT_transform_feedback); + d->TransformFeedbackVaryingsEXT(program, count, varyings, bufferMode); +} + +inline void QOpenGLExtension_EXT_transform_feedback::glBindBufferBaseEXT(GLenum target, GLuint index, GLuint buffer) +{ + Q_D(QOpenGLExtension_EXT_transform_feedback); + d->BindBufferBaseEXT(target, index, buffer); +} + +inline void QOpenGLExtension_EXT_transform_feedback::glBindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset) +{ + Q_D(QOpenGLExtension_EXT_transform_feedback); + d->BindBufferOffsetEXT(target, index, buffer, offset); +} + +inline void QOpenGLExtension_EXT_transform_feedback::glBindBufferRangeEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + Q_D(QOpenGLExtension_EXT_transform_feedback); + d->BindBufferRangeEXT(target, index, buffer, offset, size); +} + +inline void QOpenGLExtension_EXT_transform_feedback::glEndTransformFeedbackEXT() +{ + Q_D(QOpenGLExtension_EXT_transform_feedback); + d->EndTransformFeedbackEXT(); +} + +inline void QOpenGLExtension_EXT_transform_feedback::glBeginTransformFeedbackEXT(GLenum primitiveMode) +{ + Q_D(QOpenGLExtension_EXT_transform_feedback); + d->BeginTransformFeedbackEXT(primitiveMode); +} + +class QOpenGLExtension_EXT_vertex_arrayPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP GetPointervEXT)(GLenum pname, GLvoid* *params); + void (QOPENGLF_APIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean *pointer); + void (QOPENGLF_APIENTRYP DrawArraysEXT)(GLenum mode, GLint first, GLsizei count); + void (QOPENGLF_APIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP ArrayElementEXT)(GLint i); +}; + +class QOpenGLExtension_EXT_vertex_array : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_vertex_array(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + void glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + void glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + void glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + void glGetPointervEXT(GLenum pname, GLvoid* *params); + void glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *pointer); + void glDrawArraysEXT(GLenum mode, GLint first, GLsizei count); + void glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); + void glArrayElementEXT(GLint i); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_vertex_array) +}; + +inline void QOpenGLExtension_EXT_vertex_array::glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_vertex_array); + d->VertexPointerEXT(size, type, stride, count, pointer); +} + +inline void QOpenGLExtension_EXT_vertex_array::glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_vertex_array); + d->TexCoordPointerEXT(size, type, stride, count, pointer); +} + +inline void QOpenGLExtension_EXT_vertex_array::glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_vertex_array); + d->NormalPointerEXT(type, stride, count, pointer); +} + +inline void QOpenGLExtension_EXT_vertex_array::glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_vertex_array); + d->IndexPointerEXT(type, stride, count, pointer); +} + +inline void QOpenGLExtension_EXT_vertex_array::glGetPointervEXT(GLenum pname, GLvoid* *params) +{ + Q_D(QOpenGLExtension_EXT_vertex_array); + d->GetPointervEXT(pname, params); +} + +inline void QOpenGLExtension_EXT_vertex_array::glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *pointer) +{ + Q_D(QOpenGLExtension_EXT_vertex_array); + d->EdgeFlagPointerEXT(stride, count, pointer); +} + +inline void QOpenGLExtension_EXT_vertex_array::glDrawArraysEXT(GLenum mode, GLint first, GLsizei count) +{ + Q_D(QOpenGLExtension_EXT_vertex_array); + d->DrawArraysEXT(mode, first, count); +} + +inline void QOpenGLExtension_EXT_vertex_array::glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_vertex_array); + d->ColorPointerEXT(size, type, stride, count, pointer); +} + +inline void QOpenGLExtension_EXT_vertex_array::glArrayElementEXT(GLint i) +{ + Q_D(QOpenGLExtension_EXT_vertex_array); + d->ArrayElementEXT(i); +} + +class QOpenGLExtension_EXT_vertex_attrib_64bitPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexArrayVertexAttribLOffsetEXT)(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); + void (QOPENGLF_APIENTRYP GetVertexAttribLdvEXT)(GLuint index, GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP VertexAttribLPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP VertexAttribL4dvEXT)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL3dvEXT)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL2dvEXT)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL1dvEXT)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribL4dEXT)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP VertexAttribL3dEXT)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP VertexAttribL2dEXT)(GLuint index, GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP VertexAttribL1dEXT)(GLuint index, GLdouble x); +}; + +class QOpenGLExtension_EXT_vertex_attrib_64bit : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_vertex_attrib_64bit(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); + void glGetVertexAttribLdvEXT(GLuint index, GLenum pname, GLdouble *params); + void glVertexAttribLPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glVertexAttribL4dvEXT(GLuint index, const GLdouble *v); + void glVertexAttribL3dvEXT(GLuint index, const GLdouble *v); + void glVertexAttribL2dvEXT(GLuint index, const GLdouble *v); + void glVertexAttribL1dvEXT(GLuint index, const GLdouble *v); + void glVertexAttribL4dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttribL3dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttribL2dEXT(GLuint index, GLdouble x, GLdouble y); + void glVertexAttribL1dEXT(GLuint index, GLdouble x); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_vertex_attrib_64bit) +}; + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glVertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->VertexArrayVertexAttribLOffsetEXT(vaobj, buffer, index, size, type, stride, offset); +} + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glGetVertexAttribLdvEXT(GLuint index, GLenum pname, GLdouble *params) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->GetVertexAttribLdvEXT(index, pname, params); +} + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glVertexAttribLPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->VertexAttribLPointerEXT(index, size, type, stride, pointer); +} + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glVertexAttribL4dvEXT(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->VertexAttribL4dvEXT(index, v); +} + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glVertexAttribL3dvEXT(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->VertexAttribL3dvEXT(index, v); +} + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glVertexAttribL2dvEXT(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->VertexAttribL2dvEXT(index, v); +} + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glVertexAttribL1dvEXT(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->VertexAttribL1dvEXT(index, v); +} + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glVertexAttribL4dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->VertexAttribL4dEXT(index, x, y, z, w); +} + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glVertexAttribL3dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->VertexAttribL3dEXT(index, x, y, z); +} + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glVertexAttribL2dEXT(GLuint index, GLdouble x, GLdouble y) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->VertexAttribL2dEXT(index, x, y); +} + +inline void QOpenGLExtension_EXT_vertex_attrib_64bit::glVertexAttribL1dEXT(GLuint index, GLdouble x) +{ + Q_D(QOpenGLExtension_EXT_vertex_attrib_64bit); + d->VertexAttribL1dEXT(index, x); +} + +class QOpenGLExtension_EXT_vertex_shaderPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetLocalConstantFloatvEXT)(GLuint id, GLenum value, GLfloat *data); + void (QOPENGLF_APIENTRYP GetLocalConstantIntegervEXT)(GLuint id, GLenum value, GLint *data); + void (QOPENGLF_APIENTRYP GetLocalConstantBooleanvEXT)(GLuint id, GLenum value, GLboolean *data); + void (QOPENGLF_APIENTRYP GetInvariantFloatvEXT)(GLuint id, GLenum value, GLfloat *data); + void (QOPENGLF_APIENTRYP GetInvariantIntegervEXT)(GLuint id, GLenum value, GLint *data); + void (QOPENGLF_APIENTRYP GetInvariantBooleanvEXT)(GLuint id, GLenum value, GLboolean *data); + void (QOPENGLF_APIENTRYP GetVariantPointervEXT)(GLuint id, GLenum value, GLvoid* *data); + void (QOPENGLF_APIENTRYP GetVariantFloatvEXT)(GLuint id, GLenum value, GLfloat *data); + void (QOPENGLF_APIENTRYP GetVariantIntegervEXT)(GLuint id, GLenum value, GLint *data); + void (QOPENGLF_APIENTRYP GetVariantBooleanvEXT)(GLuint id, GLenum value, GLboolean *data); + GLboolean (QOPENGLF_APIENTRYP IsVariantEnabledEXT)(GLuint id, GLenum cap); + GLuint (QOPENGLF_APIENTRYP BindParameterEXT)(GLenum value); + GLuint (QOPENGLF_APIENTRYP BindTextureUnitParameterEXT)(GLenum unit, GLenum value); + GLuint (QOPENGLF_APIENTRYP BindTexGenParameterEXT)(GLenum unit, GLenum coord, GLenum value); + GLuint (QOPENGLF_APIENTRYP BindMaterialParameterEXT)(GLenum face, GLenum value); + GLuint (QOPENGLF_APIENTRYP BindLightParameterEXT)(GLenum light, GLenum value); + void (QOPENGLF_APIENTRYP DisableVariantClientStateEXT)(GLuint id); + void (QOPENGLF_APIENTRYP EnableVariantClientStateEXT)(GLuint id); + void (QOPENGLF_APIENTRYP VariantPointerEXT)(GLuint id, GLenum type, GLuint stride, const GLvoid *addr); + void (QOPENGLF_APIENTRYP VariantuivEXT)(GLuint id, const GLuint *addr); + void (QOPENGLF_APIENTRYP VariantusvEXT)(GLuint id, const GLushort *addr); + void (QOPENGLF_APIENTRYP VariantubvEXT)(GLuint id, const GLubyte *addr); + void (QOPENGLF_APIENTRYP VariantdvEXT)(GLuint id, const GLdouble *addr); + void (QOPENGLF_APIENTRYP VariantfvEXT)(GLuint id, const GLfloat *addr); + void (QOPENGLF_APIENTRYP VariantivEXT)(GLuint id, const GLint *addr); + void (QOPENGLF_APIENTRYP VariantsvEXT)(GLuint id, const GLshort *addr); + void (QOPENGLF_APIENTRYP VariantbvEXT)(GLuint id, const GLbyte *addr); + void (QOPENGLF_APIENTRYP SetLocalConstantEXT)(GLuint id, GLenum type, const GLvoid *addr); + void (QOPENGLF_APIENTRYP SetInvariantEXT)(GLuint id, GLenum type, const GLvoid *addr); + GLuint (QOPENGLF_APIENTRYP GenSymbolsEXT)(GLenum datatype, GLenum storagetype, GLenum range, GLuint components); + void (QOPENGLF_APIENTRYP ExtractComponentEXT)(GLuint res, GLuint src, GLuint num); + void (QOPENGLF_APIENTRYP InsertComponentEXT)(GLuint res, GLuint src, GLuint num); + void (QOPENGLF_APIENTRYP WriteMaskEXT)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + void (QOPENGLF_APIENTRYP SwizzleEXT)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + void (QOPENGLF_APIENTRYP ShaderOp3EXT)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); + void (QOPENGLF_APIENTRYP ShaderOp2EXT)(GLenum op, GLuint res, GLuint arg1, GLuint arg2); + void (QOPENGLF_APIENTRYP ShaderOp1EXT)(GLenum op, GLuint res, GLuint arg1); + void (QOPENGLF_APIENTRYP DeleteVertexShaderEXT)(GLuint id); + GLuint (QOPENGLF_APIENTRYP GenVertexShadersEXT)(GLuint range); + void (QOPENGLF_APIENTRYP BindVertexShaderEXT)(GLuint id); + void (QOPENGLF_APIENTRYP EndVertexShaderEXT)(); + void (QOPENGLF_APIENTRYP BeginVertexShaderEXT)(); +}; + +class QOpenGLExtension_EXT_vertex_shader : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_vertex_shader(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetLocalConstantFloatvEXT(GLuint id, GLenum value, GLfloat *data); + void glGetLocalConstantIntegervEXT(GLuint id, GLenum value, GLint *data); + void glGetLocalConstantBooleanvEXT(GLuint id, GLenum value, GLboolean *data); + void glGetInvariantFloatvEXT(GLuint id, GLenum value, GLfloat *data); + void glGetInvariantIntegervEXT(GLuint id, GLenum value, GLint *data); + void glGetInvariantBooleanvEXT(GLuint id, GLenum value, GLboolean *data); + void glGetVariantPointervEXT(GLuint id, GLenum value, GLvoid* *data); + void glGetVariantFloatvEXT(GLuint id, GLenum value, GLfloat *data); + void glGetVariantIntegervEXT(GLuint id, GLenum value, GLint *data); + void glGetVariantBooleanvEXT(GLuint id, GLenum value, GLboolean *data); + GLboolean glIsVariantEnabledEXT(GLuint id, GLenum cap); + GLuint glBindParameterEXT(GLenum value); + GLuint glBindTextureUnitParameterEXT(GLenum unit, GLenum value); + GLuint glBindTexGenParameterEXT(GLenum unit, GLenum coord, GLenum value); + GLuint glBindMaterialParameterEXT(GLenum face, GLenum value); + GLuint glBindLightParameterEXT(GLenum light, GLenum value); + void glDisableVariantClientStateEXT(GLuint id); + void glEnableVariantClientStateEXT(GLuint id); + void glVariantPointerEXT(GLuint id, GLenum type, GLuint stride, const GLvoid *addr); + void glVariantuivEXT(GLuint id, const GLuint *addr); + void glVariantusvEXT(GLuint id, const GLushort *addr); + void glVariantubvEXT(GLuint id, const GLubyte *addr); + void glVariantdvEXT(GLuint id, const GLdouble *addr); + void glVariantfvEXT(GLuint id, const GLfloat *addr); + void glVariantivEXT(GLuint id, const GLint *addr); + void glVariantsvEXT(GLuint id, const GLshort *addr); + void glVariantbvEXT(GLuint id, const GLbyte *addr); + void glSetLocalConstantEXT(GLuint id, GLenum type, const GLvoid *addr); + void glSetInvariantEXT(GLuint id, GLenum type, const GLvoid *addr); + GLuint glGenSymbolsEXT(GLenum datatype, GLenum storagetype, GLenum range, GLuint components); + void glExtractComponentEXT(GLuint res, GLuint src, GLuint num); + void glInsertComponentEXT(GLuint res, GLuint src, GLuint num); + void glWriteMaskEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + void glSwizzleEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + void glShaderOp3EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); + void glShaderOp2EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2); + void glShaderOp1EXT(GLenum op, GLuint res, GLuint arg1); + void glDeleteVertexShaderEXT(GLuint id); + GLuint glGenVertexShadersEXT(GLuint range); + void glBindVertexShaderEXT(GLuint id); + void glEndVertexShaderEXT(); + void glBeginVertexShaderEXT(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_vertex_shader) +}; + +inline void QOpenGLExtension_EXT_vertex_shader::glGetLocalConstantFloatvEXT(GLuint id, GLenum value, GLfloat *data) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->GetLocalConstantFloatvEXT(id, value, data); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glGetLocalConstantIntegervEXT(GLuint id, GLenum value, GLint *data) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->GetLocalConstantIntegervEXT(id, value, data); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glGetLocalConstantBooleanvEXT(GLuint id, GLenum value, GLboolean *data) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->GetLocalConstantBooleanvEXT(id, value, data); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glGetInvariantFloatvEXT(GLuint id, GLenum value, GLfloat *data) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->GetInvariantFloatvEXT(id, value, data); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glGetInvariantIntegervEXT(GLuint id, GLenum value, GLint *data) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->GetInvariantIntegervEXT(id, value, data); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glGetInvariantBooleanvEXT(GLuint id, GLenum value, GLboolean *data) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->GetInvariantBooleanvEXT(id, value, data); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glGetVariantPointervEXT(GLuint id, GLenum value, GLvoid* *data) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->GetVariantPointervEXT(id, value, data); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glGetVariantFloatvEXT(GLuint id, GLenum value, GLfloat *data) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->GetVariantFloatvEXT(id, value, data); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glGetVariantIntegervEXT(GLuint id, GLenum value, GLint *data) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->GetVariantIntegervEXT(id, value, data); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glGetVariantBooleanvEXT(GLuint id, GLenum value, GLboolean *data) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->GetVariantBooleanvEXT(id, value, data); +} + +inline GLboolean QOpenGLExtension_EXT_vertex_shader::glIsVariantEnabledEXT(GLuint id, GLenum cap) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + return d->IsVariantEnabledEXT(id, cap); +} + +inline GLuint QOpenGLExtension_EXT_vertex_shader::glBindParameterEXT(GLenum value) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + return d->BindParameterEXT(value); +} + +inline GLuint QOpenGLExtension_EXT_vertex_shader::glBindTextureUnitParameterEXT(GLenum unit, GLenum value) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + return d->BindTextureUnitParameterEXT(unit, value); +} + +inline GLuint QOpenGLExtension_EXT_vertex_shader::glBindTexGenParameterEXT(GLenum unit, GLenum coord, GLenum value) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + return d->BindTexGenParameterEXT(unit, coord, value); +} + +inline GLuint QOpenGLExtension_EXT_vertex_shader::glBindMaterialParameterEXT(GLenum face, GLenum value) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + return d->BindMaterialParameterEXT(face, value); +} + +inline GLuint QOpenGLExtension_EXT_vertex_shader::glBindLightParameterEXT(GLenum light, GLenum value) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + return d->BindLightParameterEXT(light, value); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glDisableVariantClientStateEXT(GLuint id) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->DisableVariantClientStateEXT(id); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glEnableVariantClientStateEXT(GLuint id) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->EnableVariantClientStateEXT(id); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glVariantPointerEXT(GLuint id, GLenum type, GLuint stride, const GLvoid *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->VariantPointerEXT(id, type, stride, addr); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glVariantuivEXT(GLuint id, const GLuint *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->VariantuivEXT(id, addr); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glVariantusvEXT(GLuint id, const GLushort *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->VariantusvEXT(id, addr); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glVariantubvEXT(GLuint id, const GLubyte *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->VariantubvEXT(id, addr); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glVariantdvEXT(GLuint id, const GLdouble *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->VariantdvEXT(id, addr); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glVariantfvEXT(GLuint id, const GLfloat *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->VariantfvEXT(id, addr); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glVariantivEXT(GLuint id, const GLint *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->VariantivEXT(id, addr); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glVariantsvEXT(GLuint id, const GLshort *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->VariantsvEXT(id, addr); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glVariantbvEXT(GLuint id, const GLbyte *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->VariantbvEXT(id, addr); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glSetLocalConstantEXT(GLuint id, GLenum type, const GLvoid *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->SetLocalConstantEXT(id, type, addr); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glSetInvariantEXT(GLuint id, GLenum type, const GLvoid *addr) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->SetInvariantEXT(id, type, addr); +} + +inline GLuint QOpenGLExtension_EXT_vertex_shader::glGenSymbolsEXT(GLenum datatype, GLenum storagetype, GLenum range, GLuint components) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + return d->GenSymbolsEXT(datatype, storagetype, range, components); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glExtractComponentEXT(GLuint res, GLuint src, GLuint num) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->ExtractComponentEXT(res, src, num); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glInsertComponentEXT(GLuint res, GLuint src, GLuint num) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->InsertComponentEXT(res, src, num); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glWriteMaskEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->WriteMaskEXT(res, in, outX, outY, outZ, outW); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glSwizzleEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->SwizzleEXT(res, in, outX, outY, outZ, outW); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glShaderOp3EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->ShaderOp3EXT(op, res, arg1, arg2, arg3); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glShaderOp2EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->ShaderOp2EXT(op, res, arg1, arg2); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glShaderOp1EXT(GLenum op, GLuint res, GLuint arg1) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->ShaderOp1EXT(op, res, arg1); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glDeleteVertexShaderEXT(GLuint id) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->DeleteVertexShaderEXT(id); +} + +inline GLuint QOpenGLExtension_EXT_vertex_shader::glGenVertexShadersEXT(GLuint range) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + return d->GenVertexShadersEXT(range); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glBindVertexShaderEXT(GLuint id) +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->BindVertexShaderEXT(id); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glEndVertexShaderEXT() +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->EndVertexShaderEXT(); +} + +inline void QOpenGLExtension_EXT_vertex_shader::glBeginVertexShaderEXT() +{ + Q_D(QOpenGLExtension_EXT_vertex_shader); + d->BeginVertexShaderEXT(); +} + +class QOpenGLExtension_EXT_vertex_weightingPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexWeightPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP VertexWeightfvEXT)(const GLfloat *weight); + void (QOPENGLF_APIENTRYP VertexWeightfEXT)(GLfloat weight); +}; + +class QOpenGLExtension_EXT_vertex_weighting : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_vertex_weighting(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexWeightPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glVertexWeightfvEXT(const GLfloat *weight); + void glVertexWeightfEXT(GLfloat weight); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_vertex_weighting) +}; + +inline void QOpenGLExtension_EXT_vertex_weighting::glVertexWeightPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_EXT_vertex_weighting); + d->VertexWeightPointerEXT(size, type, stride, pointer); +} + +inline void QOpenGLExtension_EXT_vertex_weighting::glVertexWeightfvEXT(const GLfloat *weight) +{ + Q_D(QOpenGLExtension_EXT_vertex_weighting); + d->VertexWeightfvEXT(weight); +} + +inline void QOpenGLExtension_EXT_vertex_weighting::glVertexWeightfEXT(GLfloat weight) +{ + Q_D(QOpenGLExtension_EXT_vertex_weighting); + d->VertexWeightfEXT(weight); +} + +class QOpenGLExtension_EXT_x11_sync_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLsync (QOPENGLF_APIENTRYP ImportSyncEXT)(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +}; + +class QOpenGLExtension_EXT_x11_sync_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_x11_sync_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLsync glImportSyncEXT(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_x11_sync_object) +}; + +inline GLsync QOpenGLExtension_EXT_x11_sync_object::glImportSyncEXT(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags) +{ + Q_D(QOpenGLExtension_EXT_x11_sync_object); + return d->ImportSyncEXT(external_sync_type, external_sync, flags); +} + +class QOpenGLExtension_GREMEDY_frame_terminatorPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FrameTerminatorGREMEDY)(); +}; + +class QOpenGLExtension_GREMEDY_frame_terminator : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_GREMEDY_frame_terminator(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFrameTerminatorGREMEDY(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_GREMEDY_frame_terminator) +}; + +inline void QOpenGLExtension_GREMEDY_frame_terminator::glFrameTerminatorGREMEDY() +{ + Q_D(QOpenGLExtension_GREMEDY_frame_terminator); + d->FrameTerminatorGREMEDY(); +} + +class QOpenGLExtension_GREMEDY_string_markerPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP StringMarkerGREMEDY)(GLsizei len, const GLvoid *string); +}; + +class QOpenGLExtension_GREMEDY_string_marker : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_GREMEDY_string_marker(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glStringMarkerGREMEDY(GLsizei len, const GLvoid *string); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_GREMEDY_string_marker) +}; + +inline void QOpenGLExtension_GREMEDY_string_marker::glStringMarkerGREMEDY(GLsizei len, const GLvoid *string) +{ + Q_D(QOpenGLExtension_GREMEDY_string_marker); + d->StringMarkerGREMEDY(len, string); +} + +class QOpenGLExtension_HP_image_transformPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetImageTransformParameterfvHP)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetImageTransformParameterivHP)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP ImageTransformParameterfvHP)(GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP ImageTransformParameterivHP)(GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP ImageTransformParameterfHP)(GLenum target, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP ImageTransformParameteriHP)(GLenum target, GLenum pname, GLint param); +}; + +class QOpenGLExtension_HP_image_transform : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_HP_image_transform(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetImageTransformParameterfvHP(GLenum target, GLenum pname, GLfloat *params); + void glGetImageTransformParameterivHP(GLenum target, GLenum pname, GLint *params); + void glImageTransformParameterfvHP(GLenum target, GLenum pname, const GLfloat *params); + void glImageTransformParameterivHP(GLenum target, GLenum pname, const GLint *params); + void glImageTransformParameterfHP(GLenum target, GLenum pname, GLfloat param); + void glImageTransformParameteriHP(GLenum target, GLenum pname, GLint param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_HP_image_transform) +}; + +inline void QOpenGLExtension_HP_image_transform::glGetImageTransformParameterfvHP(GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_HP_image_transform); + d->GetImageTransformParameterfvHP(target, pname, params); +} + +inline void QOpenGLExtension_HP_image_transform::glGetImageTransformParameterivHP(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_HP_image_transform); + d->GetImageTransformParameterivHP(target, pname, params); +} + +inline void QOpenGLExtension_HP_image_transform::glImageTransformParameterfvHP(GLenum target, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_HP_image_transform); + d->ImageTransformParameterfvHP(target, pname, params); +} + +inline void QOpenGLExtension_HP_image_transform::glImageTransformParameterivHP(GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_HP_image_transform); + d->ImageTransformParameterivHP(target, pname, params); +} + +inline void QOpenGLExtension_HP_image_transform::glImageTransformParameterfHP(GLenum target, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_HP_image_transform); + d->ImageTransformParameterfHP(target, pname, param); +} + +inline void QOpenGLExtension_HP_image_transform::glImageTransformParameteriHP(GLenum target, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_HP_image_transform); + d->ImageTransformParameteriHP(target, pname, param); +} + +class QOpenGLExtension_IBM_multimode_draw_arraysPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MultiModeDrawElementsIBM)(const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride); + void (QOPENGLF_APIENTRYP MultiModeDrawArraysIBM)(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +}; + +class QOpenGLExtension_IBM_multimode_draw_arrays : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_IBM_multimode_draw_arrays(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMultiModeDrawElementsIBM(const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride); + void glMultiModeDrawArraysIBM(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_IBM_multimode_draw_arrays) +}; + +inline void QOpenGLExtension_IBM_multimode_draw_arrays::glMultiModeDrawElementsIBM(const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride) +{ + Q_D(QOpenGLExtension_IBM_multimode_draw_arrays); + d->MultiModeDrawElementsIBM(mode, count, type, indices, primcount, modestride); +} + +inline void QOpenGLExtension_IBM_multimode_draw_arrays::glMultiModeDrawArraysIBM(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride) +{ + Q_D(QOpenGLExtension_IBM_multimode_draw_arrays); + d->MultiModeDrawArraysIBM(mode, first, count, primcount, modestride); +} + +class QOpenGLExtension_IBM_vertex_array_listsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexPointerListIBM)(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void (QOPENGLF_APIENTRYP TexCoordPointerListIBM)(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void (QOPENGLF_APIENTRYP NormalPointerListIBM)(GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void (QOPENGLF_APIENTRYP IndexPointerListIBM)(GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void (QOPENGLF_APIENTRYP FogCoordPointerListIBM)(GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void (QOPENGLF_APIENTRYP EdgeFlagPointerListIBM)(GLint stride, const GLboolean* *pointer, GLint ptrstride); + void (QOPENGLF_APIENTRYP SecondaryColorPointerListIBM)(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void (QOPENGLF_APIENTRYP ColorPointerListIBM)(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +}; + +class QOpenGLExtension_IBM_vertex_array_lists : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_IBM_vertex_array_lists(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void glTexCoordPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void glNormalPointerListIBM(GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void glIndexPointerListIBM(GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void glFogCoordPointerListIBM(GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void glEdgeFlagPointerListIBM(GLint stride, const GLboolean* *pointer, GLint ptrstride); + void glSecondaryColorPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + void glColorPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_IBM_vertex_array_lists) +}; + +inline void QOpenGLExtension_IBM_vertex_array_lists::glVertexPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride) +{ + Q_D(QOpenGLExtension_IBM_vertex_array_lists); + d->VertexPointerListIBM(size, type, stride, pointer, ptrstride); +} + +inline void QOpenGLExtension_IBM_vertex_array_lists::glTexCoordPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride) +{ + Q_D(QOpenGLExtension_IBM_vertex_array_lists); + d->TexCoordPointerListIBM(size, type, stride, pointer, ptrstride); +} + +inline void QOpenGLExtension_IBM_vertex_array_lists::glNormalPointerListIBM(GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride) +{ + Q_D(QOpenGLExtension_IBM_vertex_array_lists); + d->NormalPointerListIBM(type, stride, pointer, ptrstride); +} + +inline void QOpenGLExtension_IBM_vertex_array_lists::glIndexPointerListIBM(GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride) +{ + Q_D(QOpenGLExtension_IBM_vertex_array_lists); + d->IndexPointerListIBM(type, stride, pointer, ptrstride); +} + +inline void QOpenGLExtension_IBM_vertex_array_lists::glFogCoordPointerListIBM(GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride) +{ + Q_D(QOpenGLExtension_IBM_vertex_array_lists); + d->FogCoordPointerListIBM(type, stride, pointer, ptrstride); +} + +inline void QOpenGLExtension_IBM_vertex_array_lists::glEdgeFlagPointerListIBM(GLint stride, const GLboolean* *pointer, GLint ptrstride) +{ + Q_D(QOpenGLExtension_IBM_vertex_array_lists); + d->EdgeFlagPointerListIBM(stride, pointer, ptrstride); +} + +inline void QOpenGLExtension_IBM_vertex_array_lists::glSecondaryColorPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride) +{ + Q_D(QOpenGLExtension_IBM_vertex_array_lists); + d->SecondaryColorPointerListIBM(size, type, stride, pointer, ptrstride); +} + +inline void QOpenGLExtension_IBM_vertex_array_lists::glColorPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride) +{ + Q_D(QOpenGLExtension_IBM_vertex_array_lists); + d->ColorPointerListIBM(size, type, stride, pointer, ptrstride); +} + +class QOpenGLExtension_INGR_blend_func_separatePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BlendFuncSeparateINGR)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +}; + +class QOpenGLExtension_INGR_blend_func_separate : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_INGR_blend_func_separate(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_INGR_blend_func_separate) +}; + +inline void QOpenGLExtension_INGR_blend_func_separate::glBlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +{ + Q_D(QOpenGLExtension_INGR_blend_func_separate); + d->BlendFuncSeparateINGR(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); +} + +class QOpenGLExtension_INTEL_parallel_arraysPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexCoordPointervINTEL)(GLint size, GLenum type, const GLvoid* *pointer); + void (QOPENGLF_APIENTRYP ColorPointervINTEL)(GLint size, GLenum type, const GLvoid* *pointer); + void (QOPENGLF_APIENTRYP NormalPointervINTEL)(GLenum type, const GLvoid* *pointer); + void (QOPENGLF_APIENTRYP VertexPointervINTEL)(GLint size, GLenum type, const GLvoid* *pointer); +}; + +class QOpenGLExtension_INTEL_parallel_arrays : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_INTEL_parallel_arrays(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexCoordPointervINTEL(GLint size, GLenum type, const GLvoid* *pointer); + void glColorPointervINTEL(GLint size, GLenum type, const GLvoid* *pointer); + void glNormalPointervINTEL(GLenum type, const GLvoid* *pointer); + void glVertexPointervINTEL(GLint size, GLenum type, const GLvoid* *pointer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_INTEL_parallel_arrays) +}; + +inline void QOpenGLExtension_INTEL_parallel_arrays::glTexCoordPointervINTEL(GLint size, GLenum type, const GLvoid* *pointer) +{ + Q_D(QOpenGLExtension_INTEL_parallel_arrays); + d->TexCoordPointervINTEL(size, type, pointer); +} + +inline void QOpenGLExtension_INTEL_parallel_arrays::glColorPointervINTEL(GLint size, GLenum type, const GLvoid* *pointer) +{ + Q_D(QOpenGLExtension_INTEL_parallel_arrays); + d->ColorPointervINTEL(size, type, pointer); +} + +inline void QOpenGLExtension_INTEL_parallel_arrays::glNormalPointervINTEL(GLenum type, const GLvoid* *pointer) +{ + Q_D(QOpenGLExtension_INTEL_parallel_arrays); + d->NormalPointervINTEL(type, pointer); +} + +inline void QOpenGLExtension_INTEL_parallel_arrays::glVertexPointervINTEL(GLint size, GLenum type, const GLvoid* *pointer) +{ + Q_D(QOpenGLExtension_INTEL_parallel_arrays); + d->VertexPointervINTEL(size, type, pointer); +} + +class QOpenGLExtension_KHR_debugPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetObjectPtrLabel)(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); + void (QOPENGLF_APIENTRYP ObjectPtrLabel)(const void *ptr, GLsizei length, const GLchar *label); + void (QOPENGLF_APIENTRYP GetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); + void (QOPENGLF_APIENTRYP ObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); + void (QOPENGLF_APIENTRYP PopDebugGroup)(); + void (QOPENGLF_APIENTRYP PushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar *message); + GLuint (QOPENGLF_APIENTRYP GetDebugMessageLog)(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); + void (QOPENGLF_APIENTRYP DebugMessageCallback)(GLDEBUGPROC callback, const void *userParam); + void (QOPENGLF_APIENTRYP DebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); + void (QOPENGLF_APIENTRYP DebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +}; + +class QOpenGLExtension_KHR_debug : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_KHR_debug(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); + void glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label); + void glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); + void glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label); + void glPopDebugGroup(); + void glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message); + GLuint glGetDebugMessageLog(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); + void glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam); + void glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); + void glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_KHR_debug) +}; + +inline void QOpenGLExtension_KHR_debug::glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + Q_D(QOpenGLExtension_KHR_debug); + d->GetObjectPtrLabel(ptr, bufSize, length, label); +} + +inline void QOpenGLExtension_KHR_debug::glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label) +{ + Q_D(QOpenGLExtension_KHR_debug); + d->ObjectPtrLabel(ptr, length, label); +} + +inline void QOpenGLExtension_KHR_debug::glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + Q_D(QOpenGLExtension_KHR_debug); + d->GetObjectLabel(identifier, name, bufSize, length, label); +} + +inline void QOpenGLExtension_KHR_debug::glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label) +{ + Q_D(QOpenGLExtension_KHR_debug); + d->ObjectLabel(identifier, name, length, label); +} + +inline void QOpenGLExtension_KHR_debug::glPopDebugGroup() +{ + Q_D(QOpenGLExtension_KHR_debug); + d->PopDebugGroup(); +} + +inline void QOpenGLExtension_KHR_debug::glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message) +{ + Q_D(QOpenGLExtension_KHR_debug); + d->PushDebugGroup(source, id, length, message); +} + +inline GLuint QOpenGLExtension_KHR_debug::glGetDebugMessageLog(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog) +{ + Q_D(QOpenGLExtension_KHR_debug); + return d->GetDebugMessageLog(count, bufsize, sources, types, ids, severities, lengths, messageLog); +} + +inline void QOpenGLExtension_KHR_debug::glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam) +{ + Q_D(QOpenGLExtension_KHR_debug); + d->DebugMessageCallback(callback, userParam); +} + +inline void QOpenGLExtension_KHR_debug::glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf) +{ + Q_D(QOpenGLExtension_KHR_debug); + d->DebugMessageInsert(source, type, id, severity, length, buf); +} + +inline void QOpenGLExtension_KHR_debug::glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled) +{ + Q_D(QOpenGLExtension_KHR_debug); + d->DebugMessageControl(source, type, severity, count, ids, enabled); +} + +class QOpenGLExtension_MESA_resize_buffersPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ResizeBuffersMESA)(); +}; + +class QOpenGLExtension_MESA_resize_buffers : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_MESA_resize_buffers(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glResizeBuffersMESA(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_MESA_resize_buffers) +}; + +inline void QOpenGLExtension_MESA_resize_buffers::glResizeBuffersMESA() +{ + Q_D(QOpenGLExtension_MESA_resize_buffers); + d->ResizeBuffersMESA(); +} + +class QOpenGLExtension_MESA_window_posPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP WindowPos4svMESA)(const GLshort *v); + void (QOPENGLF_APIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); + void (QOPENGLF_APIENTRYP WindowPos4ivMESA)(const GLint *v); + void (QOPENGLF_APIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); + void (QOPENGLF_APIENTRYP WindowPos4fvMESA)(const GLfloat *v); + void (QOPENGLF_APIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP WindowPos4dvMESA)(const GLdouble *v); + void (QOPENGLF_APIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP WindowPos3svMESA)(const GLshort *v); + void (QOPENGLF_APIENTRYP WindowPos3sMESA)(GLshort x, GLshort y, GLshort z); + void (QOPENGLF_APIENTRYP WindowPos3ivMESA)(const GLint *v); + void (QOPENGLF_APIENTRYP WindowPos3iMESA)(GLint x, GLint y, GLint z); + void (QOPENGLF_APIENTRYP WindowPos3fvMESA)(const GLfloat *v); + void (QOPENGLF_APIENTRYP WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP WindowPos3dvMESA)(const GLdouble *v); + void (QOPENGLF_APIENTRYP WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP WindowPos2svMESA)(const GLshort *v); + void (QOPENGLF_APIENTRYP WindowPos2sMESA)(GLshort x, GLshort y); + void (QOPENGLF_APIENTRYP WindowPos2ivMESA)(const GLint *v); + void (QOPENGLF_APIENTRYP WindowPos2iMESA)(GLint x, GLint y); + void (QOPENGLF_APIENTRYP WindowPos2fvMESA)(const GLfloat *v); + void (QOPENGLF_APIENTRYP WindowPos2fMESA)(GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP WindowPos2dvMESA)(const GLdouble *v); + void (QOPENGLF_APIENTRYP WindowPos2dMESA)(GLdouble x, GLdouble y); +}; + +class QOpenGLExtension_MESA_window_pos : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_MESA_window_pos(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glWindowPos4svMESA(const GLshort *v); + void glWindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w); + void glWindowPos4ivMESA(const GLint *v); + void glWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w); + void glWindowPos4fvMESA(const GLfloat *v); + void glWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glWindowPos4dvMESA(const GLdouble *v); + void glWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glWindowPos3svMESA(const GLshort *v); + void glWindowPos3sMESA(GLshort x, GLshort y, GLshort z); + void glWindowPos3ivMESA(const GLint *v); + void glWindowPos3iMESA(GLint x, GLint y, GLint z); + void glWindowPos3fvMESA(const GLfloat *v); + void glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z); + void glWindowPos3dvMESA(const GLdouble *v); + void glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z); + void glWindowPos2svMESA(const GLshort *v); + void glWindowPos2sMESA(GLshort x, GLshort y); + void glWindowPos2ivMESA(const GLint *v); + void glWindowPos2iMESA(GLint x, GLint y); + void glWindowPos2fvMESA(const GLfloat *v); + void glWindowPos2fMESA(GLfloat x, GLfloat y); + void glWindowPos2dvMESA(const GLdouble *v); + void glWindowPos2dMESA(GLdouble x, GLdouble y); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_MESA_window_pos) +}; + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos4svMESA(const GLshort *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos4svMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos4sMESA(x, y, z, w); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos4ivMESA(const GLint *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos4ivMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos4iMESA(x, y, z, w); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos4fvMESA(const GLfloat *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos4fvMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos4fMESA(x, y, z, w); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos4dvMESA(const GLdouble *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos4dvMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos4dMESA(x, y, z, w); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos3svMESA(const GLshort *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos3svMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos3sMESA(GLshort x, GLshort y, GLshort z) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos3sMESA(x, y, z); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos3ivMESA(const GLint *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos3ivMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos3iMESA(GLint x, GLint y, GLint z) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos3iMESA(x, y, z); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos3fvMESA(const GLfloat *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos3fvMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos3fMESA(x, y, z); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos3dvMESA(const GLdouble *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos3dvMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos3dMESA(x, y, z); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos2svMESA(const GLshort *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos2svMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos2sMESA(GLshort x, GLshort y) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos2sMESA(x, y); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos2ivMESA(const GLint *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos2ivMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos2iMESA(GLint x, GLint y) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos2iMESA(x, y); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos2fvMESA(const GLfloat *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos2fvMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos2fMESA(GLfloat x, GLfloat y) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos2fMESA(x, y); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos2dvMESA(const GLdouble *v) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos2dvMESA(v); +} + +inline void QOpenGLExtension_MESA_window_pos::glWindowPos2dMESA(GLdouble x, GLdouble y) +{ + Q_D(QOpenGLExtension_MESA_window_pos); + d->WindowPos2dMESA(x, y); +} + +class QOpenGLExtension_NV_bindless_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLboolean (QOPENGLF_APIENTRYP IsImageHandleResidentNV)(GLuint64 handle); + GLboolean (QOPENGLF_APIENTRYP IsTextureHandleResidentNV)(GLuint64 handle); + void (QOPENGLF_APIENTRYP ProgramUniformHandleui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64 *values); + void (QOPENGLF_APIENTRYP ProgramUniformHandleui64NV)(GLuint program, GLint location, GLuint64 value); + void (QOPENGLF_APIENTRYP UniformHandleui64vNV)(GLint location, GLsizei count, const GLuint64 *value); + void (QOPENGLF_APIENTRYP UniformHandleui64NV)(GLint location, GLuint64 value); + void (QOPENGLF_APIENTRYP MakeImageHandleNonResidentNV)(GLuint64 handle); + void (QOPENGLF_APIENTRYP MakeImageHandleResidentNV)(GLuint64 handle, GLenum access); + GLuint64 (QOPENGLF_APIENTRYP GetImageHandleNV)(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); + void (QOPENGLF_APIENTRYP MakeTextureHandleNonResidentNV)(GLuint64 handle); + void (QOPENGLF_APIENTRYP MakeTextureHandleResidentNV)(GLuint64 handle); + GLuint64 (QOPENGLF_APIENTRYP GetTextureSamplerHandleNV)(GLuint texture, GLuint sampler); + GLuint64 (QOPENGLF_APIENTRYP GetTextureHandleNV)(GLuint texture); +}; + +class QOpenGLExtension_NV_bindless_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_bindless_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLboolean glIsImageHandleResidentNV(GLuint64 handle); + GLboolean glIsTextureHandleResidentNV(GLuint64 handle); + void glProgramUniformHandleui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64 *values); + void glProgramUniformHandleui64NV(GLuint program, GLint location, GLuint64 value); + void glUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64 *value); + void glUniformHandleui64NV(GLint location, GLuint64 value); + void glMakeImageHandleNonResidentNV(GLuint64 handle); + void glMakeImageHandleResidentNV(GLuint64 handle, GLenum access); + GLuint64 glGetImageHandleNV(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); + void glMakeTextureHandleNonResidentNV(GLuint64 handle); + void glMakeTextureHandleResidentNV(GLuint64 handle); + GLuint64 glGetTextureSamplerHandleNV(GLuint texture, GLuint sampler); + GLuint64 glGetTextureHandleNV(GLuint texture); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_bindless_texture) +}; + +inline GLboolean QOpenGLExtension_NV_bindless_texture::glIsImageHandleResidentNV(GLuint64 handle) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + return d->IsImageHandleResidentNV(handle); +} + +inline GLboolean QOpenGLExtension_NV_bindless_texture::glIsTextureHandleResidentNV(GLuint64 handle) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + return d->IsTextureHandleResidentNV(handle); +} + +inline void QOpenGLExtension_NV_bindless_texture::glProgramUniformHandleui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64 *values) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + d->ProgramUniformHandleui64vNV(program, location, count, values); +} + +inline void QOpenGLExtension_NV_bindless_texture::glProgramUniformHandleui64NV(GLuint program, GLint location, GLuint64 value) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + d->ProgramUniformHandleui64NV(program, location, value); +} + +inline void QOpenGLExtension_NV_bindless_texture::glUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64 *value) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + d->UniformHandleui64vNV(location, count, value); +} + +inline void QOpenGLExtension_NV_bindless_texture::glUniformHandleui64NV(GLint location, GLuint64 value) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + d->UniformHandleui64NV(location, value); +} + +inline void QOpenGLExtension_NV_bindless_texture::glMakeImageHandleNonResidentNV(GLuint64 handle) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + d->MakeImageHandleNonResidentNV(handle); +} + +inline void QOpenGLExtension_NV_bindless_texture::glMakeImageHandleResidentNV(GLuint64 handle, GLenum access) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + d->MakeImageHandleResidentNV(handle, access); +} + +inline GLuint64 QOpenGLExtension_NV_bindless_texture::glGetImageHandleNV(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + return d->GetImageHandleNV(texture, level, layered, layer, format); +} + +inline void QOpenGLExtension_NV_bindless_texture::glMakeTextureHandleNonResidentNV(GLuint64 handle) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + d->MakeTextureHandleNonResidentNV(handle); +} + +inline void QOpenGLExtension_NV_bindless_texture::glMakeTextureHandleResidentNV(GLuint64 handle) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + d->MakeTextureHandleResidentNV(handle); +} + +inline GLuint64 QOpenGLExtension_NV_bindless_texture::glGetTextureSamplerHandleNV(GLuint texture, GLuint sampler) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + return d->GetTextureSamplerHandleNV(texture, sampler); +} + +inline GLuint64 QOpenGLExtension_NV_bindless_texture::glGetTextureHandleNV(GLuint texture) +{ + Q_D(QOpenGLExtension_NV_bindless_texture); + return d->GetTextureHandleNV(texture); +} + +class QOpenGLExtension_NV_conditional_renderPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP EndConditionalRenderNV)(); + void (QOPENGLF_APIENTRYP BeginConditionalRenderNV)(GLuint id, GLenum mode); +}; + +class QOpenGLExtension_NV_conditional_render : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_conditional_render(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glEndConditionalRenderNV(); + void glBeginConditionalRenderNV(GLuint id, GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_conditional_render) +}; + +inline void QOpenGLExtension_NV_conditional_render::glEndConditionalRenderNV() +{ + Q_D(QOpenGLExtension_NV_conditional_render); + d->EndConditionalRenderNV(); +} + +inline void QOpenGLExtension_NV_conditional_render::glBeginConditionalRenderNV(GLuint id, GLenum mode) +{ + Q_D(QOpenGLExtension_NV_conditional_render); + d->BeginConditionalRenderNV(id, mode); +} + +class QOpenGLExtension_NV_copy_imagePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP CopyImageSubDataNV)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +}; + +class QOpenGLExtension_NV_copy_image : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_copy_image(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glCopyImageSubDataNV(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_copy_image) +}; + +inline void QOpenGLExtension_NV_copy_image::glCopyImageSubDataNV(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth) +{ + Q_D(QOpenGLExtension_NV_copy_image); + d->CopyImageSubDataNV(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth); +} + +class QOpenGLExtension_NV_depth_buffer_floatPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DepthBoundsdNV)(GLdouble zmin, GLdouble zmax); + void (QOPENGLF_APIENTRYP ClearDepthdNV)(GLdouble depth); + void (QOPENGLF_APIENTRYP DepthRangedNV)(GLdouble zNear, GLdouble zFar); +}; + +class QOpenGLExtension_NV_depth_buffer_float : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_depth_buffer_float(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDepthBoundsdNV(GLdouble zmin, GLdouble zmax); + void glClearDepthdNV(GLdouble depth); + void glDepthRangedNV(GLdouble zNear, GLdouble zFar); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_depth_buffer_float) +}; + +inline void QOpenGLExtension_NV_depth_buffer_float::glDepthBoundsdNV(GLdouble zmin, GLdouble zmax) +{ + Q_D(QOpenGLExtension_NV_depth_buffer_float); + d->DepthBoundsdNV(zmin, zmax); +} + +inline void QOpenGLExtension_NV_depth_buffer_float::glClearDepthdNV(GLdouble depth) +{ + Q_D(QOpenGLExtension_NV_depth_buffer_float); + d->ClearDepthdNV(depth); +} + +inline void QOpenGLExtension_NV_depth_buffer_float::glDepthRangedNV(GLdouble zNear, GLdouble zFar) +{ + Q_D(QOpenGLExtension_NV_depth_buffer_float); + d->DepthRangedNV(zNear, zFar); +} + +class QOpenGLExtension_NV_evaluatorsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP EvalMapsNV)(GLenum target, GLenum mode); + void (QOPENGLF_APIENTRYP GetMapAttribParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetMapAttribParameterivNV)(GLenum target, GLuint index, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetMapParameterfvNV)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetMapParameterivNV)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetMapControlPointsNV)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); + void (QOPENGLF_APIENTRYP MapParameterfvNV)(GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP MapParameterivNV)(GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP MapControlPointsNV)(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); +}; + +class QOpenGLExtension_NV_evaluators : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_evaluators(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glEvalMapsNV(GLenum target, GLenum mode); + void glGetMapAttribParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params); + void glGetMapAttribParameterivNV(GLenum target, GLuint index, GLenum pname, GLint *params); + void glGetMapParameterfvNV(GLenum target, GLenum pname, GLfloat *params); + void glGetMapParameterivNV(GLenum target, GLenum pname, GLint *params); + void glGetMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); + void glMapParameterfvNV(GLenum target, GLenum pname, const GLfloat *params); + void glMapParameterivNV(GLenum target, GLenum pname, const GLint *params); + void glMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_evaluators) +}; + +inline void QOpenGLExtension_NV_evaluators::glEvalMapsNV(GLenum target, GLenum mode) +{ + Q_D(QOpenGLExtension_NV_evaluators); + d->EvalMapsNV(target, mode); +} + +inline void QOpenGLExtension_NV_evaluators::glGetMapAttribParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_evaluators); + d->GetMapAttribParameterfvNV(target, index, pname, params); +} + +inline void QOpenGLExtension_NV_evaluators::glGetMapAttribParameterivNV(GLenum target, GLuint index, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_evaluators); + d->GetMapAttribParameterivNV(target, index, pname, params); +} + +inline void QOpenGLExtension_NV_evaluators::glGetMapParameterfvNV(GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_evaluators); + d->GetMapParameterfvNV(target, pname, params); +} + +inline void QOpenGLExtension_NV_evaluators::glGetMapParameterivNV(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_evaluators); + d->GetMapParameterivNV(target, pname, params); +} + +inline void QOpenGLExtension_NV_evaluators::glGetMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points) +{ + Q_D(QOpenGLExtension_NV_evaluators); + d->GetMapControlPointsNV(target, index, type, ustride, vstride, packed, points); +} + +inline void QOpenGLExtension_NV_evaluators::glMapParameterfvNV(GLenum target, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_evaluators); + d->MapParameterfvNV(target, pname, params); +} + +inline void QOpenGLExtension_NV_evaluators::glMapParameterivNV(GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_NV_evaluators); + d->MapParameterivNV(target, pname, params); +} + +inline void QOpenGLExtension_NV_evaluators::glMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points) +{ + Q_D(QOpenGLExtension_NV_evaluators); + d->MapControlPointsNV(target, index, type, ustride, vstride, uorder, vorder, packed, points); +} + +class QOpenGLExtension_NV_explicit_multisamplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexRenderbufferNV)(GLenum target, GLuint renderbuffer); + void (QOPENGLF_APIENTRYP SampleMaskIndexedNV)(GLuint index, GLbitfield mask); + void (QOPENGLF_APIENTRYP GetMultisamplefvNV)(GLenum pname, GLuint index, GLfloat *val); +}; + +class QOpenGLExtension_NV_explicit_multisample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_explicit_multisample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexRenderbufferNV(GLenum target, GLuint renderbuffer); + void glSampleMaskIndexedNV(GLuint index, GLbitfield mask); + void glGetMultisamplefvNV(GLenum pname, GLuint index, GLfloat *val); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_explicit_multisample) +}; + +inline void QOpenGLExtension_NV_explicit_multisample::glTexRenderbufferNV(GLenum target, GLuint renderbuffer) +{ + Q_D(QOpenGLExtension_NV_explicit_multisample); + d->TexRenderbufferNV(target, renderbuffer); +} + +inline void QOpenGLExtension_NV_explicit_multisample::glSampleMaskIndexedNV(GLuint index, GLbitfield mask) +{ + Q_D(QOpenGLExtension_NV_explicit_multisample); + d->SampleMaskIndexedNV(index, mask); +} + +inline void QOpenGLExtension_NV_explicit_multisample::glGetMultisamplefvNV(GLenum pname, GLuint index, GLfloat *val) +{ + Q_D(QOpenGLExtension_NV_explicit_multisample); + d->GetMultisamplefvNV(pname, index, val); +} + +class QOpenGLExtension_NV_fencePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP SetFenceNV)(GLuint fence, GLenum condition); + void (QOPENGLF_APIENTRYP FinishFenceNV)(GLuint fence); + void (QOPENGLF_APIENTRYP GetFenceivNV)(GLuint fence, GLenum pname, GLint *params); + GLboolean (QOPENGLF_APIENTRYP TestFenceNV)(GLuint fence); + GLboolean (QOPENGLF_APIENTRYP IsFenceNV)(GLuint fence); + void (QOPENGLF_APIENTRYP GenFencesNV)(GLsizei n, GLuint *fences); + void (QOPENGLF_APIENTRYP DeleteFencesNV)(GLsizei n, const GLuint *fences); +}; + +class QOpenGLExtension_NV_fence : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_fence(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glSetFenceNV(GLuint fence, GLenum condition); + void glFinishFenceNV(GLuint fence); + void glGetFenceivNV(GLuint fence, GLenum pname, GLint *params); + GLboolean glTestFenceNV(GLuint fence); + GLboolean glIsFenceNV(GLuint fence); + void glGenFencesNV(GLsizei n, GLuint *fences); + void glDeleteFencesNV(GLsizei n, const GLuint *fences); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_fence) +}; + +inline void QOpenGLExtension_NV_fence::glSetFenceNV(GLuint fence, GLenum condition) +{ + Q_D(QOpenGLExtension_NV_fence); + d->SetFenceNV(fence, condition); +} + +inline void QOpenGLExtension_NV_fence::glFinishFenceNV(GLuint fence) +{ + Q_D(QOpenGLExtension_NV_fence); + d->FinishFenceNV(fence); +} + +inline void QOpenGLExtension_NV_fence::glGetFenceivNV(GLuint fence, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_fence); + d->GetFenceivNV(fence, pname, params); +} + +inline GLboolean QOpenGLExtension_NV_fence::glTestFenceNV(GLuint fence) +{ + Q_D(QOpenGLExtension_NV_fence); + return d->TestFenceNV(fence); +} + +inline GLboolean QOpenGLExtension_NV_fence::glIsFenceNV(GLuint fence) +{ + Q_D(QOpenGLExtension_NV_fence); + return d->IsFenceNV(fence); +} + +inline void QOpenGLExtension_NV_fence::glGenFencesNV(GLsizei n, GLuint *fences) +{ + Q_D(QOpenGLExtension_NV_fence); + d->GenFencesNV(n, fences); +} + +inline void QOpenGLExtension_NV_fence::glDeleteFencesNV(GLsizei n, const GLuint *fences) +{ + Q_D(QOpenGLExtension_NV_fence); + d->DeleteFencesNV(n, fences); +} + +class QOpenGLExtension_NV_fragment_programPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); + void (QOPENGLF_APIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); + void (QOPENGLF_APIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); + void (QOPENGLF_APIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); + void (QOPENGLF_APIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +}; + +class QOpenGLExtension_NV_fragment_program : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_fragment_program(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); + void glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); + void glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); + void glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); + void glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_fragment_program) +}; + +inline void QOpenGLExtension_NV_fragment_program::glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params) +{ + Q_D(QOpenGLExtension_NV_fragment_program); + d->GetProgramNamedParameterdvNV(id, len, name, params); +} + +inline void QOpenGLExtension_NV_fragment_program::glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_fragment_program); + d->GetProgramNamedParameterfvNV(id, len, name, params); +} + +inline void QOpenGLExtension_NV_fragment_program::glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_fragment_program); + d->ProgramNamedParameter4dvNV(id, len, name, v); +} + +inline void QOpenGLExtension_NV_fragment_program::glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_fragment_program); + d->ProgramNamedParameter4fvNV(id, len, name, v); +} + +inline void QOpenGLExtension_NV_fragment_program::glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_NV_fragment_program); + d->ProgramNamedParameter4dNV(id, len, name, x, y, z, w); +} + +inline void QOpenGLExtension_NV_fragment_program::glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_NV_fragment_program); + d->ProgramNamedParameter4fNV(id, len, name, x, y, z, w); +} + +class QOpenGLExtension_NV_framebuffer_multisample_coveragePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP RenderbufferStorageMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +}; + +class QOpenGLExtension_NV_framebuffer_multisample_coverage : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_framebuffer_multisample_coverage(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glRenderbufferStorageMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_framebuffer_multisample_coverage) +}; + +inline void QOpenGLExtension_NV_framebuffer_multisample_coverage::glRenderbufferStorageMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_NV_framebuffer_multisample_coverage); + d->RenderbufferStorageMultisampleCoverageNV(target, coverageSamples, colorSamples, internalformat, width, height); +} + +class QOpenGLExtension_NV_geometry_program4Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FramebufferTextureFaceEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); + void (QOPENGLF_APIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void (QOPENGLF_APIENTRYP FramebufferTextureEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level); + void (QOPENGLF_APIENTRYP ProgramVertexLimitNV)(GLenum target, GLint limit); +}; + +class QOpenGLExtension_NV_geometry_program4 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_geometry_program4(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFramebufferTextureFaceEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); + void glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + void glFramebufferTextureEXT(GLenum target, GLenum attachment, GLuint texture, GLint level); + void glProgramVertexLimitNV(GLenum target, GLint limit); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_geometry_program4) +}; + +inline void QOpenGLExtension_NV_geometry_program4::glFramebufferTextureFaceEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face) +{ + Q_D(QOpenGLExtension_NV_geometry_program4); + d->FramebufferTextureFaceEXT(target, attachment, texture, level, face); +} + +inline void QOpenGLExtension_NV_geometry_program4::glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +{ + Q_D(QOpenGLExtension_NV_geometry_program4); + d->FramebufferTextureLayerEXT(target, attachment, texture, level, layer); +} + +inline void QOpenGLExtension_NV_geometry_program4::glFramebufferTextureEXT(GLenum target, GLenum attachment, GLuint texture, GLint level) +{ + Q_D(QOpenGLExtension_NV_geometry_program4); + d->FramebufferTextureEXT(target, attachment, texture, level); +} + +inline void QOpenGLExtension_NV_geometry_program4::glProgramVertexLimitNV(GLenum target, GLint limit) +{ + Q_D(QOpenGLExtension_NV_geometry_program4); + d->ProgramVertexLimitNV(target, limit); +} + +class QOpenGLExtension_NV_gpu_program4Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetProgramEnvParameterIuivNV)(GLenum target, GLuint index, GLuint *params); + void (QOPENGLF_APIENTRYP GetProgramEnvParameterIivNV)(GLenum target, GLuint index, GLint *params); + void (QOPENGLF_APIENTRYP GetProgramLocalParameterIuivNV)(GLenum target, GLuint index, GLuint *params); + void (QOPENGLF_APIENTRYP GetProgramLocalParameterIivNV)(GLenum target, GLuint index, GLint *params); + void (QOPENGLF_APIENTRYP ProgramEnvParametersI4uivNV)(GLenum target, GLuint index, GLsizei count, const GLuint *params); + void (QOPENGLF_APIENTRYP ProgramEnvParameterI4uivNV)(GLenum target, GLuint index, const GLuint *params); + void (QOPENGLF_APIENTRYP ProgramEnvParameterI4uiNV)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void (QOPENGLF_APIENTRYP ProgramEnvParametersI4ivNV)(GLenum target, GLuint index, GLsizei count, const GLint *params); + void (QOPENGLF_APIENTRYP ProgramEnvParameterI4ivNV)(GLenum target, GLuint index, const GLint *params); + void (QOPENGLF_APIENTRYP ProgramEnvParameterI4iNV)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); + void (QOPENGLF_APIENTRYP ProgramLocalParametersI4uivNV)(GLenum target, GLuint index, GLsizei count, const GLuint *params); + void (QOPENGLF_APIENTRYP ProgramLocalParameterI4uivNV)(GLenum target, GLuint index, const GLuint *params); + void (QOPENGLF_APIENTRYP ProgramLocalParameterI4uiNV)(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void (QOPENGLF_APIENTRYP ProgramLocalParametersI4ivNV)(GLenum target, GLuint index, GLsizei count, const GLint *params); + void (QOPENGLF_APIENTRYP ProgramLocalParameterI4ivNV)(GLenum target, GLuint index, const GLint *params); + void (QOPENGLF_APIENTRYP ProgramLocalParameterI4iNV)(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); +}; + +class QOpenGLExtension_NV_gpu_program4 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_gpu_program4(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetProgramEnvParameterIuivNV(GLenum target, GLuint index, GLuint *params); + void glGetProgramEnvParameterIivNV(GLenum target, GLuint index, GLint *params); + void glGetProgramLocalParameterIuivNV(GLenum target, GLuint index, GLuint *params); + void glGetProgramLocalParameterIivNV(GLenum target, GLuint index, GLint *params); + void glProgramEnvParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint *params); + void glProgramEnvParameterI4uivNV(GLenum target, GLuint index, const GLuint *params); + void glProgramEnvParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glProgramEnvParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint *params); + void glProgramEnvParameterI4ivNV(GLenum target, GLuint index, const GLint *params); + void glProgramEnvParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); + void glProgramLocalParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint *params); + void glProgramLocalParameterI4uivNV(GLenum target, GLuint index, const GLuint *params); + void glProgramLocalParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glProgramLocalParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint *params); + void glProgramLocalParameterI4ivNV(GLenum target, GLuint index, const GLint *params); + void glProgramLocalParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_gpu_program4) +}; + +inline void QOpenGLExtension_NV_gpu_program4::glGetProgramEnvParameterIuivNV(GLenum target, GLuint index, GLuint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->GetProgramEnvParameterIuivNV(target, index, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glGetProgramEnvParameterIivNV(GLenum target, GLuint index, GLint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->GetProgramEnvParameterIivNV(target, index, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glGetProgramLocalParameterIuivNV(GLenum target, GLuint index, GLuint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->GetProgramLocalParameterIuivNV(target, index, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glGetProgramLocalParameterIivNV(GLenum target, GLuint index, GLint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->GetProgramLocalParameterIivNV(target, index, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramEnvParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramEnvParametersI4uivNV(target, index, count, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramEnvParameterI4uivNV(GLenum target, GLuint index, const GLuint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramEnvParameterI4uivNV(target, index, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramEnvParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramEnvParameterI4uiNV(target, index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramEnvParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramEnvParametersI4ivNV(target, index, count, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramEnvParameterI4ivNV(GLenum target, GLuint index, const GLint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramEnvParameterI4ivNV(target, index, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramEnvParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramEnvParameterI4iNV(target, index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramLocalParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramLocalParametersI4uivNV(target, index, count, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramLocalParameterI4uivNV(GLenum target, GLuint index, const GLuint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramLocalParameterI4uivNV(target, index, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramLocalParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramLocalParameterI4uiNV(target, index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramLocalParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramLocalParametersI4ivNV(target, index, count, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramLocalParameterI4ivNV(GLenum target, GLuint index, const GLint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramLocalParameterI4ivNV(target, index, params); +} + +inline void QOpenGLExtension_NV_gpu_program4::glProgramLocalParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + Q_D(QOpenGLExtension_NV_gpu_program4); + d->ProgramLocalParameterI4iNV(target, index, x, y, z, w); +} + +class QOpenGLExtension_NV_gpu_program5Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetProgramSubroutineParameteruivNV)(GLenum target, GLuint index, GLuint *param); + void (QOPENGLF_APIENTRYP ProgramSubroutineParametersuivNV)(GLenum target, GLsizei count, const GLuint *params); +}; + +class QOpenGLExtension_NV_gpu_program5 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_gpu_program5(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetProgramSubroutineParameteruivNV(GLenum target, GLuint index, GLuint *param); + void glProgramSubroutineParametersuivNV(GLenum target, GLsizei count, const GLuint *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_gpu_program5) +}; + +inline void QOpenGLExtension_NV_gpu_program5::glGetProgramSubroutineParameteruivNV(GLenum target, GLuint index, GLuint *param) +{ + Q_D(QOpenGLExtension_NV_gpu_program5); + d->GetProgramSubroutineParameteruivNV(target, index, param); +} + +inline void QOpenGLExtension_NV_gpu_program5::glProgramSubroutineParametersuivNV(GLenum target, GLsizei count, const GLuint *params) +{ + Q_D(QOpenGLExtension_NV_gpu_program5); + d->ProgramSubroutineParametersuivNV(target, count, params); +} + +class QOpenGLExtension_NV_gpu_shader5Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ProgramUniform4ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); + void (QOPENGLF_APIENTRYP ProgramUniform3ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); + void (QOPENGLF_APIENTRYP ProgramUniform2ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); + void (QOPENGLF_APIENTRYP ProgramUniform1ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); + void (QOPENGLF_APIENTRYP ProgramUniform4ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + void (QOPENGLF_APIENTRYP ProgramUniform3ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + void (QOPENGLF_APIENTRYP ProgramUniform2ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); + void (QOPENGLF_APIENTRYP ProgramUniform1ui64NV)(GLuint program, GLint location, GLuint64EXT x); + void (QOPENGLF_APIENTRYP ProgramUniform4i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); + void (QOPENGLF_APIENTRYP ProgramUniform3i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); + void (QOPENGLF_APIENTRYP ProgramUniform2i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); + void (QOPENGLF_APIENTRYP ProgramUniform1i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); + void (QOPENGLF_APIENTRYP ProgramUniform4i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + void (QOPENGLF_APIENTRYP ProgramUniform3i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); + void (QOPENGLF_APIENTRYP ProgramUniform2i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); + void (QOPENGLF_APIENTRYP ProgramUniform1i64NV)(GLuint program, GLint location, GLint64EXT x); + void (QOPENGLF_APIENTRYP GetUniformi64vNV)(GLuint program, GLint location, GLint64EXT *params); + void (QOPENGLF_APIENTRYP Uniform4ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); + void (QOPENGLF_APIENTRYP Uniform3ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); + void (QOPENGLF_APIENTRYP Uniform2ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); + void (QOPENGLF_APIENTRYP Uniform1ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); + void (QOPENGLF_APIENTRYP Uniform4ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + void (QOPENGLF_APIENTRYP Uniform3ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + void (QOPENGLF_APIENTRYP Uniform2ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y); + void (QOPENGLF_APIENTRYP Uniform1ui64NV)(GLint location, GLuint64EXT x); + void (QOPENGLF_APIENTRYP Uniform4i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); + void (QOPENGLF_APIENTRYP Uniform3i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); + void (QOPENGLF_APIENTRYP Uniform2i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); + void (QOPENGLF_APIENTRYP Uniform1i64vNV)(GLint location, GLsizei count, const GLint64EXT *value); + void (QOPENGLF_APIENTRYP Uniform4i64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + void (QOPENGLF_APIENTRYP Uniform3i64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); + void (QOPENGLF_APIENTRYP Uniform2i64NV)(GLint location, GLint64EXT x, GLint64EXT y); + void (QOPENGLF_APIENTRYP Uniform1i64NV)(GLint location, GLint64EXT x); +}; + +class QOpenGLExtension_NV_gpu_shader5 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_gpu_shader5(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); + void glProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); + void glProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); + void glProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); + void glProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + void glProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + void glProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); + void glProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x); + void glProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); + void glProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); + void glProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); + void glProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value); + void glProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + void glProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); + void glProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); + void glProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x); + void glGetUniformi64vNV(GLuint program, GLint location, GLint64EXT *params); + void glUniform4ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value); + void glUniform3ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value); + void glUniform2ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value); + void glUniform1ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value); + void glUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + void glUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + void glUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y); + void glUniform1ui64NV(GLint location, GLuint64EXT x); + void glUniform4i64vNV(GLint location, GLsizei count, const GLint64EXT *value); + void glUniform3i64vNV(GLint location, GLsizei count, const GLint64EXT *value); + void glUniform2i64vNV(GLint location, GLsizei count, const GLint64EXT *value); + void glUniform1i64vNV(GLint location, GLsizei count, const GLint64EXT *value); + void glUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + void glUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); + void glUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y); + void glUniform1i64NV(GLint location, GLint64EXT x); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_gpu_shader5) +}; + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform4ui64vNV(program, location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform3ui64vNV(program, location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform2ui64vNV(program, location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform1ui64vNV(program, location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform4ui64NV(program, location, x, y, z, w); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform3ui64NV(program, location, x, y, z); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform2ui64NV(program, location, x, y); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform1ui64NV(program, location, x); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform4i64vNV(program, location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform3i64vNV(program, location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform2i64vNV(program, location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform1i64vNV(program, location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform4i64NV(program, location, x, y, z, w); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform3i64NV(program, location, x, y, z); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform2i64NV(program, location, x, y); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->ProgramUniform1i64NV(program, location, x); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glGetUniformi64vNV(GLuint program, GLint location, GLint64EXT *params) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->GetUniformi64vNV(program, location, params); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform4ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform4ui64vNV(location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform3ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform3ui64vNV(location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform2ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform2ui64vNV(location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform1ui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform1ui64vNV(location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform4ui64NV(location, x, y, z, w); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform3ui64NV(location, x, y, z); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform2ui64NV(location, x, y); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform1ui64NV(GLint location, GLuint64EXT x) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform1ui64NV(location, x); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform4i64vNV(GLint location, GLsizei count, const GLint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform4i64vNV(location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform3i64vNV(GLint location, GLsizei count, const GLint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform3i64vNV(location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform2i64vNV(GLint location, GLsizei count, const GLint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform2i64vNV(location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform1i64vNV(GLint location, GLsizei count, const GLint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform1i64vNV(location, count, value); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform4i64NV(location, x, y, z, w); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform3i64NV(location, x, y, z); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform2i64NV(location, x, y); +} + +inline void QOpenGLExtension_NV_gpu_shader5::glUniform1i64NV(GLint location, GLint64EXT x) +{ + Q_D(QOpenGLExtension_NV_gpu_shader5); + d->Uniform1i64NV(location, x); +} + +class QOpenGLExtension_NV_half_floatPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexAttribs4hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP VertexAttribs3hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP VertexAttribs2hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP VertexAttribs1hvNV)(GLuint index, GLsizei n, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP VertexAttrib4hvNV)(GLuint index, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP VertexAttrib4hNV)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); + void (QOPENGLF_APIENTRYP VertexAttrib3hvNV)(GLuint index, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP VertexAttrib3hNV)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); + void (QOPENGLF_APIENTRYP VertexAttrib2hvNV)(GLuint index, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP VertexAttrib2hNV)(GLuint index, GLhalfNV x, GLhalfNV y); + void (QOPENGLF_APIENTRYP VertexAttrib1hvNV)(GLuint index, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP VertexAttrib1hNV)(GLuint index, GLhalfNV x); + void (QOPENGLF_APIENTRYP VertexWeighthvNV)(const GLhalfNV *weight); + void (QOPENGLF_APIENTRYP VertexWeighthNV)(GLhalfNV weight); + void (QOPENGLF_APIENTRYP SecondaryColor3hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP SecondaryColor3hNV)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); + void (QOPENGLF_APIENTRYP FogCoordhvNV)(const GLhalfNV *fog); + void (QOPENGLF_APIENTRYP FogCoordhNV)(GLhalfNV fog); + void (QOPENGLF_APIENTRYP MultiTexCoord4hvNV)(GLenum target, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP MultiTexCoord4hNV)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); + void (QOPENGLF_APIENTRYP MultiTexCoord3hvNV)(GLenum target, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP MultiTexCoord3hNV)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); + void (QOPENGLF_APIENTRYP MultiTexCoord2hvNV)(GLenum target, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP MultiTexCoord2hNV)(GLenum target, GLhalfNV s, GLhalfNV t); + void (QOPENGLF_APIENTRYP MultiTexCoord1hvNV)(GLenum target, const GLhalfNV *v); + void (QOPENGLF_APIENTRYP MultiTexCoord1hNV)(GLenum target, GLhalfNV s); + void (QOPENGLF_APIENTRYP TexCoord4hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP TexCoord4hNV)(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); + void (QOPENGLF_APIENTRYP TexCoord3hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP TexCoord3hNV)(GLhalfNV s, GLhalfNV t, GLhalfNV r); + void (QOPENGLF_APIENTRYP TexCoord2hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP TexCoord2hNV)(GLhalfNV s, GLhalfNV t); + void (QOPENGLF_APIENTRYP TexCoord1hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP TexCoord1hNV)(GLhalfNV s); + void (QOPENGLF_APIENTRYP Color4hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP Color4hNV)(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); + void (QOPENGLF_APIENTRYP Color3hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP Color3hNV)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); + void (QOPENGLF_APIENTRYP Normal3hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP Normal3hNV)(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); + void (QOPENGLF_APIENTRYP Vertex4hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP Vertex4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); + void (QOPENGLF_APIENTRYP Vertex3hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP Vertex3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z); + void (QOPENGLF_APIENTRYP Vertex2hvNV)(const GLhalfNV *v); + void (QOPENGLF_APIENTRYP Vertex2hNV)(GLhalfNV x, GLhalfNV y); +}; + +class QOpenGLExtension_NV_half_float : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_half_float(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalfNV *v); + void glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalfNV *v); + void glVertexAttribs2hvNV(GLuint index, GLsizei n, const GLhalfNV *v); + void glVertexAttribs1hvNV(GLuint index, GLsizei n, const GLhalfNV *v); + void glVertexAttrib4hvNV(GLuint index, const GLhalfNV *v); + void glVertexAttrib4hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); + void glVertexAttrib3hvNV(GLuint index, const GLhalfNV *v); + void glVertexAttrib3hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); + void glVertexAttrib2hvNV(GLuint index, const GLhalfNV *v); + void glVertexAttrib2hNV(GLuint index, GLhalfNV x, GLhalfNV y); + void glVertexAttrib1hvNV(GLuint index, const GLhalfNV *v); + void glVertexAttrib1hNV(GLuint index, GLhalfNV x); + void glVertexWeighthvNV(const GLhalfNV *weight); + void glVertexWeighthNV(GLhalfNV weight); + void glSecondaryColor3hvNV(const GLhalfNV *v); + void glSecondaryColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue); + void glFogCoordhvNV(const GLhalfNV *fog); + void glFogCoordhNV(GLhalfNV fog); + void glMultiTexCoord4hvNV(GLenum target, const GLhalfNV *v); + void glMultiTexCoord4hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); + void glMultiTexCoord3hvNV(GLenum target, const GLhalfNV *v); + void glMultiTexCoord3hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); + void glMultiTexCoord2hvNV(GLenum target, const GLhalfNV *v); + void glMultiTexCoord2hNV(GLenum target, GLhalfNV s, GLhalfNV t); + void glMultiTexCoord1hvNV(GLenum target, const GLhalfNV *v); + void glMultiTexCoord1hNV(GLenum target, GLhalfNV s); + void glTexCoord4hvNV(const GLhalfNV *v); + void glTexCoord4hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); + void glTexCoord3hvNV(const GLhalfNV *v); + void glTexCoord3hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r); + void glTexCoord2hvNV(const GLhalfNV *v); + void glTexCoord2hNV(GLhalfNV s, GLhalfNV t); + void glTexCoord1hvNV(const GLhalfNV *v); + void glTexCoord1hNV(GLhalfNV s); + void glColor4hvNV(const GLhalfNV *v); + void glColor4hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); + void glColor3hvNV(const GLhalfNV *v); + void glColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue); + void glNormal3hvNV(const GLhalfNV *v); + void glNormal3hNV(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); + void glVertex4hvNV(const GLhalfNV *v); + void glVertex4hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); + void glVertex3hvNV(const GLhalfNV *v); + void glVertex3hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z); + void glVertex2hvNV(const GLhalfNV *v); + void glVertex2hNV(GLhalfNV x, GLhalfNV y); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_half_float) +}; + +inline void QOpenGLExtension_NV_half_float::glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttribs4hvNV(index, n, v); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttribs3hvNV(index, n, v); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttribs2hvNV(GLuint index, GLsizei n, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttribs2hvNV(index, n, v); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttribs1hvNV(GLuint index, GLsizei n, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttribs1hvNV(index, n, v); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttrib4hvNV(GLuint index, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttrib4hvNV(index, v); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttrib4hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttrib4hNV(index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttrib3hvNV(GLuint index, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttrib3hvNV(index, v); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttrib3hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttrib3hNV(index, x, y, z); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttrib2hvNV(GLuint index, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttrib2hvNV(index, v); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttrib2hNV(GLuint index, GLhalfNV x, GLhalfNV y) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttrib2hNV(index, x, y); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttrib1hvNV(GLuint index, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttrib1hvNV(index, v); +} + +inline void QOpenGLExtension_NV_half_float::glVertexAttrib1hNV(GLuint index, GLhalfNV x) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexAttrib1hNV(index, x); +} + +inline void QOpenGLExtension_NV_half_float::glVertexWeighthvNV(const GLhalfNV *weight) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexWeighthvNV(weight); +} + +inline void QOpenGLExtension_NV_half_float::glVertexWeighthNV(GLhalfNV weight) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->VertexWeighthNV(weight); +} + +inline void QOpenGLExtension_NV_half_float::glSecondaryColor3hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->SecondaryColor3hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glSecondaryColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->SecondaryColor3hNV(red, green, blue); +} + +inline void QOpenGLExtension_NV_half_float::glFogCoordhvNV(const GLhalfNV *fog) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->FogCoordhvNV(fog); +} + +inline void QOpenGLExtension_NV_half_float::glFogCoordhNV(GLhalfNV fog) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->FogCoordhNV(fog); +} + +inline void QOpenGLExtension_NV_half_float::glMultiTexCoord4hvNV(GLenum target, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->MultiTexCoord4hvNV(target, v); +} + +inline void QOpenGLExtension_NV_half_float::glMultiTexCoord4hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->MultiTexCoord4hNV(target, s, t, r, q); +} + +inline void QOpenGLExtension_NV_half_float::glMultiTexCoord3hvNV(GLenum target, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->MultiTexCoord3hvNV(target, v); +} + +inline void QOpenGLExtension_NV_half_float::glMultiTexCoord3hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->MultiTexCoord3hNV(target, s, t, r); +} + +inline void QOpenGLExtension_NV_half_float::glMultiTexCoord2hvNV(GLenum target, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->MultiTexCoord2hvNV(target, v); +} + +inline void QOpenGLExtension_NV_half_float::glMultiTexCoord2hNV(GLenum target, GLhalfNV s, GLhalfNV t) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->MultiTexCoord2hNV(target, s, t); +} + +inline void QOpenGLExtension_NV_half_float::glMultiTexCoord1hvNV(GLenum target, const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->MultiTexCoord1hvNV(target, v); +} + +inline void QOpenGLExtension_NV_half_float::glMultiTexCoord1hNV(GLenum target, GLhalfNV s) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->MultiTexCoord1hNV(target, s); +} + +inline void QOpenGLExtension_NV_half_float::glTexCoord4hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->TexCoord4hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glTexCoord4hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->TexCoord4hNV(s, t, r, q); +} + +inline void QOpenGLExtension_NV_half_float::glTexCoord3hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->TexCoord3hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glTexCoord3hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->TexCoord3hNV(s, t, r); +} + +inline void QOpenGLExtension_NV_half_float::glTexCoord2hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->TexCoord2hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glTexCoord2hNV(GLhalfNV s, GLhalfNV t) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->TexCoord2hNV(s, t); +} + +inline void QOpenGLExtension_NV_half_float::glTexCoord1hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->TexCoord1hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glTexCoord1hNV(GLhalfNV s) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->TexCoord1hNV(s); +} + +inline void QOpenGLExtension_NV_half_float::glColor4hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Color4hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glColor4hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Color4hNV(red, green, blue, alpha); +} + +inline void QOpenGLExtension_NV_half_float::glColor3hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Color3hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Color3hNV(red, green, blue); +} + +inline void QOpenGLExtension_NV_half_float::glNormal3hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Normal3hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glNormal3hNV(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Normal3hNV(nx, ny, nz); +} + +inline void QOpenGLExtension_NV_half_float::glVertex4hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Vertex4hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glVertex4hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Vertex4hNV(x, y, z, w); +} + +inline void QOpenGLExtension_NV_half_float::glVertex3hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Vertex3hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glVertex3hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Vertex3hNV(x, y, z); +} + +inline void QOpenGLExtension_NV_half_float::glVertex2hvNV(const GLhalfNV *v) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Vertex2hvNV(v); +} + +inline void QOpenGLExtension_NV_half_float::glVertex2hNV(GLhalfNV x, GLhalfNV y) +{ + Q_D(QOpenGLExtension_NV_half_float); + d->Vertex2hNV(x, y); +} + +class QOpenGLExtension_NV_occlusion_queryPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetOcclusionQueryuivNV)(GLuint id, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetOcclusionQueryivNV)(GLuint id, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP EndOcclusionQueryNV)(); + void (QOPENGLF_APIENTRYP BeginOcclusionQueryNV)(GLuint id); + GLboolean (QOPENGLF_APIENTRYP IsOcclusionQueryNV)(GLuint id); + void (QOPENGLF_APIENTRYP DeleteOcclusionQueriesNV)(GLsizei n, const GLuint *ids); + void (QOPENGLF_APIENTRYP GenOcclusionQueriesNV)(GLsizei n, GLuint *ids); +}; + +class QOpenGLExtension_NV_occlusion_query : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_occlusion_query(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetOcclusionQueryuivNV(GLuint id, GLenum pname, GLuint *params); + void glGetOcclusionQueryivNV(GLuint id, GLenum pname, GLint *params); + void glEndOcclusionQueryNV(); + void glBeginOcclusionQueryNV(GLuint id); + GLboolean glIsOcclusionQueryNV(GLuint id); + void glDeleteOcclusionQueriesNV(GLsizei n, const GLuint *ids); + void glGenOcclusionQueriesNV(GLsizei n, GLuint *ids); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_occlusion_query) +}; + +inline void QOpenGLExtension_NV_occlusion_query::glGetOcclusionQueryuivNV(GLuint id, GLenum pname, GLuint *params) +{ + Q_D(QOpenGLExtension_NV_occlusion_query); + d->GetOcclusionQueryuivNV(id, pname, params); +} + +inline void QOpenGLExtension_NV_occlusion_query::glGetOcclusionQueryivNV(GLuint id, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_occlusion_query); + d->GetOcclusionQueryivNV(id, pname, params); +} + +inline void QOpenGLExtension_NV_occlusion_query::glEndOcclusionQueryNV() +{ + Q_D(QOpenGLExtension_NV_occlusion_query); + d->EndOcclusionQueryNV(); +} + +inline void QOpenGLExtension_NV_occlusion_query::glBeginOcclusionQueryNV(GLuint id) +{ + Q_D(QOpenGLExtension_NV_occlusion_query); + d->BeginOcclusionQueryNV(id); +} + +inline GLboolean QOpenGLExtension_NV_occlusion_query::glIsOcclusionQueryNV(GLuint id) +{ + Q_D(QOpenGLExtension_NV_occlusion_query); + return d->IsOcclusionQueryNV(id); +} + +inline void QOpenGLExtension_NV_occlusion_query::glDeleteOcclusionQueriesNV(GLsizei n, const GLuint *ids) +{ + Q_D(QOpenGLExtension_NV_occlusion_query); + d->DeleteOcclusionQueriesNV(n, ids); +} + +inline void QOpenGLExtension_NV_occlusion_query::glGenOcclusionQueriesNV(GLsizei n, GLuint *ids) +{ + Q_D(QOpenGLExtension_NV_occlusion_query); + d->GenOcclusionQueriesNV(n, ids); +} + +class QOpenGLExtension_NV_parameter_buffer_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ProgramBufferParametersIuivNV)(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); + void (QOPENGLF_APIENTRYP ProgramBufferParametersIivNV)(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); + void (QOPENGLF_APIENTRYP ProgramBufferParametersfvNV)(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); +}; + +class QOpenGLExtension_NV_parameter_buffer_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_parameter_buffer_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glProgramBufferParametersIuivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); + void glProgramBufferParametersIivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); + void glProgramBufferParametersfvNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_parameter_buffer_object) +}; + +inline void QOpenGLExtension_NV_parameter_buffer_object::glProgramBufferParametersIuivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params) +{ + Q_D(QOpenGLExtension_NV_parameter_buffer_object); + d->ProgramBufferParametersIuivNV(target, buffer, index, count, params); +} + +inline void QOpenGLExtension_NV_parameter_buffer_object::glProgramBufferParametersIivNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params) +{ + Q_D(QOpenGLExtension_NV_parameter_buffer_object); + d->ProgramBufferParametersIivNV(target, buffer, index, count, params); +} + +inline void QOpenGLExtension_NV_parameter_buffer_object::glProgramBufferParametersfvNV(GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_parameter_buffer_object); + d->ProgramBufferParametersfvNV(target, buffer, index, count, params); +} + +class QOpenGLExtension_NV_path_renderingPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLboolean (QOPENGLF_APIENTRYP PointAlongPathNV)(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); + GLfloat (QOPENGLF_APIENTRYP GetPathLengthNV)(GLuint path, GLsizei startSegment, GLsizei numSegments); + GLboolean (QOPENGLF_APIENTRYP IsPointInStrokePathNV)(GLuint path, GLfloat x, GLfloat y); + GLboolean (QOPENGLF_APIENTRYP IsPointInFillPathNV)(GLuint path, GLuint mask, GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP GetPathTexGenfvNV)(GLenum texCoordSet, GLenum pname, GLfloat *value); + void (QOPENGLF_APIENTRYP GetPathTexGenivNV)(GLenum texCoordSet, GLenum pname, GLint *value); + void (QOPENGLF_APIENTRYP GetPathColorGenfvNV)(GLenum color, GLenum pname, GLfloat *value); + void (QOPENGLF_APIENTRYP GetPathColorGenivNV)(GLenum color, GLenum pname, GLint *value); + void (QOPENGLF_APIENTRYP GetPathSpacingNV)(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); + void (QOPENGLF_APIENTRYP GetPathMetricRangeNV)(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); + void (QOPENGLF_APIENTRYP GetPathMetricsNV)(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); + void (QOPENGLF_APIENTRYP GetPathDashArrayNV)(GLuint path, GLfloat *dashArray); + void (QOPENGLF_APIENTRYP GetPathCoordsNV)(GLuint path, GLfloat *coords); + void (QOPENGLF_APIENTRYP GetPathCommandsNV)(GLuint path, GLubyte *commands); + void (QOPENGLF_APIENTRYP GetPathParameterfvNV)(GLuint path, GLenum pname, GLfloat *value); + void (QOPENGLF_APIENTRYP GetPathParameterivNV)(GLuint path, GLenum pname, GLint *value); + void (QOPENGLF_APIENTRYP CoverStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); + void (QOPENGLF_APIENTRYP CoverFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); + void (QOPENGLF_APIENTRYP CoverStrokePathNV)(GLuint path, GLenum coverMode); + void (QOPENGLF_APIENTRYP CoverFillPathNV)(GLuint path, GLenum coverMode); + void (QOPENGLF_APIENTRYP PathFogGenNV)(GLenum genMode); + void (QOPENGLF_APIENTRYP PathTexGenNV)(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); + void (QOPENGLF_APIENTRYP PathColorGenNV)(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); + void (QOPENGLF_APIENTRYP PathCoverDepthFuncNV)(GLenum func); + void (QOPENGLF_APIENTRYP StencilStrokePathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); + void (QOPENGLF_APIENTRYP StencilFillPathInstancedNV)(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); + void (QOPENGLF_APIENTRYP StencilStrokePathNV)(GLuint path, GLint reference, GLuint mask); + void (QOPENGLF_APIENTRYP StencilFillPathNV)(GLuint path, GLenum fillMode, GLuint mask); + void (QOPENGLF_APIENTRYP PathStencilDepthOffsetNV)(GLfloat factor, GLfloat units); + void (QOPENGLF_APIENTRYP PathStencilFuncNV)(GLenum func, GLint ref, GLuint mask); + void (QOPENGLF_APIENTRYP PathDashArrayNV)(GLuint path, GLsizei dashCount, const GLfloat *dashArray); + void (QOPENGLF_APIENTRYP PathParameterfNV)(GLuint path, GLenum pname, GLfloat value); + void (QOPENGLF_APIENTRYP PathParameterfvNV)(GLuint path, GLenum pname, const GLfloat *value); + void (QOPENGLF_APIENTRYP PathParameteriNV)(GLuint path, GLenum pname, GLint value); + void (QOPENGLF_APIENTRYP PathParameterivNV)(GLuint path, GLenum pname, const GLint *value); + void (QOPENGLF_APIENTRYP TransformPathNV)(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); + void (QOPENGLF_APIENTRYP InterpolatePathsNV)(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); + void (QOPENGLF_APIENTRYP CopyPathNV)(GLuint resultPath, GLuint srcPath); + void (QOPENGLF_APIENTRYP WeightPathsNV)(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); + void (QOPENGLF_APIENTRYP PathGlyphRangeNV)(GLuint firstPathName, GLenum fontTarget, const GLvoid *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); + void (QOPENGLF_APIENTRYP PathGlyphsNV)(GLuint firstPathName, GLenum fontTarget, const GLvoid *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const GLvoid *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); + void (QOPENGLF_APIENTRYP PathStringNV)(GLuint path, GLenum format, GLsizei length, const GLvoid *pathString); + void (QOPENGLF_APIENTRYP PathSubCoordsNV)(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const GLvoid *coords); + void (QOPENGLF_APIENTRYP PathSubCommandsNV)(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const GLvoid *coords); + void (QOPENGLF_APIENTRYP PathCoordsNV)(GLuint path, GLsizei numCoords, GLenum coordType, const GLvoid *coords); + void (QOPENGLF_APIENTRYP PathCommandsNV)(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const GLvoid *coords); + GLboolean (QOPENGLF_APIENTRYP IsPathNV)(GLuint path); + void (QOPENGLF_APIENTRYP DeletePathsNV)(GLuint path, GLsizei range); + GLuint (QOPENGLF_APIENTRYP GenPathsNV)(GLsizei range); +}; + +class QOpenGLExtension_NV_path_rendering : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_path_rendering(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLboolean glPointAlongPathNV(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); + GLfloat glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments); + GLboolean glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y); + GLboolean glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y); + void glGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, GLfloat *value); + void glGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, GLint *value); + void glGetPathColorGenfvNV(GLenum color, GLenum pname, GLfloat *value); + void glGetPathColorGenivNV(GLenum color, GLenum pname, GLint *value); + void glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); + void glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); + void glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); + void glGetPathDashArrayNV(GLuint path, GLfloat *dashArray); + void glGetPathCoordsNV(GLuint path, GLfloat *coords); + void glGetPathCommandsNV(GLuint path, GLubyte *commands); + void glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat *value); + void glGetPathParameterivNV(GLuint path, GLenum pname, GLint *value); + void glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); + void glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); + void glCoverStrokePathNV(GLuint path, GLenum coverMode); + void glCoverFillPathNV(GLuint path, GLenum coverMode); + void glPathFogGenNV(GLenum genMode); + void glPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs); + void glPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs); + void glPathCoverDepthFuncNV(GLenum func); + void glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); + void glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); + void glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask); + void glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask); + void glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units); + void glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask); + void glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat *dashArray); + void glPathParameterfNV(GLuint path, GLenum pname, GLfloat value); + void glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat *value); + void glPathParameteriNV(GLuint path, GLenum pname, GLint value); + void glPathParameterivNV(GLuint path, GLenum pname, const GLint *value); + void glTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); + void glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); + void glCopyPathNV(GLuint resultPath, GLuint srcPath); + void glWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); + void glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const GLvoid *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); + void glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const GLvoid *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const GLvoid *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); + void glPathStringNV(GLuint path, GLenum format, GLsizei length, const GLvoid *pathString); + void glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const GLvoid *coords); + void glPathSubCommandsNV(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const GLvoid *coords); + void glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const GLvoid *coords); + void glPathCommandsNV(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const GLvoid *coords); + GLboolean glIsPathNV(GLuint path); + void glDeletePathsNV(GLuint path, GLsizei range); + GLuint glGenPathsNV(GLsizei range); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_path_rendering) +}; + +inline GLboolean QOpenGLExtension_NV_path_rendering::glPointAlongPathNV(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + return d->PointAlongPathNV(path, startSegment, numSegments, distance, x, y, tangentX, tangentY); +} + +inline GLfloat QOpenGLExtension_NV_path_rendering::glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + return d->GetPathLengthNV(path, startSegment, numSegments); +} + +inline GLboolean QOpenGLExtension_NV_path_rendering::glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + return d->IsPointInStrokePathNV(path, x, y); +} + +inline GLboolean QOpenGLExtension_NV_path_rendering::glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + return d->IsPointInFillPathNV(path, mask, x, y); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, GLfloat *value) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathTexGenfvNV(texCoordSet, pname, value); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, GLint *value) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathTexGenivNV(texCoordSet, pname, value); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathColorGenfvNV(GLenum color, GLenum pname, GLfloat *value) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathColorGenfvNV(color, pname, value); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathColorGenivNV(GLenum color, GLenum pname, GLint *value) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathColorGenivNV(color, pname, value); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathSpacingNV(pathListMode, numPaths, pathNameType, paths, pathBase, advanceScale, kerningScale, transformType, returnedSpacing); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathMetricRangeNV(metricQueryMask, firstPathName, numPaths, stride, metrics); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathMetricsNV(metricQueryMask, numPaths, pathNameType, paths, pathBase, stride, metrics); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathDashArrayNV(GLuint path, GLfloat *dashArray) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathDashArrayNV(path, dashArray); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathCoordsNV(GLuint path, GLfloat *coords) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathCoordsNV(path, coords); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathCommandsNV(GLuint path, GLubyte *commands) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathCommandsNV(path, commands); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat *value) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathParameterfvNV(path, pname, value); +} + +inline void QOpenGLExtension_NV_path_rendering::glGetPathParameterivNV(GLuint path, GLenum pname, GLint *value) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->GetPathParameterivNV(path, pname, value); +} + +inline void QOpenGLExtension_NV_path_rendering::glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->CoverStrokePathInstancedNV(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues); +} + +inline void QOpenGLExtension_NV_path_rendering::glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->CoverFillPathInstancedNV(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues); +} + +inline void QOpenGLExtension_NV_path_rendering::glCoverStrokePathNV(GLuint path, GLenum coverMode) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->CoverStrokePathNV(path, coverMode); +} + +inline void QOpenGLExtension_NV_path_rendering::glCoverFillPathNV(GLuint path, GLenum coverMode) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->CoverFillPathNV(path, coverMode); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathFogGenNV(GLenum genMode) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathFogGenNV(genMode); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathTexGenNV(texCoordSet, genMode, components, coeffs); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathColorGenNV(color, genMode, colorFormat, coeffs); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathCoverDepthFuncNV(GLenum func) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathCoverDepthFuncNV(func); +} + +inline void QOpenGLExtension_NV_path_rendering::glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->StencilStrokePathInstancedNV(numPaths, pathNameType, paths, pathBase, reference, mask, transformType, transformValues); +} + +inline void QOpenGLExtension_NV_path_rendering::glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->StencilFillPathInstancedNV(numPaths, pathNameType, paths, pathBase, fillMode, mask, transformType, transformValues); +} + +inline void QOpenGLExtension_NV_path_rendering::glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->StencilStrokePathNV(path, reference, mask); +} + +inline void QOpenGLExtension_NV_path_rendering::glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->StencilFillPathNV(path, fillMode, mask); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathStencilDepthOffsetNV(factor, units); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathStencilFuncNV(func, ref, mask); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat *dashArray) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathDashArrayNV(path, dashCount, dashArray); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathParameterfNV(GLuint path, GLenum pname, GLfloat value) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathParameterfNV(path, pname, value); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat *value) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathParameterfvNV(path, pname, value); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathParameteriNV(GLuint path, GLenum pname, GLint value) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathParameteriNV(path, pname, value); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathParameterivNV(GLuint path, GLenum pname, const GLint *value) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathParameterivNV(path, pname, value); +} + +inline void QOpenGLExtension_NV_path_rendering::glTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->TransformPathNV(resultPath, srcPath, transformType, transformValues); +} + +inline void QOpenGLExtension_NV_path_rendering::glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->InterpolatePathsNV(resultPath, pathA, pathB, weight); +} + +inline void QOpenGLExtension_NV_path_rendering::glCopyPathNV(GLuint resultPath, GLuint srcPath) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->CopyPathNV(resultPath, srcPath); +} + +inline void QOpenGLExtension_NV_path_rendering::glWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->WeightPathsNV(resultPath, numPaths, paths, weights); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const GLvoid *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathGlyphRangeNV(firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const GLvoid *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const GLvoid *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathGlyphsNV(firstPathName, fontTarget, fontName, fontStyle, numGlyphs, type, charcodes, handleMissingGlyphs, pathParameterTemplate, emScale); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathStringNV(GLuint path, GLenum format, GLsizei length, const GLvoid *pathString) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathStringNV(path, format, length, pathString); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const GLvoid *coords) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathSubCoordsNV(path, coordStart, numCoords, coordType, coords); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathSubCommandsNV(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const GLvoid *coords) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathSubCommandsNV(path, commandStart, commandsToDelete, numCommands, commands, numCoords, coordType, coords); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const GLvoid *coords) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathCoordsNV(path, numCoords, coordType, coords); +} + +inline void QOpenGLExtension_NV_path_rendering::glPathCommandsNV(GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const GLvoid *coords) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->PathCommandsNV(path, numCommands, commands, numCoords, coordType, coords); +} + +inline GLboolean QOpenGLExtension_NV_path_rendering::glIsPathNV(GLuint path) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + return d->IsPathNV(path); +} + +inline void QOpenGLExtension_NV_path_rendering::glDeletePathsNV(GLuint path, GLsizei range) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + d->DeletePathsNV(path, range); +} + +inline GLuint QOpenGLExtension_NV_path_rendering::glGenPathsNV(GLsizei range) +{ + Q_D(QOpenGLExtension_NV_path_rendering); + return d->GenPathsNV(range); +} + +class QOpenGLExtension_NV_pixel_data_rangePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FlushPixelDataRangeNV)(GLenum target); + void (QOPENGLF_APIENTRYP PixelDataRangeNV)(GLenum target, GLsizei length, const GLvoid *pointer); +}; + +class QOpenGLExtension_NV_pixel_data_range : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_pixel_data_range(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFlushPixelDataRangeNV(GLenum target); + void glPixelDataRangeNV(GLenum target, GLsizei length, const GLvoid *pointer); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_pixel_data_range) +}; + +inline void QOpenGLExtension_NV_pixel_data_range::glFlushPixelDataRangeNV(GLenum target) +{ + Q_D(QOpenGLExtension_NV_pixel_data_range); + d->FlushPixelDataRangeNV(target); +} + +inline void QOpenGLExtension_NV_pixel_data_range::glPixelDataRangeNV(GLenum target, GLsizei length, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_NV_pixel_data_range); + d->PixelDataRangeNV(target, length, pointer); +} + +class QOpenGLExtension_NV_point_spritePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP PointParameterivNV)(GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP PointParameteriNV)(GLenum pname, GLint param); +}; + +class QOpenGLExtension_NV_point_sprite : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_point_sprite(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glPointParameterivNV(GLenum pname, const GLint *params); + void glPointParameteriNV(GLenum pname, GLint param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_point_sprite) +}; + +inline void QOpenGLExtension_NV_point_sprite::glPointParameterivNV(GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_NV_point_sprite); + d->PointParameterivNV(pname, params); +} + +inline void QOpenGLExtension_NV_point_sprite::glPointParameteriNV(GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_NV_point_sprite); + d->PointParameteriNV(pname, param); +} + +class QOpenGLExtension_NV_present_videoPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetVideoui64vNV)(GLuint video_slot, GLenum pname, GLuint64EXT *params); + void (QOPENGLF_APIENTRYP GetVideoi64vNV)(GLuint video_slot, GLenum pname, GLint64EXT *params); + void (QOPENGLF_APIENTRYP GetVideouivNV)(GLuint video_slot, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetVideoivNV)(GLuint video_slot, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP PresentFrameDualFillNV)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); + void (QOPENGLF_APIENTRYP PresentFrameKeyedNV)(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); +}; + +class QOpenGLExtension_NV_present_video : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_present_video(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetVideoui64vNV(GLuint video_slot, GLenum pname, GLuint64EXT *params); + void glGetVideoi64vNV(GLuint video_slot, GLenum pname, GLint64EXT *params); + void glGetVideouivNV(GLuint video_slot, GLenum pname, GLuint *params); + void glGetVideoivNV(GLuint video_slot, GLenum pname, GLint *params); + void glPresentFrameDualFillNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); + void glPresentFrameKeyedNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_present_video) +}; + +inline void QOpenGLExtension_NV_present_video::glGetVideoui64vNV(GLuint video_slot, GLenum pname, GLuint64EXT *params) +{ + Q_D(QOpenGLExtension_NV_present_video); + d->GetVideoui64vNV(video_slot, pname, params); +} + +inline void QOpenGLExtension_NV_present_video::glGetVideoi64vNV(GLuint video_slot, GLenum pname, GLint64EXT *params) +{ + Q_D(QOpenGLExtension_NV_present_video); + d->GetVideoi64vNV(video_slot, pname, params); +} + +inline void QOpenGLExtension_NV_present_video::glGetVideouivNV(GLuint video_slot, GLenum pname, GLuint *params) +{ + Q_D(QOpenGLExtension_NV_present_video); + d->GetVideouivNV(video_slot, pname, params); +} + +inline void QOpenGLExtension_NV_present_video::glGetVideoivNV(GLuint video_slot, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_present_video); + d->GetVideoivNV(video_slot, pname, params); +} + +inline void QOpenGLExtension_NV_present_video::glPresentFrameDualFillNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3) +{ + Q_D(QOpenGLExtension_NV_present_video); + d->PresentFrameDualFillNV(video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, target1, fill1, target2, fill2, target3, fill3); +} + +inline void QOpenGLExtension_NV_present_video::glPresentFrameKeyedNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1) +{ + Q_D(QOpenGLExtension_NV_present_video); + d->PresentFrameKeyedNV(video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, key0, target1, fill1, key1); +} + +class QOpenGLExtension_NV_primitive_restartPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP PrimitiveRestartIndexNV)(GLuint index); + void (QOPENGLF_APIENTRYP PrimitiveRestartNV)(); +}; + +class QOpenGLExtension_NV_primitive_restart : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_primitive_restart(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glPrimitiveRestartIndexNV(GLuint index); + void glPrimitiveRestartNV(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_primitive_restart) +}; + +inline void QOpenGLExtension_NV_primitive_restart::glPrimitiveRestartIndexNV(GLuint index) +{ + Q_D(QOpenGLExtension_NV_primitive_restart); + d->PrimitiveRestartIndexNV(index); +} + +inline void QOpenGLExtension_NV_primitive_restart::glPrimitiveRestartNV() +{ + Q_D(QOpenGLExtension_NV_primitive_restart); + d->PrimitiveRestartNV(); +} + +class QOpenGLExtension_NV_register_combinersPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); + void (QOPENGLF_APIENTRYP CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); + void (QOPENGLF_APIENTRYP CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); + void (QOPENGLF_APIENTRYP CombinerParameteriNV)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP CombinerParameterivNV)(GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP CombinerParameterfNV)(GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP CombinerParameterfvNV)(GLenum pname, const GLfloat *params); +}; + +class QOpenGLExtension_NV_register_combiners : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_register_combiners(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint *params); + void glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, GLfloat *params); + void glGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, GLint *params); + void glGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, GLfloat *params); + void glGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); + void glGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); + void glFinalCombinerInputNV(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); + void glCombinerOutputNV(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); + void glCombinerInputNV(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); + void glCombinerParameteriNV(GLenum pname, GLint param); + void glCombinerParameterivNV(GLenum pname, const GLint *params); + void glCombinerParameterfNV(GLenum pname, GLfloat param); + void glCombinerParameterfvNV(GLenum pname, const GLfloat *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_register_combiners) +}; + +inline void QOpenGLExtension_NV_register_combiners::glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->GetFinalCombinerInputParameterivNV(variable, pname, params); +} + +inline void QOpenGLExtension_NV_register_combiners::glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->GetFinalCombinerInputParameterfvNV(variable, pname, params); +} + +inline void QOpenGLExtension_NV_register_combiners::glGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->GetCombinerOutputParameterivNV(stage, portion, pname, params); +} + +inline void QOpenGLExtension_NV_register_combiners::glGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->GetCombinerOutputParameterfvNV(stage, portion, pname, params); +} + +inline void QOpenGLExtension_NV_register_combiners::glGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->GetCombinerInputParameterivNV(stage, portion, variable, pname, params); +} + +inline void QOpenGLExtension_NV_register_combiners::glGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->GetCombinerInputParameterfvNV(stage, portion, variable, pname, params); +} + +inline void QOpenGLExtension_NV_register_combiners::glFinalCombinerInputNV(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->FinalCombinerInputNV(variable, input, mapping, componentUsage); +} + +inline void QOpenGLExtension_NV_register_combiners::glCombinerOutputNV(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->CombinerOutputNV(stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum); +} + +inline void QOpenGLExtension_NV_register_combiners::glCombinerInputNV(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->CombinerInputNV(stage, portion, variable, input, mapping, componentUsage); +} + +inline void QOpenGLExtension_NV_register_combiners::glCombinerParameteriNV(GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->CombinerParameteriNV(pname, param); +} + +inline void QOpenGLExtension_NV_register_combiners::glCombinerParameterivNV(GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->CombinerParameterivNV(pname, params); +} + +inline void QOpenGLExtension_NV_register_combiners::glCombinerParameterfNV(GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->CombinerParameterfNV(pname, param); +} + +inline void QOpenGLExtension_NV_register_combiners::glCombinerParameterfvNV(GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_register_combiners); + d->CombinerParameterfvNV(pname, params); +} + +class QOpenGLExtension_NV_register_combiners2Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetCombinerStageParameterfvNV)(GLenum stage, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP CombinerStageParameterfvNV)(GLenum stage, GLenum pname, const GLfloat *params); +}; + +class QOpenGLExtension_NV_register_combiners2 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_register_combiners2(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat *params); + void glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_register_combiners2) +}; + +inline void QOpenGLExtension_NV_register_combiners2::glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_register_combiners2); + d->GetCombinerStageParameterfvNV(stage, pname, params); +} + +inline void QOpenGLExtension_NV_register_combiners2::glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_register_combiners2); + d->CombinerStageParameterfvNV(stage, pname, params); +} + +class QOpenGLExtension_NV_shader_buffer_loadPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ProgramUniformui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); + void (QOPENGLF_APIENTRYP ProgramUniformui64NV)(GLuint program, GLint location, GLuint64EXT value); + void (QOPENGLF_APIENTRYP GetUniformui64vNV)(GLuint program, GLint location, GLuint64EXT *params); + void (QOPENGLF_APIENTRYP Uniformui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value); + void (QOPENGLF_APIENTRYP Uniformui64NV)(GLint location, GLuint64EXT value); + void (QOPENGLF_APIENTRYP GetIntegerui64vNV)(GLenum value, GLuint64EXT *result); + void (QOPENGLF_APIENTRYP GetNamedBufferParameterui64vNV)(GLuint buffer, GLenum pname, GLuint64EXT *params); + void (QOPENGLF_APIENTRYP GetBufferParameterui64vNV)(GLenum target, GLenum pname, GLuint64EXT *params); + GLboolean (QOPENGLF_APIENTRYP IsNamedBufferResidentNV)(GLuint buffer); + void (QOPENGLF_APIENTRYP MakeNamedBufferNonResidentNV)(GLuint buffer); + void (QOPENGLF_APIENTRYP MakeNamedBufferResidentNV)(GLuint buffer, GLenum access); + GLboolean (QOPENGLF_APIENTRYP IsBufferResidentNV)(GLenum target); + void (QOPENGLF_APIENTRYP MakeBufferNonResidentNV)(GLenum target); + void (QOPENGLF_APIENTRYP MakeBufferResidentNV)(GLenum target, GLenum access); +}; + +class QOpenGLExtension_NV_shader_buffer_load : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_shader_buffer_load(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glProgramUniformui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); + void glProgramUniformui64NV(GLuint program, GLint location, GLuint64EXT value); + void glGetUniformui64vNV(GLuint program, GLint location, GLuint64EXT *params); + void glUniformui64vNV(GLint location, GLsizei count, const GLuint64EXT *value); + void glUniformui64NV(GLint location, GLuint64EXT value); + void glGetIntegerui64vNV(GLenum value, GLuint64EXT *result); + void glGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT *params); + void glGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT *params); + GLboolean glIsNamedBufferResidentNV(GLuint buffer); + void glMakeNamedBufferNonResidentNV(GLuint buffer); + void glMakeNamedBufferResidentNV(GLuint buffer, GLenum access); + GLboolean glIsBufferResidentNV(GLenum target); + void glMakeBufferNonResidentNV(GLenum target); + void glMakeBufferResidentNV(GLenum target, GLenum access); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_shader_buffer_load) +}; + +inline void QOpenGLExtension_NV_shader_buffer_load::glProgramUniformui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->ProgramUniformui64vNV(program, location, count, value); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glProgramUniformui64NV(GLuint program, GLint location, GLuint64EXT value) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->ProgramUniformui64NV(program, location, value); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glGetUniformui64vNV(GLuint program, GLint location, GLuint64EXT *params) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->GetUniformui64vNV(program, location, params); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glUniformui64vNV(GLint location, GLsizei count, const GLuint64EXT *value) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->Uniformui64vNV(location, count, value); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glUniformui64NV(GLint location, GLuint64EXT value) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->Uniformui64NV(location, value); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glGetIntegerui64vNV(GLenum value, GLuint64EXT *result) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->GetIntegerui64vNV(value, result); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT *params) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->GetNamedBufferParameterui64vNV(buffer, pname, params); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT *params) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->GetBufferParameterui64vNV(target, pname, params); +} + +inline GLboolean QOpenGLExtension_NV_shader_buffer_load::glIsNamedBufferResidentNV(GLuint buffer) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + return d->IsNamedBufferResidentNV(buffer); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glMakeNamedBufferNonResidentNV(GLuint buffer) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->MakeNamedBufferNonResidentNV(buffer); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glMakeNamedBufferResidentNV(GLuint buffer, GLenum access) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->MakeNamedBufferResidentNV(buffer, access); +} + +inline GLboolean QOpenGLExtension_NV_shader_buffer_load::glIsBufferResidentNV(GLenum target) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + return d->IsBufferResidentNV(target); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glMakeBufferNonResidentNV(GLenum target) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->MakeBufferNonResidentNV(target); +} + +inline void QOpenGLExtension_NV_shader_buffer_load::glMakeBufferResidentNV(GLenum target, GLenum access) +{ + Q_D(QOpenGLExtension_NV_shader_buffer_load); + d->MakeBufferResidentNV(target, access); +} + +class QOpenGLExtension_NV_texture_barrierPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TextureBarrierNV)(); +}; + +class QOpenGLExtension_NV_texture_barrier : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_texture_barrier(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTextureBarrierNV(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_texture_barrier) +}; + +inline void QOpenGLExtension_NV_texture_barrier::glTextureBarrierNV() +{ + Q_D(QOpenGLExtension_NV_texture_barrier); + d->TextureBarrierNV(); +} + +class QOpenGLExtension_NV_texture_multisamplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TextureImage3DMultisampleCoverageNV)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + void (QOPENGLF_APIENTRYP TextureImage2DMultisampleCoverageNV)(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); + void (QOPENGLF_APIENTRYP TextureImage3DMultisampleNV)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + void (QOPENGLF_APIENTRYP TextureImage2DMultisampleNV)(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); + void (QOPENGLF_APIENTRYP TexImage3DMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + void (QOPENGLF_APIENTRYP TexImage2DMultisampleCoverageNV)(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +}; + +class QOpenGLExtension_NV_texture_multisample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_texture_multisample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTextureImage3DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + void glTextureImage2DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); + void glTextureImage3DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + void glTextureImage2DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); + void glTexImage3DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); + void glTexImage2DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_texture_multisample) +}; + +inline void QOpenGLExtension_NV_texture_multisample::glTextureImage3DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations) +{ + Q_D(QOpenGLExtension_NV_texture_multisample); + d->TextureImage3DMultisampleCoverageNV(texture, target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations); +} + +inline void QOpenGLExtension_NV_texture_multisample::glTextureImage2DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations) +{ + Q_D(QOpenGLExtension_NV_texture_multisample); + d->TextureImage2DMultisampleCoverageNV(texture, target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations); +} + +inline void QOpenGLExtension_NV_texture_multisample::glTextureImage3DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations) +{ + Q_D(QOpenGLExtension_NV_texture_multisample); + d->TextureImage3DMultisampleNV(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations); +} + +inline void QOpenGLExtension_NV_texture_multisample::glTextureImage2DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations) +{ + Q_D(QOpenGLExtension_NV_texture_multisample); + d->TextureImage2DMultisampleNV(texture, target, samples, internalFormat, width, height, fixedSampleLocations); +} + +inline void QOpenGLExtension_NV_texture_multisample::glTexImage3DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations) +{ + Q_D(QOpenGLExtension_NV_texture_multisample); + d->TexImage3DMultisampleCoverageNV(target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations); +} + +inline void QOpenGLExtension_NV_texture_multisample::glTexImage2DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations) +{ + Q_D(QOpenGLExtension_NV_texture_multisample); + d->TexImage2DMultisampleCoverageNV(target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations); +} + +class QOpenGLExtension_NV_transform_feedbackPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TransformFeedbackStreamAttribsNV)(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); + void (QOPENGLF_APIENTRYP GetTransformFeedbackVaryingNV)(GLuint program, GLuint index, GLint *location); + void (QOPENGLF_APIENTRYP GetActiveVaryingNV)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + GLint (QOPENGLF_APIENTRYP GetVaryingLocationNV)(GLuint program, const GLchar *name); + void (QOPENGLF_APIENTRYP ActiveVaryingNV)(GLuint program, const GLchar *name); + void (QOPENGLF_APIENTRYP TransformFeedbackVaryingsNV)(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); + void (QOPENGLF_APIENTRYP BindBufferBaseNV)(GLenum target, GLuint index, GLuint buffer); + void (QOPENGLF_APIENTRYP BindBufferOffsetNV)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); + void (QOPENGLF_APIENTRYP BindBufferRangeNV)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void (QOPENGLF_APIENTRYP TransformFeedbackAttribsNV)(GLuint count, const GLint *attribs, GLenum bufferMode); + void (QOPENGLF_APIENTRYP EndTransformFeedbackNV)(); + void (QOPENGLF_APIENTRYP BeginTransformFeedbackNV)(GLenum primitiveMode); +}; + +class QOpenGLExtension_NV_transform_feedback : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_transform_feedback(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTransformFeedbackStreamAttribsNV(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode); + void glGetTransformFeedbackVaryingNV(GLuint program, GLuint index, GLint *location); + void glGetActiveVaryingNV(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); + GLint glGetVaryingLocationNV(GLuint program, const GLchar *name); + void glActiveVaryingNV(GLuint program, const GLchar *name); + void glTransformFeedbackVaryingsNV(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); + void glBindBufferBaseNV(GLenum target, GLuint index, GLuint buffer); + void glBindBufferOffsetNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset); + void glBindBufferRangeNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + void glTransformFeedbackAttribsNV(GLuint count, const GLint *attribs, GLenum bufferMode); + void glEndTransformFeedbackNV(); + void glBeginTransformFeedbackNV(GLenum primitiveMode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_transform_feedback) +}; + +inline void QOpenGLExtension_NV_transform_feedback::glTransformFeedbackStreamAttribsNV(GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->TransformFeedbackStreamAttribsNV(count, attribs, nbuffers, bufstreams, bufferMode); +} + +inline void QOpenGLExtension_NV_transform_feedback::glGetTransformFeedbackVaryingNV(GLuint program, GLuint index, GLint *location) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->GetTransformFeedbackVaryingNV(program, index, location); +} + +inline void QOpenGLExtension_NV_transform_feedback::glGetActiveVaryingNV(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->GetActiveVaryingNV(program, index, bufSize, length, size, type, name); +} + +inline GLint QOpenGLExtension_NV_transform_feedback::glGetVaryingLocationNV(GLuint program, const GLchar *name) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + return d->GetVaryingLocationNV(program, name); +} + +inline void QOpenGLExtension_NV_transform_feedback::glActiveVaryingNV(GLuint program, const GLchar *name) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->ActiveVaryingNV(program, name); +} + +inline void QOpenGLExtension_NV_transform_feedback::glTransformFeedbackVaryingsNV(GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->TransformFeedbackVaryingsNV(program, count, locations, bufferMode); +} + +inline void QOpenGLExtension_NV_transform_feedback::glBindBufferBaseNV(GLenum target, GLuint index, GLuint buffer) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->BindBufferBaseNV(target, index, buffer); +} + +inline void QOpenGLExtension_NV_transform_feedback::glBindBufferOffsetNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->BindBufferOffsetNV(target, index, buffer, offset); +} + +inline void QOpenGLExtension_NV_transform_feedback::glBindBufferRangeNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->BindBufferRangeNV(target, index, buffer, offset, size); +} + +inline void QOpenGLExtension_NV_transform_feedback::glTransformFeedbackAttribsNV(GLuint count, const GLint *attribs, GLenum bufferMode) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->TransformFeedbackAttribsNV(count, attribs, bufferMode); +} + +inline void QOpenGLExtension_NV_transform_feedback::glEndTransformFeedbackNV() +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->EndTransformFeedbackNV(); +} + +inline void QOpenGLExtension_NV_transform_feedback::glBeginTransformFeedbackNV(GLenum primitiveMode) +{ + Q_D(QOpenGLExtension_NV_transform_feedback); + d->BeginTransformFeedbackNV(primitiveMode); +} + +class QOpenGLExtension_NV_transform_feedback2Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawTransformFeedbackNV)(GLenum mode, GLuint id); + void (QOPENGLF_APIENTRYP ResumeTransformFeedbackNV)(); + void (QOPENGLF_APIENTRYP PauseTransformFeedbackNV)(); + GLboolean (QOPENGLF_APIENTRYP IsTransformFeedbackNV)(GLuint id); + void (QOPENGLF_APIENTRYP GenTransformFeedbacksNV)(GLsizei n, GLuint *ids); + void (QOPENGLF_APIENTRYP DeleteTransformFeedbacksNV)(GLsizei n, const GLuint *ids); + void (QOPENGLF_APIENTRYP BindTransformFeedbackNV)(GLenum target, GLuint id); +}; + +class QOpenGLExtension_NV_transform_feedback2 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_transform_feedback2(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawTransformFeedbackNV(GLenum mode, GLuint id); + void glResumeTransformFeedbackNV(); + void glPauseTransformFeedbackNV(); + GLboolean glIsTransformFeedbackNV(GLuint id); + void glGenTransformFeedbacksNV(GLsizei n, GLuint *ids); + void glDeleteTransformFeedbacksNV(GLsizei n, const GLuint *ids); + void glBindTransformFeedbackNV(GLenum target, GLuint id); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_transform_feedback2) +}; + +inline void QOpenGLExtension_NV_transform_feedback2::glDrawTransformFeedbackNV(GLenum mode, GLuint id) +{ + Q_D(QOpenGLExtension_NV_transform_feedback2); + d->DrawTransformFeedbackNV(mode, id); +} + +inline void QOpenGLExtension_NV_transform_feedback2::glResumeTransformFeedbackNV() +{ + Q_D(QOpenGLExtension_NV_transform_feedback2); + d->ResumeTransformFeedbackNV(); +} + +inline void QOpenGLExtension_NV_transform_feedback2::glPauseTransformFeedbackNV() +{ + Q_D(QOpenGLExtension_NV_transform_feedback2); + d->PauseTransformFeedbackNV(); +} + +inline GLboolean QOpenGLExtension_NV_transform_feedback2::glIsTransformFeedbackNV(GLuint id) +{ + Q_D(QOpenGLExtension_NV_transform_feedback2); + return d->IsTransformFeedbackNV(id); +} + +inline void QOpenGLExtension_NV_transform_feedback2::glGenTransformFeedbacksNV(GLsizei n, GLuint *ids) +{ + Q_D(QOpenGLExtension_NV_transform_feedback2); + d->GenTransformFeedbacksNV(n, ids); +} + +inline void QOpenGLExtension_NV_transform_feedback2::glDeleteTransformFeedbacksNV(GLsizei n, const GLuint *ids) +{ + Q_D(QOpenGLExtension_NV_transform_feedback2); + d->DeleteTransformFeedbacksNV(n, ids); +} + +inline void QOpenGLExtension_NV_transform_feedback2::glBindTransformFeedbackNV(GLenum target, GLuint id) +{ + Q_D(QOpenGLExtension_NV_transform_feedback2); + d->BindTransformFeedbackNV(target, id); +} + +class QOpenGLExtension_NV_vdpau_interopPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VDPAUUnmapSurfacesNV)(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); + void (QOPENGLF_APIENTRYP VDPAUMapSurfacesNV)(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); + void (QOPENGLF_APIENTRYP VDPAUSurfaceAccessNV)(GLvdpauSurfaceNV surface, GLenum access); + void (QOPENGLF_APIENTRYP VDPAUGetSurfaceivNV)(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void (QOPENGLF_APIENTRYP VDPAUUnregisterSurfaceNV)(GLvdpauSurfaceNV surface); + void (QOPENGLF_APIENTRYP VDPAUIsSurfaceNV)(GLvdpauSurfaceNV surface); + GLvdpauSurfaceNV (QOPENGLF_APIENTRYP VDPAURegisterOutputSurfaceNV)(GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); + GLvdpauSurfaceNV (QOPENGLF_APIENTRYP VDPAURegisterVideoSurfaceNV)(const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); + void (QOPENGLF_APIENTRYP VDPAUFiniNV)(); + void (QOPENGLF_APIENTRYP VDPAUInitNV)(const GLvoid *vdpDevice, const GLvoid *getProcAddress); +}; + +class QOpenGLExtension_NV_vdpau_interop : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_vdpau_interop(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVDPAUUnmapSurfacesNV(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces); + void glVDPAUMapSurfacesNV(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces); + void glVDPAUSurfaceAccessNV(GLvdpauSurfaceNV surface, GLenum access); + void glVDPAUGetSurfaceivNV(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); + void glVDPAUUnregisterSurfaceNV(GLvdpauSurfaceNV surface); + void glVDPAUIsSurfaceNV(GLvdpauSurfaceNV surface); + GLvdpauSurfaceNV glVDPAURegisterOutputSurfaceNV(GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); + GLvdpauSurfaceNV glVDPAURegisterVideoSurfaceNV(const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); + void glVDPAUFiniNV(); + void glVDPAUInitNV(const GLvoid *vdpDevice, const GLvoid *getProcAddress); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_vdpau_interop) +}; + +inline void QOpenGLExtension_NV_vdpau_interop::glVDPAUUnmapSurfacesNV(GLsizei numSurface, const GLvdpauSurfaceNV *surfaces) +{ + Q_D(QOpenGLExtension_NV_vdpau_interop); + d->VDPAUUnmapSurfacesNV(numSurface, surfaces); +} + +inline void QOpenGLExtension_NV_vdpau_interop::glVDPAUMapSurfacesNV(GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces) +{ + Q_D(QOpenGLExtension_NV_vdpau_interop); + d->VDPAUMapSurfacesNV(numSurfaces, surfaces); +} + +inline void QOpenGLExtension_NV_vdpau_interop::glVDPAUSurfaceAccessNV(GLvdpauSurfaceNV surface, GLenum access) +{ + Q_D(QOpenGLExtension_NV_vdpau_interop); + d->VDPAUSurfaceAccessNV(surface, access); +} + +inline void QOpenGLExtension_NV_vdpau_interop::glVDPAUGetSurfaceivNV(GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) +{ + Q_D(QOpenGLExtension_NV_vdpau_interop); + d->VDPAUGetSurfaceivNV(surface, pname, bufSize, length, values); +} + +inline void QOpenGLExtension_NV_vdpau_interop::glVDPAUUnregisterSurfaceNV(GLvdpauSurfaceNV surface) +{ + Q_D(QOpenGLExtension_NV_vdpau_interop); + d->VDPAUUnregisterSurfaceNV(surface); +} + +inline void QOpenGLExtension_NV_vdpau_interop::glVDPAUIsSurfaceNV(GLvdpauSurfaceNV surface) +{ + Q_D(QOpenGLExtension_NV_vdpau_interop); + d->VDPAUIsSurfaceNV(surface); +} + +inline GLvdpauSurfaceNV QOpenGLExtension_NV_vdpau_interop::glVDPAURegisterOutputSurfaceNV(GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames) +{ + Q_D(QOpenGLExtension_NV_vdpau_interop); + return d->VDPAURegisterOutputSurfaceNV(vdpSurface, target, numTextureNames, textureNames); +} + +inline GLvdpauSurfaceNV QOpenGLExtension_NV_vdpau_interop::glVDPAURegisterVideoSurfaceNV(const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames) +{ + Q_D(QOpenGLExtension_NV_vdpau_interop); + return d->VDPAURegisterVideoSurfaceNV(vdpSurface, target, numTextureNames, textureNames); +} + +inline void QOpenGLExtension_NV_vdpau_interop::glVDPAUFiniNV() +{ + Q_D(QOpenGLExtension_NV_vdpau_interop); + d->VDPAUFiniNV(); +} + +inline void QOpenGLExtension_NV_vdpau_interop::glVDPAUInitNV(const GLvoid *vdpDevice, const GLvoid *getProcAddress) +{ + Q_D(QOpenGLExtension_NV_vdpau_interop); + d->VDPAUInitNV(vdpDevice, getProcAddress); +} + +class QOpenGLExtension_NV_vertex_array_rangePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexArrayRangeNV)(GLsizei length, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP FlushVertexArrayRangeNV)(); +}; + +class QOpenGLExtension_NV_vertex_array_range : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_vertex_array_range(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexArrayRangeNV(GLsizei length, const GLvoid *pointer); + void glFlushVertexArrayRangeNV(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_vertex_array_range) +}; + +inline void QOpenGLExtension_NV_vertex_array_range::glVertexArrayRangeNV(GLsizei length, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_NV_vertex_array_range); + d->VertexArrayRangeNV(length, pointer); +} + +inline void QOpenGLExtension_NV_vertex_array_range::glFlushVertexArrayRangeNV() +{ + Q_D(QOpenGLExtension_NV_vertex_array_range); + d->FlushVertexArrayRangeNV(); +} + +class QOpenGLExtension_NV_vertex_attrib_integer_64bitPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexAttribLFormatNV)(GLuint index, GLint size, GLenum type, GLsizei stride); + void (QOPENGLF_APIENTRYP GetVertexAttribLui64vNV)(GLuint index, GLenum pname, GLuint64EXT *params); + void (QOPENGLF_APIENTRYP GetVertexAttribLi64vNV)(GLuint index, GLenum pname, GLint64EXT *params); + void (QOPENGLF_APIENTRYP VertexAttribL4ui64vNV)(GLuint index, const GLuint64EXT *v); + void (QOPENGLF_APIENTRYP VertexAttribL3ui64vNV)(GLuint index, const GLuint64EXT *v); + void (QOPENGLF_APIENTRYP VertexAttribL2ui64vNV)(GLuint index, const GLuint64EXT *v); + void (QOPENGLF_APIENTRYP VertexAttribL1ui64vNV)(GLuint index, const GLuint64EXT *v); + void (QOPENGLF_APIENTRYP VertexAttribL4ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + void (QOPENGLF_APIENTRYP VertexAttribL3ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + void (QOPENGLF_APIENTRYP VertexAttribL2ui64NV)(GLuint index, GLuint64EXT x, GLuint64EXT y); + void (QOPENGLF_APIENTRYP VertexAttribL1ui64NV)(GLuint index, GLuint64EXT x); + void (QOPENGLF_APIENTRYP VertexAttribL4i64vNV)(GLuint index, const GLint64EXT *v); + void (QOPENGLF_APIENTRYP VertexAttribL3i64vNV)(GLuint index, const GLint64EXT *v); + void (QOPENGLF_APIENTRYP VertexAttribL2i64vNV)(GLuint index, const GLint64EXT *v); + void (QOPENGLF_APIENTRYP VertexAttribL1i64vNV)(GLuint index, const GLint64EXT *v); + void (QOPENGLF_APIENTRYP VertexAttribL4i64NV)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + void (QOPENGLF_APIENTRYP VertexAttribL3i64NV)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); + void (QOPENGLF_APIENTRYP VertexAttribL2i64NV)(GLuint index, GLint64EXT x, GLint64EXT y); + void (QOPENGLF_APIENTRYP VertexAttribL1i64NV)(GLuint index, GLint64EXT x); +}; + +class QOpenGLExtension_NV_vertex_attrib_integer_64bit : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_vertex_attrib_integer_64bit(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexAttribLFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride); + void glGetVertexAttribLui64vNV(GLuint index, GLenum pname, GLuint64EXT *params); + void glGetVertexAttribLi64vNV(GLuint index, GLenum pname, GLint64EXT *params); + void glVertexAttribL4ui64vNV(GLuint index, const GLuint64EXT *v); + void glVertexAttribL3ui64vNV(GLuint index, const GLuint64EXT *v); + void glVertexAttribL2ui64vNV(GLuint index, const GLuint64EXT *v); + void glVertexAttribL1ui64vNV(GLuint index, const GLuint64EXT *v); + void glVertexAttribL4ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + void glVertexAttribL3ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + void glVertexAttribL2ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y); + void glVertexAttribL1ui64NV(GLuint index, GLuint64EXT x); + void glVertexAttribL4i64vNV(GLuint index, const GLint64EXT *v); + void glVertexAttribL3i64vNV(GLuint index, const GLint64EXT *v); + void glVertexAttribL2i64vNV(GLuint index, const GLint64EXT *v); + void glVertexAttribL1i64vNV(GLuint index, const GLint64EXT *v); + void glVertexAttribL4i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + void glVertexAttribL3i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); + void glVertexAttribL2i64NV(GLuint index, GLint64EXT x, GLint64EXT y); + void glVertexAttribL1i64NV(GLuint index, GLint64EXT x); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_vertex_attrib_integer_64bit) +}; + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribLFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribLFormatNV(index, size, type, stride); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glGetVertexAttribLui64vNV(GLuint index, GLenum pname, GLuint64EXT *params) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->GetVertexAttribLui64vNV(index, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glGetVertexAttribLi64vNV(GLuint index, GLenum pname, GLint64EXT *params) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->GetVertexAttribLi64vNV(index, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL4ui64vNV(GLuint index, const GLuint64EXT *v) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL4ui64vNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL3ui64vNV(GLuint index, const GLuint64EXT *v) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL3ui64vNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL2ui64vNV(GLuint index, const GLuint64EXT *v) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL2ui64vNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL1ui64vNV(GLuint index, const GLuint64EXT *v) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL1ui64vNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL4ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL4ui64NV(index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL3ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL3ui64NV(index, x, y, z); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL2ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL2ui64NV(index, x, y); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL1ui64NV(GLuint index, GLuint64EXT x) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL1ui64NV(index, x); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL4i64vNV(GLuint index, const GLint64EXT *v) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL4i64vNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL3i64vNV(GLuint index, const GLint64EXT *v) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL3i64vNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL2i64vNV(GLuint index, const GLint64EXT *v) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL2i64vNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL1i64vNV(GLuint index, const GLint64EXT *v) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL1i64vNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL4i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL4i64NV(index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL3i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL3i64NV(index, x, y, z); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL2i64NV(GLuint index, GLint64EXT x, GLint64EXT y) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL2i64NV(index, x, y); +} + +inline void QOpenGLExtension_NV_vertex_attrib_integer_64bit::glVertexAttribL1i64NV(GLuint index, GLint64EXT x) +{ + Q_D(QOpenGLExtension_NV_vertex_attrib_integer_64bit); + d->VertexAttribL1i64NV(index, x); +} + +class QOpenGLExtension_NV_vertex_buffer_unified_memoryPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetIntegerui64i_vNV)(GLenum value, GLuint index, GLuint64EXT *result); + void (QOPENGLF_APIENTRYP VertexAttribIFormatNV)(GLuint index, GLint size, GLenum type, GLsizei stride); + void (QOPENGLF_APIENTRYP VertexAttribFormatNV)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); + void (QOPENGLF_APIENTRYP FogCoordFormatNV)(GLenum type, GLsizei stride); + void (QOPENGLF_APIENTRYP SecondaryColorFormatNV)(GLint size, GLenum type, GLsizei stride); + void (QOPENGLF_APIENTRYP EdgeFlagFormatNV)(GLsizei stride); + void (QOPENGLF_APIENTRYP TexCoordFormatNV)(GLint size, GLenum type, GLsizei stride); + void (QOPENGLF_APIENTRYP IndexFormatNV)(GLenum type, GLsizei stride); + void (QOPENGLF_APIENTRYP ColorFormatNV)(GLint size, GLenum type, GLsizei stride); + void (QOPENGLF_APIENTRYP NormalFormatNV)(GLenum type, GLsizei stride); + void (QOPENGLF_APIENTRYP VertexFormatNV)(GLint size, GLenum type, GLsizei stride); + void (QOPENGLF_APIENTRYP BufferAddressRangeNV)(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); +}; + +class QOpenGLExtension_NV_vertex_buffer_unified_memory : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_vertex_buffer_unified_memory(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetIntegerui64i_vNV(GLenum value, GLuint index, GLuint64EXT *result); + void glVertexAttribIFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride); + void glVertexAttribFormatNV(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); + void glFogCoordFormatNV(GLenum type, GLsizei stride); + void glSecondaryColorFormatNV(GLint size, GLenum type, GLsizei stride); + void glEdgeFlagFormatNV(GLsizei stride); + void glTexCoordFormatNV(GLint size, GLenum type, GLsizei stride); + void glIndexFormatNV(GLenum type, GLsizei stride); + void glColorFormatNV(GLint size, GLenum type, GLsizei stride); + void glNormalFormatNV(GLenum type, GLsizei stride); + void glVertexFormatNV(GLint size, GLenum type, GLsizei stride); + void glBufferAddressRangeNV(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_vertex_buffer_unified_memory) +}; + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glGetIntegerui64i_vNV(GLenum value, GLuint index, GLuint64EXT *result) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->GetIntegerui64i_vNV(value, index, result); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glVertexAttribIFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->VertexAttribIFormatNV(index, size, type, stride); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glVertexAttribFormatNV(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->VertexAttribFormatNV(index, size, type, normalized, stride); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glFogCoordFormatNV(GLenum type, GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->FogCoordFormatNV(type, stride); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glSecondaryColorFormatNV(GLint size, GLenum type, GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->SecondaryColorFormatNV(size, type, stride); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glEdgeFlagFormatNV(GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->EdgeFlagFormatNV(stride); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glTexCoordFormatNV(GLint size, GLenum type, GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->TexCoordFormatNV(size, type, stride); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glIndexFormatNV(GLenum type, GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->IndexFormatNV(type, stride); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glColorFormatNV(GLint size, GLenum type, GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->ColorFormatNV(size, type, stride); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glNormalFormatNV(GLenum type, GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->NormalFormatNV(type, stride); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glVertexFormatNV(GLint size, GLenum type, GLsizei stride) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->VertexFormatNV(size, type, stride); +} + +inline void QOpenGLExtension_NV_vertex_buffer_unified_memory::glBufferAddressRangeNV(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length) +{ + Q_D(QOpenGLExtension_NV_vertex_buffer_unified_memory); + d->BufferAddressRangeNV(pname, index, address, length); +} + +class QOpenGLExtension_NV_vertex_programPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei count, const GLubyte *v); + void (QOPENGLF_APIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei count, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei count, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei count, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei count, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei count, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei count, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei count, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei count, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei count, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei count, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei count, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei count, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte *v); + void (QOPENGLF_APIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void (QOPENGLF_APIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void (QOPENGLF_APIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); + void (QOPENGLF_APIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void (QOPENGLF_APIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); + void (QOPENGLF_APIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); + void (QOPENGLF_APIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); + void (QOPENGLF_APIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); + void (QOPENGLF_APIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); + void (QOPENGLF_APIENTRYP VertexAttribPointerNV)(GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); + void (QOPENGLF_APIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint *programs); + void (QOPENGLF_APIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei count, const GLfloat *v); + void (QOPENGLF_APIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei count, const GLdouble *v); + void (QOPENGLF_APIENTRYP ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat *v); + void (QOPENGLF_APIENTRYP ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble *v); + void (QOPENGLF_APIENTRYP ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void (QOPENGLF_APIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte *program); + GLboolean (QOPENGLF_APIENTRYP IsProgramNV)(GLuint id); + void (QOPENGLF_APIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid* *pointer); + void (QOPENGLF_APIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte *program); + void (QOPENGLF_APIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP GenProgramsNV)(GLsizei n, GLuint *programs); + void (QOPENGLF_APIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat *params); + void (QOPENGLF_APIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint *programs); + void (QOPENGLF_APIENTRYP BindProgramNV)(GLenum target, GLuint id); + GLboolean (QOPENGLF_APIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint *programs, GLboolean *residences); +}; + +class QOpenGLExtension_NV_vertex_program : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_vertex_program(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVertexAttribs4ubvNV(GLuint index, GLsizei count, const GLubyte *v); + void glVertexAttribs4svNV(GLuint index, GLsizei count, const GLshort *v); + void glVertexAttribs4fvNV(GLuint index, GLsizei count, const GLfloat *v); + void glVertexAttribs4dvNV(GLuint index, GLsizei count, const GLdouble *v); + void glVertexAttribs3svNV(GLuint index, GLsizei count, const GLshort *v); + void glVertexAttribs3fvNV(GLuint index, GLsizei count, const GLfloat *v); + void glVertexAttribs3dvNV(GLuint index, GLsizei count, const GLdouble *v); + void glVertexAttribs2svNV(GLuint index, GLsizei count, const GLshort *v); + void glVertexAttribs2fvNV(GLuint index, GLsizei count, const GLfloat *v); + void glVertexAttribs2dvNV(GLuint index, GLsizei count, const GLdouble *v); + void glVertexAttribs1svNV(GLuint index, GLsizei count, const GLshort *v); + void glVertexAttribs1fvNV(GLuint index, GLsizei count, const GLfloat *v); + void glVertexAttribs1dvNV(GLuint index, GLsizei count, const GLdouble *v); + void glVertexAttrib4ubvNV(GLuint index, const GLubyte *v); + void glVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + void glVertexAttrib4svNV(GLuint index, const GLshort *v); + void glVertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + void glVertexAttrib4fvNV(GLuint index, const GLfloat *v); + void glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glVertexAttrib4dvNV(GLuint index, const GLdouble *v); + void glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glVertexAttrib3svNV(GLuint index, const GLshort *v); + void glVertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z); + void glVertexAttrib3fvNV(GLuint index, const GLfloat *v); + void glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z); + void glVertexAttrib3dvNV(GLuint index, const GLdouble *v); + void glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z); + void glVertexAttrib2svNV(GLuint index, const GLshort *v); + void glVertexAttrib2sNV(GLuint index, GLshort x, GLshort y); + void glVertexAttrib2fvNV(GLuint index, const GLfloat *v); + void glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y); + void glVertexAttrib2dvNV(GLuint index, const GLdouble *v); + void glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y); + void glVertexAttrib1svNV(GLuint index, const GLshort *v); + void glVertexAttrib1sNV(GLuint index, GLshort x); + void glVertexAttrib1fvNV(GLuint index, const GLfloat *v); + void glVertexAttrib1fNV(GLuint index, GLfloat x); + void glVertexAttrib1dvNV(GLuint index, const GLdouble *v); + void glVertexAttrib1dNV(GLuint index, GLdouble x); + void glVertexAttribPointerNV(GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); + void glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform); + void glRequestResidentProgramsNV(GLsizei n, const GLuint *programs); + void glProgramParameters4fvNV(GLenum target, GLuint index, GLsizei count, const GLfloat *v); + void glProgramParameters4dvNV(GLenum target, GLuint index, GLsizei count, const GLdouble *v); + void glProgramParameter4fvNV(GLenum target, GLuint index, const GLfloat *v); + void glProgramParameter4fNV(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble *v); + void glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + void glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte *program); + GLboolean glIsProgramNV(GLuint id); + void glGetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid* *pointer); + void glGetVertexAttribivNV(GLuint index, GLenum pname, GLint *params); + void glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat *params); + void glGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble *params); + void glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint *params); + void glGetProgramStringNV(GLuint id, GLenum pname, GLubyte *program); + void glGetProgramivNV(GLuint id, GLenum pname, GLint *params); + void glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params); + void glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble *params); + void glGenProgramsNV(GLsizei n, GLuint *programs); + void glExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params); + void glDeleteProgramsNV(GLsizei n, const GLuint *programs); + void glBindProgramNV(GLenum target, GLuint id); + GLboolean glAreProgramsResidentNV(GLsizei n, const GLuint *programs, GLboolean *residences); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_vertex_program) +}; + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs4ubvNV(GLuint index, GLsizei count, const GLubyte *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs4ubvNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs4svNV(GLuint index, GLsizei count, const GLshort *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs4svNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs4fvNV(GLuint index, GLsizei count, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs4fvNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs4dvNV(GLuint index, GLsizei count, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs4dvNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs3svNV(GLuint index, GLsizei count, const GLshort *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs3svNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs3fvNV(GLuint index, GLsizei count, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs3fvNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs3dvNV(GLuint index, GLsizei count, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs3dvNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs2svNV(GLuint index, GLsizei count, const GLshort *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs2svNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs2fvNV(GLuint index, GLsizei count, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs2fvNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs2dvNV(GLuint index, GLsizei count, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs2dvNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs1svNV(GLuint index, GLsizei count, const GLshort *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs1svNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs1fvNV(GLuint index, GLsizei count, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs1fvNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribs1dvNV(GLuint index, GLsizei count, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribs1dvNV(index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib4ubvNV(GLuint index, const GLubyte *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib4ubvNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib4ubNV(index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib4svNV(GLuint index, const GLshort *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib4svNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib4sNV(index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib4fvNV(GLuint index, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib4fvNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib4fNV(index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib4dvNV(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib4dvNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib4dNV(index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib3svNV(GLuint index, const GLshort *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib3svNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib3sNV(index, x, y, z); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib3fvNV(GLuint index, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib3fvNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib3fNV(index, x, y, z); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib3dvNV(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib3dvNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib3dNV(index, x, y, z); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib2svNV(GLuint index, const GLshort *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib2svNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib2sNV(GLuint index, GLshort x, GLshort y) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib2sNV(index, x, y); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib2fvNV(GLuint index, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib2fvNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib2fNV(index, x, y); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib2dvNV(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib2dvNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib2dNV(index, x, y); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib1svNV(GLuint index, const GLshort *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib1svNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib1sNV(GLuint index, GLshort x) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib1sNV(index, x); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib1fvNV(GLuint index, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib1fvNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib1fNV(GLuint index, GLfloat x) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib1fNV(index, x); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib1dvNV(GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib1dvNV(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttrib1dNV(GLuint index, GLdouble x) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttrib1dNV(index, x); +} + +inline void QOpenGLExtension_NV_vertex_program::glVertexAttribPointerNV(GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->VertexAttribPointerNV(index, fsize, type, stride, pointer); +} + +inline void QOpenGLExtension_NV_vertex_program::glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->TrackMatrixNV(target, address, matrix, transform); +} + +inline void QOpenGLExtension_NV_vertex_program::glRequestResidentProgramsNV(GLsizei n, const GLuint *programs) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->RequestResidentProgramsNV(n, programs); +} + +inline void QOpenGLExtension_NV_vertex_program::glProgramParameters4fvNV(GLenum target, GLuint index, GLsizei count, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->ProgramParameters4fvNV(target, index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glProgramParameters4dvNV(GLenum target, GLuint index, GLsizei count, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->ProgramParameters4dvNV(target, index, count, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glProgramParameter4fvNV(GLenum target, GLuint index, const GLfloat *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->ProgramParameter4fvNV(target, index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glProgramParameter4fNV(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->ProgramParameter4fNV(target, index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_vertex_program::glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->ProgramParameter4dvNV(target, index, v); +} + +inline void QOpenGLExtension_NV_vertex_program::glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->ProgramParameter4dNV(target, index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_vertex_program::glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte *program) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->LoadProgramNV(target, id, len, program); +} + +inline GLboolean QOpenGLExtension_NV_vertex_program::glIsProgramNV(GLuint id) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + return d->IsProgramNV(id); +} + +inline void QOpenGLExtension_NV_vertex_program::glGetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid* *pointer) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->GetVertexAttribPointervNV(index, pname, pointer); +} + +inline void QOpenGLExtension_NV_vertex_program::glGetVertexAttribivNV(GLuint index, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->GetVertexAttribivNV(index, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_program::glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->GetVertexAttribfvNV(index, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_program::glGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble *params) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->GetVertexAttribdvNV(index, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_program::glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->GetTrackMatrixivNV(target, address, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_program::glGetProgramStringNV(GLuint id, GLenum pname, GLubyte *program) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->GetProgramStringNV(id, pname, program); +} + +inline void QOpenGLExtension_NV_vertex_program::glGetProgramivNV(GLuint id, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->GetProgramivNV(id, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_program::glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->GetProgramParameterfvNV(target, index, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_program::glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble *params) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->GetProgramParameterdvNV(target, index, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_program::glGenProgramsNV(GLsizei n, GLuint *programs) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->GenProgramsNV(n, programs); +} + +inline void QOpenGLExtension_NV_vertex_program::glExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->ExecuteProgramNV(target, id, params); +} + +inline void QOpenGLExtension_NV_vertex_program::glDeleteProgramsNV(GLsizei n, const GLuint *programs) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->DeleteProgramsNV(n, programs); +} + +inline void QOpenGLExtension_NV_vertex_program::glBindProgramNV(GLenum target, GLuint id) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + d->BindProgramNV(target, id); +} + +inline GLboolean QOpenGLExtension_NV_vertex_program::glAreProgramsResidentNV(GLsizei n, const GLuint *programs, GLboolean *residences) +{ + Q_D(QOpenGLExtension_NV_vertex_program); + return d->AreProgramsResidentNV(n, programs, residences); +} + +class QOpenGLExtension_NV_vertex_program4Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void (QOPENGLF_APIENTRYP VertexAttribI4usvEXT)(GLuint index, const GLushort *v); + void (QOPENGLF_APIENTRYP VertexAttribI4ubvEXT)(GLuint index, const GLubyte *v); + void (QOPENGLF_APIENTRYP VertexAttribI4svEXT)(GLuint index, const GLshort *v); + void (QOPENGLF_APIENTRYP VertexAttribI4bvEXT)(GLuint index, const GLbyte *v); + void (QOPENGLF_APIENTRYP VertexAttribI4uivEXT)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttribI3uivEXT)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttribI2uivEXT)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttribI1uivEXT)(GLuint index, const GLuint *v); + void (QOPENGLF_APIENTRYP VertexAttribI4ivEXT)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttribI3ivEXT)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttribI2ivEXT)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttribI1ivEXT)(GLuint index, const GLint *v); + void (QOPENGLF_APIENTRYP VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void (QOPENGLF_APIENTRYP VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); + void (QOPENGLF_APIENTRYP VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); + void (QOPENGLF_APIENTRYP VertexAttribI1uiEXT)(GLuint index, GLuint x); + void (QOPENGLF_APIENTRYP VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); + void (QOPENGLF_APIENTRYP VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); + void (QOPENGLF_APIENTRYP VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); + void (QOPENGLF_APIENTRYP VertexAttribI1iEXT)(GLuint index, GLint x); +}; + +class QOpenGLExtension_NV_vertex_program4 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_vertex_program4(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetVertexAttribIuivEXT(GLuint index, GLenum pname, GLuint *params); + void glGetVertexAttribIivEXT(GLuint index, GLenum pname, GLint *params); + void glVertexAttribIPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); + void glVertexAttribI4usvEXT(GLuint index, const GLushort *v); + void glVertexAttribI4ubvEXT(GLuint index, const GLubyte *v); + void glVertexAttribI4svEXT(GLuint index, const GLshort *v); + void glVertexAttribI4bvEXT(GLuint index, const GLbyte *v); + void glVertexAttribI4uivEXT(GLuint index, const GLuint *v); + void glVertexAttribI3uivEXT(GLuint index, const GLuint *v); + void glVertexAttribI2uivEXT(GLuint index, const GLuint *v); + void glVertexAttribI1uivEXT(GLuint index, const GLuint *v); + void glVertexAttribI4ivEXT(GLuint index, const GLint *v); + void glVertexAttribI3ivEXT(GLuint index, const GLint *v); + void glVertexAttribI2ivEXT(GLuint index, const GLint *v); + void glVertexAttribI1ivEXT(GLuint index, const GLint *v); + void glVertexAttribI4uiEXT(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + void glVertexAttribI3uiEXT(GLuint index, GLuint x, GLuint y, GLuint z); + void glVertexAttribI2uiEXT(GLuint index, GLuint x, GLuint y); + void glVertexAttribI1uiEXT(GLuint index, GLuint x); + void glVertexAttribI4iEXT(GLuint index, GLint x, GLint y, GLint z, GLint w); + void glVertexAttribI3iEXT(GLuint index, GLint x, GLint y, GLint z); + void glVertexAttribI2iEXT(GLuint index, GLint x, GLint y); + void glVertexAttribI1iEXT(GLuint index, GLint x); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_vertex_program4) +}; + +inline void QOpenGLExtension_NV_vertex_program4::glGetVertexAttribIuivEXT(GLuint index, GLenum pname, GLuint *params) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->GetVertexAttribIuivEXT(index, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_program4::glGetVertexAttribIivEXT(GLuint index, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->GetVertexAttribIivEXT(index, pname, params); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribIPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribIPointerEXT(index, size, type, stride, pointer); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI4usvEXT(GLuint index, const GLushort *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI4usvEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI4ubvEXT(GLuint index, const GLubyte *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI4ubvEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI4svEXT(GLuint index, const GLshort *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI4svEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI4bvEXT(GLuint index, const GLbyte *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI4bvEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI4uivEXT(GLuint index, const GLuint *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI4uivEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI3uivEXT(GLuint index, const GLuint *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI3uivEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI2uivEXT(GLuint index, const GLuint *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI2uivEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI1uivEXT(GLuint index, const GLuint *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI1uivEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI4ivEXT(GLuint index, const GLint *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI4ivEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI3ivEXT(GLuint index, const GLint *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI3ivEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI2ivEXT(GLuint index, const GLint *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI2ivEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI1ivEXT(GLuint index, const GLint *v) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI1ivEXT(index, v); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI4uiEXT(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI4uiEXT(index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI3uiEXT(GLuint index, GLuint x, GLuint y, GLuint z) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI3uiEXT(index, x, y, z); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI2uiEXT(GLuint index, GLuint x, GLuint y) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI2uiEXT(index, x, y); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI1uiEXT(GLuint index, GLuint x) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI1uiEXT(index, x); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI4iEXT(GLuint index, GLint x, GLint y, GLint z, GLint w) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI4iEXT(index, x, y, z, w); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI3iEXT(GLuint index, GLint x, GLint y, GLint z) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI3iEXT(index, x, y, z); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI2iEXT(GLuint index, GLint x, GLint y) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI2iEXT(index, x, y); +} + +inline void QOpenGLExtension_NV_vertex_program4::glVertexAttribI1iEXT(GLuint index, GLint x) +{ + Q_D(QOpenGLExtension_NV_vertex_program4); + d->VertexAttribI1iEXT(index, x); +} + +class QOpenGLExtension_NV_video_capturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP VideoCaptureStreamParameterdvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); + void (QOPENGLF_APIENTRYP VideoCaptureStreamParameterfvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP VideoCaptureStreamParameterivNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); + GLenum (QOPENGLF_APIENTRYP VideoCaptureNV)(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); + void (QOPENGLF_APIENTRYP GetVideoCaptureStreamdvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); + void (QOPENGLF_APIENTRYP GetVideoCaptureStreamfvNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetVideoCaptureStreamivNV)(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetVideoCaptureivNV)(GLuint video_capture_slot, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP EndVideoCaptureNV)(GLuint video_capture_slot); + void (QOPENGLF_APIENTRYP BindVideoCaptureStreamTextureNV)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); + void (QOPENGLF_APIENTRYP BindVideoCaptureStreamBufferNV)(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); + void (QOPENGLF_APIENTRYP BeginVideoCaptureNV)(GLuint video_capture_slot); +}; + +class QOpenGLExtension_NV_video_capture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_video_capture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glVideoCaptureStreamParameterdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params); + void glVideoCaptureStreamParameterfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params); + void glVideoCaptureStreamParameterivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params); + GLenum glVideoCaptureNV(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time); + void glGetVideoCaptureStreamdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params); + void glGetVideoCaptureStreamfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params); + void glGetVideoCaptureStreamivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params); + void glGetVideoCaptureivNV(GLuint video_capture_slot, GLenum pname, GLint *params); + void glEndVideoCaptureNV(GLuint video_capture_slot); + void glBindVideoCaptureStreamTextureNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); + void glBindVideoCaptureStreamBufferNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); + void glBeginVideoCaptureNV(GLuint video_capture_slot); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_video_capture) +}; + +inline void QOpenGLExtension_NV_video_capture::glVideoCaptureStreamParameterdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->VideoCaptureStreamParameterdvNV(video_capture_slot, stream, pname, params); +} + +inline void QOpenGLExtension_NV_video_capture::glVideoCaptureStreamParameterfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->VideoCaptureStreamParameterfvNV(video_capture_slot, stream, pname, params); +} + +inline void QOpenGLExtension_NV_video_capture::glVideoCaptureStreamParameterivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->VideoCaptureStreamParameterivNV(video_capture_slot, stream, pname, params); +} + +inline GLenum QOpenGLExtension_NV_video_capture::glVideoCaptureNV(GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time) +{ + Q_D(QOpenGLExtension_NV_video_capture); + return d->VideoCaptureNV(video_capture_slot, sequence_num, capture_time); +} + +inline void QOpenGLExtension_NV_video_capture::glGetVideoCaptureStreamdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->GetVideoCaptureStreamdvNV(video_capture_slot, stream, pname, params); +} + +inline void QOpenGLExtension_NV_video_capture::glGetVideoCaptureStreamfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->GetVideoCaptureStreamfvNV(video_capture_slot, stream, pname, params); +} + +inline void QOpenGLExtension_NV_video_capture::glGetVideoCaptureStreamivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->GetVideoCaptureStreamivNV(video_capture_slot, stream, pname, params); +} + +inline void QOpenGLExtension_NV_video_capture::glGetVideoCaptureivNV(GLuint video_capture_slot, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->GetVideoCaptureivNV(video_capture_slot, pname, params); +} + +inline void QOpenGLExtension_NV_video_capture::glEndVideoCaptureNV(GLuint video_capture_slot) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->EndVideoCaptureNV(video_capture_slot); +} + +inline void QOpenGLExtension_NV_video_capture::glBindVideoCaptureStreamTextureNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->BindVideoCaptureStreamTextureNV(video_capture_slot, stream, frame_region, target, texture); +} + +inline void QOpenGLExtension_NV_video_capture::glBindVideoCaptureStreamBufferNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->BindVideoCaptureStreamBufferNV(video_capture_slot, stream, frame_region, offset); +} + +inline void QOpenGLExtension_NV_video_capture::glBeginVideoCaptureNV(GLuint video_capture_slot) +{ + Q_D(QOpenGLExtension_NV_video_capture); + d->BeginVideoCaptureNV(video_capture_slot); +} + +class QOpenGLExtension_PGI_misc_hintsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP HintPGI)(GLenum target, GLint mode); +}; + +class QOpenGLExtension_PGI_misc_hints : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_PGI_misc_hints(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glHintPGI(GLenum target, GLint mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_PGI_misc_hints) +}; + +inline void QOpenGLExtension_PGI_misc_hints::glHintPGI(GLenum target, GLint mode) +{ + Q_D(QOpenGLExtension_PGI_misc_hints); + d->HintPGI(target, mode); +} + +class QOpenGLExtension_SGIS_detail_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetDetailTexFuncSGIS)(GLenum target, GLfloat *points); + void (QOPENGLF_APIENTRYP DetailTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat *points); +}; + +class QOpenGLExtension_SGIS_detail_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIS_detail_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetDetailTexFuncSGIS(GLenum target, GLfloat *points); + void glDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIS_detail_texture) +}; + +inline void QOpenGLExtension_SGIS_detail_texture::glGetDetailTexFuncSGIS(GLenum target, GLfloat *points) +{ + Q_D(QOpenGLExtension_SGIS_detail_texture); + d->GetDetailTexFuncSGIS(target, points); +} + +inline void QOpenGLExtension_SGIS_detail_texture::glDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points) +{ + Q_D(QOpenGLExtension_SGIS_detail_texture); + d->DetailTexFuncSGIS(target, n, points); +} + +class QOpenGLExtension_SGIS_fog_functionPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetFogFuncSGIS)(GLfloat *points); + void (QOPENGLF_APIENTRYP FogFuncSGIS)(GLsizei n, const GLfloat *points); +}; + +class QOpenGLExtension_SGIS_fog_function : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIS_fog_function(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetFogFuncSGIS(GLfloat *points); + void glFogFuncSGIS(GLsizei n, const GLfloat *points); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIS_fog_function) +}; + +inline void QOpenGLExtension_SGIS_fog_function::glGetFogFuncSGIS(GLfloat *points) +{ + Q_D(QOpenGLExtension_SGIS_fog_function); + d->GetFogFuncSGIS(points); +} + +inline void QOpenGLExtension_SGIS_fog_function::glFogFuncSGIS(GLsizei n, const GLfloat *points) +{ + Q_D(QOpenGLExtension_SGIS_fog_function); + d->FogFuncSGIS(n, points); +} + +class QOpenGLExtension_SGIS_multisamplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP SamplePatternSGIS)(GLenum pattern); + void (QOPENGLF_APIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); +}; + +class QOpenGLExtension_SGIS_multisample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIS_multisample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glSamplePatternSGIS(GLenum pattern); + void glSampleMaskSGIS(GLclampf value, GLboolean invert); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIS_multisample) +}; + +inline void QOpenGLExtension_SGIS_multisample::glSamplePatternSGIS(GLenum pattern) +{ + Q_D(QOpenGLExtension_SGIS_multisample); + d->SamplePatternSGIS(pattern); +} + +inline void QOpenGLExtension_SGIS_multisample::glSampleMaskSGIS(GLclampf value, GLboolean invert) +{ + Q_D(QOpenGLExtension_SGIS_multisample); + d->SampleMaskSGIS(value, invert); +} + +class QOpenGLExtension_SGIS_pixel_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetPixelTexGenParameterivSGIS)(GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP PixelTexGenParameterivSGIS)(GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP PixelTexGenParameteriSGIS)(GLenum pname, GLint param); +}; + +class QOpenGLExtension_SGIS_pixel_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIS_pixel_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetPixelTexGenParameterfvSGIS(GLenum pname, GLfloat *params); + void glGetPixelTexGenParameterivSGIS(GLenum pname, GLint *params); + void glPixelTexGenParameterfvSGIS(GLenum pname, const GLfloat *params); + void glPixelTexGenParameterfSGIS(GLenum pname, GLfloat param); + void glPixelTexGenParameterivSGIS(GLenum pname, const GLint *params); + void glPixelTexGenParameteriSGIS(GLenum pname, GLint param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIS_pixel_texture) +}; + +inline void QOpenGLExtension_SGIS_pixel_texture::glGetPixelTexGenParameterfvSGIS(GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIS_pixel_texture); + d->GetPixelTexGenParameterfvSGIS(pname, params); +} + +inline void QOpenGLExtension_SGIS_pixel_texture::glGetPixelTexGenParameterivSGIS(GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_SGIS_pixel_texture); + d->GetPixelTexGenParameterivSGIS(pname, params); +} + +inline void QOpenGLExtension_SGIS_pixel_texture::glPixelTexGenParameterfvSGIS(GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIS_pixel_texture); + d->PixelTexGenParameterfvSGIS(pname, params); +} + +inline void QOpenGLExtension_SGIS_pixel_texture::glPixelTexGenParameterfSGIS(GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_SGIS_pixel_texture); + d->PixelTexGenParameterfSGIS(pname, param); +} + +inline void QOpenGLExtension_SGIS_pixel_texture::glPixelTexGenParameterivSGIS(GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_SGIS_pixel_texture); + d->PixelTexGenParameterivSGIS(pname, params); +} + +inline void QOpenGLExtension_SGIS_pixel_texture::glPixelTexGenParameteriSGIS(GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_SGIS_pixel_texture); + d->PixelTexGenParameteriSGIS(pname, param); +} + +class QOpenGLExtension_SGIS_point_parametersPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP PointParameterfvSGIS)(GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP PointParameterfSGIS)(GLenum pname, GLfloat param); +}; + +class QOpenGLExtension_SGIS_point_parameters : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIS_point_parameters(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glPointParameterfvSGIS(GLenum pname, const GLfloat *params); + void glPointParameterfSGIS(GLenum pname, GLfloat param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIS_point_parameters) +}; + +inline void QOpenGLExtension_SGIS_point_parameters::glPointParameterfvSGIS(GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIS_point_parameters); + d->PointParameterfvSGIS(pname, params); +} + +inline void QOpenGLExtension_SGIS_point_parameters::glPointParameterfSGIS(GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_SGIS_point_parameters); + d->PointParameterfSGIS(pname, param); +} + +class QOpenGLExtension_SGIS_sharpen_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetSharpenTexFuncSGIS)(GLenum target, GLfloat *points); + void (QOPENGLF_APIENTRYP SharpenTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat *points); +}; + +class QOpenGLExtension_SGIS_sharpen_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIS_sharpen_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetSharpenTexFuncSGIS(GLenum target, GLfloat *points); + void glSharpenTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIS_sharpen_texture) +}; + +inline void QOpenGLExtension_SGIS_sharpen_texture::glGetSharpenTexFuncSGIS(GLenum target, GLfloat *points) +{ + Q_D(QOpenGLExtension_SGIS_sharpen_texture); + d->GetSharpenTexFuncSGIS(target, points); +} + +inline void QOpenGLExtension_SGIS_sharpen_texture::glSharpenTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points) +{ + Q_D(QOpenGLExtension_SGIS_sharpen_texture); + d->SharpenTexFuncSGIS(target, n, points); +} + +class QOpenGLExtension_SGIS_texture4DPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexSubImage4DSGIS)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); + void (QOPENGLF_APIENTRYP TexImage4DSGIS)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +}; + +class QOpenGLExtension_SGIS_texture4D : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIS_texture4D(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexSubImage4DSGIS(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); + void glTexImage4DSGIS(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIS_texture4D) +}; + +inline void QOpenGLExtension_SGIS_texture4D::glTexSubImage4DSGIS(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_SGIS_texture4D); + d->TexSubImage4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels); +} + +inline void QOpenGLExtension_SGIS_texture4D::glTexImage4DSGIS(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels) +{ + Q_D(QOpenGLExtension_SGIS_texture4D); + d->TexImage4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, pixels); +} + +class QOpenGLExtension_SGIS_texture_color_maskPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TextureColorMaskSGIS)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +}; + +class QOpenGLExtension_SGIS_texture_color_mask : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIS_texture_color_mask(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTextureColorMaskSGIS(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIS_texture_color_mask) +}; + +inline void QOpenGLExtension_SGIS_texture_color_mask::glTextureColorMaskSGIS(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) +{ + Q_D(QOpenGLExtension_SGIS_texture_color_mask); + d->TextureColorMaskSGIS(red, green, blue, alpha); +} + +class QOpenGLExtension_SGIS_texture_filter4Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); + void (QOPENGLF_APIENTRYP GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat *weights); +}; + +class QOpenGLExtension_SGIS_texture_filter4 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIS_texture_filter4(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); + void glGetTexFilterFuncSGIS(GLenum target, GLenum filter, GLfloat *weights); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIS_texture_filter4) +}; + +inline void QOpenGLExtension_SGIS_texture_filter4::glTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, const GLfloat *weights) +{ + Q_D(QOpenGLExtension_SGIS_texture_filter4); + d->TexFilterFuncSGIS(target, filter, n, weights); +} + +inline void QOpenGLExtension_SGIS_texture_filter4::glGetTexFilterFuncSGIS(GLenum target, GLenum filter, GLfloat *weights) +{ + Q_D(QOpenGLExtension_SGIS_texture_filter4); + d->GetTexFilterFuncSGIS(target, filter, weights); +} + +class QOpenGLExtension_SGIX_asyncPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLboolean (QOPENGLF_APIENTRYP IsAsyncMarkerSGIX)(GLuint marker); + void (QOPENGLF_APIENTRYP DeleteAsyncMarkersSGIX)(GLuint marker, GLsizei range); + GLuint (QOPENGLF_APIENTRYP GenAsyncMarkersSGIX)(GLsizei range); + GLint (QOPENGLF_APIENTRYP PollAsyncSGIX)(GLuint *markerp); + GLint (QOPENGLF_APIENTRYP FinishAsyncSGIX)(GLuint *markerp); + void (QOPENGLF_APIENTRYP AsyncMarkerSGIX)(GLuint marker); +}; + +class QOpenGLExtension_SGIX_async : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_async(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLboolean glIsAsyncMarkerSGIX(GLuint marker); + void glDeleteAsyncMarkersSGIX(GLuint marker, GLsizei range); + GLuint glGenAsyncMarkersSGIX(GLsizei range); + GLint glPollAsyncSGIX(GLuint *markerp); + GLint glFinishAsyncSGIX(GLuint *markerp); + void glAsyncMarkerSGIX(GLuint marker); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_async) +}; + +inline GLboolean QOpenGLExtension_SGIX_async::glIsAsyncMarkerSGIX(GLuint marker) +{ + Q_D(QOpenGLExtension_SGIX_async); + return d->IsAsyncMarkerSGIX(marker); +} + +inline void QOpenGLExtension_SGIX_async::glDeleteAsyncMarkersSGIX(GLuint marker, GLsizei range) +{ + Q_D(QOpenGLExtension_SGIX_async); + d->DeleteAsyncMarkersSGIX(marker, range); +} + +inline GLuint QOpenGLExtension_SGIX_async::glGenAsyncMarkersSGIX(GLsizei range) +{ + Q_D(QOpenGLExtension_SGIX_async); + return d->GenAsyncMarkersSGIX(range); +} + +inline GLint QOpenGLExtension_SGIX_async::glPollAsyncSGIX(GLuint *markerp) +{ + Q_D(QOpenGLExtension_SGIX_async); + return d->PollAsyncSGIX(markerp); +} + +inline GLint QOpenGLExtension_SGIX_async::glFinishAsyncSGIX(GLuint *markerp) +{ + Q_D(QOpenGLExtension_SGIX_async); + return d->FinishAsyncSGIX(markerp); +} + +inline void QOpenGLExtension_SGIX_async::glAsyncMarkerSGIX(GLuint marker) +{ + Q_D(QOpenGLExtension_SGIX_async); + d->AsyncMarkerSGIX(marker); +} + +class QOpenGLExtension_SGIX_flush_rasterPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FlushRasterSGIX)(); +}; + +class QOpenGLExtension_SGIX_flush_raster : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_flush_raster(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFlushRasterSGIX(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_flush_raster) +}; + +inline void QOpenGLExtension_SGIX_flush_raster::glFlushRasterSGIX() +{ + Q_D(QOpenGLExtension_SGIX_flush_raster); + d->FlushRasterSGIX(); +} + +class QOpenGLExtension_SGIX_fragment_lightingPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP LightEnviSGIX)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP GetFragmentMaterialivSGIX)(GLenum face, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetFragmentMaterialfvSGIX)(GLenum face, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetFragmentLightivSGIX)(GLenum light, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetFragmentLightfvSGIX)(GLenum light, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP FragmentMaterialivSGIX)(GLenum face, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP FragmentMaterialiSGIX)(GLenum face, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP FragmentMaterialfvSGIX)(GLenum face, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP FragmentMaterialfSGIX)(GLenum face, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP FragmentLightModelivSGIX)(GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP FragmentLightModeliSGIX)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP FragmentLightModelfvSGIX)(GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP FragmentLightModelfSGIX)(GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP FragmentLightivSGIX)(GLenum light, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP FragmentLightiSGIX)(GLenum light, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP FragmentLightfvSGIX)(GLenum light, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP FragmentLightfSGIX)(GLenum light, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP FragmentColorMaterialSGIX)(GLenum face, GLenum mode); +}; + +class QOpenGLExtension_SGIX_fragment_lighting : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_fragment_lighting(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glLightEnviSGIX(GLenum pname, GLint param); + void glGetFragmentMaterialivSGIX(GLenum face, GLenum pname, GLint *params); + void glGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, GLfloat *params); + void glGetFragmentLightivSGIX(GLenum light, GLenum pname, GLint *params); + void glGetFragmentLightfvSGIX(GLenum light, GLenum pname, GLfloat *params); + void glFragmentMaterialivSGIX(GLenum face, GLenum pname, const GLint *params); + void glFragmentMaterialiSGIX(GLenum face, GLenum pname, GLint param); + void glFragmentMaterialfvSGIX(GLenum face, GLenum pname, const GLfloat *params); + void glFragmentMaterialfSGIX(GLenum face, GLenum pname, GLfloat param); + void glFragmentLightModelivSGIX(GLenum pname, const GLint *params); + void glFragmentLightModeliSGIX(GLenum pname, GLint param); + void glFragmentLightModelfvSGIX(GLenum pname, const GLfloat *params); + void glFragmentLightModelfSGIX(GLenum pname, GLfloat param); + void glFragmentLightivSGIX(GLenum light, GLenum pname, const GLint *params); + void glFragmentLightiSGIX(GLenum light, GLenum pname, GLint param); + void glFragmentLightfvSGIX(GLenum light, GLenum pname, const GLfloat *params); + void glFragmentLightfSGIX(GLenum light, GLenum pname, GLfloat param); + void glFragmentColorMaterialSGIX(GLenum face, GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_fragment_lighting) +}; + +inline void QOpenGLExtension_SGIX_fragment_lighting::glLightEnviSGIX(GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->LightEnviSGIX(pname, param); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glGetFragmentMaterialivSGIX(GLenum face, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->GetFragmentMaterialivSGIX(face, pname, params); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->GetFragmentMaterialfvSGIX(face, pname, params); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glGetFragmentLightivSGIX(GLenum light, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->GetFragmentLightivSGIX(light, pname, params); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glGetFragmentLightfvSGIX(GLenum light, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->GetFragmentLightfvSGIX(light, pname, params); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentMaterialivSGIX(GLenum face, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentMaterialivSGIX(face, pname, params); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentMaterialiSGIX(GLenum face, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentMaterialiSGIX(face, pname, param); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentMaterialfvSGIX(GLenum face, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentMaterialfvSGIX(face, pname, params); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentMaterialfSGIX(GLenum face, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentMaterialfSGIX(face, pname, param); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentLightModelivSGIX(GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentLightModelivSGIX(pname, params); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentLightModeliSGIX(GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentLightModeliSGIX(pname, param); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentLightModelfvSGIX(GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentLightModelfvSGIX(pname, params); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentLightModelfSGIX(GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentLightModelfSGIX(pname, param); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentLightivSGIX(GLenum light, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentLightivSGIX(light, pname, params); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentLightiSGIX(GLenum light, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentLightiSGIX(light, pname, param); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentLightfvSGIX(GLenum light, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentLightfvSGIX(light, pname, params); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentLightfSGIX(GLenum light, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentLightfSGIX(light, pname, param); +} + +inline void QOpenGLExtension_SGIX_fragment_lighting::glFragmentColorMaterialSGIX(GLenum face, GLenum mode) +{ + Q_D(QOpenGLExtension_SGIX_fragment_lighting); + d->FragmentColorMaterialSGIX(face, mode); +} + +class QOpenGLExtension_SGIX_framezoomPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FrameZoomSGIX)(GLint factor); +}; + +class QOpenGLExtension_SGIX_framezoom : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_framezoom(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFrameZoomSGIX(GLint factor); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_framezoom) +}; + +inline void QOpenGLExtension_SGIX_framezoom::glFrameZoomSGIX(GLint factor) +{ + Q_D(QOpenGLExtension_SGIX_framezoom); + d->FrameZoomSGIX(factor); +} + +class QOpenGLExtension_SGIX_igloo_interfacePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP IglooInterfaceSGIX)(GLenum pname, const GLvoid *params); +}; + +class QOpenGLExtension_SGIX_igloo_interface : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_igloo_interface(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glIglooInterfaceSGIX(GLenum pname, const GLvoid *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_igloo_interface) +}; + +inline void QOpenGLExtension_SGIX_igloo_interface::glIglooInterfaceSGIX(GLenum pname, const GLvoid *params) +{ + Q_D(QOpenGLExtension_SGIX_igloo_interface); + d->IglooInterfaceSGIX(pname, params); +} + +class QOpenGLExtension_SGIX_instrumentsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP StopInstrumentsSGIX)(GLint marker); + void (QOPENGLF_APIENTRYP StartInstrumentsSGIX)(); + void (QOPENGLF_APIENTRYP ReadInstrumentsSGIX)(GLint marker); + GLint (QOPENGLF_APIENTRYP PollInstrumentsSGIX)(GLint *marker_p); + void (QOPENGLF_APIENTRYP InstrumentsBufferSGIX)(GLsizei size, GLint *buffer); + GLint (QOPENGLF_APIENTRYP GetInstrumentsSGIX)(); +}; + +class QOpenGLExtension_SGIX_instruments : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_instruments(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glStopInstrumentsSGIX(GLint marker); + void glStartInstrumentsSGIX(); + void glReadInstrumentsSGIX(GLint marker); + GLint glPollInstrumentsSGIX(GLint *marker_p); + void glInstrumentsBufferSGIX(GLsizei size, GLint *buffer); + GLint glGetInstrumentsSGIX(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_instruments) +}; + +inline void QOpenGLExtension_SGIX_instruments::glStopInstrumentsSGIX(GLint marker) +{ + Q_D(QOpenGLExtension_SGIX_instruments); + d->StopInstrumentsSGIX(marker); +} + +inline void QOpenGLExtension_SGIX_instruments::glStartInstrumentsSGIX() +{ + Q_D(QOpenGLExtension_SGIX_instruments); + d->StartInstrumentsSGIX(); +} + +inline void QOpenGLExtension_SGIX_instruments::glReadInstrumentsSGIX(GLint marker) +{ + Q_D(QOpenGLExtension_SGIX_instruments); + d->ReadInstrumentsSGIX(marker); +} + +inline GLint QOpenGLExtension_SGIX_instruments::glPollInstrumentsSGIX(GLint *marker_p) +{ + Q_D(QOpenGLExtension_SGIX_instruments); + return d->PollInstrumentsSGIX(marker_p); +} + +inline void QOpenGLExtension_SGIX_instruments::glInstrumentsBufferSGIX(GLsizei size, GLint *buffer) +{ + Q_D(QOpenGLExtension_SGIX_instruments); + d->InstrumentsBufferSGIX(size, buffer); +} + +inline GLint QOpenGLExtension_SGIX_instruments::glGetInstrumentsSGIX() +{ + Q_D(QOpenGLExtension_SGIX_instruments); + return d->GetInstrumentsSGIX(); +} + +class QOpenGLExtension_SGIX_list_priorityPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ListParameterivSGIX)(GLuint list, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP ListParameteriSGIX)(GLuint list, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP ListParameterfvSGIX)(GLuint list, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP ListParameterfSGIX)(GLuint list, GLenum pname, GLfloat param); + void (QOPENGLF_APIENTRYP GetListParameterivSGIX)(GLuint list, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetListParameterfvSGIX)(GLuint list, GLenum pname, GLfloat *params); +}; + +class QOpenGLExtension_SGIX_list_priority : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_list_priority(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glListParameterivSGIX(GLuint list, GLenum pname, const GLint *params); + void glListParameteriSGIX(GLuint list, GLenum pname, GLint param); + void glListParameterfvSGIX(GLuint list, GLenum pname, const GLfloat *params); + void glListParameterfSGIX(GLuint list, GLenum pname, GLfloat param); + void glGetListParameterivSGIX(GLuint list, GLenum pname, GLint *params); + void glGetListParameterfvSGIX(GLuint list, GLenum pname, GLfloat *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_list_priority) +}; + +inline void QOpenGLExtension_SGIX_list_priority::glListParameterivSGIX(GLuint list, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_SGIX_list_priority); + d->ListParameterivSGIX(list, pname, params); +} + +inline void QOpenGLExtension_SGIX_list_priority::glListParameteriSGIX(GLuint list, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_SGIX_list_priority); + d->ListParameteriSGIX(list, pname, param); +} + +inline void QOpenGLExtension_SGIX_list_priority::glListParameterfvSGIX(GLuint list, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIX_list_priority); + d->ListParameterfvSGIX(list, pname, params); +} + +inline void QOpenGLExtension_SGIX_list_priority::glListParameterfSGIX(GLuint list, GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_SGIX_list_priority); + d->ListParameterfSGIX(list, pname, param); +} + +inline void QOpenGLExtension_SGIX_list_priority::glGetListParameterivSGIX(GLuint list, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_SGIX_list_priority); + d->GetListParameterivSGIX(list, pname, params); +} + +inline void QOpenGLExtension_SGIX_list_priority::glGetListParameterfvSGIX(GLuint list, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIX_list_priority); + d->GetListParameterfvSGIX(list, pname, params); +} + +class QOpenGLExtension_SGIX_pixel_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP PixelTexGenSGIX)(GLenum mode); +}; + +class QOpenGLExtension_SGIX_pixel_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_pixel_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glPixelTexGenSGIX(GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_pixel_texture) +}; + +inline void QOpenGLExtension_SGIX_pixel_texture::glPixelTexGenSGIX(GLenum mode) +{ + Q_D(QOpenGLExtension_SGIX_pixel_texture); + d->PixelTexGenSGIX(mode); +} + +class QOpenGLExtension_SGIX_polynomial_ffdPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP LoadIdentityDeformationMapSGIX)(GLbitfield mask); + void (QOPENGLF_APIENTRYP DeformSGIX)(GLbitfield mask); + void (QOPENGLF_APIENTRYP DeformationMap3fSGIX)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); + void (QOPENGLF_APIENTRYP DeformationMap3dSGIX)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); +}; + +class QOpenGLExtension_SGIX_polynomial_ffd : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_polynomial_ffd(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glLoadIdentityDeformationMapSGIX(GLbitfield mask); + void glDeformSGIX(GLbitfield mask); + void glDeformationMap3fSGIX(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); + void glDeformationMap3dSGIX(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_polynomial_ffd) +}; + +inline void QOpenGLExtension_SGIX_polynomial_ffd::glLoadIdentityDeformationMapSGIX(GLbitfield mask) +{ + Q_D(QOpenGLExtension_SGIX_polynomial_ffd); + d->LoadIdentityDeformationMapSGIX(mask); +} + +inline void QOpenGLExtension_SGIX_polynomial_ffd::glDeformSGIX(GLbitfield mask) +{ + Q_D(QOpenGLExtension_SGIX_polynomial_ffd); + d->DeformSGIX(mask); +} + +inline void QOpenGLExtension_SGIX_polynomial_ffd::glDeformationMap3fSGIX(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points) +{ + Q_D(QOpenGLExtension_SGIX_polynomial_ffd); + d->DeformationMap3fSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points); +} + +inline void QOpenGLExtension_SGIX_polynomial_ffd::glDeformationMap3dSGIX(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points) +{ + Q_D(QOpenGLExtension_SGIX_polynomial_ffd); + d->DeformationMap3dSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points); +} + +class QOpenGLExtension_SGIX_reference_planePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ReferencePlaneSGIX)(const GLdouble *equation); +}; + +class QOpenGLExtension_SGIX_reference_plane : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_reference_plane(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glReferencePlaneSGIX(const GLdouble *equation); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_reference_plane) +}; + +inline void QOpenGLExtension_SGIX_reference_plane::glReferencePlaneSGIX(const GLdouble *equation) +{ + Q_D(QOpenGLExtension_SGIX_reference_plane); + d->ReferencePlaneSGIX(equation); +} + +class QOpenGLExtension_SGIX_spritePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP SpriteParameterivSGIX)(GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP SpriteParameteriSGIX)(GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP SpriteParameterfvSGIX)(GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP SpriteParameterfSGIX)(GLenum pname, GLfloat param); +}; + +class QOpenGLExtension_SGIX_sprite : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_sprite(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glSpriteParameterivSGIX(GLenum pname, const GLint *params); + void glSpriteParameteriSGIX(GLenum pname, GLint param); + void glSpriteParameterfvSGIX(GLenum pname, const GLfloat *params); + void glSpriteParameterfSGIX(GLenum pname, GLfloat param); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_sprite) +}; + +inline void QOpenGLExtension_SGIX_sprite::glSpriteParameterivSGIX(GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_SGIX_sprite); + d->SpriteParameterivSGIX(pname, params); +} + +inline void QOpenGLExtension_SGIX_sprite::glSpriteParameteriSGIX(GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_SGIX_sprite); + d->SpriteParameteriSGIX(pname, param); +} + +inline void QOpenGLExtension_SGIX_sprite::glSpriteParameterfvSGIX(GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_SGIX_sprite); + d->SpriteParameterfvSGIX(pname, params); +} + +inline void QOpenGLExtension_SGIX_sprite::glSpriteParameterfSGIX(GLenum pname, GLfloat param) +{ + Q_D(QOpenGLExtension_SGIX_sprite); + d->SpriteParameterfSGIX(pname, param); +} + +class QOpenGLExtension_SGIX_tag_sample_bufferPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TagSampleBufferSGIX)(); +}; + +class QOpenGLExtension_SGIX_tag_sample_buffer : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGIX_tag_sample_buffer(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTagSampleBufferSGIX(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGIX_tag_sample_buffer) +}; + +inline void QOpenGLExtension_SGIX_tag_sample_buffer::glTagSampleBufferSGIX() +{ + Q_D(QOpenGLExtension_SGIX_tag_sample_buffer); + d->TagSampleBufferSGIX(); +} + +class QOpenGLExtension_SGI_color_tablePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetColorTableParameterivSGI)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetColorTableParameterfvSGI)(GLenum target, GLenum pname, GLfloat *params); + void (QOPENGLF_APIENTRYP GetColorTableSGI)(GLenum target, GLenum format, GLenum type, GLvoid *table); + void (QOPENGLF_APIENTRYP CopyColorTableSGI)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void (QOPENGLF_APIENTRYP ColorTableParameterivSGI)(GLenum target, GLenum pname, const GLint *params); + void (QOPENGLF_APIENTRYP ColorTableParameterfvSGI)(GLenum target, GLenum pname, const GLfloat *params); + void (QOPENGLF_APIENTRYP ColorTableSGI)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +}; + +class QOpenGLExtension_SGI_color_table : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SGI_color_table(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetColorTableParameterivSGI(GLenum target, GLenum pname, GLint *params); + void glGetColorTableParameterfvSGI(GLenum target, GLenum pname, GLfloat *params); + void glGetColorTableSGI(GLenum target, GLenum format, GLenum type, GLvoid *table); + void glCopyColorTableSGI(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + void glColorTableParameterivSGI(GLenum target, GLenum pname, const GLint *params); + void glColorTableParameterfvSGI(GLenum target, GLenum pname, const GLfloat *params); + void glColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SGI_color_table) +}; + +inline void QOpenGLExtension_SGI_color_table::glGetColorTableParameterivSGI(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_SGI_color_table); + d->GetColorTableParameterivSGI(target, pname, params); +} + +inline void QOpenGLExtension_SGI_color_table::glGetColorTableParameterfvSGI(GLenum target, GLenum pname, GLfloat *params) +{ + Q_D(QOpenGLExtension_SGI_color_table); + d->GetColorTableParameterfvSGI(target, pname, params); +} + +inline void QOpenGLExtension_SGI_color_table::glGetColorTableSGI(GLenum target, GLenum format, GLenum type, GLvoid *table) +{ + Q_D(QOpenGLExtension_SGI_color_table); + d->GetColorTableSGI(target, format, type, table); +} + +inline void QOpenGLExtension_SGI_color_table::glCopyColorTableSGI(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +{ + Q_D(QOpenGLExtension_SGI_color_table); + d->CopyColorTableSGI(target, internalformat, x, y, width); +} + +inline void QOpenGLExtension_SGI_color_table::glColorTableParameterivSGI(GLenum target, GLenum pname, const GLint *params) +{ + Q_D(QOpenGLExtension_SGI_color_table); + d->ColorTableParameterivSGI(target, pname, params); +} + +inline void QOpenGLExtension_SGI_color_table::glColorTableParameterfvSGI(GLenum target, GLenum pname, const GLfloat *params) +{ + Q_D(QOpenGLExtension_SGI_color_table); + d->ColorTableParameterfvSGI(target, pname, params); +} + +inline void QOpenGLExtension_SGI_color_table::glColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) +{ + Q_D(QOpenGLExtension_SGI_color_table); + d->ColorTableSGI(target, internalformat, width, format, type, table); +} + +class QOpenGLExtension_SUNX_constant_dataPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP FinishTextureSUNX)(); +}; + +class QOpenGLExtension_SUNX_constant_data : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SUNX_constant_data(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glFinishTextureSUNX(); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SUNX_constant_data) +}; + +inline void QOpenGLExtension_SUNX_constant_data::glFinishTextureSUNX() +{ + Q_D(QOpenGLExtension_SUNX_constant_data); + d->FinishTextureSUNX(); +} + +class QOpenGLExtension_SUN_global_alphaPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GlobalAlphaFactoruiSUN)(GLuint factor); + void (QOPENGLF_APIENTRYP GlobalAlphaFactorusSUN)(GLushort factor); + void (QOPENGLF_APIENTRYP GlobalAlphaFactorubSUN)(GLubyte factor); + void (QOPENGLF_APIENTRYP GlobalAlphaFactordSUN)(GLdouble factor); + void (QOPENGLF_APIENTRYP GlobalAlphaFactorfSUN)(GLfloat factor); + void (QOPENGLF_APIENTRYP GlobalAlphaFactoriSUN)(GLint factor); + void (QOPENGLF_APIENTRYP GlobalAlphaFactorsSUN)(GLshort factor); + void (QOPENGLF_APIENTRYP GlobalAlphaFactorbSUN)(GLbyte factor); +}; + +class QOpenGLExtension_SUN_global_alpha : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SUN_global_alpha(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGlobalAlphaFactoruiSUN(GLuint factor); + void glGlobalAlphaFactorusSUN(GLushort factor); + void glGlobalAlphaFactorubSUN(GLubyte factor); + void glGlobalAlphaFactordSUN(GLdouble factor); + void glGlobalAlphaFactorfSUN(GLfloat factor); + void glGlobalAlphaFactoriSUN(GLint factor); + void glGlobalAlphaFactorsSUN(GLshort factor); + void glGlobalAlphaFactorbSUN(GLbyte factor); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SUN_global_alpha) +}; + +inline void QOpenGLExtension_SUN_global_alpha::glGlobalAlphaFactoruiSUN(GLuint factor) +{ + Q_D(QOpenGLExtension_SUN_global_alpha); + d->GlobalAlphaFactoruiSUN(factor); +} + +inline void QOpenGLExtension_SUN_global_alpha::glGlobalAlphaFactorusSUN(GLushort factor) +{ + Q_D(QOpenGLExtension_SUN_global_alpha); + d->GlobalAlphaFactorusSUN(factor); +} + +inline void QOpenGLExtension_SUN_global_alpha::glGlobalAlphaFactorubSUN(GLubyte factor) +{ + Q_D(QOpenGLExtension_SUN_global_alpha); + d->GlobalAlphaFactorubSUN(factor); +} + +inline void QOpenGLExtension_SUN_global_alpha::glGlobalAlphaFactordSUN(GLdouble factor) +{ + Q_D(QOpenGLExtension_SUN_global_alpha); + d->GlobalAlphaFactordSUN(factor); +} + +inline void QOpenGLExtension_SUN_global_alpha::glGlobalAlphaFactorfSUN(GLfloat factor) +{ + Q_D(QOpenGLExtension_SUN_global_alpha); + d->GlobalAlphaFactorfSUN(factor); +} + +inline void QOpenGLExtension_SUN_global_alpha::glGlobalAlphaFactoriSUN(GLint factor) +{ + Q_D(QOpenGLExtension_SUN_global_alpha); + d->GlobalAlphaFactoriSUN(factor); +} + +inline void QOpenGLExtension_SUN_global_alpha::glGlobalAlphaFactorsSUN(GLshort factor) +{ + Q_D(QOpenGLExtension_SUN_global_alpha); + d->GlobalAlphaFactorsSUN(factor); +} + +inline void QOpenGLExtension_SUN_global_alpha::glGlobalAlphaFactorbSUN(GLbyte factor) +{ + Q_D(QOpenGLExtension_SUN_global_alpha); + d->GlobalAlphaFactorbSUN(factor); +} + +class QOpenGLExtension_SUN_mesh_arrayPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawMeshArraysSUN)(GLenum mode, GLint first, GLsizei count, GLsizei width); +}; + +class QOpenGLExtension_SUN_mesh_array : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SUN_mesh_array(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawMeshArraysSUN(GLenum mode, GLint first, GLsizei count, GLsizei width); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SUN_mesh_array) +}; + +inline void QOpenGLExtension_SUN_mesh_array::glDrawMeshArraysSUN(GLenum mode, GLint first, GLsizei count, GLsizei width) +{ + Q_D(QOpenGLExtension_SUN_mesh_array); + d->DrawMeshArraysSUN(mode, first, count, width); +} + +class QOpenGLExtension_SUN_triangle_listPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ReplacementCodePointerSUN)(GLenum type, GLsizei stride, const GLvoid* *pointer); + void (QOPENGLF_APIENTRYP ReplacementCodeubvSUN)(const GLubyte *code); + void (QOPENGLF_APIENTRYP ReplacementCodeusvSUN)(const GLushort *code); + void (QOPENGLF_APIENTRYP ReplacementCodeuivSUN)(const GLuint *code); + void (QOPENGLF_APIENTRYP ReplacementCodeubSUN)(GLubyte code); + void (QOPENGLF_APIENTRYP ReplacementCodeusSUN)(GLushort code); + void (QOPENGLF_APIENTRYP ReplacementCodeuiSUN)(GLuint code); +}; + +class QOpenGLExtension_SUN_triangle_list : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SUN_triangle_list(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glReplacementCodePointerSUN(GLenum type, GLsizei stride, const GLvoid* *pointer); + void glReplacementCodeubvSUN(const GLubyte *code); + void glReplacementCodeusvSUN(const GLushort *code); + void glReplacementCodeuivSUN(const GLuint *code); + void glReplacementCodeubSUN(GLubyte code); + void glReplacementCodeusSUN(GLushort code); + void glReplacementCodeuiSUN(GLuint code); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SUN_triangle_list) +}; + +inline void QOpenGLExtension_SUN_triangle_list::glReplacementCodePointerSUN(GLenum type, GLsizei stride, const GLvoid* *pointer) +{ + Q_D(QOpenGLExtension_SUN_triangle_list); + d->ReplacementCodePointerSUN(type, stride, pointer); +} + +inline void QOpenGLExtension_SUN_triangle_list::glReplacementCodeubvSUN(const GLubyte *code) +{ + Q_D(QOpenGLExtension_SUN_triangle_list); + d->ReplacementCodeubvSUN(code); +} + +inline void QOpenGLExtension_SUN_triangle_list::glReplacementCodeusvSUN(const GLushort *code) +{ + Q_D(QOpenGLExtension_SUN_triangle_list); + d->ReplacementCodeusvSUN(code); +} + +inline void QOpenGLExtension_SUN_triangle_list::glReplacementCodeuivSUN(const GLuint *code) +{ + Q_D(QOpenGLExtension_SUN_triangle_list); + d->ReplacementCodeuivSUN(code); +} + +inline void QOpenGLExtension_SUN_triangle_list::glReplacementCodeubSUN(GLubyte code) +{ + Q_D(QOpenGLExtension_SUN_triangle_list); + d->ReplacementCodeubSUN(code); +} + +inline void QOpenGLExtension_SUN_triangle_list::glReplacementCodeusSUN(GLushort code) +{ + Q_D(QOpenGLExtension_SUN_triangle_list); + d->ReplacementCodeusSUN(code); +} + +inline void QOpenGLExtension_SUN_triangle_list::glReplacementCodeuiSUN(GLuint code) +{ + Q_D(QOpenGLExtension_SUN_triangle_list); + d->ReplacementCodeuiSUN(code); +} + +class QOpenGLExtension_SUN_vertexPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); + void (QOPENGLF_APIENTRYP ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); + void (QOPENGLF_APIENTRYP ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP ReplacementCodeuiTexCoord2fVertex3fvSUN)(const GLuint *rc, const GLfloat *tc, const GLfloat *v); + void (QOPENGLF_APIENTRYP ReplacementCodeuiTexCoord2fVertex3fSUN)(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP ReplacementCodeuiColor4fNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); + void (QOPENGLF_APIENTRYP ReplacementCodeuiColor4fNormal3fVertex3fSUN)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP ReplacementCodeuiNormal3fVertex3fvSUN)(const GLuint *rc, const GLfloat *n, const GLfloat *v); + void (QOPENGLF_APIENTRYP ReplacementCodeuiNormal3fVertex3fSUN)(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP ReplacementCodeuiColor3fVertex3fvSUN)(const GLuint *rc, const GLfloat *c, const GLfloat *v); + void (QOPENGLF_APIENTRYP ReplacementCodeuiColor3fVertex3fSUN)(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP ReplacementCodeuiColor4ubVertex3fvSUN)(const GLuint *rc, const GLubyte *c, const GLfloat *v); + void (QOPENGLF_APIENTRYP ReplacementCodeuiColor4ubVertex3fSUN)(GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP ReplacementCodeuiVertex3fvSUN)(const GLuint *rc, const GLfloat *v); + void (QOPENGLF_APIENTRYP ReplacementCodeuiVertex3fSUN)(GLuint rc, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP TexCoord4fColor4fNormal3fVertex4fvSUN)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord4fColor4fNormal3fVertex4fSUN)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP TexCoord2fColor4fNormal3fVertex3fvSUN)(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord2fColor4fNormal3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP TexCoord2fNormal3fVertex3fvSUN)(const GLfloat *tc, const GLfloat *n, const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord2fNormal3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP TexCoord2fColor3fVertex3fvSUN)(const GLfloat *tc, const GLfloat *c, const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord2fColor3fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP TexCoord2fColor4ubVertex3fvSUN)(const GLfloat *tc, const GLubyte *c, const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord2fColor4ubVertex3fSUN)(GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP TexCoord4fVertex4fvSUN)(const GLfloat *tc, const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord4fVertex4fSUN)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP TexCoord2fVertex3fvSUN)(const GLfloat *tc, const GLfloat *v); + void (QOPENGLF_APIENTRYP TexCoord2fVertex3fSUN)(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP Color4fNormal3fVertex3fvSUN)(const GLfloat *c, const GLfloat *n, const GLfloat *v); + void (QOPENGLF_APIENTRYP Color4fNormal3fVertex3fSUN)(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP Normal3fVertex3fvSUN)(const GLfloat *n, const GLfloat *v); + void (QOPENGLF_APIENTRYP Normal3fVertex3fSUN)(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP Color3fVertex3fvSUN)(const GLfloat *c, const GLfloat *v); + void (QOPENGLF_APIENTRYP Color3fVertex3fSUN)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP Color4ubVertex3fvSUN)(const GLubyte *c, const GLfloat *v); + void (QOPENGLF_APIENTRYP Color4ubVertex3fSUN)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP Color4ubVertex2fvSUN)(const GLubyte *c, const GLfloat *v); + void (QOPENGLF_APIENTRYP Color4ubVertex2fSUN)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +}; + +class QOpenGLExtension_SUN_vertex : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_SUN_vertex(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); + void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); + void glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *v); + void glReplacementCodeuiTexCoord2fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); + void glReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); + void glReplacementCodeuiColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void glReplacementCodeuiNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *n, const GLfloat *v); + void glReplacementCodeuiNormal3fVertex3fSUN(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void glReplacementCodeuiColor3fVertex3fvSUN(const GLuint *rc, const GLfloat *c, const GLfloat *v); + void glReplacementCodeuiColor3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); + void glReplacementCodeuiColor4ubVertex3fvSUN(const GLuint *rc, const GLubyte *c, const GLfloat *v); + void glReplacementCodeuiColor4ubVertex3fSUN(GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); + void glReplacementCodeuiVertex3fvSUN(const GLuint *rc, const GLfloat *v); + void glReplacementCodeuiVertex3fSUN(GLuint rc, GLfloat x, GLfloat y, GLfloat z); + void glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); + void glTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); + void glTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void glTexCoord2fNormal3fVertex3fvSUN(const GLfloat *tc, const GLfloat *n, const GLfloat *v); + void glTexCoord2fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void glTexCoord2fColor3fVertex3fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *v); + void glTexCoord2fColor3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); + void glTexCoord2fColor4ubVertex3fvSUN(const GLfloat *tc, const GLubyte *c, const GLfloat *v); + void glTexCoord2fColor4ubVertex3fSUN(GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); + void glTexCoord4fVertex4fvSUN(const GLfloat *tc, const GLfloat *v); + void glTexCoord4fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glTexCoord2fVertex3fvSUN(const GLfloat *tc, const GLfloat *v); + void glTexCoord2fVertex3fSUN(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); + void glColor4fNormal3fVertex3fvSUN(const GLfloat *c, const GLfloat *n, const GLfloat *v); + void glColor4fNormal3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void glNormal3fVertex3fvSUN(const GLfloat *n, const GLfloat *v); + void glNormal3fVertex3fSUN(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + void glColor3fVertex3fvSUN(const GLfloat *c, const GLfloat *v); + void glColor3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); + void glColor4ubVertex3fvSUN(const GLubyte *c, const GLfloat *v); + void glColor4ubVertex3fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); + void glColor4ubVertex2fvSUN(const GLubyte *c, const GLfloat *v); + void glColor4ubVertex2fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_SUN_vertex) +}; + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(rc, tc, c, n, v); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(rc, s, t, r, g, b, a, nx, ny, nz, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(rc, tc, n, v); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(rc, s, t, nx, ny, nz, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLuint *rc, const GLfloat *tc, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiTexCoord2fVertex3fvSUN(rc, tc, v); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiTexCoord2fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiTexCoord2fVertex3fSUN(rc, s, t, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiColor4fNormal3fVertex3fvSUN(rc, c, n, v); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiColor4fNormal3fVertex3fSUN(rc, r, g, b, a, nx, ny, nz, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiNormal3fVertex3fvSUN(const GLuint *rc, const GLfloat *n, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiNormal3fVertex3fvSUN(rc, n, v); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiNormal3fVertex3fSUN(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiNormal3fVertex3fSUN(rc, nx, ny, nz, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiColor3fVertex3fvSUN(const GLuint *rc, const GLfloat *c, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiColor3fVertex3fvSUN(rc, c, v); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiColor3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiColor3fVertex3fSUN(rc, r, g, b, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiColor4ubVertex3fvSUN(const GLuint *rc, const GLubyte *c, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiColor4ubVertex3fvSUN(rc, c, v); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiColor4ubVertex3fSUN(GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiColor4ubVertex3fSUN(rc, r, g, b, a, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiVertex3fvSUN(const GLuint *rc, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiVertex3fvSUN(rc, v); +} + +inline void QOpenGLExtension_SUN_vertex::glReplacementCodeuiVertex3fSUN(GLuint rc, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->ReplacementCodeuiVertex3fSUN(rc, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord4fColor4fNormal3fVertex4fvSUN(tc, c, n, v); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord4fColor4fNormal3fVertex4fSUN(s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord2fColor4fNormal3fVertex3fvSUN(tc, c, n, v); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord2fColor4fNormal3fVertex3fSUN(s, t, r, g, b, a, nx, ny, nz, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord2fNormal3fVertex3fvSUN(const GLfloat *tc, const GLfloat *n, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord2fNormal3fVertex3fvSUN(tc, n, v); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord2fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord2fNormal3fVertex3fSUN(s, t, nx, ny, nz, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord2fColor3fVertex3fvSUN(const GLfloat *tc, const GLfloat *c, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord2fColor3fVertex3fvSUN(tc, c, v); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord2fColor3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord2fColor3fVertex3fSUN(s, t, r, g, b, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord2fColor4ubVertex3fvSUN(const GLfloat *tc, const GLubyte *c, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord2fColor4ubVertex3fvSUN(tc, c, v); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord2fColor4ubVertex3fSUN(GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord2fColor4ubVertex3fSUN(s, t, r, g, b, a, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord4fVertex4fvSUN(const GLfloat *tc, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord4fVertex4fvSUN(tc, v); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord4fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord4fVertex4fSUN(s, t, p, q, x, y, z, w); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord2fVertex3fvSUN(const GLfloat *tc, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord2fVertex3fvSUN(tc, v); +} + +inline void QOpenGLExtension_SUN_vertex::glTexCoord2fVertex3fSUN(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->TexCoord2fVertex3fSUN(s, t, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glColor4fNormal3fVertex3fvSUN(const GLfloat *c, const GLfloat *n, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->Color4fNormal3fVertex3fvSUN(c, n, v); +} + +inline void QOpenGLExtension_SUN_vertex::glColor4fNormal3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->Color4fNormal3fVertex3fSUN(r, g, b, a, nx, ny, nz, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glNormal3fVertex3fvSUN(const GLfloat *n, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->Normal3fVertex3fvSUN(n, v); +} + +inline void QOpenGLExtension_SUN_vertex::glNormal3fVertex3fSUN(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->Normal3fVertex3fSUN(nx, ny, nz, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glColor3fVertex3fvSUN(const GLfloat *c, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->Color3fVertex3fvSUN(c, v); +} + +inline void QOpenGLExtension_SUN_vertex::glColor3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->Color3fVertex3fSUN(r, g, b, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glColor4ubVertex3fvSUN(const GLubyte *c, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->Color4ubVertex3fvSUN(c, v); +} + +inline void QOpenGLExtension_SUN_vertex::glColor4ubVertex3fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->Color4ubVertex3fSUN(r, g, b, a, x, y, z); +} + +inline void QOpenGLExtension_SUN_vertex::glColor4ubVertex2fvSUN(const GLubyte *c, const GLfloat *v) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->Color4ubVertex2fvSUN(c, v); +} + +inline void QOpenGLExtension_SUN_vertex::glColor4ubVertex2fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y) +{ + Q_D(QOpenGLExtension_SUN_vertex); + d->Color4ubVertex2fSUN(r, g, b, a, x, y); +} + + +#else + +class QOpenGLExtension_OES_EGL_imagePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLeglImageOES image); + void (QOPENGLF_APIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLeglImageOES image); +}; + +class Q_GUI_EXPORT QOpenGLExtension_OES_EGL_image : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_OES_EGL_image(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image); + void glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_OES_EGL_image) +}; + +inline void QOpenGLExtension_OES_EGL_image::glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) +{ + Q_D(QOpenGLExtension_OES_EGL_image); + d->EGLImageTargetTexture2DOES(target, image); +} + +inline void QOpenGLExtension_OES_EGL_image::glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) +{ + Q_D(QOpenGLExtension_OES_EGL_image); + d->EGLImageTargetRenderbufferStorageOES(target, image); +} + +class QOpenGLExtension_OES_get_program_binaryPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetProgramBinaryOES)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); + void (QOPENGLF_APIENTRYP ProgramBinaryOES)(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +}; + +class Q_GUI_EXPORT QOpenGLExtension_OES_get_program_binary : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_OES_get_program_binary(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); + void glProgramBinaryOES(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_OES_get_program_binary) +}; + +inline void QOpenGLExtension_OES_get_program_binary::glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) +{ + Q_D(QOpenGLExtension_OES_get_program_binary); + d->GetProgramBinaryOES(program, bufSize, length, binaryFormat, binary); +} + +inline void QOpenGLExtension_OES_get_program_binary::glProgramBinaryOES(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length) +{ + Q_D(QOpenGLExtension_OES_get_program_binary); + d->ProgramBinaryOES(program, binaryFormat, binary, length); +} + +class QOpenGLExtension_OES_mapbufferPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void* (QOPENGLF_APIENTRYP MapBufferOES)(GLenum target, GLenum access); + GLboolean (QOPENGLF_APIENTRYP UnmapBufferOES)(GLenum target); + void (QOPENGLF_APIENTRYP GetBufferPointervOES)(GLenum target, GLenum pname, GLvoid** params); +}; + +class Q_GUI_EXPORT QOpenGLExtension_OES_mapbuffer : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_OES_mapbuffer(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void* glMapBufferOES(GLenum target, GLenum access); + GLboolean glUnmapBufferOES(GLenum target); + void glGetBufferPointervOES(GLenum target, GLenum pname, GLvoid** params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_OES_mapbuffer) +}; + +inline void *QOpenGLExtension_OES_mapbuffer::glMapBufferOES(GLenum target, GLenum access) +{ + Q_D(QOpenGLExtension_OES_mapbuffer); + return d->MapBufferOES(target, access); +} + +inline GLboolean QOpenGLExtension_OES_mapbuffer::glUnmapBufferOES(GLenum target) +{ + Q_D(QOpenGLExtension_OES_mapbuffer); + return d->UnmapBufferOES(target); +} + +inline void QOpenGLExtension_OES_mapbuffer::glGetBufferPointervOES(GLenum target, GLenum pname, GLvoid** params) +{ + Q_D(QOpenGLExtension_OES_mapbuffer); + d->GetBufferPointervOES(target, pname, params); +} + +class QOpenGLExtension_OES_texture_3DPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexImage3DOES)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); + void (QOPENGLF_APIENTRYP TexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); + void (QOPENGLF_APIENTRYP CopyTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP CompressedTexImage3DOES)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); + void (QOPENGLF_APIENTRYP CompressedTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); + void (QOPENGLF_APIENTRYP FramebufferTexture3DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +}; + +class Q_GUI_EXPORT QOpenGLExtension_OES_texture_3D : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_OES_texture_3D(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); + void glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); + void glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); + void glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); + void glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); + void glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_OES_texture_3D) +}; + +inline void QOpenGLExtension_OES_texture_3D::glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels) +{ + Q_D(QOpenGLExtension_OES_texture_3D); + d->TexImage3DOES(target, level, internalformat, width, height, depth, border, format, type, pixels); +} + +inline void QOpenGLExtension_OES_texture_3D::glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels) +{ + Q_D(QOpenGLExtension_OES_texture_3D); + d->TexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); +} + +inline void QOpenGLExtension_OES_texture_3D::glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_OES_texture_3D); + d->CopyTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, x, y, width, height); +} + +inline void QOpenGLExtension_OES_texture_3D::glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data) +{ + Q_D(QOpenGLExtension_OES_texture_3D); + d->CompressedTexImage3DOES(target, level, internalformat, width, height, depth, border, imageSize, data); +} + +inline void QOpenGLExtension_OES_texture_3D::glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data) +{ + Q_D(QOpenGLExtension_OES_texture_3D); + d->CompressedTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); +} + +inline void QOpenGLExtension_OES_texture_3D::glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) +{ + Q_D(QOpenGLExtension_OES_texture_3D); + d->FramebufferTexture3DOES(target, attachment, textarget, texture, level, zoffset); +} + +class QOpenGLExtension_OES_vertex_array_objectPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BindVertexArrayOES)(GLuint array); + void (QOPENGLF_APIENTRYP DeleteVertexArraysOES)(GLsizei n, const GLuint *arrays); + void (QOPENGLF_APIENTRYP GenVertexArraysOES)(GLsizei n, GLuint *arrays); + GLboolean (QOPENGLF_APIENTRYP IsVertexArrayOES)(GLuint array); +}; + +class Q_GUI_EXPORT QOpenGLExtension_OES_vertex_array_object : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_OES_vertex_array_object(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBindVertexArrayOES(GLuint array); + void glDeleteVertexArraysOES(GLsizei n, const GLuint *arrays); + void glGenVertexArraysOES(GLsizei n, GLuint *arrays); + GLboolean glIsVertexArrayOES(GLuint array); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_OES_vertex_array_object) +}; + +inline void QOpenGLExtension_OES_vertex_array_object::glBindVertexArrayOES(GLuint array) +{ + Q_D(QOpenGLExtension_OES_vertex_array_object); + d->BindVertexArrayOES(array); +} + +inline void QOpenGLExtension_OES_vertex_array_object::glDeleteVertexArraysOES(GLsizei n, const GLuint *arrays) +{ + Q_D(QOpenGLExtension_OES_vertex_array_object); + d->DeleteVertexArraysOES(n, arrays); +} + +inline void QOpenGLExtension_OES_vertex_array_object::glGenVertexArraysOES(GLsizei n, GLuint *arrays) +{ + Q_D(QOpenGLExtension_OES_vertex_array_object); + d->GenVertexArraysOES(n, arrays); +} + +inline GLboolean QOpenGLExtension_OES_vertex_array_object::glIsVertexArrayOES(GLuint array) +{ + Q_D(QOpenGLExtension_OES_vertex_array_object); + return d->IsVertexArrayOES(array); +} + +class QOpenGLExtension_AMD_performance_monitorPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetPerfMonitorGroupsAMD)(GLint *numGroups, GLsizei groupsSize, GLuint *groups); + void (QOPENGLF_APIENTRYP GetPerfMonitorCountersAMD)(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); + void (QOPENGLF_APIENTRYP GetPerfMonitorGroupStringAMD)(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); + void (QOPENGLF_APIENTRYP GetPerfMonitorCounterStringAMD)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); + void (QOPENGLF_APIENTRYP GetPerfMonitorCounterInfoAMD)(GLuint group, GLuint counter, GLenum pname, GLvoid *data); + void (QOPENGLF_APIENTRYP GenPerfMonitorsAMD)(GLsizei n, GLuint *monitors); + void (QOPENGLF_APIENTRYP DeletePerfMonitorsAMD)(GLsizei n, GLuint *monitors); + void (QOPENGLF_APIENTRYP SelectPerfMonitorCountersAMD)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); + void (QOPENGLF_APIENTRYP BeginPerfMonitorAMD)(GLuint monitor); + void (QOPENGLF_APIENTRYP EndPerfMonitorAMD)(GLuint monitor); + void (QOPENGLF_APIENTRYP GetPerfMonitorCounterDataAMD)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +}; + +class Q_GUI_EXPORT QOpenGLExtension_AMD_performance_monitor : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_AMD_performance_monitor(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups); + void glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); + void glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); + void glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); + void glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid *data); + void glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors); + void glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors); + void glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); + void glBeginPerfMonitorAMD(GLuint monitor); + void glEndPerfMonitorAMD(GLuint monitor); + void glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_AMD_performance_monitor) +}; + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorGroupsAMD(numGroups, groupsSize, groups); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorGroupStringAMD(group, bufSize, length, groupString); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid *data) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorCounterInfoAMD(group, counter, pname, data); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GenPerfMonitorsAMD(n, monitors); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->DeletePerfMonitorsAMD(n, monitors); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->SelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, countersList); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glBeginPerfMonitorAMD(GLuint monitor) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->BeginPerfMonitorAMD(monitor); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glEndPerfMonitorAMD(GLuint monitor) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->EndPerfMonitorAMD(monitor); +} + +inline void QOpenGLExtension_AMD_performance_monitor::glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten) +{ + Q_D(QOpenGLExtension_AMD_performance_monitor); + d->GetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten); +} + +class QOpenGLExtension_ANGLE_framebuffer_blitPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP BlitFramebufferANGLE)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +}; + +class Q_GUI_EXPORT QOpenGLExtension_ANGLE_framebuffer_blit : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ANGLE_framebuffer_blit(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ANGLE_framebuffer_blit) +}; + +inline void QOpenGLExtension_ANGLE_framebuffer_blit::glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +{ + Q_D(QOpenGLExtension_ANGLE_framebuffer_blit); + d->BlitFramebufferANGLE(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); +} + +class QOpenGLExtension_ANGLE_framebuffer_multisamplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP RenderbufferStorageMultisampleANGLE)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +}; + +class Q_GUI_EXPORT QOpenGLExtension_ANGLE_framebuffer_multisample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ANGLE_framebuffer_multisample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ANGLE_framebuffer_multisample) +}; + +inline void QOpenGLExtension_ANGLE_framebuffer_multisample::glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_ANGLE_framebuffer_multisample); + d->RenderbufferStorageMultisampleANGLE(target, samples, internalformat, width, height); +} + +class QOpenGLExtension_ANGLE_instanced_arraysPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawArraysInstancedANGLE)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); + void (QOPENGLF_APIENTRYP DrawElementsInstancedANGLE)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); + void (QOPENGLF_APIENTRYP VertexAttribDivisorANGLE)(GLuint index, GLuint divisor); +}; + +class Q_GUI_EXPORT QOpenGLExtension_ANGLE_instanced_arrays : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ANGLE_instanced_arrays(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount); + void glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); + void glVertexAttribDivisorANGLE(GLuint index, GLuint divisor); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ANGLE_instanced_arrays) +}; + +inline void QOpenGLExtension_ANGLE_instanced_arrays::glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +{ + Q_D(QOpenGLExtension_ANGLE_instanced_arrays); + d->DrawArraysInstancedANGLE(mode, first, count, primcount); +} + +inline void QOpenGLExtension_ANGLE_instanced_arrays::glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount) +{ + Q_D(QOpenGLExtension_ANGLE_instanced_arrays); + d->DrawElementsInstancedANGLE(mode, count, type, indices, primcount); +} + +inline void QOpenGLExtension_ANGLE_instanced_arrays::glVertexAttribDivisorANGLE(GLuint index, GLuint divisor) +{ + Q_D(QOpenGLExtension_ANGLE_instanced_arrays); + d->VertexAttribDivisorANGLE(index, divisor); +} + +class QOpenGLExtension_ANGLE_translated_shader_sourcePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetTranslatedShaderSourceANGLE)(GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); +}; + +class Q_GUI_EXPORT QOpenGLExtension_ANGLE_translated_shader_source : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_ANGLE_translated_shader_source(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_ANGLE_translated_shader_source) +}; + +inline void QOpenGLExtension_ANGLE_translated_shader_source::glGetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source) +{ + Q_D(QOpenGLExtension_ANGLE_translated_shader_source); + d->GetTranslatedShaderSourceANGLE(shader, bufsize, length, source); +} + +class QOpenGLExtension_APPLE_framebuffer_multisamplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP RenderbufferStorageMultisampleAPPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); + void (QOPENGLF_APIENTRYP ResolveMultisampleFramebufferAPPLE)(void); +}; + +class Q_GUI_EXPORT QOpenGLExtension_APPLE_framebuffer_multisample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_APPLE_framebuffer_multisample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glRenderbufferStorageMultisampleAPPLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glResolveMultisampleFramebufferAPPLE(void); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_APPLE_framebuffer_multisample) +}; + +inline void QOpenGLExtension_APPLE_framebuffer_multisample::glRenderbufferStorageMultisampleAPPLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_APPLE_framebuffer_multisample); + d->RenderbufferStorageMultisampleAPPLE(target, samples, internalformat, width, height); +} + +inline void QOpenGLExtension_APPLE_framebuffer_multisample::glResolveMultisampleFramebufferAPPLE(void) +{ + Q_D(QOpenGLExtension_APPLE_framebuffer_multisample); + d->ResolveMultisampleFramebufferAPPLE(); +} + +class QOpenGLExtension_EXT_debug_labelPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP LabelObjectEXT)(GLenum type, GLuint object, GLsizei length, const GLchar *label); + void (QOPENGLF_APIENTRYP GetObjectLabelEXT)(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +}; + +class Q_GUI_EXPORT QOpenGLExtension_EXT_debug_label : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_debug_label(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label); + void glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_debug_label) +}; + +inline void QOpenGLExtension_EXT_debug_label::glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label) +{ + Q_D(QOpenGLExtension_EXT_debug_label); + d->LabelObjectEXT(type, object, length, label); +} + +inline void QOpenGLExtension_EXT_debug_label::glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label) +{ + Q_D(QOpenGLExtension_EXT_debug_label); + d->GetObjectLabelEXT(type, object, bufSize, length, label); +} + +class QOpenGLExtension_EXT_debug_markerPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP InsertEventMarkerEXT)(GLsizei length, const GLchar *marker); + void (QOPENGLF_APIENTRYP PushGroupMarkerEXT)(GLsizei length, const GLchar *marker); + void (QOPENGLF_APIENTRYP PopGroupMarkerEXT)(void); +}; + +class Q_GUI_EXPORT QOpenGLExtension_EXT_debug_marker : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_debug_marker(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glInsertEventMarkerEXT(GLsizei length, const GLchar *marker); + void glPushGroupMarkerEXT(GLsizei length, const GLchar *marker); + void glPopGroupMarkerEXT(void); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_debug_marker) +}; + +inline void QOpenGLExtension_EXT_debug_marker::glInsertEventMarkerEXT(GLsizei length, const GLchar *marker) +{ + Q_D(QOpenGLExtension_EXT_debug_marker); + d->InsertEventMarkerEXT(length, marker); +} + +inline void QOpenGLExtension_EXT_debug_marker::glPushGroupMarkerEXT(GLsizei length, const GLchar *marker) +{ + Q_D(QOpenGLExtension_EXT_debug_marker); + d->PushGroupMarkerEXT(length, marker); +} + +inline void QOpenGLExtension_EXT_debug_marker::glPopGroupMarkerEXT(void) +{ + Q_D(QOpenGLExtension_EXT_debug_marker); + d->PopGroupMarkerEXT(); +} + +class QOpenGLExtension_EXT_discard_framebufferPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DiscardFramebufferEXT)(GLenum target, GLsizei numAttachments, const GLenum *attachments); +}; + +class Q_GUI_EXPORT QOpenGLExtension_EXT_discard_framebuffer : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_discard_framebuffer(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_discard_framebuffer) +}; + +inline void QOpenGLExtension_EXT_discard_framebuffer::glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments) +{ + Q_D(QOpenGLExtension_EXT_discard_framebuffer); + d->DiscardFramebufferEXT(target, numAttachments, attachments); +} + +class QOpenGLExtension_EXT_multisampled_render_to_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP RenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP FramebufferTexture2DMultisampleEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +}; + +class Q_GUI_EXPORT QOpenGLExtension_EXT_multisampled_render_to_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_multisampled_render_to_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_multisampled_render_to_texture) +}; + +inline void QOpenGLExtension_EXT_multisampled_render_to_texture::glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_multisampled_render_to_texture); + d->RenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height); +} + +inline void QOpenGLExtension_EXT_multisampled_render_to_texture::glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) +{ + Q_D(QOpenGLExtension_EXT_multisampled_render_to_texture); + d->FramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples); +} + +class QOpenGLExtension_EXT_multi_draw_arraysPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP MultiDrawArraysEXT)(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); + void (QOPENGLF_APIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +}; + +class Q_GUI_EXPORT QOpenGLExtension_EXT_multi_draw_arrays : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_multi_draw_arrays(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glMultiDrawArraysEXT(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); + void glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_multi_draw_arrays) +}; + +inline void QOpenGLExtension_EXT_multi_draw_arrays::glMultiDrawArraysEXT(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount) +{ + Q_D(QOpenGLExtension_EXT_multi_draw_arrays); + d->MultiDrawArraysEXT(mode, first, count, primcount); +} + +inline void QOpenGLExtension_EXT_multi_draw_arrays::glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount) +{ + Q_D(QOpenGLExtension_EXT_multi_draw_arrays); + d->MultiDrawElementsEXT(mode, count, type, indices, primcount); +} + +class QOpenGLExtension_EXT_occlusion_query_booleanPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GenQueriesEXT)(GLsizei n, GLuint *ids); + void (QOPENGLF_APIENTRYP DeleteQueriesEXT)(GLsizei n, const GLuint *ids); + GLboolean (QOPENGLF_APIENTRYP IsQueryEXT)(GLuint id); + void (QOPENGLF_APIENTRYP BeginQueryEXT)(GLenum target, GLuint id); + void (QOPENGLF_APIENTRYP EndQueryEXT)(GLenum target); + void (QOPENGLF_APIENTRYP GetQueryivEXT)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetQueryObjectuivEXT)(GLuint id, GLenum pname, GLuint *params); +}; + +class Q_GUI_EXPORT QOpenGLExtension_EXT_occlusion_query_boolean : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_occlusion_query_boolean(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGenQueriesEXT(GLsizei n, GLuint *ids); + void glDeleteQueriesEXT(GLsizei n, const GLuint *ids); + GLboolean glIsQueryEXT(GLuint id); + void glBeginQueryEXT(GLenum target, GLuint id); + void glEndQueryEXT(GLenum target); + void glGetQueryivEXT(GLenum target, GLenum pname, GLint *params); + void glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_occlusion_query_boolean) +}; + +inline void QOpenGLExtension_EXT_occlusion_query_boolean::glGenQueriesEXT(GLsizei n, GLuint *ids) +{ + Q_D(QOpenGLExtension_EXT_occlusion_query_boolean); + d->GenQueriesEXT(n, ids); +} + +inline void QOpenGLExtension_EXT_occlusion_query_boolean::glDeleteQueriesEXT(GLsizei n, const GLuint *ids) +{ + Q_D(QOpenGLExtension_EXT_occlusion_query_boolean); + d->DeleteQueriesEXT(n, ids); +} + +inline GLboolean QOpenGLExtension_EXT_occlusion_query_boolean::glIsQueryEXT(GLuint id) +{ + Q_D(QOpenGLExtension_EXT_occlusion_query_boolean); + return d->IsQueryEXT(id); +} + +inline void QOpenGLExtension_EXT_occlusion_query_boolean::glBeginQueryEXT(GLenum target, GLuint id) +{ + Q_D(QOpenGLExtension_EXT_occlusion_query_boolean); + d->BeginQueryEXT(target, id); +} + +inline void QOpenGLExtension_EXT_occlusion_query_boolean::glEndQueryEXT(GLenum target) +{ + Q_D(QOpenGLExtension_EXT_occlusion_query_boolean); + d->EndQueryEXT(target); +} + +inline void QOpenGLExtension_EXT_occlusion_query_boolean::glGetQueryivEXT(GLenum target, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_occlusion_query_boolean); + d->GetQueryivEXT(target, pname, params); +} + +inline void QOpenGLExtension_EXT_occlusion_query_boolean::glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params) +{ + Q_D(QOpenGLExtension_EXT_occlusion_query_boolean); + d->GetQueryObjectuivEXT(id, pname, params); +} + +class QOpenGLExtension_EXT_robustnessPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + GLenum (QOPENGLF_APIENTRYP GetGraphicsResetStatusEXT)(void); + void (QOPENGLF_APIENTRYP ReadnPixelsEXT)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); + void (QOPENGLF_APIENTRYP GetnUniformfvEXT)(GLuint program, GLint location, GLsizei bufSize, float *params); + void (QOPENGLF_APIENTRYP GetnUniformivEXT)(GLuint program, GLint location, GLsizei bufSize, GLint *params); +}; + +class Q_GUI_EXPORT QOpenGLExtension_EXT_robustness : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_robustness(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + GLenum glGetGraphicsResetStatusEXT(void); + void glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); + void glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, float *params); + void glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint *params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_robustness) +}; + +inline GLenum QOpenGLExtension_EXT_robustness::glGetGraphicsResetStatusEXT(void) +{ + Q_D(QOpenGLExtension_EXT_robustness); + return d->GetGraphicsResetStatusEXT(); +} + +inline void QOpenGLExtension_EXT_robustness::glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) +{ + Q_D(QOpenGLExtension_EXT_robustness); + d->ReadnPixelsEXT(x, y, width, height, format, type, bufSize, data); +} + +inline void QOpenGLExtension_EXT_robustness::glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, float *params) +{ + Q_D(QOpenGLExtension_EXT_robustness); + d->GetnUniformfvEXT(program, location, bufSize, params); +} + +inline void QOpenGLExtension_EXT_robustness::glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_robustness); + d->GetnUniformivEXT(program, location, bufSize, params); +} + +class QOpenGLExtension_EXT_separate_shader_objectsPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP UseProgramStagesEXT)(GLuint pipeline, GLbitfield stages, GLuint program); + void (QOPENGLF_APIENTRYP ActiveShaderProgramEXT)(GLuint pipeline, GLuint program); + GLuint (QOPENGLF_APIENTRYP CreateShaderProgramvEXT)(GLenum type, GLsizei count, const GLchar **strings); + void (QOPENGLF_APIENTRYP BindProgramPipelineEXT)(GLuint pipeline); + void (QOPENGLF_APIENTRYP DeleteProgramPipelinesEXT)(GLsizei n, const GLuint *pipelines); + void (QOPENGLF_APIENTRYP GenProgramPipelinesEXT)(GLsizei n, GLuint *pipelines); + GLboolean (QOPENGLF_APIENTRYP IsProgramPipelineEXT)(GLuint pipeline); + void (QOPENGLF_APIENTRYP ProgramParameteriEXT)(GLuint program, GLenum pname, GLint value); + void (QOPENGLF_APIENTRYP GetProgramPipelineivEXT)(GLuint pipeline, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP ProgramUniform1iEXT)(GLuint program, GLint location, GLint x); + void (QOPENGLF_APIENTRYP ProgramUniform2iEXT)(GLuint program, GLint location, GLint x, GLint y); + void (QOPENGLF_APIENTRYP ProgramUniform3iEXT)(GLuint program, GLint location, GLint x, GLint y, GLint z); + void (QOPENGLF_APIENTRYP ProgramUniform4iEXT)(GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); + void (QOPENGLF_APIENTRYP ProgramUniform1fEXT)(GLuint program, GLint location, GLfloat x); + void (QOPENGLF_APIENTRYP ProgramUniform2fEXT)(GLuint program, GLint location, GLfloat x, GLfloat y); + void (QOPENGLF_APIENTRYP ProgramUniform3fEXT)(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); + void (QOPENGLF_APIENTRYP ProgramUniform4fEXT)(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void (QOPENGLF_APIENTRYP ProgramUniform1ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform2ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform3ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform4ivEXT)(GLuint program, GLint location, GLsizei count, const GLint *value); + void (QOPENGLF_APIENTRYP ProgramUniform1fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform2fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform3fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniform4fvEXT)(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix2fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ProgramUniformMatrix4fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (QOPENGLF_APIENTRYP ValidateProgramPipelineEXT)(GLuint pipeline); + void (QOPENGLF_APIENTRYP GetProgramPipelineInfoLogEXT)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +}; + +class Q_GUI_EXPORT QOpenGLExtension_EXT_separate_shader_objects : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_separate_shader_objects(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glUseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program); + void glActiveShaderProgramEXT(GLuint pipeline, GLuint program); + GLuint glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar **strings); + void glBindProgramPipelineEXT(GLuint pipeline); + void glDeleteProgramPipelinesEXT(GLsizei n, const GLuint *pipelines); + void glGenProgramPipelinesEXT(GLsizei n, GLuint *pipelines); + GLboolean glIsProgramPipelineEXT(GLuint pipeline); + void glProgramParameteriEXT(GLuint program, GLenum pname, GLint value); + void glGetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint *params); + void glProgramUniform1iEXT(GLuint program, GLint location, GLint x); + void glProgramUniform2iEXT(GLuint program, GLint location, GLint x, GLint y); + void glProgramUniform3iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z); + void glProgramUniform4iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); + void glProgramUniform1fEXT(GLuint program, GLint location, GLfloat x); + void glProgramUniform2fEXT(GLuint program, GLint location, GLfloat x, GLfloat y); + void glProgramUniform3fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); + void glProgramUniform4fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + void glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value); + void glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value); + void glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void glValidateProgramPipelineEXT(GLuint pipeline); + void glGetProgramPipelineInfoLogEXT(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_separate_shader_objects) +}; + +inline void QOpenGLExtension_EXT_separate_shader_objects::glUseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->UseProgramStagesEXT(pipeline, stages, program); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glActiveShaderProgramEXT(GLuint pipeline, GLuint program) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ActiveShaderProgramEXT(pipeline, program); +} + +inline GLuint QOpenGLExtension_EXT_separate_shader_objects::glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar **strings) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + return d->CreateShaderProgramvEXT(type, count, strings); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glBindProgramPipelineEXT(GLuint pipeline) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->BindProgramPipelineEXT(pipeline); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glDeleteProgramPipelinesEXT(GLsizei n, const GLuint *pipelines) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->DeleteProgramPipelinesEXT(n, pipelines); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glGenProgramPipelinesEXT(GLsizei n, GLuint *pipelines) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->GenProgramPipelinesEXT(n, pipelines); +} + +inline GLboolean QOpenGLExtension_EXT_separate_shader_objects::glIsProgramPipelineEXT(GLuint pipeline) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + return d->IsProgramPipelineEXT(pipeline); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramParameteriEXT(GLuint program, GLenum pname, GLint value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramParameteriEXT(program, pname, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glGetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->GetProgramPipelineivEXT(pipeline, pname, params); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform1iEXT(GLuint program, GLint location, GLint x) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform1iEXT(program, location, x); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform2iEXT(GLuint program, GLint location, GLint x, GLint y) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform2iEXT(program, location, x, y); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform3iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform3iEXT(program, location, x, y, z); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform4iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform4iEXT(program, location, x, y, z, w); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform1fEXT(GLuint program, GLint location, GLfloat x) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform1fEXT(program, location, x); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform2fEXT(GLuint program, GLint location, GLfloat x, GLfloat y) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform2fEXT(program, location, x, y); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform3fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform3fEXT(program, location, x, y, z); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform4fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform4fEXT(program, location, x, y, z, w); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform1ivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform2ivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform3ivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform4ivEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform1fvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform2fvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform3fvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniform4fvEXT(program, location, count, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniformMatrix2fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniformMatrix3fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ProgramUniformMatrix4fvEXT(program, location, count, transpose, value); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glValidateProgramPipelineEXT(GLuint pipeline) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->ValidateProgramPipelineEXT(pipeline); +} + +inline void QOpenGLExtension_EXT_separate_shader_objects::glGetProgramPipelineInfoLogEXT(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) +{ + Q_D(QOpenGLExtension_EXT_separate_shader_objects); + d->GetProgramPipelineInfoLogEXT(pipeline, bufSize, length, infoLog); +} + +class QOpenGLExtension_EXT_texture_storagePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP TexStorage1DEXT)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + void (QOPENGLF_APIENTRYP TexStorage2DEXT)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP TexStorage3DEXT)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void (QOPENGLF_APIENTRYP TextureStorage1DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + void (QOPENGLF_APIENTRYP TextureStorage2DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void (QOPENGLF_APIENTRYP TextureStorage3DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +}; + +class Q_GUI_EXPORT QOpenGLExtension_EXT_texture_storage : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_EXT_texture_storage(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + void glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTexStorage3DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + void glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + void glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + void glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_EXT_texture_storage) +}; + +inline void QOpenGLExtension_EXT_texture_storage::glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + Q_D(QOpenGLExtension_EXT_texture_storage); + d->TexStorage1DEXT(target, levels, internalformat, width); +} + +inline void QOpenGLExtension_EXT_texture_storage::glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_texture_storage); + d->TexStorage2DEXT(target, levels, internalformat, width, height); +} + +inline void QOpenGLExtension_EXT_texture_storage::glTexStorage3DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + Q_D(QOpenGLExtension_EXT_texture_storage); + d->TexStorage3DEXT(target, levels, internalformat, width, height, depth); +} + +inline void QOpenGLExtension_EXT_texture_storage::glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) +{ + Q_D(QOpenGLExtension_EXT_texture_storage); + d->TextureStorage1DEXT(texture, target, levels, internalformat, width); +} + +inline void QOpenGLExtension_EXT_texture_storage::glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_EXT_texture_storage); + d->TextureStorage2DEXT(texture, target, levels, internalformat, width, height); +} + +inline void QOpenGLExtension_EXT_texture_storage::glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +{ + Q_D(QOpenGLExtension_EXT_texture_storage); + d->TextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth); +} + +class QOpenGLExtension_IMG_multisampled_render_to_texturePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP RenderbufferStorageMultisampleIMG)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); + void (QOPENGLF_APIENTRYP FramebufferTexture2DMultisampleIMG)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +}; + +class Q_GUI_EXPORT QOpenGLExtension_IMG_multisampled_render_to_texture : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_IMG_multisampled_render_to_texture(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); + void glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_IMG_multisampled_render_to_texture) +}; + +inline void QOpenGLExtension_IMG_multisampled_render_to_texture::glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) +{ + Q_D(QOpenGLExtension_IMG_multisampled_render_to_texture); + d->RenderbufferStorageMultisampleIMG(target, samples, internalformat, width, height); +} + +inline void QOpenGLExtension_IMG_multisampled_render_to_texture::glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) +{ + Q_D(QOpenGLExtension_IMG_multisampled_render_to_texture); + d->FramebufferTexture2DMultisampleIMG(target, attachment, textarget, texture, level, samples); +} + +class QOpenGLExtension_NV_coverage_samplePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP CoverageMaskNV)(GLboolean mask); + void (QOPENGLF_APIENTRYP CoverageOperationNV)(GLenum operation); +}; + +class Q_GUI_EXPORT QOpenGLExtension_NV_coverage_sample : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_coverage_sample(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glCoverageMaskNV(GLboolean mask); + void glCoverageOperationNV(GLenum operation); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_coverage_sample) +}; + +inline void QOpenGLExtension_NV_coverage_sample::glCoverageMaskNV(GLboolean mask) +{ + Q_D(QOpenGLExtension_NV_coverage_sample); + d->CoverageMaskNV(mask); +} + +inline void QOpenGLExtension_NV_coverage_sample::glCoverageOperationNV(GLenum operation) +{ + Q_D(QOpenGLExtension_NV_coverage_sample); + d->CoverageOperationNV(operation); +} + +class QOpenGLExtension_NV_draw_buffersPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DrawBuffersNV)(GLsizei n, const GLenum *bufs); +}; + +class Q_GUI_EXPORT QOpenGLExtension_NV_draw_buffers : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_draw_buffers(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDrawBuffersNV(GLsizei n, const GLenum *bufs); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_draw_buffers) +}; + +inline void QOpenGLExtension_NV_draw_buffers::glDrawBuffersNV(GLsizei n, const GLenum *bufs) +{ + Q_D(QOpenGLExtension_NV_draw_buffers); + d->DrawBuffersNV(n, bufs); +} + +class QOpenGLExtension_NV_fencePrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP DeleteFencesNV)(GLsizei n, const GLuint *fences); + void (QOPENGLF_APIENTRYP GenFencesNV)(GLsizei n, GLuint *fences); + GLboolean (QOPENGLF_APIENTRYP IsFenceNV)(GLuint fence); + GLboolean (QOPENGLF_APIENTRYP TestFenceNV)(GLuint fence); + void (QOPENGLF_APIENTRYP GetFenceivNV)(GLuint fence, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP FinishFenceNV)(GLuint fence); + void (QOPENGLF_APIENTRYP SetFenceNV)(GLuint fence, GLenum condition); +}; + +class Q_GUI_EXPORT QOpenGLExtension_NV_fence : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_fence(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glDeleteFencesNV(GLsizei n, const GLuint *fences); + void glGenFencesNV(GLsizei n, GLuint *fences); + GLboolean glIsFenceNV(GLuint fence); + GLboolean glTestFenceNV(GLuint fence); + void glGetFenceivNV(GLuint fence, GLenum pname, GLint *params); + void glFinishFenceNV(GLuint fence); + void glSetFenceNV(GLuint fence, GLenum condition); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_fence) +}; + +inline void QOpenGLExtension_NV_fence::glDeleteFencesNV(GLsizei n, const GLuint *fences) +{ + Q_D(QOpenGLExtension_NV_fence); + d->DeleteFencesNV(n, fences); +} + +inline void QOpenGLExtension_NV_fence::glGenFencesNV(GLsizei n, GLuint *fences) +{ + Q_D(QOpenGLExtension_NV_fence); + d->GenFencesNV(n, fences); +} + +inline GLboolean QOpenGLExtension_NV_fence::glIsFenceNV(GLuint fence) +{ + Q_D(QOpenGLExtension_NV_fence); + return d->IsFenceNV(fence); +} + +inline GLboolean QOpenGLExtension_NV_fence::glTestFenceNV(GLuint fence) +{ + Q_D(QOpenGLExtension_NV_fence); + return d->TestFenceNV(fence); +} + +inline void QOpenGLExtension_NV_fence::glGetFenceivNV(GLuint fence, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_NV_fence); + d->GetFenceivNV(fence, pname, params); +} + +inline void QOpenGLExtension_NV_fence::glFinishFenceNV(GLuint fence) +{ + Q_D(QOpenGLExtension_NV_fence); + d->FinishFenceNV(fence); +} + +inline void QOpenGLExtension_NV_fence::glSetFenceNV(GLuint fence, GLenum condition) +{ + Q_D(QOpenGLExtension_NV_fence); + d->SetFenceNV(fence, condition); +} + +class QOpenGLExtension_NV_read_bufferPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ReadBufferNV)(GLenum mode); +}; + +class Q_GUI_EXPORT QOpenGLExtension_NV_read_buffer : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_NV_read_buffer(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glReadBufferNV(GLenum mode); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_NV_read_buffer) +}; + +inline void QOpenGLExtension_NV_read_buffer::glReadBufferNV(GLenum mode) +{ + Q_D(QOpenGLExtension_NV_read_buffer); + d->ReadBufferNV(mode); +} + +class QOpenGLExtension_QCOM_alpha_testPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP AlphaFuncQCOM)(GLenum func, GLclampf ref); +}; + +class Q_GUI_EXPORT QOpenGLExtension_QCOM_alpha_test : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_QCOM_alpha_test(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glAlphaFuncQCOM(GLenum func, GLclampf ref); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_QCOM_alpha_test) +}; + +inline void QOpenGLExtension_QCOM_alpha_test::glAlphaFuncQCOM(GLenum func, GLclampf ref) +{ + Q_D(QOpenGLExtension_QCOM_alpha_test); + d->AlphaFuncQCOM(func, ref); +} + +class QOpenGLExtension_QCOM_driver_controlPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP GetDriverControlsQCOM)(GLint *num, GLsizei size, GLuint *driverControls); + void (QOPENGLF_APIENTRYP GetDriverControlStringQCOM)(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); + void (QOPENGLF_APIENTRYP EnableDriverControlQCOM)(GLuint driverControl); + void (QOPENGLF_APIENTRYP DisableDriverControlQCOM)(GLuint driverControl); +}; + +class Q_GUI_EXPORT QOpenGLExtension_QCOM_driver_control : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_QCOM_driver_control(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverControls); + void glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); + void glEnableDriverControlQCOM(GLuint driverControl); + void glDisableDriverControlQCOM(GLuint driverControl); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_QCOM_driver_control) +}; + +inline void QOpenGLExtension_QCOM_driver_control::glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverControls) +{ + Q_D(QOpenGLExtension_QCOM_driver_control); + d->GetDriverControlsQCOM(num, size, driverControls); +} + +inline void QOpenGLExtension_QCOM_driver_control::glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString) +{ + Q_D(QOpenGLExtension_QCOM_driver_control); + d->GetDriverControlStringQCOM(driverControl, bufSize, length, driverControlString); +} + +inline void QOpenGLExtension_QCOM_driver_control::glEnableDriverControlQCOM(GLuint driverControl) +{ + Q_D(QOpenGLExtension_QCOM_driver_control); + d->EnableDriverControlQCOM(driverControl); +} + +inline void QOpenGLExtension_QCOM_driver_control::glDisableDriverControlQCOM(GLuint driverControl) +{ + Q_D(QOpenGLExtension_QCOM_driver_control); + d->DisableDriverControlQCOM(driverControl); +} + +class QOpenGLExtension_QCOM_extended_getPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ExtGetTexturesQCOM)(GLuint *textures, GLint maxTextures, GLint *numTextures); + void (QOPENGLF_APIENTRYP ExtGetBuffersQCOM)(GLuint *buffers, GLint maxBuffers, GLint *numBuffers); + void (QOPENGLF_APIENTRYP ExtGetRenderbuffersQCOM)(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); + void (QOPENGLF_APIENTRYP ExtGetFramebuffersQCOM)(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); + void (QOPENGLF_APIENTRYP ExtGetTexLevelParameterivQCOM)(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP ExtTexObjectStateOverrideiQCOM)(GLenum target, GLenum pname, GLint param); + void (QOPENGLF_APIENTRYP ExtGetTexSubImageQCOM)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); + void (QOPENGLF_APIENTRYP ExtGetBufferPointervQCOM)(GLenum target, GLvoid **params); +}; + +class Q_GUI_EXPORT QOpenGLExtension_QCOM_extended_get : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_QCOM_extended_get(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *numTextures); + void glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBuffers); + void glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); + void glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); + void glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); + void glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param); + void glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); + void glExtGetBufferPointervQCOM(GLenum target, GLvoid **params); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_QCOM_extended_get) +}; + +inline void QOpenGLExtension_QCOM_extended_get::glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *numTextures) +{ + Q_D(QOpenGLExtension_QCOM_extended_get); + d->ExtGetTexturesQCOM(textures, maxTextures, numTextures); +} + +inline void QOpenGLExtension_QCOM_extended_get::glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBuffers) +{ + Q_D(QOpenGLExtension_QCOM_extended_get); + d->ExtGetBuffersQCOM(buffers, maxBuffers, numBuffers); +} + +inline void QOpenGLExtension_QCOM_extended_get::glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers) +{ + Q_D(QOpenGLExtension_QCOM_extended_get); + d->ExtGetRenderbuffersQCOM(renderbuffers, maxRenderbuffers, numRenderbuffers); +} + +inline void QOpenGLExtension_QCOM_extended_get::glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers) +{ + Q_D(QOpenGLExtension_QCOM_extended_get); + d->ExtGetFramebuffersQCOM(framebuffers, maxFramebuffers, numFramebuffers); +} + +inline void QOpenGLExtension_QCOM_extended_get::glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params) +{ + Q_D(QOpenGLExtension_QCOM_extended_get); + d->ExtGetTexLevelParameterivQCOM(texture, face, level, pname, params); +} + +inline void QOpenGLExtension_QCOM_extended_get::glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param) +{ + Q_D(QOpenGLExtension_QCOM_extended_get); + d->ExtTexObjectStateOverrideiQCOM(target, pname, param); +} + +inline void QOpenGLExtension_QCOM_extended_get::glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels) +{ + Q_D(QOpenGLExtension_QCOM_extended_get); + d->ExtGetTexSubImageQCOM(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels); +} + +inline void QOpenGLExtension_QCOM_extended_get::glExtGetBufferPointervQCOM(GLenum target, GLvoid **params) +{ + Q_D(QOpenGLExtension_QCOM_extended_get); + d->ExtGetBufferPointervQCOM(target, params); +} + +class QOpenGLExtension_QCOM_extended_get2Private : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP ExtGetShadersQCOM)(GLuint *shaders, GLint maxShaders, GLint *numShaders); + void (QOPENGLF_APIENTRYP ExtGetProgramsQCOM)(GLuint *programs, GLint maxPrograms, GLint *numPrograms); + GLboolean (QOPENGLF_APIENTRYP ExtIsProgramBinaryQCOM)(GLuint program); + void (QOPENGLF_APIENTRYP ExtGetProgramBinarySourceQCOM)(GLuint program, GLenum shadertype, GLchar *source, GLint *length); +}; + +class Q_GUI_EXPORT QOpenGLExtension_QCOM_extended_get2 : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_QCOM_extended_get2(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numShaders); + void glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *numPrograms); + GLboolean glExtIsProgramBinaryQCOM(GLuint program); + void glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar *source, GLint *length); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_QCOM_extended_get2) +}; + +inline void QOpenGLExtension_QCOM_extended_get2::glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numShaders) +{ + Q_D(QOpenGLExtension_QCOM_extended_get2); + d->ExtGetShadersQCOM(shaders, maxShaders, numShaders); +} + +inline void QOpenGLExtension_QCOM_extended_get2::glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *numPrograms) +{ + Q_D(QOpenGLExtension_QCOM_extended_get2); + d->ExtGetProgramsQCOM(programs, maxPrograms, numPrograms); +} + +inline GLboolean QOpenGLExtension_QCOM_extended_get2::glExtIsProgramBinaryQCOM(GLuint program) +{ + Q_D(QOpenGLExtension_QCOM_extended_get2); + return d->ExtIsProgramBinaryQCOM(program); +} + +inline void QOpenGLExtension_QCOM_extended_get2::glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar *source, GLint *length) +{ + Q_D(QOpenGLExtension_QCOM_extended_get2); + d->ExtGetProgramBinarySourceQCOM(program, shadertype, source, length); +} + +class QOpenGLExtension_QCOM_tiled_renderingPrivate : public QAbstractOpenGLExtensionPrivate +{ +public: + void (QOPENGLF_APIENTRYP StartTilingQCOM)(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); + void (QOPENGLF_APIENTRYP EndTilingQCOM)(GLbitfield preserveMask); +}; + +class Q_GUI_EXPORT QOpenGLExtension_QCOM_tiled_rendering : public QAbstractOpenGLExtension +{ +public: + QOpenGLExtension_QCOM_tiled_rendering(); + + bool initializeOpenGLFunctions() Q_DECL_FINAL; + + void glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); + void glEndTilingQCOM(GLbitfield preserveMask); + +protected: + Q_DECLARE_PRIVATE(QOpenGLExtension_QCOM_tiled_rendering) +}; + +inline void QOpenGLExtension_QCOM_tiled_rendering::glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) +{ + Q_D(QOpenGLExtension_QCOM_tiled_rendering); + d->StartTilingQCOM(x, y, width, height, preserveMask); +} + +inline void QOpenGLExtension_QCOM_tiled_rendering::glEndTilingQCOM(GLbitfield preserveMask) +{ + Q_D(QOpenGLExtension_QCOM_tiled_rendering); + d->EndTilingQCOM(preserveMask); +} + +#endif + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif diff --git a/src/src.pro b/src/src.pro index 525c9c8855..02d4852b60 100644 --- a/src/src.pro +++ b/src/src.pro @@ -54,6 +54,10 @@ src_opengl.subdir = $$PWD/opengl src_opengl.target = sub-opengl src_opengl.depends = src_gui src_widgets +src_openglextensions.subdir = $$PWD/openglextensions +src_openglextensions.target = sub-openglextensions +src_openglextensions.depends = src_gui + src_printsupport.subdir = $$PWD/printsupport src_printsupport.target = sub-printsupport src_printsupport.depends = src_corelib src_gui src_widgets @@ -76,7 +80,7 @@ contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent SUBDIRS += src_angle src_gui.depends += src_angle } - SUBDIRS += src_gui src_platformsupport + SUBDIRS += src_gui src_platformsupport src_openglextensions src_plugins.depends += src_gui src_platformsupport !contains(QT_CONFIG, no-widgets) { SUBDIRS += src_widgets -- cgit v1.2.3 From ad211acae45f64f7cc604e41fbe6261c8a60af95 Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Sun, 10 Feb 2013 21:46:25 +0100 Subject: qpsql: simplify expression Change-Id: I1cff816ca5e8f683015186a2b5815e564ad454e6 Reviewed-by: Andy Shaw --- src/sql/drivers/psql/qsql_psql.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp index 95fcba4172..3cea46a7e2 100644 --- a/src/sql/drivers/psql/qsql_psql.cpp +++ b/src/sql/drivers/psql/qsql_psql.cpp @@ -585,7 +585,7 @@ bool QPSQLResult::exec() cleanup(); QString stmt; - const QString params = qCreateParamString(boundValues(), d->q->driver()); + const QString params = qCreateParamString(boundValues(), driver()); if (params.isEmpty()) stmt = QString::fromLatin1("EXECUTE %1").arg(d->preparedStmtId); else -- cgit v1.2.3 From 63b180d390f7accb8e3c72681a5c20ccaf15803a Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Sun, 10 Feb 2013 22:35:13 +0100 Subject: rename private driver to privDriver This avoids confusion now with the actual driver and avoids a name collision in later refactoring. Change-Id: I83055213f3a7b7998640662d49ba33749fdadd18 Reviewed-by: Andy Shaw --- src/sql/drivers/psql/qsql_psql.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp index 3cea46a7e2..332f7f7ed2 100644 --- a/src/sql/drivers/psql/qsql_psql.cpp +++ b/src/sql/drivers/psql/qsql_psql.cpp @@ -183,11 +183,11 @@ PGresult * QPSQLDriverPrivate::exec(const QString & stmt) const class QPSQLResultPrivate { public: - QPSQLResultPrivate(QPSQLResult *qq): q(qq), driver(0), result(0), currentSize(-1), preparedQueriesEnabled(false) {} + QPSQLResultPrivate(QPSQLResult *qq): q(qq), privDriver(0), result(0), currentSize(-1), preparedQueriesEnabled(false) {} static QString fieldSerial(int i) { return QLatin1Char('$') + QString::number(i + 1); } QPSQLResult *q; - const QPSQLDriverPrivate *driver; + const QPSQLDriverPrivate *privDriver; PGresult *result; int currentSize; bool preparedQueriesEnabled; @@ -226,7 +226,7 @@ bool QPSQLResultPrivate::processResults() return true; } q->setLastError(qMakeError(QCoreApplication::translate("QPSQLResult", - "Unable to create query"), QSqlError::StatementError, driver, result)); + "Unable to create query"), QSqlError::StatementError, privDriver, result)); return false; } @@ -279,10 +279,10 @@ static QVariant::Type qDecodePSQLType(int t) static void qDeallocatePreparedStmt(QPSQLResultPrivate *d) { const QString stmt = QLatin1String("DEALLOCATE ") + d->preparedStmtId; - PGresult *result = d->driver->exec(stmt); + PGresult *result = d->privDriver->exec(stmt); if (PQresultStatus(result) != PGRES_COMMAND_OK) - qWarning("Unable to free statement: %s", PQerrorMessage(d->driver->connection)); + qWarning("Unable to free statement: %s", PQerrorMessage(d->privDriver->connection)); PQclear(result); d->preparedStmtId.clear(); } @@ -291,7 +291,7 @@ QPSQLResult::QPSQLResult(const QPSQLDriver* db, const QPSQLDriverPrivate* p) : QSqlResult(db) { d = new QPSQLResultPrivate(this); - d->driver = p; + d->privDriver = p; d->preparedQueriesEnabled = db->hasFeature(QSqlDriver::PreparedQueries); } @@ -359,7 +359,7 @@ QVariant QPSQLResult::data(int i) case QVariant::Bool: return QVariant((bool)(val[0] == 't')); case QVariant::String: - return d->driver->isUtf8 ? QString::fromUtf8(val) : QString::fromLatin1(val); + return d->privDriver->isUtf8 ? QString::fromUtf8(val) : QString::fromLatin1(val); case QVariant::LongLong: if (val[0] == '-') return QString::fromLatin1(val).toLongLong(); @@ -457,7 +457,7 @@ bool QPSQLResult::reset (const QString& query) return false; if (!driver()->isOpen() || driver()->isOpenError()) return false; - d->result = d->driver->exec(query); + d->result = d->privDriver->exec(query); return d->processResults(); } @@ -490,7 +490,7 @@ QSqlRecord QPSQLResult::record() const int count = PQnfields(d->result); for (int i = 0; i < count; ++i) { QSqlField f; - if (d->driver->isUtf8) + if (d->privDriver->isUtf8) f.setName(QString::fromUtf8(PQfname(d->result, i))); else f.setName(QString::fromLocal8Bit(PQfname(d->result, i))); @@ -562,11 +562,11 @@ bool QPSQLResult::prepare(const QString &query) const QString stmtId = qMakePreparedStmtId(); const QString stmt = QString::fromLatin1("PREPARE %1 AS ").arg(stmtId).append(QSqlResultPrivate::positionalToNamedBinding(query, QPSQLResultPrivate::fieldSerial)); - PGresult *result = d->driver->exec(stmt); + PGresult *result = d->privDriver->exec(stmt); if (PQresultStatus(result) != PGRES_COMMAND_OK) { setLastError(qMakeError(QCoreApplication::translate("QPSQLResult", - "Unable to prepare statement"), QSqlError::StatementError, d->driver, result)); + "Unable to prepare statement"), QSqlError::StatementError, d->privDriver, result)); PQclear(result); d->preparedStmtId.clear(); return false; @@ -591,7 +591,7 @@ bool QPSQLResult::exec() else stmt = QString::fromLatin1("EXECUTE %1 (%2)").arg(d->preparedStmtId).arg(params); - d->result = d->driver->exec(stmt); + d->result = d->privDriver->exec(stmt); return d->processResults(); } -- cgit v1.2.3 From 4da840f23092f292012d5b1462727cbc8e8fdc31 Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Sun, 10 Feb 2013 22:20:24 +0100 Subject: make static function a class member Change-Id: I8c18c746185f6b7530ed985f4d482a1c9073fb10 Reviewed-by: Andy Shaw --- src/sql/drivers/psql/qsql_psql.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp index 332f7f7ed2..6a37e4b50d 100644 --- a/src/sql/drivers/psql/qsql_psql.cpp +++ b/src/sql/drivers/psql/qsql_psql.cpp @@ -185,6 +185,7 @@ class QPSQLResultPrivate public: QPSQLResultPrivate(QPSQLResult *qq): q(qq), privDriver(0), result(0), currentSize(-1), preparedQueriesEnabled(false) {} static QString fieldSerial(int i) { return QLatin1Char('$') + QString::number(i + 1); } + void deallocatePreparedStmt(); QPSQLResult *q; const QPSQLDriverPrivate *privDriver; @@ -276,15 +277,15 @@ static QVariant::Type qDecodePSQLType(int t) return type; } -static void qDeallocatePreparedStmt(QPSQLResultPrivate *d) +void QPSQLResultPrivate::deallocatePreparedStmt() { - const QString stmt = QLatin1String("DEALLOCATE ") + d->preparedStmtId; - PGresult *result = d->privDriver->exec(stmt); + const QString stmt = QLatin1String("DEALLOCATE ") + preparedStmtId; + PGresult *result = privDriver->exec(stmt); if (PQresultStatus(result) != PGRES_COMMAND_OK) - qWarning("Unable to free statement: %s", PQerrorMessage(d->privDriver->connection)); + qWarning("Unable to free statement: %s", PQerrorMessage(privDriver->connection)); PQclear(result); - d->preparedStmtId.clear(); + preparedStmtId.clear(); } QPSQLResult::QPSQLResult(const QPSQLDriver* db, const QPSQLDriverPrivate* p) @@ -300,7 +301,7 @@ QPSQLResult::~QPSQLResult() cleanup(); if (d->preparedQueriesEnabled && !d->preparedStmtId.isNull()) - qDeallocatePreparedStmt(d); + d->deallocatePreparedStmt(); delete d; } @@ -557,7 +558,7 @@ bool QPSQLResult::prepare(const QString &query) cleanup(); if (!d->preparedStmtId.isEmpty()) - qDeallocatePreparedStmt(d); + d->deallocatePreparedStmt(); const QString stmtId = qMakePreparedStmtId(); const QString stmt = QString::fromLatin1("PREPARE %1 AS ").arg(stmtId).append(QSqlResultPrivate::positionalToNamedBinding(query, QPSQLResultPrivate::fieldSerial)); -- cgit v1.2.3 From bc5170f274572a4b262569c12d5d3c6ef892aaf2 Mon Sep 17 00:00:00 2001 From: Israel Lins Date: Fri, 15 Feb 2013 19:40:35 -0300 Subject: ODBC: improve detection of DBMS Change-Id: Ia93c3adb54fd28e290ff6fc85cb98138514885f1 Reviewed-by: Mark Brand --- src/sql/drivers/odbc/qsql_odbc.cpp | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index a52e3ee451..8f2e4c0cc6 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -115,9 +115,10 @@ class QODBCDriverPrivate { public: enum DefaultCase{Lower, Mixed, Upper, Sensitive}; + enum DBMSType {UnknownDB, MSSqlServer, MySqlServer, PostgreSQL, Oracle, Sybase}; QODBCDriverPrivate() - : hEnv(0), hDbc(0), unicode(false), useSchema(false), disconnectCount(0), datetime_precision(19), isMySqlServer(false), - isMSSqlServer(false), isFreeTDSDriver(false), hasSQLFetchScroll(true), + : hEnv(0), hDbc(0), unicode(false), useSchema(false), disconnectCount(0), datetime_precision(19), + dbmsType(UnknownDB), isFreeTDSDriver(false), hasSQLFetchScroll(true), hasMultiResultSets(false), isQuoteInitialized(false), quote(QLatin1Char('"')) { } @@ -129,15 +130,14 @@ public: bool useSchema; int disconnectCount; int datetime_precision; - bool isMySqlServer; - bool isMSSqlServer; + DBMSType dbmsType; bool isFreeTDSDriver; bool hasSQLFetchScroll; bool hasMultiResultSets; bool checkDriver() const; void checkUnicode(); - void checkSqlServer(); + void checkDBMS(); void checkHasSQLFetchScroll(); void checkHasMultiResults(); void checkSchemaUsage(); @@ -1806,7 +1806,7 @@ bool QODBCDriver::hasFeature(DriverFeature f) const case MultipleResultSets: return d->hasMultiResultSets; case BLOB: { - if(d->isMySqlServer) + if (d->dbmsType == QODBCDriverPrivate::MySqlServer) return true; else return false; @@ -1896,13 +1896,13 @@ bool QODBCDriver::open(const QString & db, d->checkUnicode(); d->checkSchemaUsage(); - d->checkSqlServer(); + d->checkDBMS(); d->checkHasSQLFetchScroll(); d->checkHasMultiResults(); d->checkDateTimePrecision(); setOpen(true); setOpenError(false); - if(d->isMSSqlServer) { + if (d->dbmsType == QODBCDriverPrivate::MSSqlServer) { QSqlQuery i(createResult()); i.exec(QLatin1String("SET QUOTED_IDENTIFIER ON")); } @@ -2069,7 +2069,7 @@ void QODBCDriverPrivate::checkSchemaUsage() useSchema = (val != 0); } -void QODBCDriverPrivate::checkSqlServer() +void QODBCDriverPrivate::checkDBMS() { SQLRETURN r; QVarLengthArray serverString(200); @@ -2088,8 +2088,16 @@ void QODBCDriverPrivate::checkSqlServer() #else serverType = QString::fromUtf8((const char *)serverString.constData(), t); #endif - isMySqlServer = serverType.contains(QLatin1String("mysql"), Qt::CaseInsensitive); - isMSSqlServer = serverType.contains(QLatin1String("Microsoft SQL Server"), Qt::CaseInsensitive); + if (serverType.contains(QLatin1String("PostgreSQL"), Qt::CaseInsensitive)) + dbmsType = PostgreSQL; + else if (serverType.contains(QLatin1String("Oracle"), Qt::CaseInsensitive)) + dbmsType = Oracle; + else if (serverType.contains(QLatin1String("MySql"), Qt::CaseInsensitive)) + dbmsType = MySqlServer; + else if (serverType.contains(QLatin1String("Microsoft SQL Server"), Qt::CaseInsensitive)) + dbmsType = MSSqlServer; + else if (serverType.contains(QLatin1String("Sybase"), Qt::CaseInsensitive)) + dbmsType = Sybase; } r = SQLGetInfo(hDbc, SQL_DRIVER_NAME, -- cgit v1.2.3 From 1b76cf017427a98bf4487f3cf576611d82097539 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sun, 24 Feb 2013 09:14:20 -0800 Subject: EGLFS: Replace the global static 'hooks' variable with a function Having a global static variable in a header is a poor choice to start with. All .cpp including that header must use that variable or the compiler will warn of an unused static. Second, for the case of platform hooks, it's possible that it is reading the value of a variable that isn't initialised yet. Change-Id: Id823c2be9cfededb9c31fb76a9080d4122577ca4 Reviewed-by: Olivier Goffart Reviewed-by: Giuseppe D'Angelo Reviewed-by: Gunnar Sletta --- src/plugins/platforms/eglfs/qeglfscontext.cpp | 2 +- src/plugins/platforms/eglfs/qeglfshooks.h | 13 ++++++++----- src/plugins/platforms/eglfs/qeglfshooks_stub.cpp | 2 -- src/plugins/platforms/eglfs/qeglfsintegration.cpp | 14 +++++++------- src/plugins/platforms/eglfs/qeglfsscreen.cpp | 10 +++++----- src/plugins/platforms/eglfs/qeglfswindow.cpp | 8 ++++---- 6 files changed, 25 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/eglfs/qeglfscontext.cpp b/src/plugins/platforms/eglfs/qeglfscontext.cpp index 44bc9b2344..6bd0d35191 100644 --- a/src/plugins/platforms/eglfs/qeglfscontext.cpp +++ b/src/plugins/platforms/eglfs/qeglfscontext.cpp @@ -79,7 +79,7 @@ void QEglFSContext::swapBuffers(QPlatformSurface *surface) cursor->paintOnScreen(); } - hooks->waitForVSync(); + QEglFSHooks::hooks()->waitForVSync(); QEGLPlatformContext::swapBuffers(surface); } diff --git a/src/plugins/platforms/eglfs/qeglfshooks.h b/src/plugins/platforms/eglfs/qeglfshooks.h index fc1ee16073..c4ac7185fb 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks.h +++ b/src/plugins/platforms/eglfs/qeglfshooks.h @@ -72,15 +72,18 @@ public: virtual void waitForVSync() const; virtual const char *fbDeviceName() const; -}; + static QEglFSHooks *hooks() + { #ifdef EGLFS_PLATFORM_HOOKS -extern QEglFSHooks *platformHooks; -static QEglFSHooks *hooks = platformHooks; + extern QEglFSHooks *platformHooks; + return platformHooks; #else -extern QEglFSHooks stubHooks; -static QEglFSHooks *hooks = &stubHooks; + extern QEglFSHooks stubHooks; + return &stubHooks; #endif + } +}; QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp index 6c036cd680..5298eb47ea 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp +++ b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp @@ -62,8 +62,6 @@ const char *QEglFSHooks::fbDeviceName() const void QEglFSHooks::platformInit() { - Q_UNUSED(hooks); - framebuffer = qt_safe_open(fbDeviceName(), O_RDONLY); if (framebuffer == -1) diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp index dd212c80a0..0fc4c44629 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp @@ -83,7 +83,7 @@ QEglFSIntegration::QEglFSIntegration() new QEvdevTouchScreenHandlerThread(QString() /* spec */, this); #endif - hooks->platformInit(); + QEglFSHooks::hooks()->platformInit(); EGLint major, minor; @@ -92,7 +92,7 @@ QEglFSIntegration::QEglFSIntegration() qFatal("EGL error"); } - mDisplay = eglGetDisplay(hooks ? hooks->platformDisplay() : EGL_DEFAULT_DISPLAY); + mDisplay = eglGetDisplay(QEglFSHooks::hooks() ? QEglFSHooks::hooks()->platformDisplay() : EGL_DEFAULT_DISPLAY); if (mDisplay == EGL_NO_DISPLAY) { qWarning("Could not open egl display\n"); qFatal("EGL error"); @@ -122,13 +122,13 @@ QEglFSIntegration::~QEglFSIntegration() delete mScreen; eglTerminate(mDisplay); - hooks->platformDestroy(); + QEglFSHooks::hooks()->platformDestroy(); } bool QEglFSIntegration::hasCapability(QPlatformIntegration::Capability cap) const { // We assume that devices will have more and not less capabilities - if (hooks && hooks->hasCapability(cap)) + if (QEglFSHooks::hooks() && QEglFSHooks::hooks()->hasCapability(cap)) return true; switch (cap) { @@ -153,13 +153,13 @@ QPlatformBackingStore *QEglFSIntegration::createPlatformBackingStore(QWindow *wi QPlatformOpenGLContext *QEglFSIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const { - return new QEglFSContext(hooks->surfaceFormatFor(context->format()), context->shareHandle(), mDisplay); + return new QEglFSContext(QEglFSHooks::hooks()->surfaceFormatFor(context->format()), context->shareHandle(), mDisplay); } QPlatformOffscreenSurface *QEglFSIntegration::createPlatformOffscreenSurface(QOffscreenSurface *surface) const { QEglFSScreen *screen = static_cast(surface->screen()->handle()); - return new QEGLPbuffer(screen->display(), hooks->surfaceFormatFor(surface->requestedFormat()), surface); + return new QEGLPbuffer(screen->display(), QEglFSHooks::hooks()->surfaceFormatFor(surface->requestedFormat()), surface); } QPlatformFontDatabase *QEglFSIntegration::fontDatabase() const @@ -230,7 +230,7 @@ EGLConfig QEglFSIntegration::chooseConfig(EGLDisplay display, const QSurfaceForm QEglFSHooks *m_hooks; }; - Chooser chooser(display, hooks); + Chooser chooser(display, QEglFSHooks::hooks()); chooser.setSurfaceFormat(format); return chooser.chooseConfig(); } diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.cpp b/src/plugins/platforms/eglfs/qeglfsscreen.cpp index 43d7cb3b1f..83f50dd382 100644 --- a/src/plugins/platforms/eglfs/qeglfsscreen.cpp +++ b/src/plugins/platforms/eglfs/qeglfsscreen.cpp @@ -56,7 +56,7 @@ QEglFSScreen::QEglFSScreen(EGLDisplay dpy) static int hideCursor = qgetenv("QT_QPA_EGLFS_HIDECURSOR").toInt(); if (!hideCursor) { - if (QEglFSCursor *customCursor = hooks->createCursor(this)) + if (QEglFSCursor *customCursor = QEglFSHooks::hooks()->createCursor(this)) m_cursor = customCursor; else m_cursor = new QEglFSCursor(this); @@ -70,22 +70,22 @@ QEglFSScreen::~QEglFSScreen() QRect QEglFSScreen::geometry() const { - return QRect(QPoint(0, 0), hooks->screenSize()); + return QRect(QPoint(0, 0), QEglFSHooks::hooks()->screenSize()); } int QEglFSScreen::depth() const { - return hooks->screenDepth(); + return QEglFSHooks::hooks()->screenDepth(); } QImage::Format QEglFSScreen::format() const { - return hooks->screenFormat(); + return QEglFSHooks::hooks()->screenFormat(); } QSizeF QEglFSScreen::physicalSize() const { - return hooks->physicalScreenSize(); + return QEglFSHooks::hooks()->physicalScreenSize(); } QPlatformCursor *QEglFSScreen::cursor() const diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp index 26f701d7ba..4a0e2a9a7d 100644 --- a/src/plugins/platforms/eglfs/qeglfswindow.cpp +++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp @@ -76,18 +76,18 @@ void QEglFSWindow::create() return; if (window()->type() == Qt::Desktop) { - QRect rect(QPoint(), hooks->screenSize()); + QRect rect(QPoint(), QEglFSHooks::hooks()->screenSize()); QPlatformWindow::setGeometry(rect); QWindowSystemInterface::handleGeometryChange(window(), rect); return; } EGLDisplay display = (static_cast(window()->screen()->handle()))->display(); - QSurfaceFormat platformFormat = hooks->surfaceFormatFor(window()->requestedFormat()); + QSurfaceFormat platformFormat = QEglFSHooks::hooks()->surfaceFormatFor(window()->requestedFormat()); EGLConfig config = QEglFSIntegration::chooseConfig(display, platformFormat); m_format = q_glFormatFromConfig(display, config); - m_window = hooks->createNativeWindow(hooks->screenSize(), m_format); + m_window = QEglFSHooks::hooks()->createNativeWindow(QEglFSHooks::hooks()->screenSize(), m_format); m_surface = eglCreateWindowSurface(display, config, m_window, NULL); if (m_surface == EGL_NO_SURFACE) { EGLint error = eglGetError(); @@ -105,7 +105,7 @@ void QEglFSWindow::destroy() } if (m_window) { - hooks->destroyNativeWindow(m_window); + QEglFSHooks::hooks()->destroyNativeWindow(m_window); m_window = 0; } } -- cgit v1.2.3 From 7729d89e15bc68899554b28f480a891c61ef0872 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Tue, 26 Feb 2013 12:51:34 +0200 Subject: QWin32PrintEngine: Fix build on MinGW + avoid dummy allocations Don't use wcscpy_s() which is not available on MinGW but determine the utf-16 string length and pass that value to QString::fromWCharArray() instead. Change-Id: I45d1b1969fe03255fdb6353fa9f52417af530e40 Reviewed-by: Laszlo Papp Reviewed-by: Andy Shaw --- src/printsupport/kernel/qprintengine_win.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp index f5690c12f3..7c67fd2845 100644 --- a/src/printsupport/kernel/qprintengine_win.cpp +++ b/src/printsupport/kernel/qprintengine_win.cpp @@ -1596,6 +1596,16 @@ QList QWin32PrintEngine::supportedPaperSizes(const QPrinter return returnList; } +static inline uint qwcsnlen(const wchar_t *str, uint maxlen) +{ + uint length = 0; + if (str) { + while (length < maxlen && *str++) + length++; + } + return length; +} + QList > QWin32PrintEngine::supportedSizesWithNames(const QPrinterInfo &printerInfo) { QList > paperSizes; @@ -1603,22 +1613,20 @@ QList > QWin32PrintEngine::supportedSizesWithNames(const return paperSizes; DWORD size = DeviceCapabilities(reinterpret_cast(printerInfo.printerName().utf16()), NULL, DC_PAPERNAMES, NULL, NULL); - if ((int)size != -1) { + if ((int)size > 0) { wchar_t *papers = new wchar_t[size*64]; size = DeviceCapabilities(reinterpret_cast(printerInfo.printerName().utf16()), NULL, DC_PAPERNAMES, papers, NULL); DWORD size2 = DeviceCapabilities(reinterpret_cast(printerInfo.printerName().utf16()), NULL, DC_PAPERSIZE, NULL, NULL); - if ((int)size2 != -1) { + if ((int)size2 > 0) { POINT *points = new POINT[size2*sizeof(POINT)]; size2 = DeviceCapabilities(reinterpret_cast(printerInfo.printerName().utf16()), NULL, DC_PAPERSIZE, (wchar_t *)points, NULL); - wchar_t copyOfPaper[65]; for (int i=0;i<(int)size;i++) { - wcscpy_s(copyOfPaper, 64, papers + (i * 64)); - copyOfPaper[64] = '\0'; - QString str = QString::fromWCharArray(copyOfPaper); + wchar_t *paper = papers + (i * 64); + QString str = QString::fromWCharArray(paper, qwcsnlen(paper, 64)); paperSizes << qMakePair(str, QSizeF(points[i].x / 10, points[i].y / 10)); } delete [] points; -- cgit v1.2.3 From 996db96d5eb4927a130605e8c1820d7e1b303191 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Tue, 26 Feb 2013 12:41:59 +0200 Subject: Fix QString::toUcs4() returns incorrectly resized QVector ...when the string contains surrogate code points. Task-number: QTBUG-25536 Change-Id: I07251fee641c14f33175678768ddbe551dbe2bb1 Reviewed-by: Thiago Macieira --- src/corelib/tools/qstring.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index bbe7628d38..3089cfef8b 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -966,20 +966,21 @@ const QString::Null QString::null = { }; \sa utf16(), toLatin1(), toUtf8(), toLocal8Bit() */ -// ### replace with QCharIterator int QString::toUcs4_helper(const ushort *uc, int length, uint *out) { int i = 0; - for (; i < length; ++i) { - uint u = uc[i]; - if (QChar::isHighSurrogate(u) && i + 1 < length) { - ushort low = uc[i+1]; + const ushort *const e = uc + length; + while (uc < e) { + uint u = *uc; + if (QChar::isHighSurrogate(u) && uc + 1 < e) { + ushort low = uc[1]; if (QChar::isLowSurrogate(low)) { - ++i; + ++uc; u = QChar::surrogateToUcs4(u, low); } } - *out++ = u; + out[i++] = u; + ++uc; } return i; } -- cgit v1.2.3 From f92e844b2b741d7d72a64052bea57de5aa04c3a7 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 25 Feb 2013 10:27:19 -0800 Subject: Stop using function deprecated in D-Bus 1.2 (raise minimum version) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dbus_watch_get_fd function was deprecated in D-Bus 1.2 (technically, in 1.1.1, but that was a development release) because it had a bad name. Sockets on Windows have file descriptors, but they are not shared from the same pool as the CRT library's file descriptors. This commit raises the minimum required version of D-Bus to 1.2. This is the first requirement raise since this code was introduced in 2006. For some reason, the D-Bus 1.2.0 release seems to be missing, but 1.2.1 was released on 04-Apr-2008. That's ancient enough for all distributions Qt 5 is supposed to run on. Change-Id: Ia6bbc137fffbb27c77290ed3e32d3380f0ae3c54 Reviewed-by: Lorn Potter --- src/dbus/qdbus_symbols_p.h | 2 +- src/dbus/qdbusintegrator.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/dbus/qdbus_symbols_p.h b/src/dbus/qdbus_symbols_p.h index c1e36b0175..9e81bac30e 100644 --- a/src/dbus/qdbus_symbols_p.h +++ b/src/dbus/qdbus_symbols_p.h @@ -176,7 +176,7 @@ DEFINEFUNC(dbus_bool_t , dbus_timeout_handle, (DBusTimeout *timeout), DEFINEFUNC(dbus_bool_t , dbus_watch_get_enabled, (DBusWatch *watch), (watch), return) -DEFINEFUNC(int , dbus_watch_get_fd, (DBusWatch *watch), +DEFINEFUNC(int , dbus_watch_get_unix_fd, (DBusWatch *watch), (watch), return) DEFINEFUNC(unsigned int , dbus_watch_get_flags, (DBusWatch *watch), (watch), return) diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index b6611c7517..839fe55901 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -244,7 +244,7 @@ static dbus_bool_t qDBusAddWatch(DBusWatch *watch, void *data) QDBusConnectionPrivate *d = static_cast(data); int flags = q_dbus_watch_get_flags(watch); - int fd = q_dbus_watch_get_fd(watch); + int fd = q_dbus_watch_get_unix_fd(watch); if (QCoreApplication::instance() && QThread::currentThread() == d->thread()) { return qDBusRealAddWatch(d, watch, flags, fd); @@ -295,7 +295,7 @@ static void qDBusRemoveWatch(DBusWatch *watch, void *data) //qDebug("remove watch"); QDBusConnectionPrivate *d = static_cast(data); - int fd = q_dbus_watch_get_fd(watch); + int fd = q_dbus_watch_get_unix_fd(watch); QDBusWatchAndTimeoutLocker locker(RemoveWatchAction, d); QDBusConnectionPrivate::WatcherHash::iterator i = d->watchers.find(fd); @@ -326,7 +326,7 @@ static void qDBusToggleWatch(DBusWatch *watch, void *data) Q_ASSERT(data); QDBusConnectionPrivate *d = static_cast(data); - int fd = q_dbus_watch_get_fd(watch); + int fd = q_dbus_watch_get_unix_fd(watch); if (QCoreApplication::instance() && QThread::currentThread() == d->thread()) { qDBusRealToggleWatch(d, watch, fd); -- cgit v1.2.3 From 2c51bc0289e5f4a8a2cfb4a57562633c1018ab58 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 20 Feb 2013 14:33:46 -0800 Subject: Don't try to unload a library that isn't loaded Both QPluginLoader::unload() and QLibrary::unload() protect against that (they have a "did_load" member), but QFactoryLoaderPrivate's destructor doesn't. In the past (Qt4) all plugins had to be loaded anyway, so there was no mistake in the reference counting. With Qt 5, we don't load plugins unless they're actually used (in QFactoryLoader::instance). Task-number: QTBUG-29773 Change-Id: I3278fa14bac7e26a9faaf999b4e42e950654ac9a Reviewed-by: Konstantin Ritt Reviewed-by: Lars Knoll --- src/corelib/plugin/qlibrary.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp index 236832097a..1e17c9fbd4 100644 --- a/src/corelib/plugin/qlibrary.cpp +++ b/src/corelib/plugin/qlibrary.cpp @@ -502,7 +502,7 @@ bool QLibraryPrivate::unload(UnloadFlag flag) { if (!pHnd) return false; - if (!libraryUnloadCount.deref()) { // only unload if ALL QLibrary instance wanted to + if (libraryUnloadCount.load() > 0 && !libraryUnloadCount.deref()) { // only unload if ALL QLibrary instance wanted to delete inst.data(); if (flag == NoUnloadSys || unload_sys()) { if (qt_debug_component()) -- cgit v1.2.3 From cafb02911a29b98ac2652fde64e95870e70fd547 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 21 Feb 2013 13:58:57 -0800 Subject: Make sure that the reference count for plugins is kept correctly For systems where the Unix signature checker isn't enabled (read: Mac and Windows), QPluginLoader must actually load the plugin to query for the metadata. On Mac it even tried to keep the library loaded to avoid unloading and reloading again when the user calls load(). However, that plus the fact that it was calling load_sys() (on Mac) meant that it would bypass the reference count checking. And on all Unix, if a library-that-wasnt-a-plugin was already loaded by way of a QLibrary, it would have an effect of unloading said library. So remove the "caching" of the library. We should instead invest time to write a proper Mach-O binary decoder. Task-number: QTBUG-29776 Change-Id: Iebbddabe60047aafedeced21f26a170f59656757 Reviewed-by: Liang Qi Reviewed-by: Shawn Rutledge --- src/corelib/plugin/qlibrary.cpp | 9 ++++----- src/corelib/plugin/qlibrary_p.h | 2 ++ 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp index 1e17c9fbd4..3432f9619d 100644 --- a/src/corelib/plugin/qlibrary.cpp +++ b/src/corelib/plugin/qlibrary.cpp @@ -711,7 +711,7 @@ void QLibraryPrivate::updatePluginState() hTempModule = ::LoadLibraryEx((wchar_t*)QDir::toNativeSeparators(fileName).utf16(), 0, dwFlags); SetErrorMode(oldmode); #else - temporary_load = load_sys(); + temporary_load = load(); #endif } QtPluginQueryVerificationDataFunction getMetaData = NULL; @@ -736,11 +736,10 @@ void QLibraryPrivate::updatePluginState() if (getMetaData) ret = qt_get_metadata(getMetaData, this, &exceptionThrown); + if (temporary_load) + unload(); if (!exceptionThrown) { - if (!ret) { - if (temporary_load) - unload_sys(); - } else { + if (ret) { success = true; } retryLoadLibrary = false; diff --git a/src/corelib/plugin/qlibrary_p.h b/src/corelib/plugin/qlibrary_p.h index b425e0d590..abf11be9f7 100644 --- a/src/corelib/plugin/qlibrary_p.h +++ b/src/corelib/plugin/qlibrary_p.h @@ -127,7 +127,9 @@ private: bool unload_sys(); QFunctionPointer resolve_sys(const char *); + /// counts how many QLibrary or QPluginLoader are attached to us, plus 1 if it's loaded QAtomicInt libraryRefCount; + /// counts how many times load() or loadPlugin() were called QAtomicInt libraryUnloadCount; enum { IsAPlugin, IsNotAPlugin, MightBeAPlugin } pluginState; -- cgit v1.2.3 From 7b2d98d90642ce7ac4ab0800bd7930f97ba6b10c Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 22 Feb 2013 18:17:12 -0800 Subject: Fix some warnings that have crept up since I last fixed warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit qgtkstyle.cpp:3177:103: error: suggest parentheses around ‘&&’ within ‘||’ [-Werror=parentheses] qcups.cpp:517:66: error: ‘QString::QString(const char*)’ is deprecated itemviews.cpp:795:13: error: unused parameter ‘actionName’ [-Werror=unused-parameter] qeglconvenience.cpp:268:9: error: ‘cfg’ may be used uninitialized in this function [-Werror=maybe-uninitialized] Change-Id: I9b8a175ff1c2ddc443363e08b92e09cf7c2f91cf Reviewed-by: Giuseppe D'Angelo Reviewed-by: John Layt Reviewed-by: Olivier Goffart --- src/platformsupport/eglconvenience/qeglconvenience.cpp | 2 +- src/plugins/accessible/widgets/itemviews.cpp | 2 +- src/printsupport/kernel/qcups.cpp | 2 +- src/widgets/styles/qgtkstyle.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/platformsupport/eglconvenience/qeglconvenience.cpp b/src/platformsupport/eglconvenience/qeglconvenience.cpp index 3119356330..b711a2aebd 100644 --- a/src/platformsupport/eglconvenience/qeglconvenience.cpp +++ b/src/platformsupport/eglconvenience/qeglconvenience.cpp @@ -245,7 +245,7 @@ EGLConfig QEglConfigChooser::chooseConfig() configureAttributes.append(EGL_NONE); - EGLConfig cfg; + EGLConfig cfg = 0; do { // Get the number of matching configurations for this set of properties. EGLint matching = 0; diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp index 17764a3c2e..092278f7fb 100644 --- a/src/plugins/accessible/widgets/itemviews.cpp +++ b/src/plugins/accessible/widgets/itemviews.cpp @@ -792,7 +792,7 @@ void QAccessibleTableCell::doAction(const QString& actionName) } } -QStringList QAccessibleTableCell::keyBindingsForAction(const QString& actionName) const +QStringList QAccessibleTableCell::keyBindingsForAction(const QString &) const { return QStringList(); } diff --git a/src/printsupport/kernel/qcups.cpp b/src/printsupport/kernel/qcups.cpp index 47447b21a1..d2deee1db3 100644 --- a/src/printsupport/kernel/qcups.cpp +++ b/src/printsupport/kernel/qcups.cpp @@ -514,7 +514,7 @@ QList > QCUPSSupport::getCupsPrinterPaperSizesWithNames(i for (int j = 0; j < size->num_choices; ++j) { double multiplier = qt_multiplierForUnit(QPrinter::Millimeter, 0); // resolution is not needed here QSize sz = cups.paperRect(size->choices[j].choice).size(); - result.append(qMakePair(QString(size->choices[j].text), QSizeF(sz.width() / multiplier, sz.height() / multiplier))); + result.append(qMakePair(QString::fromUtf8(size->choices[j].text), QSizeF(sz.width() / multiplier, sz.height() / multiplier))); } } return result; diff --git a/src/widgets/styles/qgtkstyle.cpp b/src/widgets/styles/qgtkstyle.cpp index caa41db451..6d2c88bfea 100644 --- a/src/widgets/styles/qgtkstyle.cpp +++ b/src/widgets/styles/qgtkstyle.cpp @@ -3174,7 +3174,7 @@ void QGtkStyle::drawControl(ControlElement element, #ifndef QT_NO_COMBOBOX if (qobject_cast(widget) || - option->styleObject && option->styleObject->property("_q_isComboBoxPopupItem").toBool()) + (option->styleObject && option->styleObject->property("_q_isComboBoxPopupItem").toBool())) ignoreCheckMark = true; // Ignore the checkmarks provided by the QComboMenuDelegate #endif -- cgit v1.2.3 From b56caf5f4e50d867bfef4b9090b1fba130284688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Mon, 25 Feb 2013 08:54:30 +0100 Subject: Introduced QWindow::setMask() to expose existing platform functionality. Task-number: QTBUG-28555 Change-Id: I2c649b6d9e9dc69be246cb7658b3edbe9682b1bf Reviewed-by: Friedemann Kleint Reviewed-by: Gunnar Sletta --- src/gui/kernel/qwindow.cpp | 33 +++++++++++++++++++++++++++++++++ src/gui/kernel/qwindow.h | 3 +++ src/gui/kernel/qwindow_p.h | 1 + 3 files changed, 37 insertions(+) (limited to 'src') diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 69ae30389e..33fd4954eb 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -790,6 +790,39 @@ qreal QWindow::opacity() const return d->opacity; } +/*! + Sets the mask of the window. + + The mask is a hint to the windowing system that the application does not + want to receive mouse or touch input outside the given \a region. + + The window manager may or may not choose to display any areas of the window + not included in the mask, thus it is the application's responsibility to + clear to transparent the areas that are not part of the mask. + + Setting the mask before the window has been created has no effect. +*/ +void QWindow::setMask(const QRegion ®ion) +{ + Q_D(QWindow); + if (!d->platformWindow) + return; + d->platformWindow->setMask(region); + d->mask = region; +} + +/*! + Returns the mask set on the window. + + The mask is a hint to the windowing system that the application does not + want to receive mouse or touch input outside the given region. +*/ +QRegion QWindow::mask() const +{ + Q_D(const QWindow); + return d->mask; +} + /*! Requests the window to be activated, i.e. receive keyboard focus. diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index 4b8f0ca3e7..0842e9ceb6 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -163,6 +163,9 @@ public: void setOpacity(qreal level); qreal opacity() const; + void setMask(const QRegion ®ion); + QRegion mask() const; + void requestActivate(); bool isActive() const; diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h index bcbface370..e92f37c34f 100644 --- a/src/gui/kernel/qwindow_p.h +++ b/src/gui/kernel/qwindow_p.h @@ -143,6 +143,7 @@ public: PositionPolicy positionPolicy; Qt::ScreenOrientation contentOrientation; qreal opacity; + QRegion mask; QSize minimumSize; QSize maximumSize; -- cgit v1.2.3 From 212ff4f34de927d1efb4845654b74d4bba8d73b7 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Tue, 22 Jan 2013 17:18:36 +0100 Subject: Add multi-line input method hint Enabler for input on Android. Change-Id: I44670b95b35f773814125c5d35c67e9713567813 Reviewed-by: BogDan Vatra Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/corelib/global/qnamespace.h | 2 ++ src/corelib/global/qnamespace.qdoc | 2 ++ src/widgets/widgets/qtextedit.cpp | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index c8a615a1f7..6f977d847d 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -1305,6 +1305,8 @@ public: ImhPreferLatin = 0x200, + ImhMultiLine = 0x400, + ImhDigitsOnly = 0x10000, ImhFormattedNumbersOnly = 0x20000, ImhUppercaseOnly = 0x40000, diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 248cdbce96..e1c64aab94 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -2330,6 +2330,8 @@ \value ImhTime The text editor functions as a time field. \value ImhPreferLatin Latin characters are preferred (but not required). + \value ImhMultiLine Multiple lines can be entered into the text field. + Flags that restrict input (exclusive flags): \value ImhDigitsOnly Only digits are allowed. diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index f033b6544c..a79cea31a1 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -182,7 +182,7 @@ void QTextEditPrivate::init(const QString &html) q->setFocusPolicy(Qt::WheelFocus); q->setAttribute(Qt::WA_KeyCompression); q->setAttribute(Qt::WA_InputMethodEnabled); - + q->setInputMethodHints(Qt::ImhMultiLine); #ifndef QT_NO_CURSOR viewport->setCursor(Qt::IBeamCursor); #endif -- cgit v1.2.3 From 323ba46f72eda8c4da84741467683fdda50653a5 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Thu, 14 Feb 2013 11:00:59 +0200 Subject: Fix thumb armv5 atomics Change-Id: Ie9f98e5f5a08908d9d99e04bdc95fd506cc4a51e Reviewed-by: Thiago Macieira Reviewed-by: Paul Olav Tvete --- src/corelib/arch/qatomic_armv5.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/corelib/arch/qatomic_armv5.h b/src/corelib/arch/qatomic_armv5.h index 445379a99c..92e2b02e5b 100644 --- a/src/corelib/arch/qatomic_armv5.h +++ b/src/corelib/arch/qatomic_armv5.h @@ -163,12 +163,20 @@ __asm T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL template<> template inline T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW { +#if defined(__thumb__) + register T originalValue; + do { + originalValue = _q_value; + } while (_q_cmpxchg(originalValue, newValue, &_q_value) != 0); + return originalValue; +#else T originalValue; asm volatile("swp %0,%2,[%3]" : "=&r"(originalValue), "=m" (_q_value) : "r"(newValue), "r"(&_q_value) : "cc", "memory"); return originalValue; +#endif } #endif // Q_CC_RVCT -- cgit v1.2.3 From c65ecc50ae4c322294f01685a2b2d2a748a9c940 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Tue, 19 Feb 2013 12:18:51 +0100 Subject: Enablers for input methods on Android Adding QInputMethod::inputItemRectangle()/setInputItemRectangle(). Known bugs: inputItemRectangle() not implemented for graphics view items; inputItemTransform() implementation was already missing. Change-Id: I72b1d43350e93858a2b374de3f2199500a96dc79 Reviewed-by: Eskil Abrahamsen Blomfeldt Reviewed-by: BogDan Vatra Reviewed-by: Lars Knoll --- src/gui/kernel/qinputmethod.cpp | 27 +++++++++++++++++++++++++++ src/gui/kernel/qinputmethod.h | 3 +++ src/gui/kernel/qinputmethod_p.h | 1 + src/widgets/kernel/qwidget.cpp | 1 + 4 files changed, 32 insertions(+) (limited to 'src') diff --git a/src/gui/kernel/qinputmethod.cpp b/src/gui/kernel/qinputmethod.cpp index 436b0aed1e..438c169f71 100644 --- a/src/gui/kernel/qinputmethod.cpp +++ b/src/gui/kernel/qinputmethod.cpp @@ -99,6 +99,33 @@ void QInputMethod::setInputItemTransform(const QTransform &transform) emit cursorRectangleChanged(); } + +/*! + \since 5.1 + + Returns the input item's geometry in input item coordinates. + + \sa setInputItemRectangle() +*/ +QRectF QInputMethod::inputItemRectangle() const +{ + Q_D(const QInputMethod); + return d->inputRectangle; +} + +/*! + \since 5.1 + + Sets the input item's geometry to be \a rect, in input item coordinates. + This needs to be updated by the focused window like QQuickCanvas whenever + item is moved inside the scene, or focus is changed. +*/ +void QInputMethod::setInputItemRectangle(const QRectF &rect) +{ + Q_D(QInputMethod); + d->inputRectangle = rect; +} + /*! \property QInputMethod::cursorRectangle \brief Input item's cursor rectangle in window coordinates. diff --git a/src/gui/kernel/qinputmethod.h b/src/gui/kernel/qinputmethod.h index eceebb1c0f..fe6cc3f331 100644 --- a/src/gui/kernel/qinputmethod.h +++ b/src/gui/kernel/qinputmethod.h @@ -67,6 +67,9 @@ public: QTransform inputItemTransform() const; void setInputItemTransform(const QTransform &transform); + QRectF inputItemRectangle() const; + void setInputItemRectangle(const QRectF &rect); + // in window coordinates QRectF cursorRectangle() const; // ### what if we have rotations for the item? diff --git a/src/gui/kernel/qinputmethod_p.h b/src/gui/kernel/qinputmethod_p.h index 6cfc5e2f88..79b1299722 100644 --- a/src/gui/kernel/qinputmethod_p.h +++ b/src/gui/kernel/qinputmethod_p.h @@ -84,6 +84,7 @@ public: bool objectAcceptsInputMethod(QObject *object); QTransform inputItemTransform; + QRectF inputRectangle; QPlatformInputContext *testContext; }; diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 823403c4a6..e5df25e972 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -354,6 +354,7 @@ void QWidgetPrivate::updateWidgetTransform() QPoint p = q->mapTo(q->topLevelWidget(), QPoint(0,0)); t.translate(p.x(), p.y()); qApp->inputMethod()->setInputItemTransform(t); + qApp->inputMethod()->setInputItemRectangle(q->rect()); } } -- cgit v1.2.3 From e5111d5e021e8168fa9deb00abae5c403a5313e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 1 Nov 2012 16:11:35 +0100 Subject: iOS: Build ios platform plugin when appropriate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Defining QT_QPA_DEFAULT_PLATFORM_NAME in qplatformdefs.h is not neccecary, as qconfig.h will already have this define written by configure. Change-Id: I89d9191533f6b4e6bfd5eade6cc0dced02b50f81 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/platforms.pro | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/platforms.pro b/src/plugins/platforms/platforms.pro index 173757568f..a60a3626fa 100644 --- a/src/plugins/platforms/platforms.pro +++ b/src/plugins/platforms/platforms.pro @@ -6,7 +6,10 @@ contains(QT_CONFIG, xcb) { SUBDIRS += xcb } -mac:!ios: SUBDIRS += cocoa +mac { + ios: SUBDIRS += ios + else: SUBDIRS += cocoa +} win32: SUBDIRS += windows -- cgit v1.2.3 From f2168f2688d44ccb604d761fdbe199c69de0dcb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 1 Nov 2012 16:31:06 +0100 Subject: iOS: Build platform plugin like other platform plugins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... by loading(qt_plugin) Change-Id: I9be438b72be986a991a81c2cf1a3e5047bcf0a60 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/ios/ios.pro | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro index 39f72e9719..66af44cbe8 100644 --- a/src/plugins/platforms/ios/ios.pro +++ b/src/plugins/platforms/ios/ios.pro @@ -1,6 +1,7 @@ TARGET = qios -include(../../qpluginbase.pri) -QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms + +load(qt_plugin) +DESTDIR = $$QT.gui.plugins/platforms QT += opengl QT += core-private gui-private platformsupport-private opengl-private widgets-private @@ -21,7 +22,5 @@ OBJECTIVE_HEADERS = qiosintegration.h \ #HEADERS = qiossoftwareinputhandler.h -#include(../fontdatabases/coretext/coretext.pri) - target.path += $$[QT_INSTALL_PLUGINS]/platforms INSTALLS += target -- cgit v1.2.3 From cb25d67f01d129d877ffb56d15f7c5e32f4955ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 1 Nov 2012 22:30:37 +0100 Subject: iOS: Don't link ios platform plugin to Cocoa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2348b19617d3e342cd344bf7d0fa894118cbfae8 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/ios/ios.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro index 66af44cbe8..d274fda8bd 100644 --- a/src/plugins/platforms/ios/ios.pro +++ b/src/plugins/platforms/ios/ios.pro @@ -5,7 +5,7 @@ DESTDIR = $$QT.gui.plugins/platforms QT += opengl QT += core-private gui-private platformsupport-private opengl-private widgets-private -LIBS += -framework Cocoa -framework UIKit +LIBS += -framework UIKit OBJECTIVE_SOURCES = main.mm \ qiosintegration.mm \ -- cgit v1.2.3 From 8716c42ee2a3d5ca42eab5850f711fd5feabb9ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 1 Nov 2012 23:01:56 +0100 Subject: iOS: Add missing QuartzCore dependency to platform plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ic69a5a7faa9b7f9907d0325260b6b6e2389a4c3a Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/ios/ios.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro index d274fda8bd..2cc730f061 100644 --- a/src/plugins/platforms/ios/ios.pro +++ b/src/plugins/platforms/ios/ios.pro @@ -5,7 +5,7 @@ DESTDIR = $$QT.gui.plugins/platforms QT += opengl QT += core-private gui-private platformsupport-private opengl-private widgets-private -LIBS += -framework UIKit +LIBS += -framework UIKit -framework QuartzCore OBJECTIVE_SOURCES = main.mm \ qiosintegration.mm \ -- cgit v1.2.3 From f6dc54ded4957f7afdbed9f84516099b067648ff Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 15 Nov 2012 10:09:31 +0100 Subject: iOS: network should not link against CoreServices on iOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ia3e21a3d73f696f0e77c427bdb263333646c48d3 Reviewed-by: Tor Arne Vestbø --- src/network/kernel/kernel.pri | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/network/kernel/kernel.pri b/src/network/kernel/kernel.pri index 57df8c8bc8..580e0b31b3 100644 --- a/src/network/kernel/kernel.pri +++ b/src/network/kernel/kernel.pri @@ -39,7 +39,11 @@ win32: { } integrity:SOURCES += kernel/qdnslookup_unix.cpp kernel/qhostinfo_unix.cpp kernel/qnetworkinterface_unix.cpp -mac:LIBS_PRIVATE += -framework SystemConfiguration -framework CoreFoundation -framework CoreServices +mac { + LIBS_PRIVATE += -framework SystemConfiguration -framework CoreFoundation + !ios: LIBS_PRIVATE += -framework CoreServices +} + mac:!ios:SOURCES += kernel/qnetworkproxy_mac.cpp else:win32:SOURCES += kernel/qnetworkproxy_win.cpp else:blackberry:SOURCES += kernel/qnetworkproxy_blackberry.cpp -- cgit v1.2.3 From 2cb2a2e29e41a9404453b39f4771a0b4dc3330bc Mon Sep 17 00:00:00 2001 From: David Faure Date: Mon, 18 Feb 2013 12:15:24 +0100 Subject: Add ISO 8859-11 as an alias for TIS-620 (qsimplecodec.cpp says so, but is unused when ICU is used) ISO 8859-16 is still missing though... Change-Id: Idbccedd7bad63f9788cec2f7fc1bbfcb7a891acc Reviewed-by: Thiago Macieira Reviewed-by: Konstantin Ritt Reviewed-by: Lars Knoll --- src/corelib/codecs/qicucodec.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/codecs/qicucodec.cpp b/src/corelib/codecs/qicucodec.cpp index 000f6872b5..9afae8c0ee 100644 --- a/src/corelib/codecs/qicucodec.cpp +++ b/src/corelib/codecs/qicucodec.cpp @@ -457,7 +457,8 @@ QTextCodec *QIcuCodec::codecForNameUnlocked(const char *name) if (!qstrcmp(name, "windows-874-2000") || !qstrcmp(name, "windows-874") || !qstrcmp(name, "MS874") - || !qstrcmp(name, "x-windows-874")) + || !qstrcmp(name, "x-windows-874") + || !qstrcmp(name, "ISO 8859-11")) name = "TIS-620"; UErrorCode error = U_ZERO_ERROR; -- cgit v1.2.3 From 48d39a01a78cdbb6c78133ec958123d7a8f4ae53 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Tue, 26 Feb 2013 15:31:23 +0100 Subject: Cocoa: Remove qt_mac_toCGImage warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We got these because we were flushing the backing store with a null QImage. Change-Id: I372cb3fc7c82d3bdcfe735fcadfa72806d0ef39b Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoabackingstore.mm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoabackingstore.mm b/src/plugins/platforms/cocoa/qcocoabackingstore.mm index 7f022da4c3..a2f6910688 100644 --- a/src/plugins/platforms/cocoa/qcocoabackingstore.mm +++ b/src/plugins/platforms/cocoa/qcocoabackingstore.mm @@ -90,8 +90,10 @@ void QCocoaBackingStore::flush(QWindow *win, const QRegion ®ion, const QPoint // m_cgImage is only a reference to the data inside m_qImage, it is not a copy. CGImageRelease(m_cgImage); m_cgImage = 0; - if (QCocoaWindow *cocoaWindow = static_cast(win->handle())) - [cocoaWindow->m_contentView flushBackingStore:this region:region offset:offset]; + if (!m_qImage.isNull()) { + if (QCocoaWindow *cocoaWindow = static_cast(win->handle())) + [cocoaWindow->m_contentView flushBackingStore:this region:region offset:offset]; + } } void QCocoaBackingStore::resize(const QSize &size, const QRegion &) -- cgit v1.2.3 From 660a615a376ade1a6dba9559367f7ba62d1c6564 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Wed, 30 Jan 2013 14:43:27 +0100 Subject: Update the display to reflect changes by input method Reviewed-by: Eskil Abrahamsen Blomfeldt Change-Id: If3804f2a514ba4635f841de6377f2b328a4e928a Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/widgets/widgets/qwidgettextcontrol.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index 9a2a83503b..d4801f6d5a 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -1726,12 +1726,13 @@ void QWidgetTextControlPrivate::mouseReleaseEvent(QEvent *e, Qt::MouseButton but { Q_Q(QWidgetTextControl); + const QTextCursor oldSelection = cursor; if (sendMouseEventToInputContext( e, QEvent::MouseButtonRelease, button, pos, modifiers, buttons, globalPos)) { + repaintOldAndNewSelection(oldSelection); return; } - const QTextCursor oldSelection = cursor; const int oldCursorPos = cursor.position(); #ifndef QT_NO_DRAGANDDROP -- cgit v1.2.3 From d88ec35b1186348085c8db9b8e075021ab8dfd68 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Mon, 4 Feb 2013 21:08:10 +0200 Subject: Fix compile on Android This is a workaround for a broken compiler Change-Id: I10c8c750caf56036419807ec4a2439bf14cf64d6 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/painting/qdrawhelper_p.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h index f958538aa6..5d9867012f 100644 --- a/src/gui/painting/qdrawhelper_p.h +++ b/src/gui/painting/qdrawhelper_p.h @@ -386,13 +386,14 @@ static inline qreal qRadialDeterminant(qreal a, qreal b, qreal c) return (b * b) - (4 * a * c); } +extern void (*qt_memfill32)(quint32 *dest, quint32 value, int count); + template Q_STATIC_TEMPLATE_FUNCTION const uint * QT_FASTCALL qt_fetch_radial_gradient_template(uint *buffer, const Operator *op, const QSpanData *data, int y, int x, int length) { // avoid division by zero if (qFuzzyIsNull(op->radial.a)) { - extern void (*qt_memfill32)(quint32 *dest, quint32 value, int count); qt_memfill32(buffer, 0, length); return buffer; } @@ -696,7 +697,6 @@ void qt_memfill(T *dest, T value, int count); template<> inline void qt_memfill(quint32 *dest, quint32 color, int count) { - extern void (*qt_memfill32)(quint32 *dest, quint32 value, int count); qt_memfill32(dest, color, count); } -- cgit v1.2.3 From 023644cae1f22bb0d01c0ee540e0eb083abefb25 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Wed, 27 Feb 2013 15:19:15 +0100 Subject: Style fixes for android enablers Change-Id: I0b942865c29f4bdf29f0e7f56af0d620acbc39c6 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/platformsupport/fbconvenience/qfbscreen.cpp | 2 +- src/platformsupport/fbconvenience/qfbscreen_p.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/platformsupport/fbconvenience/qfbscreen.cpp b/src/platformsupport/fbconvenience/qfbscreen.cpp index 5200177fdd..6427b62972 100644 --- a/src/platformsupport/fbconvenience/qfbscreen.cpp +++ b/src/platformsupport/fbconvenience/qfbscreen.cpp @@ -114,7 +114,7 @@ void QFbScreen::lower(QFbWindow *window) topWindowChanged(w); } -QWindow *QFbScreen::topWindow() +QWindow *QFbScreen::topWindow() const { foreach (QFbWindow *fbw, mWindowStack) if (fbw->window()->type() == Qt::Window || fbw->window()->type() == Qt::Dialog) diff --git a/src/platformsupport/fbconvenience/qfbscreen_p.h b/src/platformsupport/fbconvenience/qfbscreen_p.h index 00847922c5..c7106358d9 100644 --- a/src/platformsupport/fbconvenience/qfbscreen_p.h +++ b/src/platformsupport/fbconvenience/qfbscreen_p.h @@ -64,7 +64,7 @@ public: virtual QImage::Format format() const { return mFormat; } virtual QSizeF physicalSize() const { return mPhysicalSize; } - QWindow *topWindow(); + QWindow *topWindow() const; virtual QWindow *topLevelAt(const QPoint & p) const; // compositor api @@ -72,7 +72,7 @@ public: virtual void removeWindow(QFbWindow *window); virtual void raise(QFbWindow *window); virtual void lower(QFbWindow *window); - virtual void topWindowChanged(QWindow *){} + virtual void topWindowChanged(QWindow *) {} public slots: virtual void setDirty(const QRect &rect); -- cgit v1.2.3 From afaa6e42f090d495df85ff5349265da71409a88e Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Mon, 4 Feb 2013 11:06:03 +0200 Subject: Export QAbstractFileEngine[XXXX] classes. We still need them for Android assets implementation. Change-Id: I12bb809c05ac88f3c4a7d6796692b4dc3987027c Reviewed-by: Eskil Abrahamsen Blomfeldt Reviewed-by: Paul Olav Tvete --- src/corelib/io/qabstractfileengine_p.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qabstractfileengine_p.h b/src/corelib/io/qabstractfileengine_p.h index bdc4b5c123..dd64e3d71f 100644 --- a/src/corelib/io/qabstractfileengine_p.h +++ b/src/corelib/io/qabstractfileengine_p.h @@ -66,7 +66,7 @@ class QVariant; class QAbstractFileEngineIterator; class QAbstractFileEnginePrivate; -class Q_AUTOTEST_EXPORT QAbstractFileEngine +class Q_CORE_EXPORT QAbstractFileEngine { public: enum FileFlag { @@ -210,7 +210,7 @@ private: Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractFileEngine::FileFlags) -class Q_AUTOTEST_EXPORT QAbstractFileEngineHandler +class Q_CORE_EXPORT QAbstractFileEngineHandler { public: QAbstractFileEngineHandler(); @@ -219,7 +219,7 @@ public: }; class QAbstractFileEngineIteratorPrivate; -class Q_AUTOTEST_EXPORT QAbstractFileEngineIterator +class Q_CORE_EXPORT QAbstractFileEngineIterator { public: QAbstractFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters); -- cgit v1.2.3 From 70bb34ccd5983133118655cd73683750d4f53de7 Mon Sep 17 00:00:00 2001 From: Israel Lins Date: Fri, 15 Feb 2013 19:47:43 -0300 Subject: ODBC: implementation of lastInsertId() Implemented lastInsertId() for some ODBC compatible databases. Change-Id: I0b75a8e68369af39e258e4761b384767ab8a371e Reviewed-by: Mark Brand --- src/sql/drivers/odbc/qsql_odbc.cpp | 38 +++++++++++++++++++++++++++++++++++++- src/sql/drivers/odbc/qsql_odbc_p.h | 1 + 2 files changed, 38 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index 8f2e4c0cc6..a7f583c3b8 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -1677,6 +1677,38 @@ QSqlRecord QODBCResult::record() const return d->rInf; } +QVariant QODBCResult::lastInsertId() const +{ + QString sql; + + switch (d->driverPrivate->dbmsType) { + case QODBCDriverPrivate::MSSqlServer: + case QODBCDriverPrivate::Sybase: + sql = QLatin1String("SELECT @@IDENTITY;"); + break; + case QODBCDriverPrivate::MySqlServer: + sql = QLatin1String("SELECT LAST_INSERT_ID();"); + break; + case QODBCDriverPrivate::PostgreSQL: + sql = QLatin1String("SELECT lastval();"); + break; + default: + break; + } + + if (!sql.isEmpty()) { + QSqlQuery qry(driver()->createResult()); + if (qry.exec(sql) && qry.next()) + return qry.value(0); + + qSqlWarning(QLatin1String("QODBCResult::lastInsertId: Unable to get lastInsertId"), d); + } else { + qSqlWarning(QLatin1String("QODBCResult::lastInsertId: not implemented for this DBMS"), d); + } + + return QVariant(); +} + QVariant QODBCResult::handle() const { return QVariant(qRegisterMetaType("SQLHANDLE"), &d->hStmt); @@ -1797,12 +1829,16 @@ bool QODBCDriver::hasFeature(DriverFeature f) const return true; case QuerySize: case NamedPlaceholders: - case LastInsertId: case BatchOperations: case SimpleLocking: case EventNotifications: case CancelQuery: return false; + case LastInsertId: + return (d->dbmsType == QODBCDriverPrivate::MSSqlServer) + || (d->dbmsType == QODBCDriverPrivate::Sybase) + || (d->dbmsType == QODBCDriverPrivate::MySqlServer) + || (d->dbmsType == QODBCDriverPrivate::PostgreSQL); case MultipleResultSets: return d->hasMultiResultSets; case BLOB: { diff --git a/src/sql/drivers/odbc/qsql_odbc_p.h b/src/sql/drivers/odbc/qsql_odbc_p.h index c1367165f5..191f64f072 100644 --- a/src/sql/drivers/odbc/qsql_odbc_p.h +++ b/src/sql/drivers/odbc/qsql_odbc_p.h @@ -97,6 +97,7 @@ public: bool prepare(const QString& query); bool exec(); + QVariant lastInsertId() const; QVariant handle() const; virtual void setForwardOnly(bool forward); -- cgit v1.2.3 From 123ce761c058acc0222792e96c9aba22d06e619c Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 5 Feb 2013 13:20:31 +0100 Subject: QT_MESSAGE_OUTPUT: add support for condition depending on the type The motivation is to enable coloration the way KDE currently does. It can now be achieved with a QT_MESSAGE_OUTPUT set to "%{appname}(%{category}) \033[31m%{if-debug}\033[34m%{endif}%{function}\033[0m: %{message}" I was thinking about supporting directly color using something like %{begin-category-color} that would be smart and detect if we are running on a terminal, but it would be less flexible in the way the colors van be configured. Changelog: QT_MESSAGE_OUTPUT can contain conditionals based on the type of the message Change-Id: Icd8de04734a94a3afcbf542a5b78b290a1914960 Reviewed-by: David Faure (KDE) --- src/corelib/global/qlogging.cpp | 87 +++++++++++++++++++++++++++++++++-------- 1 file changed, 71 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index c3ce405156..7204efc752 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -523,6 +523,11 @@ static const char functionTokenC[] = "%{function}"; static const char pidTokenC[] = "%{pid}"; static const char appnameTokenC[] = "%{appname}"; static const char threadidTokenC[] = "%{threadid}"; +static const char ifDebugTokenC[] = "%{if-debug}"; +static const char ifWarningTokenC[] = "%{if-warning}"; +static const char ifCriticalTokenC[] = "%{if-critical}"; +static const char ifFatalTokenC[] = "%{if-fatal}"; +static const char endifTokenC[] = "%{endif}"; static const char emptyTokenC[] = ""; static const char defaultPattern[] = "%{message}"; @@ -609,6 +614,10 @@ void QMessagePattern::setPattern(const QString &pattern) tokens = new const char*[lexemes.size() + 1]; tokens[lexemes.size()] = 0; + bool nestedIfError = false; + bool inIf = false; + QString error; + for (int i = 0; i < lexemes.size(); ++i) { const QString lexeme = lexemes.at(i); if (lexeme.startsWith(QLatin1String("%{")) @@ -632,23 +641,28 @@ void QMessagePattern::setPattern(const QString &pattern) tokens[i] = appnameTokenC; else if (lexeme == QLatin1String(threadidTokenC)) tokens[i] = threadidTokenC; - else { - tokens[i] = emptyTokenC; - QString error = QStringLiteral("QT_MESSAGE_PATTERN: Unknown placeholder %1\n") +#define IF_TOKEN(LEVEL) \ + else if (lexeme == QLatin1String(LEVEL)) { \ + if (inIf) \ + nestedIfError = true; \ + tokens[i] = LEVEL; \ + inIf = true; \ + } + IF_TOKEN(ifDebugTokenC) + IF_TOKEN(ifWarningTokenC) + IF_TOKEN(ifCriticalTokenC) + IF_TOKEN(ifFatalTokenC) +#undef IF_TOKEN + else if (lexeme == QLatin1String(endifTokenC)) { + tokens[i] = endifTokenC; + if (!inIf && !nestedIfError) + error += QStringLiteral("QT_MESSAGE_PATTERN: %{endif} without an %{if-*}\n"); + inIf = false; + } else { + tokens[i] = emptyTokenC; + error += QStringLiteral("QT_MESSAGE_PATTERN: Unknown placeholder %1\n") .arg(lexeme); - -#if defined(Q_OS_WINCE) - OutputDebugString(reinterpret_cast(error.utf16())); - continue; -#elif defined(Q_OS_WIN) && defined(QT_BUILD_CORE_LIB) - if (usingWinMain) { - OutputDebugString(reinterpret_cast(error.utf16())); - continue; - } -#endif - fprintf(stderr, "%s", error.toLocal8Bit().constData()); - fflush(stderr); } } else { char *literal = new char[lexeme.size() + 1]; @@ -658,6 +672,24 @@ void QMessagePattern::setPattern(const QString &pattern) tokens[i] = literal; } } + if (nestedIfError) + error += QStringLiteral("QT_MESSAGE_PATTERN: %{if-*} cannot be nested\n"); + else if (inIf) + error += QStringLiteral("QT_MESSAGE_PATTERN: missing %{endif}\n"); + if (!error.isEmpty()) { +#if defined(Q_OS_WINCE) + OutputDebugString(reinterpret_cast(error.utf16())); + if (0) +#elif defined(Q_OS_WIN) && defined(QT_BUILD_CORE_LIB) + if (usingWinMain) { + OutputDebugString(reinterpret_cast(error.utf16())); + } else +#endif + { + fprintf(stderr, "%s", error.toLocal8Bit().constData()); + fflush(stderr); + } + } literals = new const char*[literalsVar.size() + 1]; literals[literalsVar.size()] = 0; memcpy(literals, literalsVar.constData(), literalsVar.size() * sizeof(const char*)); @@ -737,10 +769,16 @@ Q_CORE_EXPORT QString qMessageFormatString(QtMsgType type, const QMessageLogCont if (pattern->tokens[0] == 0) return message; + bool skip = false; + // we do not convert file, function, line literals to local encoding due to overhead for (int i = 0; pattern->tokens[i] != 0; ++i) { const char *token = pattern->tokens[i]; - if (token == messageTokenC) { + if (token == endifTokenC) { + skip = false; + } else if (skip) { + // do nothing + } else if (token == messageTokenC) { message.append(str); } else if (token == categoryTokenC) { message.append(QLatin1String(context.category)); @@ -772,6 +810,14 @@ Q_CORE_EXPORT QString qMessageFormatString(QtMsgType type, const QMessageLogCont message.append(QLatin1String("0x")); message.append(QString::number(qlonglong(QThread::currentThread()->currentThread()), 16)); #endif +#define HANDLE_IF_TOKEN(LEVEL) \ + } else if (token == if##LEVEL##TokenC) { \ + skip = type != Qt##LEVEL##Msg; + HANDLE_IF_TOKEN(Debug) + HANDLE_IF_TOKEN(Warning) + HANDLE_IF_TOKEN(Critical) + HANDLE_IF_TOKEN(Fatal) +#undef HANDLE_IF_TOKEN } else { message.append(QLatin1String(token)); } @@ -1011,6 +1057,15 @@ void qErrnoWarning(int code, const char *msg, ...) \row \li \c %{type} \li "debug", "warning", "critical" or "fatal" \endtable + You can also use conditionals on the type of the message using \c %{if-debug}, + \c %{if-warning}, \c %{if-critical} or \c %{if-fatal} followed by an \c %{endif}. + What is inside the \c %{if-*} and \c %{endif} will only be printed if the type matches. + + Example: + \code + QT_MESSAGE_PATTERN="[%{if-debug}D%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}] %{file}:%{line} - %{message}" + \endcode + The default \a pattern is "%{message}". The \a pattern can also be changed at runtime by setting the QT_MESSAGE_PATTERN -- cgit v1.2.3 From c7fbff7bf255f9fc0123f37fc475bd8ae8cf38e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 4 Dec 2012 15:50:49 +0100 Subject: iOS: Add required public dependencies of the CoreText font database CoreText and CoreGraphics are available on iOS as stand-alone frameworks, but on Mac OS X they are part of the ApplicationServices umbrella framework. Mac OS 10.8 actually introduced both as stand-alone frameworks, but for simplicity we link to ApplicationServices, as there's still symlinks from ApplicationServices to the real frameworks. Change-Id: I7f7ef795629cc37da85857d5c42283754acc4474 Reviewed-by: Richard Moe Gustavsen --- src/platformsupport/fontdatabases/mac/coretext.pri | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/platformsupport/fontdatabases/mac/coretext.pri b/src/platformsupport/fontdatabases/mac/coretext.pri index f7977964fe..d1abf123aa 100644 --- a/src/platformsupport/fontdatabases/mac/coretext.pri +++ b/src/platformsupport/fontdatabases/mac/coretext.pri @@ -1,2 +1,10 @@ HEADERS += $$PWD/qcoretextfontdatabase_p.h $$PWD/qfontengine_coretext_p.h OBJECTIVE_SOURCES += $$PWD/qfontengine_coretext.mm $$PWD/qcoretextfontdatabase.mm + +ios: \ + # On iOS CoreText and CoreGraphics are stand-alone frameworks + LIBS += -framework CoreText -framework CoreGraphics +else: \ + # On Mac OS they are part of the ApplicationServices umbrella framework, + # even in 10.8 where they were also made available stand-alone. + LIBS += -framework ApplicationServices -- cgit v1.2.3 From 8c0014907893e0ac7c0b0c33d54415830f36ddaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 13 Dec 2012 16:46:29 +0100 Subject: iOS: Don't include QtPrintSupport dialogs on iOS It pulls in a dependency on Cocoa. Change-Id: I293063adfdef8b92f80ffda0c66ac6e6d12958ff Reviewed-by: Richard Moe Gustavsen --- src/printsupport/dialogs/dialogs.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/printsupport/dialogs/dialogs.pri b/src/printsupport/dialogs/dialogs.pri index 9db975e202..9659046f60 100644 --- a/src/printsupport/dialogs/dialogs.pri +++ b/src/printsupport/dialogs/dialogs.pri @@ -8,7 +8,7 @@ HEADERS += \ dialogs/qprintdialog.h \ dialogs/qprintpreviewdialog.h -mac { +mac:!ios { OBJECTIVE_SOURCES += dialogs/qpagesetupdialog_mac.mm \ dialogs/qprintdialog_mac.mm LIBS += -framework Cocoa -- cgit v1.2.3 From 9c8ce6afb0bb19e0cb5902b65efbd1a1b55344eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 2 Nov 2012 15:44:46 +0100 Subject: iOS: Don't add to OBJECTIVE_HEADERS, there's no such thing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We should add to HEADERS, so that moc will realize it needs to run on the headers. Change-Id: I582e989e4faf0835c4bf9a677cbd8ac075559319 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/ios/ios.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro index 2cc730f061..c6c104f2f3 100644 --- a/src/plugins/platforms/ios/ios.pro +++ b/src/plugins/platforms/ios/ios.pro @@ -14,7 +14,7 @@ OBJECTIVE_SOURCES = main.mm \ qioseventdispatcher.mm \ qiosbackingstore.mm -OBJECTIVE_HEADERS = qiosintegration.h \ +HEADERS = qiosintegration.h \ qioswindow.h \ qiosscreen.h \ qioseventdispatcher.h \ -- cgit v1.2.3 From 3020d06fdb9fd4e539876c9fb1945b50d55cc21d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sun, 4 Nov 2012 17:19:09 +0100 Subject: iOS: Change member variable style to be consistent with Qt's de facto standard Change-Id: Idd65ad9cbb77114466c5b69a799b98a7fee5068f Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosbackingstore.h | 2 +- src/plugins/platforms/ios/qiosbackingstore.mm | 12 +- src/plugins/platforms/ios/qiosintegration.h | 4 +- src/plugins/platforms/ios/qiosintegration.mm | 8 +- .../platforms/ios/qiossoftwareinputhandler.h | 6 +- src/plugins/platforms/ios/qioswindow.h | 26 +-- src/plugins/platforms/ios/qioswindow.mm | 186 ++++++++++----------- 7 files changed, 122 insertions(+), 122 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosbackingstore.h b/src/plugins/platforms/ios/qiosbackingstore.h index cb0e9cbedb..d83a5c21ad 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.h +++ b/src/plugins/platforms/ios/qiosbackingstore.h @@ -57,7 +57,7 @@ public: void resize(const QSize &size, const QRegion &staticContents); private: - QPaintDevice *mPaintDevice; + QPaintDevice *m_paintDevice; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm index 32ddce38d2..20f7c1f2d1 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.mm +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -63,7 +63,7 @@ class EAGLPaintDevice : public QGLPaintDevice { public: EAGLPaintDevice(QWindow *window) - :QGLPaintDevice(), mWindow(window) + :QGLPaintDevice(), m_window(window) { #if defined(QT_OPENGL_ES_2) helper = [[PaintDeviceHelper alloc] init]; @@ -83,17 +83,17 @@ public: void setFramebuffer(GLuint buffer) { m_thisFBO = buffer; } int devType() const { return QInternal::OpenGL; } - QSize size() const { return mWindow->geometry().size(); } + QSize size() const { return m_window->geometry().size(); } QGLContext* context() const { // Todo: siplify this: return QGLContext::fromOpenGLContext( - static_cast(mWindow->handle())->glContext()->context()); + static_cast(m_window->handle())->glContext()->context()); } QPaintEngine *paintEngine() const { return qt_qgl_paint_engine(); } private: - QWindow *mWindow; + QWindow *m_window; PaintDeviceHelper *helper; }; @@ -112,13 +112,13 @@ private: QT_BEGIN_NAMESPACE QIOSBackingStore::QIOSBackingStore(QWindow *window) - : QPlatformBackingStore(window), mPaintDevice(new EAGLPaintDevice(window)) + : QPlatformBackingStore(window), m_paintDevice(new EAGLPaintDevice(window)) { } QPaintDevice *QIOSBackingStore::paintDevice() { - return mPaintDevice; + return m_paintDevice; } void QIOSBackingStore::flush(QWindow *window, const QRegion ®ion, const QPoint &offset) diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index b71379e417..f44403fbba 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -65,8 +65,8 @@ public: QAbstractEventDispatcher *guiThreadEventDispatcher() const; private: - QList mScreens; - QPlatformFontDatabase *mFontDb; + QList m_screens; + QPlatformFontDatabase *m_fontDb; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index bd63384004..98b08ed72a 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -59,11 +59,11 @@ QIOSIntegration * QIOSIntegration::instance() } QIOSIntegration::QIOSIntegration() - :mFontDb(new QCoreTextFontDatabase) + :m_fontDb(new QCoreTextFontDatabase) { if (!m_instance) m_instance = this; - mScreens << new QIOSScreen(0); + m_screens << new QIOSScreen(0); } QIOSIntegration::~QIOSIntegration() @@ -85,7 +85,7 @@ QPlatformWindow *QIOSIntegration::createPlatformWindow(QWindow *window) const QList QIOSIntegration::screens() const { - return mScreens; + return m_screens; } QPlatformBackingStore *QIOSIntegration::createPlatformBackingStore(QWindow *window) const @@ -100,7 +100,7 @@ QAbstractEventDispatcher *QIOSIntegration::guiThreadEventDispatcher() const QPlatformFontDatabase * QIOSIntegration::fontDatabase() const { - return mFontDb; + return m_fontDb; } QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiossoftwareinputhandler.h b/src/plugins/platforms/ios/qiossoftwareinputhandler.h index bbad656b93..99e8fac61b 100644 --- a/src/plugins/platforms/ios/qiossoftwareinputhandler.h +++ b/src/plugins/platforms/ios/qiossoftwareinputhandler.h @@ -55,7 +55,7 @@ class QIOSSoftwareInputHandler : public QObject Q_OBJECT public: - QIOSSoftwareInputHandler() : mCurrentFocusWidget(0), mCurrentFocusObject(0) {} + QIOSSoftwareInputHandler() : m_CurrentFocusWidget(0), m_CurrentFocusObject(0) {} bool eventFilter(QObject *obj, QEvent *event); private slots: @@ -64,8 +64,8 @@ private slots: private: bool closeSoftwareInputPanel(QWidget *widget); - QPointer mCurrentFocusWidget; - QPointer mCurrentFocusObject; + QPointer m_currentFocusWidget; + QPointer m_currentFocusObject; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index f43f3db4f9..2d3d5b072f 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -53,13 +53,13 @@ @interface EAGLView : UIView { - QPlatformWindow *mWindow; - EAGLContext *mContext; + QPlatformWindow *m_window; + EAGLContext *m_context; - GLint mFramebufferWidth; - GLint mFramebufferHeight; + GLint m_framebufferWidth; + GLint m_framebufferHeight; - GLuint mFramebuffer, mColorRenderbuffer, mDepthRenderbuffer; + GLuint m_framebuffer, m_colorRenderbuffer, m_depthRenderbuffer; id delegate; // ------- Text Input ---------- @@ -111,23 +111,23 @@ public: explicit QIOSWindow(QWindow *window); ~QIOSWindow(); - UIWindow *nativeWindow() const { return mWindow; } - EAGLView *nativeView() const { return mView; } + UIWindow *nativeWindow() const { return m_window; } + EAGLView *nativeView() const { return m_view; } void setGeometry(const QRect &rect); UIWindow *ensureNativeWindow(); QPlatformOpenGLContext *glContext() const; - QIOSScreen *platformScreen() const { return mScreen; } + QIOSScreen *platformScreen() const { return m_screen; } void updateGeometryAndOrientation(); private: - QIOSScreen *mScreen; - UIWindow *mWindow; - CGRect mFrame; - EAGLView *mView; - mutable EAGLPlatformContext *mContext; + QIOSScreen *m_screen; + UIWindow *m_window; + CGRect m_frame; + EAGLView *m_view; + mutable EAGLPlatformContext *m_context; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index c63c22dbaa..28aaaf2189 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -75,7 +75,7 @@ class EAGLPlatformContext : public QPlatformOpenGLContext { public: EAGLPlatformContext(EAGLView *view) - : mView(view) + : m_view(view) { /* mFormat.setWindowApi(QPlatformWindowFormat::OpenGL); @@ -103,7 +103,7 @@ public: #else EAGLContext *aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1]; #endif - [mView setContext:aContext]; + [m_view setContext:aContext]; } ~EAGLPlatformContext() { } @@ -113,7 +113,7 @@ public: Q_UNUSED(surface); qDebug() << __FUNCTION__ << "not implemented"; //QPlatformOpenGLContext::makeCurrent(); - //[mView makeCurrent]; + //[m_view makeCurrent]; return false; } @@ -127,7 +127,7 @@ public: { Q_UNUSED(surface); qDebug() << __FUNCTION__ << "not implemented"; - //[mView presentFramebuffer]; + //[m_view presentFramebuffer]; } QFunctionPointer getProcAddress(const QByteArray& ) { return 0; } @@ -138,7 +138,7 @@ public: } private: - EAGLView *mView; + EAGLView *m_view; QSurfaceFormat mFormat; }; @@ -174,97 +174,97 @@ private: - (void)setContext:(EAGLContext *)newContext { - if (mContext != newContext) + if (m_context != newContext) { [self deleteFramebuffer]; - [mContext release]; - mContext = [newContext retain]; + [m_context release]; + m_context = [newContext retain]; [EAGLContext setCurrentContext:nil]; } } - (void)presentFramebuffer { - if (mContext) { - [EAGLContext setCurrentContext:mContext]; - glBindRenderbuffer(GL_RENDERBUFFER, mColorRenderbuffer); - [mContext presentRenderbuffer:GL_RENDERBUFFER]; + if (m_context) { + [EAGLContext setCurrentContext:m_context]; + glBindRenderbuffer(GL_RENDERBUFFER, m_colorRenderbuffer); + [m_context presentRenderbuffer:GL_RENDERBUFFER]; } } - (void)deleteFramebuffer { - if (mContext) + if (m_context) { - [EAGLContext setCurrentContext:mContext]; - if (mFramebuffer) { - glDeleteFramebuffers(1, &mFramebuffer); - mFramebuffer = 0; + [EAGLContext setCurrentContext:m_context]; + if (m_framebuffer) { + glDeleteFramebuffers(1, &m_framebuffer); + m_framebuffer = 0; } - if (mColorRenderbuffer) { - glDeleteRenderbuffers(1, &mColorRenderbuffer); - mColorRenderbuffer = 0; + if (m_colorRenderbuffer) { + glDeleteRenderbuffers(1, &m_colorRenderbuffer); + m_colorRenderbuffer = 0; } - if (mDepthRenderbuffer) { - glDeleteRenderbuffers(1, &mDepthRenderbuffer); - mDepthRenderbuffer = 0; + if (m_depthRenderbuffer) { + glDeleteRenderbuffers(1, &m_depthRenderbuffer); + m_depthRenderbuffer = 0; } } } - (void)createFramebuffer { - if (mContext && !mFramebuffer) + if (m_context && !m_framebuffer) { - [EAGLContext setCurrentContext:mContext]; - glGenFramebuffers(1, &mFramebuffer); - glBindFramebuffer(GL_FRAMEBUFFER, mFramebuffer); - - glGenRenderbuffers(1, &mColorRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, mColorRenderbuffer); - [mContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer *)self.layer]; - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &mFramebufferWidth); - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &mFramebufferHeight); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, mColorRenderbuffer); - - glGenRenderbuffers(1, &mDepthRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, mDepthRenderbuffer); + [EAGLContext setCurrentContext:m_context]; + glGenFramebuffers(1, &m_framebuffer); + glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer); + + glGenRenderbuffers(1, &m_colorRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, m_colorRenderbuffer); + [m_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer *)self.layer]; + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &m_framebufferWidth); + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &m_framebufferHeight); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_colorRenderbuffer); + + glGenRenderbuffers(1, &m_depthRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, m_depthRenderbuffer); if (stencilBits() > 0) { - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, mFramebufferWidth, mFramebufferHeight); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, mDepthRenderbuffer); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, m_framebufferWidth, m_framebufferHeight); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, m_depthRenderbuffer); } else { - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, mFramebufferWidth, mFramebufferHeight); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, m_framebufferWidth, m_framebufferHeight); } - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepthRenderbuffer); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_depthRenderbuffer); if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER)); if (delegate && [delegate respondsToSelector:@selector(eaglView:usesFramebuffer:)]) { - [delegate eaglView:self usesFramebuffer:mFramebuffer]; + [delegate eaglView:self usesFramebuffer:m_framebuffer]; } } } - (void)makeCurrent { - if (mContext) + if (m_context) { - [EAGLContext setCurrentContext:mContext]; - if (!mFramebuffer) + [EAGLContext setCurrentContext:m_context]; + if (!m_framebuffer) [self createFramebuffer]; - glBindFramebuffer(GL_FRAMEBUFFER, mFramebuffer); - glViewport(0, 0, mFramebufferWidth, mFramebufferHeight); + glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer); + glViewport(0, 0, m_framebufferWidth, m_framebufferHeight); } } - (GLint)fbo { - return mFramebuffer; + return m_framebuffer; } - (void)setWindow:(QPlatformWindow *)window { - mWindow = window; + m_window = window; } - (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons @@ -274,7 +274,7 @@ private: CGFloat scaleFactor = [self contentScaleFactor]; QPoint p(locationInView.x * scaleFactor, locationInView.y * scaleFactor); // TODO handle global touch point? for status bar? - QWindowSystemInterface::handleMouseEvent(mWindow->window(), (ulong)(event.timestamp*1000), + QWindowSystemInterface::handleMouseEvent(m_window->window(), (ulong)(event.timestamp*1000), p, p, buttons); } @@ -347,18 +347,18 @@ QT_BEGIN_NAMESPACE QIOSWindow::QIOSWindow(QWindow *window) : QPlatformWindow(window), - mWindow(nil), - mContext(0) + m_window(nil), + m_context(0) { - mScreen = static_cast(QPlatformScreen::platformScreenForWindow(window)); - mView = [[EAGLView alloc] init]; + m_screen = static_cast(QPlatformScreen::platformScreenForWindow(window)); + m_view = [[EAGLView alloc] init]; } QIOSWindow::~QIOSWindow() { - delete mContext; mContext = 0; - [mView release]; - [mWindow release]; + delete m_context; m_context = 0; + [m_view release]; + [m_window release]; } void QIOSWindow::setGeometry(const QRect &rect) @@ -369,81 +369,81 @@ void QIOSWindow::setGeometry(const QRect &rect) UIWindow *QIOSWindow::ensureNativeWindow() { - if (!mWindow) { - mWindow = [[UIWindow alloc] init]; + if (!m_window) { + m_window = [[UIWindow alloc] init]; updateGeometryAndOrientation(); // window - mWindow.screen = mScreen->uiScreen(); + m_window.screen = m_screen->uiScreen(); // for some reason setting the screen resets frame.origin, so we need to set the frame afterwards - mWindow.frame = mFrame; + m_window.frame = m_frame; // view - [mView deleteFramebuffer]; - mView.frame = CGRectMake(0, 0, mWindow.bounds.size.width, mWindow.bounds.size.height); // fill - [mView setContentScaleFactor:[mWindow.screen scale]]; - [mView setMultipleTouchEnabled:YES]; - [mView setWindow:this]; - [mWindow addSubview:mView]; - [mWindow setNeedsDisplay]; - [mWindow makeKeyAndVisible]; + [m_view deleteFramebuffer]; + m_view.frame = CGRectMake(0, 0, m_window.bounds.size.width, m_window.bounds.size.height); // fill + [m_view setContentScaleFactor:[m_window.screen scale]]; + [m_view setMultipleTouchEnabled:YES]; + [m_view setWindow:this]; + [m_window addSubview:m_view]; + [m_window setNeedsDisplay]; + [m_window makeKeyAndVisible]; } - return mWindow; + return m_window; } void QIOSWindow::updateGeometryAndOrientation() { - if (!mWindow) + if (!m_window) return; - mFrame = [mScreen->uiScreen() applicationFrame]; - CGRect screen = [mScreen->uiScreen() bounds]; + m_frame = [m_screen->uiScreen() applicationFrame]; + CGRect screen = [m_screen->uiScreen() bounds]; QRect geom; CGFloat angle = 0; switch ([[UIApplication sharedApplication] statusBarOrientation]) { case UIInterfaceOrientationPortrait: - geom = QRect(mFrame.origin.x, mFrame.origin.y, mFrame.size.width, mFrame.size.height); + geom = QRect(m_frame.origin.x, m_frame.origin.y, m_frame.size.width, m_frame.size.height); break; case UIInterfaceOrientationPortraitUpsideDown: - geom = QRect(screen.size.width - mFrame.origin.x - mFrame.size.width, - screen.size.height - mFrame.origin.y - mFrame.size.height, - mFrame.size.width, - mFrame.size.height); + geom = QRect(screen.size.width - m_frame.origin.x - m_frame.size.width, + screen.size.height - m_frame.origin.y - m_frame.size.height, + m_frame.size.width, + m_frame.size.height); angle = M_PI; break; case UIInterfaceOrientationLandscapeLeft: - geom = QRect(screen.size.height - mFrame.origin.y - mFrame.size.height, - mFrame.origin.x, - mFrame.size.height, - mFrame.size.width); + geom = QRect(screen.size.height - m_frame.origin.y - m_frame.size.height, + m_frame.origin.x, + m_frame.size.height, + m_frame.size.width); angle = -M_PI/2.; break; case UIInterfaceOrientationLandscapeRight: - geom = QRect(mFrame.origin.y, - screen.size.width - mFrame.origin.x - mFrame.size.width, - mFrame.size.height, - mFrame.size.width); + geom = QRect(m_frame.origin.y, + screen.size.width - m_frame.origin.x - m_frame.size.width, + m_frame.size.height, + m_frame.size.width); angle = +M_PI/2.; break; } - CGFloat scale = [mScreen->uiScreen() scale]; + CGFloat scale = [m_screen->uiScreen() scale]; geom = QRect(geom.x() * scale, geom.y() * scale, geom.width() * scale, geom.height() * scale); if (angle != 0) { - [mView layer].transform = CATransform3DMakeRotation(angle, 0, 0, 1.); + [m_view layer].transform = CATransform3DMakeRotation(angle, 0, 0, 1.); } else { - [mView layer].transform = CATransform3DIdentity; + [m_view layer].transform = CATransform3DIdentity; } - [mView setNeedsDisplay]; + [m_view setNeedsDisplay]; window()->setGeometry(geom); } QPlatformOpenGLContext *QIOSWindow::glContext() const { - if (!mContext) { - mContext = new EAGLPlatformContext(mView); + if (!m_context) { + m_context = new EAGLPlatformContext(m_view); } - return mContext; + return m_context; } QT_END_NAMESPACE -- cgit v1.2.3 From 6d36a83b419e0b0bc0270e45983ed2bbfa453996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sun, 4 Nov 2012 18:56:45 +0100 Subject: iOS: Get rid of singleton instance accessor in platform plugin None of the other platform plugins have one, and it's not used anywhere. Change-Id: Id46ab5f75c9819511c3e9d123d0338c3c8799869 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosintegration.h | 2 -- src/plugins/platforms/ios/qiosintegration.mm | 9 --------- 2 files changed, 11 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index f44403fbba..ef839a89b0 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -52,8 +52,6 @@ public: QIOSIntegration(); ~QIOSIntegration(); - static QIOSIntegration *instance(); - QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const; QPlatformWindow *createPlatformWindow(QWindow *window) const; QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 98b08ed72a..1b03b410cb 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -51,18 +51,9 @@ QT_BEGIN_NAMESPACE -static QIOSIntegration *m_instance = 0; - -QIOSIntegration * QIOSIntegration::instance() -{ - return m_instance; -} - QIOSIntegration::QIOSIntegration() :m_fontDb(new QCoreTextFontDatabase) { - if (!m_instance) - m_instance = this; m_screens << new QIOSScreen(0); } -- cgit v1.2.3 From 14e93f7e8e0ef58b0e47bfe277d52b2fa8f24ee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sun, 4 Nov 2012 19:01:44 +0100 Subject: iOS: Add screen like other platform plugins We may add support for external displays at a later point, but for now we follow the same pattern as the other platform plugins. Either way we should call screenAdded() to let the platform integration know about the screen. Change-Id: Id01785a5262df0180caf957c7de8ecbbf169f233 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosintegration.h | 4 +--- src/plugins/platforms/ios/qiosintegration.mm | 9 ++------- 2 files changed, 3 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index ef839a89b0..8b2ac70a9f 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -56,15 +56,13 @@ public: QPlatformWindow *createPlatformWindow(QWindow *window) const; QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; - QList screens() const; - QPlatformFontDatabase *fontDatabase() const; QAbstractEventDispatcher *guiThreadEventDispatcher() const; private: - QList m_screens; QPlatformFontDatabase *m_fontDb; + QPlatformScreen *m_screen; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 1b03b410cb..68a9bf343f 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -52,9 +52,9 @@ QT_BEGIN_NAMESPACE QIOSIntegration::QIOSIntegration() - :m_fontDb(new QCoreTextFontDatabase) + :m_fontDb(new QCoreTextFontDatabase), m_screen(new QIOSScreen(0)) { - m_screens << new QIOSScreen(0); + screenAdded(m_screen); } QIOSIntegration::~QIOSIntegration() @@ -74,11 +74,6 @@ QPlatformWindow *QIOSIntegration::createPlatformWindow(QWindow *window) const return new QIOSWindow(window); } -QList QIOSIntegration::screens() const -{ - return m_screens; -} - QPlatformBackingStore *QIOSIntegration::createPlatformBackingStore(QWindow *window) const { return new QIOSBackingStore(window); -- cgit v1.2.3 From 5e85aa9ab4c30c123de6431679d3870a4b7836c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sun, 4 Nov 2012 19:39:45 +0100 Subject: iOS: Keep UIScreen* for current QIOSScreen instead of looking up each time Also, add enum for screen numbers, for better code readability. Change-Id: Id5162c34e80ff5efb149ae86b49f51df183d1c1d Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosintegration.mm | 2 +- src/plugins/platforms/ios/qiosscreen.h | 7 ++++--- src/plugins/platforms/ios/qiosscreen.mm | 12 ++++++------ 3 files changed, 11 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 68a9bf343f..7a6dec43d4 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE QIOSIntegration::QIOSIntegration() - :m_fontDb(new QCoreTextFontDatabase), m_screen(new QIOSScreen(0)) + :m_fontDb(new QCoreTextFontDatabase), m_screen(new QIOSScreen(QIOSScreen::MainScreen)) { screenAdded(m_screen); } diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index 628d764f53..98771b9ac2 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -51,9 +51,11 @@ QT_BEGIN_NAMESPACE class QIOSScreen : public QPlatformScreen { public: - QIOSScreen(int screenIndex); + QIOSScreen(unsigned int screenIndex); ~QIOSScreen(); + enum ScreenIndex { MainScreen = 0 }; + QRect geometry() const { return m_geometry; } int depth() const { return m_depth; } QImage::Format format() const { return m_format; } @@ -63,14 +65,13 @@ public: void updateInterfaceOrientation(); private: + UIScreen *m_uiScreen; QRect m_geometry; int m_depth; QImage::Format m_format; QSize m_physicalSize; - int m_index; }; QT_END_NAMESPACE - #endif diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 5d9841734a..64b9022a29 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -48,13 +48,13 @@ QT_BEGIN_NAMESPACE -QIOSScreen::QIOSScreen(int screenIndex) - : QPlatformScreen(), - m_index(screenIndex) +QIOSScreen::QIOSScreen(unsigned int screenIndex) + : QPlatformScreen() + , m_uiScreen([[UIScreen screens] objectAtIndex:qMin(screenIndex, [[UIScreen screens] count] - 1)]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - CGRect bounds = [uiScreen() bounds]; - CGFloat scale = [uiScreen() scale]; + CGRect bounds = [m_uiScreen bounds]; + CGFloat scale = [m_uiScreen scale]; updateInterfaceOrientation(); m_format = QImage::Format_ARGB32_Premultiplied; @@ -87,7 +87,7 @@ QIOSScreen::~QIOSScreen() UIScreen *QIOSScreen::uiScreen() const { - return [[UIScreen screens] objectAtIndex:m_index]; + return m_uiScreen; } void QIOSScreen::updateInterfaceOrientation() -- cgit v1.2.3 From 422eed16eb22772357aab06feb12c59f5d188b2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sun, 4 Nov 2012 19:43:57 +0100 Subject: iOS: Style nitpicking, rename m_fontDb to m_fontDatabase Change-Id: I9d92843af9018d51b73fadcc7c20d792fad772fa Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosintegration.h | 2 +- src/plugins/platforms/ios/qiosintegration.mm | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index 8b2ac70a9f..d744cf377a 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -61,7 +61,7 @@ public: QAbstractEventDispatcher *guiThreadEventDispatcher() const; private: - QPlatformFontDatabase *m_fontDb; + QPlatformFontDatabase *m_fontDatabase; QPlatformScreen *m_screen; }; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 7a6dec43d4..d3e9572f83 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -52,7 +52,8 @@ QT_BEGIN_NAMESPACE QIOSIntegration::QIOSIntegration() - :m_fontDb(new QCoreTextFontDatabase), m_screen(new QIOSScreen(QIOSScreen::MainScreen)) + : m_fontDatabase(new QCoreTextFontDatabase) + , m_screen(new QIOSScreen(QIOSScreen::MainScreen)) { screenAdded(m_screen); } @@ -86,7 +87,7 @@ QAbstractEventDispatcher *QIOSIntegration::guiThreadEventDispatcher() const QPlatformFontDatabase * QIOSIntegration::fontDatabase() const { - return m_fontDb; + return m_fontDatabase; } QT_END_NAMESPACE -- cgit v1.2.3 From a685df05841a3dd45095e40ca0f40ab796bfc86f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sun, 4 Nov 2012 21:59:00 +0100 Subject: iOS: Add ability to get the UIView for a QWindow through QPlatformNativeInterface Change-Id: Iab2742bbaa97ff345871ad07ef0162b12248506a Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosintegration.h | 6 +++++- src/plugins/platforms/ios/qiosintegration.mm | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index d744cf377a..d72eefa1fa 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -43,10 +43,11 @@ #define QPLATFORMINTEGRATION_UIKIT_H #include +#include QT_BEGIN_NAMESPACE -class QIOSIntegration : public QPlatformIntegration +class QIOSIntegration : public QPlatformIntegration, public QPlatformNativeInterface { public: QIOSIntegration(); @@ -59,6 +60,9 @@ public: QPlatformFontDatabase *fontDatabase() const; QAbstractEventDispatcher *guiThreadEventDispatcher() const; + QPlatformNativeInterface *nativeInterface() const; + + void *nativeResourceForWindow(const QByteArray &resource, QWindow *window); private: QPlatformFontDatabase *m_fontDatabase; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index d3e9572f83..0c876bf1b2 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -90,4 +90,24 @@ QPlatformFontDatabase * QIOSIntegration::fontDatabase() const return m_fontDatabase; } +QPlatformNativeInterface *QIOSIntegration::nativeInterface() const +{ + return const_cast(this); +} + +void *QIOSIntegration::nativeResourceForWindow(const QByteArray &resource, QWindow *window) +{ + if (!window || !window->handle()) + return 0; + + QByteArray lowerCaseResource = resource.toLower(); + + QIOSWindow *platformWindow = static_cast(window->handle()); + + if (lowerCaseResource == "uiview") + return platformWindow->nativeView(); + + return 0; +} + QT_END_NAMESPACE -- cgit v1.2.3 From 145abdc4429f636b365ce6ebd51f81e216bc7fa3 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 5 Nov 2012 10:53:59 +0100 Subject: iOS: QIOSEventDispatcher: add runloop source for processing events MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6cd649a493dab9a982d71921f19d2a9252fc14b0 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioseventdispatcher.h | 9 +++- src/plugins/platforms/ios/qioseventdispatcher.mm | 61 +++++++++++++++++++++--- 2 files changed, 63 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioseventdispatcher.h b/src/plugins/platforms/ios/qioseventdispatcher.h index 479ec1d0a0..db3eb85ffc 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.h +++ b/src/plugins/platforms/ios/qioseventdispatcher.h @@ -77,6 +77,7 @@ #define QEVENTDISPATCHER_IOS_P_H #include +#include QT_BEGIN_NAMESPACE @@ -85,7 +86,8 @@ class QIOSEventDispatcher : public QAbstractEventDispatcher Q_OBJECT public: - explicit QIOSEventDispatcher(QObject *parent = 0); ~QIOSEventDispatcher(); + explicit QIOSEventDispatcher(QObject *parent = 0); + ~QIOSEventDispatcher(); bool processEvents(QEventLoop::ProcessEventsFlags flags); bool hasPendingEvents(); @@ -103,6 +105,11 @@ public: void wakeUp(); void interrupt(); void flush(); + +private: + CFRunLoopSourceRef m_postedEventsSource; + static void postedEventsSourceCallback(void *info); + void processPostedEvents(); }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm index 12f448488e..85854f711e 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.mm +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -75,42 +75,80 @@ #include "qioseventdispatcher.h" #include +#include QT_BEGIN_NAMESPACE QT_USE_NAMESPACE +static Boolean runLoopSourceEqualCallback(const void *info1, const void *info2) +{ + return info1 == info2; +} + +void QIOSEventDispatcher::postedEventsSourceCallback(void *info) +{ + QIOSEventDispatcher *self = static_cast(info); + self->processPostedEvents(); +} + +void QIOSEventDispatcher::processPostedEvents() +{ + qDebug() << __FUNCTION__ << "called"; + QWindowSystemInterface::sendWindowSystemEvents(QEventLoop::AllEvents); +} + QIOSEventDispatcher::QIOSEventDispatcher(QObject *parent) + : QAbstractEventDispatcher(parent) { - Q_UNUSED(parent); - qDebug() << __FUNCTION__ << "eventdispatcher not implemented"; + CFRunLoopRef mainRunLoop = CFRunLoopGetMain(); + + CFRunLoopSourceContext context; + bzero(&context, sizeof(CFRunLoopSourceContext)); + context.equal = runLoopSourceEqualCallback; + context.info = this; + + // source used to send posted events: + context.perform = QIOSEventDispatcher::postedEventsSourceCallback; + m_postedEventsSource = CFRunLoopSourceCreate(kCFAllocatorDefault, 0, &context); + Q_ASSERT(m_postedEventsSource); + CFRunLoopAddSource(mainRunLoop, m_postedEventsSource, kCFRunLoopCommonModes); } QIOSEventDispatcher::~QIOSEventDispatcher() -{} +{ + CFRunLoopRef mainRunLoop = CFRunLoopGetMain(); + CFRunLoopRemoveSource(mainRunLoop, m_postedEventsSource, kCFRunLoopCommonModes); + CFRelease(m_postedEventsSource); +} bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) { Q_UNUSED(flags); + qDebug() << __FUNCTION__ << "not implemented"; return false; } bool QIOSEventDispatcher::hasPendingEvents() { + qDebug() << __FUNCTION__ << "not implemented"; return false; } void QIOSEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier) { + qDebug() << __FUNCTION__ << "not implemented"; Q_UNUSED(notifier); } void QIOSEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier) { + qDebug() << __FUNCTION__ << "not implemented"; Q_UNUSED(notifier); } void QIOSEventDispatcher::registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object) { + qDebug() << __FUNCTION__ << "not implemented"; Q_UNUSED(timerId); Q_UNUSED(interval); Q_UNUSED(timerType); @@ -119,36 +157,47 @@ void QIOSEventDispatcher::registerTimer(int timerId, int interval, Qt::TimerType bool QIOSEventDispatcher::unregisterTimer(int timerId) { + qDebug() << __FUNCTION__ << "not implemented"; Q_UNUSED(timerId); return false; } bool QIOSEventDispatcher::unregisterTimers(QObject *object) { + qDebug() << __FUNCTION__ << "not implemented"; Q_UNUSED(object); return false; } QList QIOSEventDispatcher::registeredTimers(QObject *object) const { + qDebug() << __FUNCTION__ << "not implemented"; Q_UNUSED(object); return QList(); } int QIOSEventDispatcher::remainingTime(int timerId) { + qDebug() << __FUNCTION__ << "not implemented"; Q_UNUSED(timerId); return 0; } void QIOSEventDispatcher::wakeUp() -{} +{ + CFRunLoopSourceSignal(m_postedEventsSource); + CFRunLoopWakeUp(CFRunLoopGetMain()); +} void QIOSEventDispatcher::interrupt() -{} +{ + qDebug() << __FUNCTION__ << "not implemented"; +} void QIOSEventDispatcher::flush() -{} +{ + qDebug() << __FUNCTION__ << "not implemented"; +} QT_END_NAMESPACE -- cgit v1.2.3 From 407cf7341e70feeb24ff63ad11bd2e79dac5823f Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 5 Nov 2012 14:07:47 +0100 Subject: iOS: QIOSEventDispatcher: implement timer support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1966a64e6535f32005681db37b4fe5d89dafc70c Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioseventdispatcher.h | 15 ++- src/plugins/platforms/ios/qioseventdispatcher.mm | 136 ++++++++++++++++++++--- 2 files changed, 132 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioseventdispatcher.h b/src/plugins/platforms/ios/qioseventdispatcher.h index db3eb85ffc..da8464f5ee 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.h +++ b/src/plugins/platforms/ios/qioseventdispatcher.h @@ -77,6 +77,7 @@ #define QEVENTDISPATCHER_IOS_P_H #include +#include #include QT_BEGIN_NAMESPACE @@ -107,9 +108,19 @@ public: void flush(); private: - CFRunLoopSourceRef m_postedEventsSource; - static void postedEventsSourceCallback(void *info); + CFRunLoopSourceRef m_postedEventsRunLoopSource; + CFRunLoopSourceRef m_blockingTimerRunLoopSource; + + QTimerInfoList m_timerInfoList; + CFRunLoopTimerRef m_runLoopTimerRef; + void processPostedEvents(); + void maybeStartCFRunLoopTimer(); + void maybeStopCFRunLoopTimer(); + + static void postedEventsRunLoopCallback(void *info); + static void nonBlockingTimerRunLoopCallback(CFRunLoopTimerRef, void *info); + static void blockingTimerRunLoopCallback(void *info); }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm index 85854f711e..191e80668d 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.mm +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -76,6 +76,7 @@ #include "qioseventdispatcher.h" #include #include +#include QT_BEGIN_NAMESPACE QT_USE_NAMESPACE @@ -85,40 +86,134 @@ static Boolean runLoopSourceEqualCallback(const void *info1, const void *info2) return info1 == info2; } -void QIOSEventDispatcher::postedEventsSourceCallback(void *info) +void QIOSEventDispatcher::postedEventsRunLoopCallback(void *info) { QIOSEventDispatcher *self = static_cast(info); self->processPostedEvents(); } +void QIOSEventDispatcher::nonBlockingTimerRunLoopCallback(CFRunLoopTimerRef, void *info) +{ + // The (one and only) CFRunLoopTimer has fired, which means that at least + // one QTimer should now fire as well. Note that CFRunLoopTimer's callback will + // never recurse. So if the app starts a new QEventLoop within this callback, other + // timers will stop working. The work-around is to forward the callback to a + // dedicated CFRunLoopSource that can recurse: + QIOSEventDispatcher *self = static_cast(info); + CFRunLoopSourceSignal(self->m_blockingTimerRunLoopSource); +} + +void QIOSEventDispatcher::blockingTimerRunLoopCallback(void *info) +{ + // TODO: + // We also need to block this new timer source + // along with the posted event source when calling processEvents() + // "manually" to prevent livelock deep in CFRunLoop. + + QIOSEventDispatcher *self = static_cast(info); + self->m_timerInfoList.activateTimers(); + self->maybeStartCFRunLoopTimer(); +} + +void QIOSEventDispatcher::maybeStartCFRunLoopTimer() +{ + // Find out when the next registered timer should fire, and schedule + // runLoopTimer accordingly. If the runLoopTimer does not yet exist, and + // at least one timer is registered, start by creating the timer: + if (m_timerInfoList.isEmpty()) { + Q_ASSERT(m_runLoopTimerRef == 0); + return; + } + + CFAbsoluteTime ttf = CFAbsoluteTimeGetCurrent(); + CFTimeInterval interval; + + if (m_runLoopTimerRef == 0) { + // start the CFRunLoopTimer + CFTimeInterval oneyear = CFTimeInterval(3600. * 24. * 365.); + + // calculate when the next timer should fire: + struct timespec tv; + if (m_timerInfoList.timerWait(tv)) { + interval = qMax(tv.tv_sec + tv.tv_nsec / 1000000000., 0.0000001); + } else { + // this shouldn't really happen, but in case it does, set the timer + // to fire a some point in the distant future: + interval = oneyear; + } + + ttf += interval; + CFRunLoopTimerContext info = { 0, this, 0, 0, 0 }; + // create the timer with a large interval, as recommended by the CFRunLoopTimerSetNextFireDate() + // documentation, since we will adjust the timer's time-to-fire as needed to keep Qt timers working + m_runLoopTimerRef = CFRunLoopTimerCreate(0, ttf, oneyear, 0, 0, QIOSEventDispatcher::nonBlockingTimerRunLoopCallback, &info); + Q_ASSERT(m_runLoopTimerRef != 0); + + CFRunLoopAddTimer(CFRunLoopGetMain(), m_runLoopTimerRef, kCFRunLoopCommonModes); + } else { + struct timespec tv; + // Calculate when the next timer should fire: + if (m_timerInfoList.timerWait(tv)) { + interval = qMax(tv.tv_sec + tv.tv_nsec / 1000000000., 0.0000001); + } else { + // no timers can fire, but we cannot stop the CFRunLoopTimer, set the timer to fire at some + // point in the distant future (the timer interval is one year) + interval = CFRunLoopTimerGetInterval(m_runLoopTimerRef); + } + + ttf += interval; + CFRunLoopTimerSetNextFireDate(m_runLoopTimerRef, ttf); + } +} + +void QIOSEventDispatcher::maybeStopCFRunLoopTimer() +{ + if (m_runLoopTimerRef == 0) + return; + + CFRunLoopTimerInvalidate(m_runLoopTimerRef); + CFRelease(m_runLoopTimerRef); + m_runLoopTimerRef = 0; +} + void QIOSEventDispatcher::processPostedEvents() { - qDebug() << __FUNCTION__ << "called"; QWindowSystemInterface::sendWindowSystemEvents(QEventLoop::AllEvents); } QIOSEventDispatcher::QIOSEventDispatcher(QObject *parent) : QAbstractEventDispatcher(parent) + , m_runLoopTimerRef(0) { CFRunLoopRef mainRunLoop = CFRunLoopGetMain(); - CFRunLoopSourceContext context; bzero(&context, sizeof(CFRunLoopSourceContext)); context.equal = runLoopSourceEqualCallback; context.info = this; - // source used to send posted events: - context.perform = QIOSEventDispatcher::postedEventsSourceCallback; - m_postedEventsSource = CFRunLoopSourceCreate(kCFAllocatorDefault, 0, &context); - Q_ASSERT(m_postedEventsSource); - CFRunLoopAddSource(mainRunLoop, m_postedEventsSource, kCFRunLoopCommonModes); + // source used to handle timers: + context.perform = QIOSEventDispatcher::blockingTimerRunLoopCallback; + m_blockingTimerRunLoopSource = CFRunLoopSourceCreate(kCFAllocatorDefault, 0, &context); + Q_ASSERT(m_blockingTimerRunLoopSource); + CFRunLoopAddSource(mainRunLoop, m_blockingTimerRunLoopSource, kCFRunLoopCommonModes); + + // source used to handle posted events: + context.perform = QIOSEventDispatcher::postedEventsRunLoopCallback; + m_postedEventsRunLoopSource = CFRunLoopSourceCreate(kCFAllocatorDefault, 0, &context); + Q_ASSERT(m_postedEventsRunLoopSource); + CFRunLoopAddSource(mainRunLoop, m_postedEventsRunLoopSource, kCFRunLoopCommonModes); } QIOSEventDispatcher::~QIOSEventDispatcher() { CFRunLoopRef mainRunLoop = CFRunLoopGetMain(); - CFRunLoopRemoveSource(mainRunLoop, m_postedEventsSource, kCFRunLoopCommonModes); - CFRelease(m_postedEventsSource); + CFRunLoopRemoveSource(mainRunLoop, m_postedEventsRunLoopSource, kCFRunLoopCommonModes); + CFRelease(m_postedEventsRunLoopSource); + + qDeleteAll(m_timerInfoList); + maybeStopCFRunLoopTimer(); + CFRunLoopRemoveSource(CFRunLoopGetMain(), m_blockingTimerRunLoopSource, kCFRunLoopCommonModes); + CFRelease(m_blockingTimerRunLoopSource); } bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) @@ -146,13 +241,20 @@ void QIOSEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier) Q_UNUSED(notifier); } -void QIOSEventDispatcher::registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object) +void QIOSEventDispatcher::registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *obj) { - qDebug() << __FUNCTION__ << "not implemented"; - Q_UNUSED(timerId); - Q_UNUSED(interval); - Q_UNUSED(timerType); - Q_UNUSED(object); +#ifndef QT_NO_DEBUG + if (timerId < 1 || interval < 0 || !obj) { + qWarning("QIOSEventDispatcher::registerTimer: invalid arguments"); + return; + } else if (obj->thread() != thread() || thread() != QThread::currentThread()) { + qWarning("QIOSEventDispatcher: timers cannot be started from another thread"); + return; + } +#endif + + m_timerInfoList.registerTimer(timerId, interval, timerType, obj); + maybeStartCFRunLoopTimer(); } bool QIOSEventDispatcher::unregisterTimer(int timerId) @@ -185,7 +287,7 @@ int QIOSEventDispatcher::remainingTime(int timerId) void QIOSEventDispatcher::wakeUp() { - CFRunLoopSourceSignal(m_postedEventsSource); + CFRunLoopSourceSignal(m_postedEventsRunLoopSource); CFRunLoopWakeUp(CFRunLoopGetMain()); } -- cgit v1.2.3 From 44c3ef790e6105b913b514dfda64fd5957df78af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 5 Nov 2012 13:59:53 +0100 Subject: iOS: Fix build on case sensitive filesystems Change-Id: Ic7a2b38ffcc2bd83e268c5caf5bec17006879969 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosintegration.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 0c876bf1b2..0c324d5275 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qiosIntegration.h" +#include "qiosintegration.h" #include "qioswindow.h" #include "qiosbackingstore.h" #include "qiosscreen.h" -- cgit v1.2.3 From 05d0f60ebefaeb7721ac572f1253c2c7b2f42dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sun, 4 Nov 2012 23:30:50 +0100 Subject: iOS: Flesh out initial QPlatformScreen implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We check the device's model identifier to tweak the screen values based on the precense of older iPhone/iPod touch models, or the iPad Mini. This does not work when running under the simulator, which reports its model identifier as the architecture of the host platform. There doesn't appear to be any APIs to get the simulated device of the simulator, but if this becomes an issue we can always look at the UIDevice model and screen resolution and apply a few heuristics. We do not update the screen geometry on orientation-changes. This matches what UIScreen reports for bounds, but may not be the most intuitive solution from a Qt perspective compared to the way other platform-plugins work. Change-Id: I74783e053601de9ce805f8b52b944c116f9a1e3e Reviewed-by: Richard Moe Gustavsen Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/ios/qiosscreen.h | 13 ++-- src/plugins/platforms/ios/qiosscreen.mm | 105 +++++++++++++++++--------------- 2 files changed, 61 insertions(+), 57 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index 98771b9ac2..8af7779f9d 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -52,24 +52,21 @@ class QIOSScreen : public QPlatformScreen { public: QIOSScreen(unsigned int screenIndex); - ~QIOSScreen(); enum ScreenIndex { MainScreen = 0 }; - QRect geometry() const { return m_geometry; } - int depth() const { return m_depth; } - QImage::Format format() const { return m_format; } - QSizeF physicalSize() const { return m_physicalSize; } + QRect geometry() const; + int depth() const; + QImage::Format format() const; + QSizeF physicalSize() const; UIScreen *uiScreen() const; - void updateInterfaceOrientation(); private: UIScreen *m_uiScreen; QRect m_geometry; int m_depth; - QImage::Format m_format; - QSize m_physicalSize; + QSizeF m_physicalSize; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 64b9022a29..93b22953e2 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -42,79 +42,86 @@ #include "qiosscreen.h" #include "qioswindow.h" -#include - -#include +#include QT_BEGIN_NAMESPACE +/*! + Returns the model identifier of the device. + + When running under the simulator, the identifier will not + match the simulated device, but will be x86_64 or i386. +*/ +static QString deviceModelIdentifier() +{ + static const char key[] = "hw.machine"; + + size_t size; + sysctlbyname(key, NULL, &size, NULL, 0); + + char value[size]; + sysctlbyname(key, &value, &size, NULL, 0); + + return QString::fromLatin1(value); +} + QIOSScreen::QIOSScreen(unsigned int screenIndex) : QPlatformScreen() , m_uiScreen([[UIScreen screens] objectAtIndex:qMin(screenIndex, [[UIScreen screens] count] - 1)]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - CGRect bounds = [m_uiScreen bounds]; - CGFloat scale = [m_uiScreen scale]; - updateInterfaceOrientation(); - m_format = QImage::Format_ARGB32_Premultiplied; + QString deviceIdentifier = deviceModelIdentifier(); - m_depth = 24; - - const qreal inch = 25.4; - qreal unscaledDpi = 160.; - int dragDistance = 12 * scale; - if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { - unscaledDpi = 132.; - dragDistance = 10 * scale; + if (deviceIdentifier == QStringLiteral("iPhone2,1") /* iPhone 3GS */ + || deviceIdentifier == QStringLiteral("iPod3,1") /* iPod touch 3G */) { + m_depth = 18; + } else { + m_depth = 24; } - m_physicalSize = QSize(qRound(bounds.size.width * inch / unscaledDpi), qRound(bounds.size.height * inch / unscaledDpi)); - //qApp->setStartDragDistance(dragDistance); + int unscaledDpi = 163; // Regular iPhone DPI + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad + && deviceIdentifier != QStringLiteral("iPad2,5") /* iPad Mini */) { + unscaledDpi = 132; + }; + + // UIScreen does not report different bounds for different orientations. We + // match this behavior by staying with a fixed QScreen geometry. + CGRect bounds = [m_uiScreen bounds]; + m_geometry = QRect(bounds.origin.x, bounds.origin.y, bounds.size.width, bounds.size.height); - /* - QFont font; // system font is helvetica, so that is fine already - font.setPixelSize([UIFont systemFontSize] * scale); - qApp->setFont(font); - */ + const qreal millimetersPerInch = 25.4; + m_physicalSize = QSizeF(m_geometry.size()) / unscaledDpi * millimetersPerInch; [pool release]; } -QIOSScreen::~QIOSScreen() +QRect QIOSScreen::geometry() const { + // FIXME: Do we need to reimplement availableGeometry() to take the + // system statusbar into account? + return m_geometry; } -UIScreen *QIOSScreen::uiScreen() const +int QIOSScreen::depth() const { - return m_uiScreen; + return m_depth; } -void QIOSScreen::updateInterfaceOrientation() +QImage::Format QIOSScreen::format() const { - qDebug() << __FUNCTION__ << "not implemented"; - /* - CGRect bounds = [uiScreen() bounds]; - CGFloat scale = [uiScreen() scale]; - switch ([[UIApplication sharedApplication] statusBarOrientation]) { - case UIInterfaceOrientationPortrait: - case UIInterfaceOrientationPortraitUpsideDown: - m_geometry = QRect(bounds.origin.x * scale, bounds.origin.y * scale, - bounds.size.width * scale, bounds.size.height * scale);; - break; - case UIInterfaceOrientationLandscapeLeft: - case UIInterfaceOrientationLandscapeRight: - m_geometry = QRect(bounds.origin.x * scale, bounds.origin.y * scale, - bounds.size.height * scale, bounds.size.width * scale); - break; - } - foreach (QWidget *widget, qApp->topLevelWidgets()) { - QIOSWindow *platformWindow = static_cast(widget->platformWindow()); - if (platformWindow && platformWindow->platformScreen() == this) { - platformWindow->updateGeometryAndOrientation(); - } - } - */ + return QImage::Format_ARGB32_Premultiplied; +} + +QSizeF QIOSScreen::physicalSize() const +{ + return m_physicalSize; +} + +UIScreen *QIOSScreen::uiScreen() const +{ + return m_uiScreen; } QT_END_NAMESPACE -- cgit v1.2.3 From 458382f35b62c98a283bb08770029f21827b9ae6 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 6 Nov 2012 11:00:58 +0100 Subject: iOS: call UIApplicationMain from event dispatcher, and add application delegate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change will let you call QApplication::exec() instead of UiApplicationMain from main. Also added an application delegate that we will need sooner or later for catching application activation events. Change-Id: I4edba5ce2059a804782d67c160755fc0e2e5267d Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/ios.pro | 6 +- .../platforms/ios/qiosapplicationdelegate.h | 50 ++++++++++++ .../platforms/ios/qiosapplicationdelegate.mm | 89 ++++++++++++++++++++++ src/plugins/platforms/ios/qioseventdispatcher.mm | 58 ++++++-------- 4 files changed, 165 insertions(+), 38 deletions(-) create mode 100644 src/plugins/platforms/ios/qiosapplicationdelegate.h create mode 100644 src/plugins/platforms/ios/qiosapplicationdelegate.mm (limited to 'src') diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro index c6c104f2f3..76f5e3420e 100644 --- a/src/plugins/platforms/ios/ios.pro +++ b/src/plugins/platforms/ios/ios.pro @@ -12,13 +12,15 @@ OBJECTIVE_SOURCES = main.mm \ qioswindow.mm \ qiosscreen.mm \ qioseventdispatcher.mm \ - qiosbackingstore.mm + qiosbackingstore.mm \ + qiosapplicationdelegate.mm HEADERS = qiosintegration.h \ qioswindow.h \ qiosscreen.h \ qioseventdispatcher.h \ - qiosbackingstore.h + qiosbackingstore.h \ + qiosapplicationdelegate.h #HEADERS = qiossoftwareinputhandler.h diff --git a/src/plugins/platforms/ios/qiosapplicationdelegate.h b/src/plugins/platforms/ios/qiosapplicationdelegate.h new file mode 100644 index 0000000000..10e415831d --- /dev/null +++ b/src/plugins/platforms/ios/qiosapplicationdelegate.h @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#import +#import + +@interface QIOSApplicationDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end + diff --git a/src/plugins/platforms/ios/qiosapplicationdelegate.mm b/src/plugins/platforms/ios/qiosapplicationdelegate.mm new file mode 100644 index 0000000000..d88b2b83f1 --- /dev/null +++ b/src/plugins/platforms/ios/qiosapplicationdelegate.mm @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#import "qiosapplicationdelegate.h" +#include + +@implementation QIOSApplicationDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + Q_UNUSED(application) + Q_UNUSED(launchOptions) + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + + // Override point for customization after application launch. + self.window.backgroundColor = [UIColor whiteColor]; + [self.window makeKeyAndVisible]; + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + Q_UNUSED(application) +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + Q_UNUSED(application) +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + Q_UNUSED(application) + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + Q_UNUSED(application) + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application +{ + Q_UNUSED(application) + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end + + diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm index 191e80668d..64f853233d 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.mm +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -39,44 +39,13 @@ ** ****************************************************************************/ -/**************************************************************************** -** -** Copyright (c) 2007-2008, Apple, Inc. -** -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are met: -** -** * Redistributions of source code must retain the above copyright notice, -** this list of conditions and the following disclaimer. -** -** * Redistributions in binary form must reproduce the above copyright notice, -** this list of conditions and the following disclaimer in the documentation -** and/or other materials provided with the distribution. -** -** * Neither the name of Apple, Inc. nor the names of its contributors -** may be used to endorse or promote products derived from this software -** without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -** -****************************************************************************/ - #include "qioseventdispatcher.h" +#import "qiosapplicationdelegate.h" #include #include #include +#include +#include QT_BEGIN_NAMESPACE QT_USE_NAMESPACE @@ -218,8 +187,25 @@ QIOSEventDispatcher::~QIOSEventDispatcher() bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) { - Q_UNUSED(flags); - qDebug() << __FUNCTION__ << "not implemented"; + UIApplication *uiApplication = [UIApplication sharedApplication]; + bool excludeUserEvents = flags & QEventLoop::ExcludeUserInputEvents; + bool execFlagSet = (flags & QEventLoop::DialogExec) || (flags & QEventLoop::EventLoopExec); + bool useExecMode = execFlagSet && !excludeUserEvents; + + if (useExecMode) { + if (!uiApplication) { + // No UIApplication has been started yet. We therefore start it now. Note that application + // developers are free to call UIApplicationMain themselves instead of QApplication::exec() + @autoreleasepool { + QCoreApplicationPrivate *qAppPriv = static_cast(QObjectPrivate::get(qApp)); + return UIApplicationMain(qAppPriv->argc, qAppPriv->argv, nil, NSStringFromClass([QIOSApplicationDelegate class])); + } + } else { + // todo: start NSRunLoop... + } + } else { + // todo: manual processEvents... + } return false; } -- cgit v1.2.3 From ac8d906a3a61b3dd43aaf546e5f83e25d117631c Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 6 Nov 2012 14:52:22 +0100 Subject: iOS: support killing timers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implement the remaining timer functions in the event dispatcher Change-Id: Ie323962c898a2ee95ea60a8ca63b93cbd4544fd1 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioseventdispatcher.mm | 54 ++++++++++++++++++------ 1 file changed, 42 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm index 64f853233d..a7f01a33a9 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.mm +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -245,30 +245,60 @@ void QIOSEventDispatcher::registerTimer(int timerId, int interval, Qt::TimerType bool QIOSEventDispatcher::unregisterTimer(int timerId) { - qDebug() << __FUNCTION__ << "not implemented"; - Q_UNUSED(timerId); - return false; +#ifndef QT_NO_DEBUG + if (timerId < 1) { + qWarning("QIOSEventDispatcher::unregisterTimer: invalid argument"); + return false; + } else if (thread() != QThread::currentThread()) { + qWarning("QObject::killTimer: timers cannot be stopped from another thread"); + return false; + } +#endif + + bool returnValue = m_timerInfoList.unregisterTimer(timerId); + m_timerInfoList.isEmpty() ? maybeStopCFRunLoopTimer() : maybeStartCFRunLoopTimer(); + return returnValue; } bool QIOSEventDispatcher::unregisterTimers(QObject *object) { - qDebug() << __FUNCTION__ << "not implemented"; - Q_UNUSED(object); - return false; +#ifndef QT_NO_DEBUG + if (!object) { + qWarning("QIOSEventDispatcher::unregisterTimers: invalid argument"); + return false; + } else if (object->thread() != thread() || thread() != QThread::currentThread()) { + qWarning("QObject::killTimers: timers cannot be stopped from another thread"); + return false; + } +#endif + + bool returnValue = m_timerInfoList.unregisterTimers(object); + m_timerInfoList.isEmpty() ? maybeStopCFRunLoopTimer() : maybeStartCFRunLoopTimer(); + return returnValue; } QList QIOSEventDispatcher::registeredTimers(QObject *object) const { - qDebug() << __FUNCTION__ << "not implemented"; - Q_UNUSED(object); - return QList(); +#ifndef QT_NO_DEBUG + if (!object) { + qWarning("QIOSEventDispatcher:registeredTimers: invalid argument"); + return QList(); + } +#endif + + return m_timerInfoList.registeredTimers(object); } int QIOSEventDispatcher::remainingTime(int timerId) { - qDebug() << __FUNCTION__ << "not implemented"; - Q_UNUSED(timerId); - return 0; +#ifndef QT_NO_DEBUG + if (timerId < 1) { + qWarning("QIOSEventDispatcher::remainingTime: invalid argument"); + return -1; + } +#endif + + return m_timerInfoList.timerRemainingTime(timerId); } void QIOSEventDispatcher::wakeUp() -- cgit v1.2.3 From 3c4f48f9e2ad9163d012d4afb36037d7efea8e3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 6 Nov 2012 16:24:19 +0100 Subject: iOS: Implement QPlatformOpenGLContext The iOS platform GL context is an EAGLContext, which is wrapped by the new class QIOSContext. The class takes care of makeCurrent() and swapBuffers(), but defers framebuffer management to the corresponding QIOSWindow. At the moment only a single framebuffer is created, and changing the geometry of the QWindow does not trigger any sort of invalidation of the buffers. The implementation assumes OpenGL ES2.x support. Though strictly speaking we could support ES1 for QtGui, it serves little purpose as Qt Quick 2 requires ES2. This patch also disabled touch event synthesization until we have figured out where we will maintain the connection to UIWindow. QPlatformOpenGLContext::getProcAddress() for getting extensions is implemented by using dlsym() to look up the symbol. This should not present any issues for App Store deployment, like dlopen() would. Change-Id: I166f800f3ecc0d180133c590465371ac1642b0ec Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/ios.pro | 6 +- src/plugins/platforms/ios/qiosbackingstore.mm | 1 + src/plugins/platforms/ios/qioscontext.h | 76 +++++ src/plugins/platforms/ios/qioscontext.mm | 124 ++++++++ src/plugins/platforms/ios/qiosintegration.h | 2 + src/plugins/platforms/ios/qiosintegration.mm | 13 +- src/plugins/platforms/ios/qioswindow.h | 97 ++----- src/plugins/platforms/ios/qioswindow.mm | 400 +++++++------------------- 8 files changed, 343 insertions(+), 376 deletions(-) create mode 100644 src/plugins/platforms/ios/qioscontext.h create mode 100644 src/plugins/platforms/ios/qioscontext.mm (limited to 'src') diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro index 76f5e3420e..22b0fec9e8 100644 --- a/src/plugins/platforms/ios/ios.pro +++ b/src/plugins/platforms/ios/ios.pro @@ -13,14 +13,16 @@ OBJECTIVE_SOURCES = main.mm \ qiosscreen.mm \ qioseventdispatcher.mm \ qiosbackingstore.mm \ - qiosapplicationdelegate.mm + qiosapplicationdelegate.mm \ + qioscontext.mm HEADERS = qiosintegration.h \ qioswindow.h \ qiosscreen.h \ qioseventdispatcher.h \ qiosbackingstore.h \ - qiosapplicationdelegate.h + qiosapplicationdelegate.h \ + qioscontext.h #HEADERS = qiossoftwareinputhandler.h diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm index 20f7c1f2d1..2ffa43b5d1 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.mm +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -133,6 +133,7 @@ void QIOSBackingStore::resize(const QSize &size, const QRegion &staticContents) { Q_UNUSED(size); Q_UNUSED(staticContents); + qDebug() << __FUNCTION__ << "not implemented"; } diff --git a/src/plugins/platforms/ios/qioscontext.h b/src/plugins/platforms/ios/qioscontext.h new file mode 100644 index 0000000000..102aaaa387 --- /dev/null +++ b/src/plugins/platforms/ios/qioscontext.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSCONTEXT_H +#define QIOSCONTEXT_H + +#include + +@class EAGLContext; + +QT_BEGIN_NAMESPACE + +class QIOSContext : public QPlatformOpenGLContext +{ +public: + QIOSContext(QOpenGLContext *context); + ~QIOSContext(); + + QSurfaceFormat format() const; + + void swapBuffers(QPlatformSurface *surface); + + bool makeCurrent(QPlatformSurface *surface); + void doneCurrent(); + + GLuint defaultFramebufferObject(QPlatformSurface *) const; + QFunctionPointer getProcAddress(const QByteArray &procName); + + EAGLContext *nativeContext() const; + +private: + EAGLContext *m_eaglContext; + QSurfaceFormat m_format; +}; + +QT_END_NAMESPACE + +#endif // QIOSCONTEXT_H diff --git a/src/plugins/platforms/ios/qioscontext.mm b/src/plugins/platforms/ios/qioscontext.mm new file mode 100644 index 0000000000..e512b3d4c8 --- /dev/null +++ b/src/plugins/platforms/ios/qioscontext.mm @@ -0,0 +1,124 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qioscontext.h" +#include "qioswindow.h" + +#include + +#include + +#import +#import + +QIOSContext::QIOSContext(QOpenGLContext *context) + : QPlatformOpenGLContext() + , m_eaglContext([[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]) +{ + // Start out with the requested format + QSurfaceFormat format = context->format(); + + format.setRenderableType(QSurfaceFormat::OpenGLES); + format.setMajorVersion(2); + format.setMinorVersion(0); + + // Even though iOS internally double-buffers its rendering, we + // report single-buffered here since the buffer remains unchanged + // when swapping unlesss you manually clear it yourself. + format.setSwapBehavior(QSurfaceFormat::SingleBuffer); + + m_format = format; +} + +QIOSContext::~QIOSContext() +{ + [m_eaglContext release]; +} + +QSurfaceFormat QIOSContext::format() const +{ + return m_format; +} + +bool QIOSContext::makeCurrent(QPlatformSurface *surface) +{ + Q_ASSERT(surface && surface->surface()->surfaceType() == QSurface::OpenGLSurface); + + [EAGLContext setCurrentContext:m_eaglContext]; + glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebufferObject(surface)); + + return true; +} + +void QIOSContext::doneCurrent() +{ + [EAGLContext setCurrentContext:nil]; +} + +void QIOSContext::swapBuffers(QPlatformSurface *surface) +{ + Q_ASSERT(surface && surface->surface()->surfaceType() == QSurface::OpenGLSurface); + + [EAGLContext setCurrentContext:m_eaglContext]; + + GLint renderbuffer; + glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebufferObject(surface)); + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &renderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer); + + [m_eaglContext presentRenderbuffer:GL_RENDERBUFFER]; +} + +GLuint QIOSContext::defaultFramebufferObject(QPlatformSurface *surface) const +{ + return static_cast(surface)->framebufferObject(*const_cast(this)); +} + +QFunctionPointer QIOSContext::getProcAddress(const QByteArray& functionName) +{ + return reinterpret_cast(dlsym(RTLD_NEXT, functionName.constData())); +} + +EAGLContext *QIOSContext::nativeContext() const +{ + return m_eaglContext; +} diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index d72eefa1fa..e411ce2905 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -57,6 +57,8 @@ public: QPlatformWindow *createPlatformWindow(QWindow *window) const; QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; + QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const; + QPlatformFontDatabase *fontDatabase() const; QAbstractEventDispatcher *guiThreadEventDispatcher() const; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 0c324d5275..b9fef71abc 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -44,6 +44,7 @@ #include "qiosbackingstore.h" #include "qiosscreen.h" #include "qioseventdispatcher.h" +#include "qioscontext.h" #include @@ -65,21 +66,31 @@ QIOSIntegration::~QIOSIntegration() QPlatformPixmap *QIOSIntegration::createPlatformPixmap(QPlatformPixmap::PixelType type) const { Q_UNUSED(type); + qDebug() << __FUNCTION__ << "not yet implemented"; return 0; - //return new QRasterPixmapData(type); } QPlatformWindow *QIOSIntegration::createPlatformWindow(QWindow *window) const { + qDebug() << __FUNCTION__ << "Creating platform window"; return new QIOSWindow(window); } QPlatformBackingStore *QIOSIntegration::createPlatformBackingStore(QWindow *window) const { + qDebug() << __FUNCTION__ << "Creating platform backingstore"; return new QIOSBackingStore(window); } +// Used when the QWindow's surface type is set by the client to QSurface::OpenGLSurface +QPlatformOpenGLContext *QIOSIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const +{ + Q_UNUSED(context); + qDebug() << __FUNCTION__ << "Creating platform opengl context"; + return new QIOSContext(context); +} + QAbstractEventDispatcher *QIOSIntegration::guiThreadEventDispatcher() const { return new QIOSEventDispatcher(); diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 2d3d5b072f..d8f49db55b 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -1,38 +1,38 @@ /**************************************************************************** ** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ @@ -45,24 +45,11 @@ #include #import -#import -#import -#import -#import -#import + +class QIOSContext; @interface EAGLView : UIView { - QPlatformWindow *m_window; - EAGLContext *m_context; - - GLint m_framebufferWidth; - GLint m_framebufferHeight; - - GLuint m_framebuffer, m_colorRenderbuffer, m_depthRenderbuffer; - - id delegate; - // ------- Text Input ---------- UITextAutocapitalizationType autocapitalizationType; UITextAutocorrectionType autocorrectionType; BOOL enablesReturnKeyAutomatically; @@ -72,19 +59,8 @@ BOOL secureTextEntry; } -- (void)setContext:(EAGLContext *)newContext; -- (void)presentFramebuffer; -- (void)deleteFramebuffer; -- (void)createFramebuffer; -- (void)makeCurrent; -- (void)setWindow:(QPlatformWindow *)window; - (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons; -@property (readonly,getter=fbo) GLint fbo; -@property (nonatomic, assign) id delegate; - -// ------- Text Input ---------- - @property(nonatomic) UITextAutocapitalizationType autocapitalizationType; @property(nonatomic) UITextAutocorrectionType autocorrectionType; @property(nonatomic) BOOL enablesReturnKeyAutomatically; @@ -95,39 +71,22 @@ @end -@protocol EAGLViewDelegate -- (void)eaglView:(EAGLView *)view usesFramebuffer:(GLuint)buffer; -@end - -class EAGLPlatformContext; - QT_BEGIN_NAMESPACE -class QIOSScreen; - class QIOSWindow : public QPlatformWindow { public: explicit QIOSWindow(QWindow *window); ~QIOSWindow(); - UIWindow *nativeWindow() const { return m_window; } - EAGLView *nativeView() const { return m_view; } void setGeometry(const QRect &rect); - UIWindow *ensureNativeWindow(); + GLuint framebufferObject(const QIOSContext &context) const; - QPlatformOpenGLContext *glContext() const; - - QIOSScreen *platformScreen() const { return m_screen; } + EAGLView *nativeView() const { return m_view; } - void updateGeometryAndOrientation(); private: - QIOSScreen *m_screen; - UIWindow *m_window; - CGRect m_frame; EAGLView *m_view; - mutable EAGLPlatformContext *m_context; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 28aaaf2189..46612ae699 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -1,152 +1,57 @@ /**************************************************************************** ** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ -#import - #include "qioswindow.h" - +#include "qioscontext.h" #include "qiosscreen.h" -#include +#import + #include -#include #include #include -static GLint stencilBits() -{ - static GLint bits; - static bool initialized = false; - if (!initialized) { - glGetIntegerv(GL_STENCIL_BITS, &bits); - initialized = true; - } - return bits; -} - -/* -static GLint depthBits() -{ - // we can choose between GL_DEPTH24_STENCIL8_OES and GL_DEPTH_COMPONENT16 - return stencilBits() > 0 ? 24 : 16; -} -*/ - -class EAGLPlatformContext : public QPlatformOpenGLContext -{ -public: - EAGLPlatformContext(EAGLView *view) - : m_view(view) - { - /* - mFormat.setWindowApi(QPlatformWindowFormat::OpenGL); - mFormat.setDepthBufferSize(depthBits()); - mFormat.setAccumBufferSize(0); - mFormat.setRedBufferSize(8); - mFormat.setGreenBufferSize(8); - mFormat.setBlueBufferSize(8); - mFormat.setAlphaBufferSize(8); - mFormat.setStencilBufferSize(stencilBits()); - mFormat.setSamples(0); - mFormat.setSampleBuffers(false); - mFormat.setDoubleBuffer(true); - mFormat.setDepth(true); - mFormat.setRgba(true); - mFormat.setAlpha(true); - mFormat.setAccum(false); - mFormat.setStencil(stencilBits() > 0); - mFormat.setStereo(false); - mFormat.setDirectRendering(false); - */ - -#if defined(QT_OPENGL_ES_2) - EAGLContext *aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; -#else - EAGLContext *aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1]; -#endif - [m_view setContext:aContext]; - } - - ~EAGLPlatformContext() { } - - bool makeCurrent(QPlatformSurface *surface) - { - Q_UNUSED(surface); - qDebug() << __FUNCTION__ << "not implemented"; - //QPlatformOpenGLContext::makeCurrent(); - //[m_view makeCurrent]; - return false; - } - - void doneCurrent() - { - qDebug() << __FUNCTION__ << "not implemented"; - //QPlatformOpenGLContext::doneCurrent(); - } - - void swapBuffers(QPlatformSurface *surface) - { - Q_UNUSED(surface); - qDebug() << __FUNCTION__ << "not implemented"; - //[m_view presentFramebuffer]; - } - - QFunctionPointer getProcAddress(const QByteArray& ) { return 0; } - - QSurfaceFormat format() const - { - return mFormat; - } - -private: - EAGLView *m_view; - - QSurfaceFormat mFormat; -}; - @implementation EAGLView -@synthesize delegate; - + (Class)layerClass { return [CAEAGLLayer class]; @@ -155,12 +60,14 @@ private: - (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { - CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; + // Set up EAGL layer + CAEAGLLayer *eaglLayer = static_cast(self.layer); eaglLayer.opaque = TRUE; eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:YES], kEAGLDrawablePropertyRetainedBacking, - kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, - nil]; + [NSNumber numberWithBool:YES], kEAGLDrawablePropertyRetainedBacking, + kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; + + // Set up text input autocapitalizationType = UITextAutocapitalizationTypeNone; autocorrectionType = UITextAutocorrectionTypeNo; enablesReturnKeyAutomatically = NO; @@ -169,113 +76,28 @@ private: returnKeyType = UIReturnKeyDone; secureTextEntry = NO; } - return self; -} - -- (void)setContext:(EAGLContext *)newContext -{ - if (m_context != newContext) - { - [self deleteFramebuffer]; - [m_context release]; - m_context = [newContext retain]; - [EAGLContext setCurrentContext:nil]; - } -} - -- (void)presentFramebuffer -{ - if (m_context) { - [EAGLContext setCurrentContext:m_context]; - glBindRenderbuffer(GL_RENDERBUFFER, m_colorRenderbuffer); - [m_context presentRenderbuffer:GL_RENDERBUFFER]; - } -} -- (void)deleteFramebuffer -{ - if (m_context) - { - [EAGLContext setCurrentContext:m_context]; - if (m_framebuffer) { - glDeleteFramebuffers(1, &m_framebuffer); - m_framebuffer = 0; - } - if (m_colorRenderbuffer) { - glDeleteRenderbuffers(1, &m_colorRenderbuffer); - m_colorRenderbuffer = 0; - } - if (m_depthRenderbuffer) { - glDeleteRenderbuffers(1, &m_depthRenderbuffer); - m_depthRenderbuffer = 0; - } - } -} - -- (void)createFramebuffer -{ - if (m_context && !m_framebuffer) - { - [EAGLContext setCurrentContext:m_context]; - glGenFramebuffers(1, &m_framebuffer); - glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer); - - glGenRenderbuffers(1, &m_colorRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, m_colorRenderbuffer); - [m_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer *)self.layer]; - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &m_framebufferWidth); - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &m_framebufferHeight); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_colorRenderbuffer); - - glGenRenderbuffers(1, &m_depthRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, m_depthRenderbuffer); - if (stencilBits() > 0) { - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, m_framebufferWidth, m_framebufferHeight); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, m_depthRenderbuffer); - } else { - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, m_framebufferWidth, m_framebufferHeight); - } - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_depthRenderbuffer); - - if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) - NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER)); - if (delegate && [delegate respondsToSelector:@selector(eaglView:usesFramebuffer:)]) { - [delegate eaglView:self usesFramebuffer:m_framebuffer]; - } - } -} - -- (void)makeCurrent -{ - if (m_context) - { - [EAGLContext setCurrentContext:m_context]; - if (!m_framebuffer) - [self createFramebuffer]; - glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer); - glViewport(0, 0, m_framebufferWidth, m_framebufferHeight); - } + return self; } -- (GLint)fbo +- (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons { - return m_framebuffer; -} + Q_UNUSED(touches); + Q_UNUSED(event); + Q_UNUSED(buttons); -- (void)setWindow:(QPlatformWindow *)window -{ - m_window = window; -} + // FIXME: Reintroduce relation to UIWindow + qDebug() << __FUNCTION__ << "not implemented"; -- (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons -{ +#if 0 UITouch *touch = [touches anyObject]; CGPoint locationInView = [touch locationInView:self]; CGFloat scaleFactor = [self contentScaleFactor]; QPoint p(locationInView.x * scaleFactor, locationInView.y * scaleFactor); + // TODO handle global touch point? for status bar? - QWindowSystemInterface::handleMouseEvent(m_window->window(), (ulong)(event.timestamp*1000), - p, p, buttons); + QWindowSystemInterface::handleMouseEvent(m_window->window(), (ulong)(event.timestamp*1000), p, p, buttons); +#endif } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event @@ -298,8 +120,6 @@ private: [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::NoButton]; } -// ------- Text Input ---------- - @synthesize autocapitalizationType; @synthesize autocorrectionType; @synthesize enablesReturnKeyAutomatically; @@ -343,107 +163,79 @@ private: @end + QT_BEGIN_NAMESPACE -QIOSWindow::QIOSWindow(QWindow *window) : - QPlatformWindow(window), - m_window(nil), - m_context(0) +QIOSWindow::QIOSWindow(QWindow *window) + : QPlatformWindow(window) + , m_view([[EAGLView alloc] init]) { - m_screen = static_cast(QPlatformScreen::platformScreenForWindow(window)); - m_view = [[EAGLView alloc] init]; } QIOSWindow::~QIOSWindow() { - delete m_context; m_context = 0; [m_view release]; - [m_window release]; } void QIOSWindow::setGeometry(const QRect &rect) { - // Not supported. Only a single "full screen" window is supported QPlatformWindow::setGeometry(rect); -} -UIWindow *QIOSWindow::ensureNativeWindow() -{ - if (!m_window) { - m_window = [[UIWindow alloc] init]; - updateGeometryAndOrientation(); - // window - m_window.screen = m_screen->uiScreen(); - // for some reason setting the screen resets frame.origin, so we need to set the frame afterwards - m_window.frame = m_frame; - - // view - [m_view deleteFramebuffer]; - m_view.frame = CGRectMake(0, 0, m_window.bounds.size.width, m_window.bounds.size.height); // fill - [m_view setContentScaleFactor:[m_window.screen scale]]; - [m_view setMultipleTouchEnabled:YES]; - [m_view setWindow:this]; - [m_window addSubview:m_view]; - [m_window setNeedsDisplay]; - [m_window makeKeyAndVisible]; - } - return m_window; + qDebug() << __FUNCTION__ << "not implemented"; } -void QIOSWindow::updateGeometryAndOrientation() +GLuint QIOSWindow::framebufferObject(const QIOSContext &context) const { - if (!m_window) - return; - m_frame = [m_screen->uiScreen() applicationFrame]; - CGRect screen = [m_screen->uiScreen() bounds]; - QRect geom; - CGFloat angle = 0; - switch ([[UIApplication sharedApplication] statusBarOrientation]) { - case UIInterfaceOrientationPortrait: - geom = QRect(m_frame.origin.x, m_frame.origin.y, m_frame.size.width, m_frame.size.height); - break; - case UIInterfaceOrientationPortraitUpsideDown: - geom = QRect(screen.size.width - m_frame.origin.x - m_frame.size.width, - screen.size.height - m_frame.origin.y - m_frame.size.height, - m_frame.size.width, - m_frame.size.height); - angle = M_PI; - break; - case UIInterfaceOrientationLandscapeLeft: - geom = QRect(screen.size.height - m_frame.origin.y - m_frame.size.height, - m_frame.origin.x, - m_frame.size.height, - m_frame.size.width); - angle = -M_PI/2.; - break; - case UIInterfaceOrientationLandscapeRight: - geom = QRect(m_frame.origin.y, - screen.size.width - m_frame.origin.x - m_frame.size.width, - m_frame.size.height, - m_frame.size.width); - angle = +M_PI/2.; - break; - } + static GLuint framebuffer = 0; - CGFloat scale = [m_screen->uiScreen() scale]; - geom = QRect(geom.x() * scale, geom.y() * scale, - geom.width() * scale, geom.height() * scale); + // FIXME: Cache context and recreate framebuffer if window + // is used with a different context then last time. - if (angle != 0) { - [m_view layer].transform = CATransform3DMakeRotation(angle, 0, 0, 1.); - } else { - [m_view layer].transform = CATransform3DIdentity; - } - [m_view setNeedsDisplay]; - window()->setGeometry(geom); -} + if (!framebuffer) { + EAGLContext* eaglContext = context.nativeContext(); -QPlatformOpenGLContext *QIOSWindow::glContext() const -{ - if (!m_context) { - m_context = new EAGLPlatformContext(m_view); + [EAGLContext setCurrentContext:eaglContext]; + + // Create the framebuffer and bind it + glGenFramebuffers(1, &framebuffer); + glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); + + GLint width; + GLint height; + + // Create a color renderbuffer, allocate storage for it, + // and attach it to the framebuffer’s color attachment point. + GLuint colorRenderbuffer; + glGenRenderbuffers(1, &colorRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, colorRenderbuffer); + [eaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:static_cast(m_view.layer)]; + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &width); + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &height); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorRenderbuffer); + + QSurfaceFormat requestedFormat = context.format(); + if (requestedFormat.depthBufferSize() > 0 || requestedFormat.stencilBufferSize() > 0) { + // Create a depth or depth/stencil renderbuffer, allocate storage for it, + // and attach it to the framebuffer’s depth attachment point. + GLuint depthRenderbuffer; + glGenRenderbuffers(1, &depthRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer); + + // FIXME: Support more fine grained control over depth/stencil buffer sizes + if (requestedFormat.stencilBufferSize() > 0) { + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, width, height); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer); + } else { + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height); + } + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer); + } + + if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) + NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER)); } - return m_context; + + return framebuffer; } QT_END_NAMESPACE -- cgit v1.2.3 From 09187f602c8ac84c9982bb2e433af5524ac2d37d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 6 Nov 2012 12:01:50 +0100 Subject: iOS: Implement QIOSBackingStore in terms of a QOpenGLPaintDevice We build on top of the QPlatformOpenGLContext implementation to get automatic support for QBackingStore-based painting. Since the OpenGL renderer does not clear the backingstore between frames, we actually also get support for partial updates, and we get the benefit of an accelerated paint engine for Qt Quick 1 without setting a GLWidget as the viewport, which would cause issues such as an extra QWindow. This patch also removes the dependency to QtOpenGL and QtWidgets, which were leftovers from the Qt4 platform plugin. In Qt5 the needed GL bits are in QtGui. Change-Id: Id9b736bfb2e4aec56c0fa9f5b7b4d8bff8e3d1dc Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/ios.pro | 3 +- src/plugins/platforms/ios/qiosbackingstore.h | 57 +++++----- src/plugins/platforms/ios/qiosbackingstore.mm | 147 ++++++++++---------------- src/plugins/platforms/ios/qiosintegration.mm | 1 + 4 files changed, 89 insertions(+), 119 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro index 22b0fec9e8..2fe6a4cb3f 100644 --- a/src/plugins/platforms/ios/ios.pro +++ b/src/plugins/platforms/ios/ios.pro @@ -3,8 +3,7 @@ TARGET = qios load(qt_plugin) DESTDIR = $$QT.gui.plugins/platforms -QT += opengl -QT += core-private gui-private platformsupport-private opengl-private widgets-private +QT += core-private gui-private platformsupport-private LIBS += -framework UIKit -framework QuartzCore OBJECTIVE_SOURCES = main.mm \ diff --git a/src/plugins/platforms/ios/qiosbackingstore.h b/src/plugins/platforms/ios/qiosbackingstore.h index d83a5c21ad..c110f0e4d1 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.h +++ b/src/plugins/platforms/ios/qiosbackingstore.h @@ -1,38 +1,38 @@ /**************************************************************************** ** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ @@ -42,7 +42,6 @@ #ifndef QIOSBACKINGSTORE_H #define QIOSBACKINGSTORE_H -#include #include QT_BEGIN_NAMESPACE @@ -51,13 +50,19 @@ class QIOSBackingStore : public QPlatformBackingStore { public: QIOSBackingStore(QWindow *window); + ~QIOSBackingStore(); QPaintDevice *paintDevice(); + + void beginPaint(const QRegion &); + void endPaint(); + void flush(QWindow *window, const QRegion ®ion, const QPoint &offset); void resize(const QSize &size, const QRegion &staticContents); private: - QPaintDevice *m_paintDevice; + QOpenGLContext *m_context; + QPaintDevice *m_device; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm index 2ffa43b5d1..71f14fdd91 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.mm +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -1,38 +1,38 @@ /**************************************************************************** ** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ @@ -42,91 +42,54 @@ #include "qiosbackingstore.h" #include "qioswindow.h" -#include -#include +#include +#include #include -class EAGLPaintDevice; - -@interface PaintDeviceHelper : NSObject { - EAGLPaintDevice *device; -} - -@property (nonatomic, assign) EAGLPaintDevice *device; - -- (void)eaglView:(EAGLView *)view usesFramebuffer:(GLuint)buffer; - -@end - -class EAGLPaintDevice : public QGLPaintDevice +QIOSBackingStore::QIOSBackingStore(QWindow *window) + : QPlatformBackingStore(window) + , m_context(new QOpenGLContext) + , m_device(0) { -public: - EAGLPaintDevice(QWindow *window) - :QGLPaintDevice(), m_window(window) - { -#if defined(QT_OPENGL_ES_2) - helper = [[PaintDeviceHelper alloc] init]; - helper.device = this; - EAGLView *view = static_cast(window->handle())->nativeView(); - view.delegate = helper; - m_thisFBO = view.fbo; -#endif - } - - ~EAGLPaintDevice() - { -#if defined(QT_OPENGL_ES_2) - [helper release]; -#endif - } - - void setFramebuffer(GLuint buffer) { m_thisFBO = buffer; } - int devType() const { return QInternal::OpenGL; } - QSize size() const { return m_window->geometry().size(); } - QGLContext* context() const { - // Todo: siplify this: - return QGLContext::fromOpenGLContext( - static_cast(m_window->handle())->glContext()->context()); - } - - QPaintEngine *paintEngine() const { return qt_qgl_paint_engine(); } - -private: - QWindow *m_window; - PaintDeviceHelper *helper; -}; - -@implementation PaintDeviceHelper -@synthesize device; + m_context->setFormat(window->requestedFormat()); + m_context->setScreen(window->screen()); + m_context->create(); +} -- (void)eaglView:(EAGLView *)view usesFramebuffer:(GLuint)buffer +QIOSBackingStore::~QIOSBackingStore() { - Q_UNUSED(view) - if (device) - device->setFramebuffer(buffer); + delete m_context; } -@end - -QT_BEGIN_NAMESPACE - -QIOSBackingStore::QIOSBackingStore(QWindow *window) - : QPlatformBackingStore(window), m_paintDevice(new EAGLPaintDevice(window)) +void QIOSBackingStore::beginPaint(const QRegion &) { + // Needed to prevent QOpenGLContext::makeCurrent() from failing + window()->setSurfaceType(QSurface::OpenGLSurface); + + m_context->makeCurrent(window()); + m_device = new QOpenGLPaintDevice(window()->size()); } QPaintDevice *QIOSBackingStore::paintDevice() { - return m_paintDevice; + return m_device; } void QIOSBackingStore::flush(QWindow *window, const QRegion ®ion, const QPoint &offset) { Q_UNUSED(region); Q_UNUSED(offset); - qDebug() << __FUNCTION__ << "not implemented"; - //static_cast(window->handle())->glContext()->swapBuffers(); + + m_context->swapBuffers(window); +} + +void QIOSBackingStore::endPaint() +{ + delete m_device; + + // Calling makeDone() on the context here would be an option, + // but is not needed, and would actually add some overhead. } void QIOSBackingStore::resize(const QSize &size, const QRegion &staticContents) @@ -134,7 +97,9 @@ void QIOSBackingStore::resize(const QSize &size, const QRegion &staticContents) Q_UNUSED(size); Q_UNUSED(staticContents); - qDebug() << __FUNCTION__ << "not implemented"; + // We don't need to resize the QOpenGLPaintDevice, as it's just a thin wrapper + // around the OpenGL paint-engine, and the real geometry is handled by the + // context and window. } QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index b9fef71abc..8abe3c4273 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -77,6 +77,7 @@ QPlatformWindow *QIOSIntegration::createPlatformWindow(QWindow *window) const return new QIOSWindow(window); } +// Used when the QWindow's surface type is set by the client to QSurface::RasterSurface QPlatformBackingStore *QIOSIntegration::createPlatformBackingStore(QWindow *window) const { qDebug() << __FUNCTION__ << "Creating platform backingstore"; -- cgit v1.2.3 From 19de726725dc123f478ecb2b122d03862c725650 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 7 Nov 2012 09:31:00 +0100 Subject: iOS: create top-level UIWindow and UIViewController MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Create a UIWIndow with a view controller and a view where we can reparent our QIOSWindow views inside. Change-Id: Ic90707d3ebe1af970a3aa2aa0f8c0f4be192456a Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosapplicationdelegate.mm | 18 ++++++++++++++++++ src/plugins/platforms/ios/qioswindow.mm | 6 ++++++ 2 files changed, 24 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosapplicationdelegate.mm b/src/plugins/platforms/ios/qiosapplicationdelegate.mm index d88b2b83f1..6fed4c1a23 100644 --- a/src/plugins/platforms/ios/qiosapplicationdelegate.mm +++ b/src/plugins/platforms/ios/qiosapplicationdelegate.mm @@ -40,6 +40,7 @@ ****************************************************************************/ #import "qiosapplicationdelegate.h" +#include "qioswindow.h" #include @implementation QIOSApplicationDelegate @@ -48,7 +49,24 @@ { Q_UNUSED(application) Q_UNUSED(launchOptions) + + // If this application delegate is instanciated, it means that + // this plugin also created UIApplication. We then also create a + // window with a view controller, and set all QWindow views + // as children of the controller view: self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + UIViewController *controller = [[UIViewController alloc] init]; + self.window.rootViewController = controller; + controller.view = [[UIView alloc] init]; + + QWindowList windows = QGuiApplication::topLevelWindows(); + for (int i=0; i(windows[i]->handle())) { + UIView *winView = w->nativeView(); + if (winView && !winView.superview) + [controller.view addSubview:winView]; + } + } // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 46612ae699..2888228f18 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -42,6 +42,7 @@ #include "qioswindow.h" #include "qioscontext.h" #include "qiosscreen.h" +#include "qiosapplicationdelegate.h" #import @@ -170,6 +171,11 @@ QIOSWindow::QIOSWindow(QWindow *window) : QPlatformWindow(window) , m_view([[EAGLView alloc] init]) { + UIApplication *uiApplication = [UIApplication sharedApplication]; + if (uiApplication) { + if ([uiApplication.delegate isMemberOfClass:[QIOSApplicationDelegate class]]) + [uiApplication.delegate.window.rootViewController.view addSubview:m_view]; + } } QIOSWindow::~QIOSWindow() -- cgit v1.2.3 From ea1e5ccd621115d8103ceac962ac89dc0db65b70 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 7 Nov 2012 16:34:43 +0100 Subject: iOS: implement QEventLoop support in the event dispatcher MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With this patch you can now expect the following code to work: QEventLoop l; QTimer::singleShot(1000, &l, SLOT(quit())); l.exec(); Change-Id: Ic73e37affaadf8a859787d84ac02c15621ac7a29 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioseventdispatcher.h | 2 ++ src/plugins/platforms/ios/qioseventdispatcher.mm | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioseventdispatcher.h b/src/plugins/platforms/ios/qioseventdispatcher.h index da8464f5ee..88d5127855 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.h +++ b/src/plugins/platforms/ios/qioseventdispatcher.h @@ -108,6 +108,8 @@ public: void flush(); private: + bool m_interrupted; + CFRunLoopSourceRef m_postedEventsRunLoopSource; CFRunLoopSourceRef m_blockingTimerRunLoopSource; diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm index a7f01a33a9..4268b02b6d 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.mm +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -152,6 +152,7 @@ void QIOSEventDispatcher::processPostedEvents() QIOSEventDispatcher::QIOSEventDispatcher(QObject *parent) : QAbstractEventDispatcher(parent) + , m_interrupted(false) , m_runLoopTimerRef(0) { CFRunLoopRef mainRunLoop = CFRunLoopGetMain(); @@ -187,6 +188,8 @@ QIOSEventDispatcher::~QIOSEventDispatcher() bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) { + m_interrupted = false; + UIApplication *uiApplication = [UIApplication sharedApplication]; bool excludeUserEvents = flags & QEventLoop::ExcludeUserInputEvents; bool execFlagSet = (flags & QEventLoop::DialogExec) || (flags & QEventLoop::EventLoopExec); @@ -201,7 +204,8 @@ bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) return UIApplicationMain(qAppPriv->argc, qAppPriv->argv, nil, NSStringFromClass([QIOSApplicationDelegate class])); } } else { - // todo: start NSRunLoop... + NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; + while ([runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]] && !m_interrupted); } } else { // todo: manual processEvents... @@ -309,7 +313,7 @@ void QIOSEventDispatcher::wakeUp() void QIOSEventDispatcher::interrupt() { - qDebug() << __FUNCTION__ << "not implemented"; + m_interrupted = true; } void QIOSEventDispatcher::flush() -- cgit v1.2.3 From 0dbee6a5e1e3945dab404f8784df24a9260f0d52 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 7 Nov 2012 22:57:17 +0100 Subject: iOS: send mouse events (from touch events) from EAGLView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ia6c955f2c5bcde8e41d5908bfb8fd52bd449b3ec Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 3 +++ src/plugins/platforms/ios/qioswindow.mm | 21 ++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index d8f49db55b..c2bf1bb6f0 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -47,6 +47,7 @@ #import class QIOSContext; +class QIOSWindow; @interface EAGLView : UIView { @@ -57,8 +58,10 @@ class QIOSContext; UIKeyboardType keyboardType; UIReturnKeyType returnKeyType; BOOL secureTextEntry; + QIOSWindow *m_qioswindow; } +- (id)initWithQIOSWindow:(QIOSWindow *)qioswindow; - (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons; @property(nonatomic) UITextAutocapitalizationType autocapitalizationType; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 2888228f18..59508d83f3 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -58,6 +58,14 @@ return [CAEAGLLayer class]; } +-(id)initWithQIOSWindow:(QIOSWindow *)qioswindow +{ + if (self = [super init]) { + m_qioswindow = qioswindow; + } + return self; +} + - (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { @@ -83,22 +91,13 @@ - (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons { - Q_UNUSED(touches); - Q_UNUSED(event); - Q_UNUSED(buttons); - - // FIXME: Reintroduce relation to UIWindow - qDebug() << __FUNCTION__ << "not implemented"; - -#if 0 UITouch *touch = [touches anyObject]; CGPoint locationInView = [touch locationInView:self]; CGFloat scaleFactor = [self contentScaleFactor]; QPoint p(locationInView.x * scaleFactor, locationInView.y * scaleFactor); // TODO handle global touch point? for status bar? - QWindowSystemInterface::handleMouseEvent(m_window->window(), (ulong)(event.timestamp*1000), p, p, buttons); -#endif + QWindowSystemInterface::handleMouseEvent(m_qioswindow->window(), (ulong)(event.timestamp*1000), p, p, buttons); } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event @@ -169,7 +168,7 @@ QT_BEGIN_NAMESPACE QIOSWindow::QIOSWindow(QWindow *window) : QPlatformWindow(window) - , m_view([[EAGLView alloc] init]) + , m_view([[EAGLView alloc] initWithQIOSWindow:this]) { UIApplication *uiApplication = [UIApplication sharedApplication]; if (uiApplication) { -- cgit v1.2.3 From 6bbe89e2b858564493468c7c5bd9c978c374751a Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 7 Nov 2012 19:48:38 +0100 Subject: iOS: support stand-alone qApp->processEvents calls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rough implementation to support stand-alone processEvent calls. We probably need to revisit this code to fix corner-cases later on. Change-Id: I72d5639dab599b4d0017aaa52b922f4185a50337 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioseventdispatcher.mm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm index 4268b02b6d..252e375a54 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.mm +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -189,6 +189,7 @@ QIOSEventDispatcher::~QIOSEventDispatcher() bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) { m_interrupted = false; + bool eventsProcessed = false; UIApplication *uiApplication = [UIApplication sharedApplication]; bool excludeUserEvents = flags & QEventLoop::ExcludeUserInputEvents; @@ -207,10 +208,13 @@ bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; while ([runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]] && !m_interrupted); } + eventsProcessed = true; } else { - // todo: manual processEvents... + if (!(flags & QEventLoop::WaitForMoreEvents)) + wakeUp(); + eventsProcessed = [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; } - return false; + return eventsProcessed; } bool QIOSEventDispatcher::hasPendingEvents() @@ -313,6 +317,7 @@ void QIOSEventDispatcher::wakeUp() void QIOSEventDispatcher::interrupt() { + wakeUp(); m_interrupted = true; } -- cgit v1.2.3 From caacccaaf0fbc0a4f4f88af7dadbfece175776d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 7 Nov 2012 17:30:46 +0100 Subject: iOS: Unset EAGL context if it's current when destroying QIOSContext Change-Id: Ie0b27e6b0dafa2a7283b44d6676871fce15cc42a Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qioscontext.mm | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioscontext.mm b/src/plugins/platforms/ios/qioscontext.mm index e512b3d4c8..8beb588b03 100644 --- a/src/plugins/platforms/ios/qioscontext.mm +++ b/src/plugins/platforms/ios/qioscontext.mm @@ -70,6 +70,9 @@ QIOSContext::QIOSContext(QOpenGLContext *context) QIOSContext::~QIOSContext() { + if ([EAGLContext currentContext] == m_eaglContext) + doneCurrent(); + [m_eaglContext release]; } -- cgit v1.2.3 From 231796c98d317f845209e2b470fa34e00aac3c7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 8 Nov 2012 14:48:18 +0100 Subject: iOS: Set background color of UIWindow and root UIView to burn your eyes Convenient to aid debugging during development of the platform plugin. Change-Id: Id429ca95e0452385ee8def1fe4a1bb7de175ba3e Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosapplicationdelegate.mm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosapplicationdelegate.mm b/src/plugins/platforms/ios/qiosapplicationdelegate.mm index 6fed4c1a23..1b3dc18dd7 100644 --- a/src/plugins/platforms/ios/qiosapplicationdelegate.mm +++ b/src/plugins/platforms/ios/qiosapplicationdelegate.mm @@ -68,8 +68,10 @@ } } - // Override point for customization after application launch. - self.window.backgroundColor = [UIColor whiteColor]; + // Aid debugging during development + self.window.backgroundColor = [UIColor cyanColor]; + controller.view.backgroundColor = [UIColor magentaColor]; + [self.window makeKeyAndVisible]; return YES; } -- cgit v1.2.3 From 3bc6d7470a88bf1da12aa768c9527fe08d52757a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 8 Nov 2012 15:09:00 +0100 Subject: iOS: Pass QWindow geometry to initWithFrame on window creation Allows the optimal pattern of setting the geometry of the QWindow before showing (and hence creating) it. Change-Id: I29206b5d9a70df0b01e8df8f7df8f35cced51121 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qioswindow.mm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 59508d83f3..ce0ea6e0e1 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -51,6 +51,11 @@ #include +static CGRect toCGRect(const QRect &rect) +{ + return CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()); +} + @implementation EAGLView + (Class)layerClass @@ -58,11 +63,11 @@ return [CAEAGLLayer class]; } --(id)initWithQIOSWindow:(QIOSWindow *)qioswindow +-(id)initWithQIOSWindow:(QIOSWindow *)window { - if (self = [super init]) { - m_qioswindow = qioswindow; - } + if (self = [super initWithFrame:toCGRect(window->geometry())]) + m_qioswindow = window; + return self; } -- cgit v1.2.3 From e936561a164ce582785eafcfa70ed2924f7bc954 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Sun, 11 Nov 2012 10:22:20 +0100 Subject: iOS: Add Q_IMPORT_PLUGIN(QIOSIntegrationPlugin) into the plugin itself MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since the plugin will always be linked in statically, we add this necessary registration code into the plugin itself rather than putting this burden onto the client application. Change-Id: I8691d8080e41bdf0644bb960b5c7102e79a0f0d5 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/main.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/main.mm b/src/plugins/platforms/ios/main.mm index b09fbce1f4..6a04770e3e 100644 --- a/src/plugins/platforms/ios/main.mm +++ b/src/plugins/platforms/ios/main.mm @@ -66,4 +66,4 @@ QT_END_NAMESPACE #include "main.moc" - +Q_IMPORT_PLUGIN(QIOSIntegrationPlugin) -- cgit v1.2.3 From 8d7238f57e9a85524ea550917f051b9eb9927922 Mon Sep 17 00:00:00 2001 From: Morten Johan Sorvig Date: Wed, 7 Nov 2012 22:11:35 +0100 Subject: iOS: Use default createPlatformPixmap implementation No need to implement this one, the standard implementation creates a raster pixmap. Change-Id: I9bb25188bd95159d76e760b2be6870e0bede7b56 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosintegration.h | 1 - src/plugins/platforms/ios/qiosintegration.mm | 8 -------- 2 files changed, 9 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index e411ce2905..11c17aced9 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -53,7 +53,6 @@ public: QIOSIntegration(); ~QIOSIntegration(); - QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const; QPlatformWindow *createPlatformWindow(QWindow *window) const; QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 8abe3c4273..d00d4a077f 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -63,14 +63,6 @@ QIOSIntegration::~QIOSIntegration() { } -QPlatformPixmap *QIOSIntegration::createPlatformPixmap(QPlatformPixmap::PixelType type) const -{ - Q_UNUSED(type); - - qDebug() << __FUNCTION__ << "not yet implemented"; - return 0; -} - QPlatformWindow *QIOSIntegration::createPlatformWindow(QWindow *window) const { qDebug() << __FUNCTION__ << "Creating platform window"; -- cgit v1.2.3 From 3d81b43aa462c66e11f772398550e76ce4cee6de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 8 Nov 2012 17:12:54 +0100 Subject: iOS: Implement QPlatformScreen::availableGeometry() This will sadly not work as expected until we've found a way to kick off the iOS event loop before QApplication is initialized, as UIScreen does not seem to report the correct applicationFrame (taking the status bar into account) until after the UIApplication has been set up by UIApplicationMain(). Change-Id: I0eaa3b8bca4129d1c4183a202ad2ecd0d8bc52d0 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosscreen.h | 1 + src/plugins/platforms/ios/qiosscreen.mm | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index 8af7779f9d..8d67b1ecdf 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -56,6 +56,7 @@ public: enum ScreenIndex { MainScreen = 0 }; QRect geometry() const; + QRect availableGeometry() const; int depth() const; QImage::Format format() const; QSizeF physicalSize() const; diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 93b22953e2..effd19070a 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -99,11 +99,15 @@ QIOSScreen::QIOSScreen(unsigned int screenIndex) QRect QIOSScreen::geometry() const { - // FIXME: Do we need to reimplement availableGeometry() to take the - // system statusbar into account? return m_geometry; } +QRect QIOSScreen::availableGeometry() const +{ + CGRect frame = m_uiScreen.applicationFrame; + return QRect(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); +} + int QIOSScreen::depth() const { return m_depth; -- cgit v1.2.3 From e123056c47e33759e740ea2e25771e0cc1899c13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 9 Nov 2012 17:08:46 +0100 Subject: iOS: Implement QIOSWindow::setGeometry() and pick up UIView geometry changes The best way to pick up geometry changes of the UIView seems to be to override layoutSubviews(), but that will only be called if the size of the UIView changes, not when the position (center) changes. This means that the position reflected by the QWindow will not always be in sync with the position of the native UIView. Fortunately the position of a QWindow is not used for anything critical in Qt itself. Another issue is that the frame property of a UIView is only valid if the transform of the UIView is set to the identity transform. We try to catch cases where this is not the case, and warn the user about this. We could in theory react to changes in the UIView geometry by only updating the size, since this is also reflected through the bounds property of the UIView. This is left for when we know more about how these things interact in practice. Change-Id: I079162c059d377a77569fe3974e261d2e0671fd5 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qioswindow.h | 1 + src/plugins/platforms/ios/qioswindow.mm | 43 ++++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index c2bf1bb6f0..d16e17124d 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -83,6 +83,7 @@ public: ~QIOSWindow(); void setGeometry(const QRect &rect); + void updateGeometry(const QRect &rect); GLuint framebufferObject(const QIOSContext &context) const; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index ce0ea6e0e1..feabaeb47a 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -56,6 +56,11 @@ static CGRect toCGRect(const QRect &rect) return CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()); } +static QRect fromCGRect(const CGRect &rect) +{ + return QRect(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); +} + @implementation EAGLView + (Class)layerClass @@ -94,6 +99,24 @@ static CGRect toCGRect(const QRect &rect) return self; } +- (void)layoutSubviews +{ + // This method is the de facto way to know that view has been resized, + // or otherwise needs invalidation of its buffers. Note though that we + // do not get this callback when the view just changes its position, so + // the position of our QWindow (and platform window) will only get updated + // when the size is also changed. + + if (CGAffineTransformIsIdentity(self.transform)) { + // Reflect the new size (and possibly also position) in the QWindow + m_qioswindow->updateGeometry(fromCGRect(self.frame)); + } else { + qWarning() << "QIOSPlatformWindow's UIView has transform set, ignoring geometry updates"; + } + + [super layoutSubviews]; +} + - (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons { UITouch *touch = [touches anyObject]; @@ -189,9 +212,27 @@ QIOSWindow::~QIOSWindow() void QIOSWindow::setGeometry(const QRect &rect) { + if (!CGAffineTransformIsIdentity(m_view.transform)) { + qWarning() << "Setting the geometry of a QWindow with a transform set on the UIView is not supported"; + return; + } + + // Since we don't support transformations on the UIView, we can set the frame + // directly and let UIKit deal with translating that into bounds and center. + m_view.frame = toCGRect(rect); + + updateGeometry(rect); +} + +void QIOSWindow::updateGeometry(const QRect &rect) +{ + // The baseclass implementation will store the geometry, and allows use to + // re-use the baseclass geometry() implementation, which just returns rect. QPlatformWindow::setGeometry(rect); - qDebug() << __FUNCTION__ << "not implemented"; + // We inform Qt about new geometry, which will trigger resize and + // expose events for the application. + QWindowSystemInterface::handleGeometryChange(window(), rect); } GLuint QIOSWindow::framebufferObject(const QIOSContext &context) const -- cgit v1.2.3 From 3241f37711bd35988c7a21cc8a4833ec2fa3132d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 9 Nov 2012 17:20:47 +0100 Subject: iOS: Implement QPlatformWindow::setWindowState() In both maximized and fullscreen modes we assume that we can use the availableGeometry() of the QScreen, but of course this depends on us showing or hiding the statusbar first, as well as QScreen actually returning the right availableGeometry when the statusbar is shown. The latter is not the case right now, as we initialize QScreen before UIApplication has been set up and UIScreen has had a chance to init itself based on the precense of a statusbar or not. Change-Id: Id44dee3550f7135ffe2852b377bb6c7b6d522d68 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qioswindow.h | 2 ++ src/plugins/platforms/ios/qioswindow.mm | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index d16e17124d..4e1970d4d4 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -85,6 +85,8 @@ public: void setGeometry(const QRect &rect); void updateGeometry(const QRect &rect); + void setWindowState(Qt::WindowState state); + GLuint framebufferObject(const QIOSContext &context) const; EAGLView *nativeView() const { return m_view; } diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index feabaeb47a..cccd5ab133 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -203,6 +203,8 @@ QIOSWindow::QIOSWindow(QWindow *window) if ([uiApplication.delegate isMemberOfClass:[QIOSApplicationDelegate class]]) [uiApplication.delegate.window.rootViewController.view addSubview:m_view]; } + + setWindowState(window->windowState()); } QIOSWindow::~QIOSWindow() @@ -235,6 +237,22 @@ void QIOSWindow::updateGeometry(const QRect &rect) QWindowSystemInterface::handleGeometryChange(window(), rect); } +void QIOSWindow::setWindowState(Qt::WindowState state) +{ + // FIXME: Figure out where or how we should disable/enable the statusbar. + // Perhaps setting QWindow to maximized should also mean that we'll show + // the statusbar, and vice versa for fullscreen? + + switch (state) { + case Qt::WindowMaximized: + case Qt::WindowFullScreen: + setGeometry(QRect(QPoint(0, 0), window()->screen()->availableSize())); + break; + default: + break; + } +} + GLuint QIOSWindow::framebufferObject(const QIOSContext &context) const { static GLuint framebuffer = 0; -- cgit v1.2.3 From e71ca36161626020f7c641dcc83c0c02dc4d561b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sun, 11 Nov 2012 16:32:54 +0100 Subject: iOS: Ensure UIApplicationMain is started before QApplication by wrapping main() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For the typical Qt app the developer will have an existing main() that looks something like: int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); return app.exec(); } To support this, we provide our own 'main' function in the qtmain static library that we link into the application, which calls UIApplicationMain and redirects to the 'main' function of the application after the event loop has started spinning. For this to work, the applications 'main' function needs to manually be renamed 'qt_main' for now. In a later patch, this renaming will happen automatically by redefining main from either a header file, or more likely, from the Makefile created by qmake. For the case of an iOS developer wanting to use Qt in their existing app the main will look something like: int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } This is supported right now by just linking in libqios.a without libqiosmain.a. QGuiApplication should then be created e.g inside the native apps application delegate (but QGuiApplication::exec should not be called). In the future, we plan to but use a wrapper library that brings in all the Qt dependencies into one single static library. This library will not link against qtmain, so there won't be a symbol clash if the -ObjC linker option is used. We should then add the required magic to the future Objective-C convenience wrapper for QML to bring up a QGuiApplication, which would allow using Qt from storyboards and NIBs. This would also be the place to inject our own application delegate into the mix, while proxying the delegate callbacks to the user's application delegate. Change-Id: Iba5ade114b27216be8285f36100fd735a08b9d59 Reviewed-by: Tor Arne Vestbø Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/ios.pro | 30 +------ src/plugins/platforms/ios/main.mm | 69 --------------- src/plugins/platforms/ios/plugin.mm | 69 +++++++++++++++ src/plugins/platforms/ios/plugin.pro | 30 +++++++ .../platforms/ios/qiosapplicationdelegate.h | 3 + .../platforms/ios/qiosapplicationdelegate.mm | 31 ++----- src/plugins/platforms/ios/qioseventdispatcher.mm | 14 +--- src/plugins/platforms/ios/qiosintegration.mm | 12 +++ src/plugins/platforms/ios/qioswindow.mm | 9 +- src/plugins/platforms/ios/qtmain.mm | 98 ++++++++++++++++++++++ src/plugins/platforms/ios/qtmain.pro | 8 ++ 11 files changed, 234 insertions(+), 139 deletions(-) delete mode 100644 src/plugins/platforms/ios/main.mm create mode 100644 src/plugins/platforms/ios/plugin.mm create mode 100644 src/plugins/platforms/ios/plugin.pro create mode 100644 src/plugins/platforms/ios/qtmain.mm create mode 100644 src/plugins/platforms/ios/qtmain.pro (limited to 'src') diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro index 2fe6a4cb3f..842ff17f1c 100644 --- a/src/plugins/platforms/ios/ios.pro +++ b/src/plugins/platforms/ios/ios.pro @@ -1,29 +1,3 @@ -TARGET = qios +TEMPLATE = subdirs -load(qt_plugin) -DESTDIR = $$QT.gui.plugins/platforms - -QT += core-private gui-private platformsupport-private -LIBS += -framework UIKit -framework QuartzCore - -OBJECTIVE_SOURCES = main.mm \ - qiosintegration.mm \ - qioswindow.mm \ - qiosscreen.mm \ - qioseventdispatcher.mm \ - qiosbackingstore.mm \ - qiosapplicationdelegate.mm \ - qioscontext.mm - -HEADERS = qiosintegration.h \ - qioswindow.h \ - qiosscreen.h \ - qioseventdispatcher.h \ - qiosbackingstore.h \ - qiosapplicationdelegate.h \ - qioscontext.h - -#HEADERS = qiossoftwareinputhandler.h - -target.path += $$[QT_INSTALL_PLUGINS]/platforms -INSTALLS += target +SUBDIRS += plugin.pro qtmain.pro diff --git a/src/plugins/platforms/ios/main.mm b/src/plugins/platforms/ios/main.mm deleted file mode 100644 index 6a04770e3e..0000000000 --- a/src/plugins/platforms/ios/main.mm +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include -#include "qiosintegration.h" - -QT_BEGIN_NAMESPACE - -class QIOSIntegrationPlugin : public QPlatformIntegrationPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.1" FILE "ios.json") - public: - QPlatformIntegration *create(const QString&, const QStringList&); -}; - -QPlatformIntegration * QIOSIntegrationPlugin::create(const QString& system, const QStringList& paramList) -{ - Q_UNUSED(paramList); - if (system.toLower() == "ios") - return new QIOSIntegration; - - return 0; -} - -QT_END_NAMESPACE - -#include "main.moc" - -Q_IMPORT_PLUGIN(QIOSIntegrationPlugin) diff --git a/src/plugins/platforms/ios/plugin.mm b/src/plugins/platforms/ios/plugin.mm new file mode 100644 index 0000000000..3701ac7e28 --- /dev/null +++ b/src/plugins/platforms/ios/plugin.mm @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include "qiosintegration.h" + +QT_BEGIN_NAMESPACE + +class QIOSIntegrationPlugin : public QPlatformIntegrationPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.1" FILE "ios.json") + public: + QPlatformIntegration *create(const QString&, const QStringList&); +}; + +QPlatformIntegration * QIOSIntegrationPlugin::create(const QString& system, const QStringList& paramList) +{ + Q_UNUSED(paramList); + if (system.toLower() == "ios") + return new QIOSIntegration; + + return 0; +} + +QT_END_NAMESPACE + +#include "plugin.moc" + +Q_IMPORT_PLUGIN(QIOSIntegrationPlugin) diff --git a/src/plugins/platforms/ios/plugin.pro b/src/plugins/platforms/ios/plugin.pro new file mode 100644 index 0000000000..8a2f63442d --- /dev/null +++ b/src/plugins/platforms/ios/plugin.pro @@ -0,0 +1,30 @@ +TARGET = qios + +load(qt_plugin) + +QT += core-private gui-private platformsupport-private +LIBS += -framework UIKit -framework QuartzCore + +OBJECTIVE_SOURCES = \ + plugin.mm \ + qiosintegration.mm \ + qioswindow.mm \ + qiosscreen.mm \ + qioseventdispatcher.mm \ + qiosbackingstore.mm \ + qiosapplicationdelegate.mm \ + qioscontext.mm + +HEADERS = \ + qiosintegration.h \ + qioswindow.h \ + qiosscreen.h \ + qioseventdispatcher.h \ + qiosbackingstore.h \ + qiosapplicationdelegate.h \ + qioscontext.h + +#HEADERS = qiossoftwareinputhandler.h + +target.path += $$[QT_INSTALL_PLUGINS]/platforms +INSTALLS += target diff --git a/src/plugins/platforms/ios/qiosapplicationdelegate.h b/src/plugins/platforms/ios/qiosapplicationdelegate.h index 10e415831d..442b37f1b3 100644 --- a/src/plugins/platforms/ios/qiosapplicationdelegate.h +++ b/src/plugins/platforms/ios/qiosapplicationdelegate.h @@ -48,3 +48,6 @@ @end +@interface QIOSMainWrapperApplicationDelegate : QIOSApplicationDelegate +@end + diff --git a/src/plugins/platforms/ios/qiosapplicationdelegate.mm b/src/plugins/platforms/ios/qiosapplicationdelegate.mm index 1b3dc18dd7..41a3fff84f 100644 --- a/src/plugins/platforms/ios/qiosapplicationdelegate.mm +++ b/src/plugins/platforms/ios/qiosapplicationdelegate.mm @@ -45,34 +45,13 @@ @implementation QIOSApplicationDelegate +@synthesize window; + - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { Q_UNUSED(application) Q_UNUSED(launchOptions) - // If this application delegate is instanciated, it means that - // this plugin also created UIApplication. We then also create a - // window with a view controller, and set all QWindow views - // as children of the controller view: - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - UIViewController *controller = [[UIViewController alloc] init]; - self.window.rootViewController = controller; - controller.view = [[UIView alloc] init]; - - QWindowList windows = QGuiApplication::topLevelWindows(); - for (int i=0; i(windows[i]->handle())) { - UIView *winView = w->nativeView(); - if (winView && !winView.superview) - [controller.view addSubview:winView]; - } - } - - // Aid debugging during development - self.window.backgroundColor = [UIColor cyanColor]; - controller.view.backgroundColor = [UIColor magentaColor]; - - [self.window makeKeyAndVisible]; return YES; } @@ -104,6 +83,12 @@ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } +- (void)dealloc +{ + [window release]; + [super dealloc]; +} + @end diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm index 252e375a54..9d455370c0 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.mm +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -191,23 +191,13 @@ bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) m_interrupted = false; bool eventsProcessed = false; - UIApplication *uiApplication = [UIApplication sharedApplication]; bool excludeUserEvents = flags & QEventLoop::ExcludeUserInputEvents; bool execFlagSet = (flags & QEventLoop::DialogExec) || (flags & QEventLoop::EventLoopExec); bool useExecMode = execFlagSet && !excludeUserEvents; if (useExecMode) { - if (!uiApplication) { - // No UIApplication has been started yet. We therefore start it now. Note that application - // developers are free to call UIApplicationMain themselves instead of QApplication::exec() - @autoreleasepool { - QCoreApplicationPrivate *qAppPriv = static_cast(QObjectPrivate::get(qApp)); - return UIApplicationMain(qAppPriv->argc, qAppPriv->argv, nil, NSStringFromClass([QIOSApplicationDelegate class])); - } - } else { - NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; - while ([runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]] && !m_interrupted); - } + NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; + while ([runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]] && !m_interrupted); eventsProcessed = true; } else { if (!(flags & QEventLoop::WaitForMoreEvents)) diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index d00d4a077f..fed278bffe 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -56,6 +56,18 @@ QIOSIntegration::QIOSIntegration() : m_fontDatabase(new QCoreTextFontDatabase) , m_screen(new QIOSScreen(QIOSScreen::MainScreen)) { + if (![UIApplication sharedApplication]) { + qWarning() + << "Error: You are creating QApplication before calling UIApplicationMain.\n" + << "If you are writing a native iOS application, and only want to use Qt for\n" + << "parts of the application, a good place to create QApplication is from within\n" + << "'applicationDidFinishLaunching' inside your UIApplication delegate.\n" + << "If you instead create a cross-platform Qt application and do not intend to call\n" + << "UIApplicationMain, you need to link in libqtmain.a, and substitute main with qt_main.\n" + << "This is normally done automatically by qmake.\n"; + exit(-1); + } + screenAdded(m_screen); } diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index cccd5ab133..5701ac8aa2 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -198,13 +198,8 @@ QIOSWindow::QIOSWindow(QWindow *window) : QPlatformWindow(window) , m_view([[EAGLView alloc] initWithQIOSWindow:this]) { - UIApplication *uiApplication = [UIApplication sharedApplication]; - if (uiApplication) { - if ([uiApplication.delegate isMemberOfClass:[QIOSApplicationDelegate class]]) - [uiApplication.delegate.window.rootViewController.view addSubview:m_view]; - } - - setWindowState(window->windowState()); + if ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]) + [[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:m_view]; } QIOSWindow::~QIOSWindow() diff --git a/src/plugins/platforms/ios/qtmain.mm b/src/plugins/platforms/ios/qtmain.mm new file mode 100644 index 0000000000..9b4ce9918e --- /dev/null +++ b/src/plugins/platforms/ios/qtmain.mm @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qiosapplicationdelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([QIOSMainWrapperApplicationDelegate class])); + } +} + +extern int qt_main(int argc, char *argv[]); + +@implementation QIOSMainWrapperApplicationDelegate + +- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + // We may have a window already from a NIB or storyboard + if (!self.window) { + // If not, we create one ourselves + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + UIViewController *controller = [[UIViewController alloc] init]; + self.window.rootViewController = controller; + controller.view = [[UIView alloc] init]; + + // Aid debugging during development + self.window.backgroundColor = [UIColor cyanColor]; + self.window.rootViewController.view.backgroundColor = [UIColor magentaColor]; + + [self.window makeKeyAndVisible]; + } + + // We schedule the main-redirection for the next eventloop pass so that we + // can return from this function and let UIApplicationMain finish its job. + [NSTimer scheduledTimerWithTimeInterval:.01f target:self + selector:@selector(runUserMain) userInfo:nil repeats:NO]; + + if ([QIOSApplicationDelegate instancesRespondToSelector:_cmd]) + return [super application:application willFinishLaunchingWithOptions:launchOptions]; + else + return YES; +} + +- (void)runUserMain +{ + NSArray *arguments = [[NSProcessInfo processInfo] arguments]; + int argc = arguments.count; + char **argv = new char*[argc]; + for (int i = 0; i < argc; ++i) { + NSString *arg = [arguments objectAtIndex:i]; + argv[i] = reinterpret_cast(malloc([arg lengthOfBytesUsingEncoding:[NSString defaultCStringEncoding]])); + strcpy(argv[i], [arg cStringUsingEncoding:[NSString defaultCStringEncoding]]); + } + + qt_main(argc, argv); + delete[] argv; +} + +@end diff --git a/src/plugins/platforms/ios/qtmain.pro b/src/plugins/platforms/ios/qtmain.pro new file mode 100644 index 0000000000..7835c88eac --- /dev/null +++ b/src/plugins/platforms/ios/qtmain.pro @@ -0,0 +1,8 @@ +TARGET = qiosmain + +load(qt_plugin) + +OBJECTIVE_SOURCES = qtmain.mm + +target.path += $$[QT_INSTALL_PLUGINS]/platforms +INSTALLS += target -- cgit v1.2.3 From d8b3465dd3482040f0de077f87545415a1a2a5b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 14 Nov 2012 14:54:13 +0100 Subject: iOS: Don't use IOKit in QTestLib, it's a private framework on iOS Change-Id: I271a480b79c7768942911a28c84d6bb5a8d840d3 Reviewed-by: Richard Moe Gustavsen --- src/testlib/qtestcase.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index f9f21c6a8f..ef8ffa570b 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -82,7 +82,7 @@ #include #endif -#ifdef Q_OS_MAC +#if defined(Q_OS_MAC) && !defined(Q_OS_IOS) #include #endif @@ -2078,7 +2078,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv) int callgrindChildExitCode = 0; #endif -#ifdef Q_OS_MAC +#if defined(Q_OS_MAC) && !defined(Q_OS_IOS) bool macNeedsActivate = qApp && (qstrcmp(qApp->metaObject()->className(), "QApplication") == 0); IOPMAssertionID powerID; #endif @@ -2093,7 +2093,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv) SetErrorMode(SetErrorMode(0) | SEM_NOGPFAULTERRORBOX); #endif -#ifdef Q_OS_MAC +#if defined(Q_OS_MAC) && !defined(Q_OS_IOS) if (macNeedsActivate) { CFStringRef reasonForActivity= CFSTR("No Display Sleep"); IOReturn ok = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, reasonForActivity, &powerID); @@ -2146,7 +2146,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv) } QTestLog::stopLogging(); -#ifdef Q_OS_MAC +#if defined(Q_OS_MAC) && !defined(Q_OS_IOS) if (macNeedsActivate) { IOPMAssertionRelease(powerID); } @@ -2163,7 +2163,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv) QSignalDumper::endDump(); -#ifdef Q_OS_MAC +#if defined(Q_OS_MAC) && !defined(Q_OS_IOS) if (macNeedsActivate) { IOPMAssertionRelease(powerID); } -- cgit v1.2.3 From f124e098ced89c3014d8bbc08a20db658d1cc7c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 14 Nov 2012 14:58:11 +0100 Subject: iOS: Set PLUGIN_TYPE = platforms before loading(qt_plugins) This takes care of setting INSTALLS for us, so we can skip that. Change-Id: I351cb9ec08b632fd9867d85e2c5fa59d8e5acc9d Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/plugin.pro | 4 +--- src/plugins/platforms/ios/qtmain.pro | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/plugin.pro b/src/plugins/platforms/ios/plugin.pro index 8a2f63442d..222d8c8445 100644 --- a/src/plugins/platforms/ios/plugin.pro +++ b/src/plugins/platforms/ios/plugin.pro @@ -1,5 +1,6 @@ TARGET = qios +PLUGIN_TYPE = platforms load(qt_plugin) QT += core-private gui-private platformsupport-private @@ -25,6 +26,3 @@ HEADERS = \ qioscontext.h #HEADERS = qiossoftwareinputhandler.h - -target.path += $$[QT_INSTALL_PLUGINS]/platforms -INSTALLS += target diff --git a/src/plugins/platforms/ios/qtmain.pro b/src/plugins/platforms/ios/qtmain.pro index 7835c88eac..49ada385bb 100644 --- a/src/plugins/platforms/ios/qtmain.pro +++ b/src/plugins/platforms/ios/qtmain.pro @@ -1,8 +1,6 @@ TARGET = qiosmain +PLUGIN_TYPE = platforms load(qt_plugin) OBJECTIVE_SOURCES = qtmain.mm - -target.path += $$[QT_INSTALL_PLUGINS]/platforms -INSTALLS += target -- cgit v1.2.3 From 9d2e623451d4a4d695bc41e750a3218608c2546c Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 12 Nov 2012 15:20:06 +0100 Subject: iOS: insert Digia license headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove Nokia. Change-Id: Iec7095ef4e3099453b6103814e826039b377ecce Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/plugin.mm | 48 ++++++++++----------- src/plugins/platforms/ios/qiosintegration.h | 48 ++++++++++----------- src/plugins/platforms/ios/qiosintegration.mm | 48 ++++++++++----------- src/plugins/platforms/ios/qiosscreen.h | 48 ++++++++++----------- src/plugins/platforms/ios/qiosscreen.mm | 48 ++++++++++----------- .../platforms/ios/qiossoftwareinputhandler.h | 50 +++++++++++----------- 6 files changed, 144 insertions(+), 146 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/plugin.mm b/src/plugins/platforms/ios/plugin.mm index 3701ac7e28..a93b6037ad 100644 --- a/src/plugins/platforms/ios/plugin.mm +++ b/src/plugins/platforms/ios/plugin.mm @@ -1,38 +1,38 @@ /**************************************************************************** ** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index 11c17aced9..d5f79857f7 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -1,38 +1,38 @@ /**************************************************************************** ** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index fed278bffe..a417021cbd 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -1,38 +1,38 @@ /**************************************************************************** ** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index 8d67b1ecdf..f17f1c1d70 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -1,38 +1,38 @@ /**************************************************************************** ** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index effd19070a..efeacb8cb6 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -1,38 +1,38 @@ /**************************************************************************** ** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ diff --git a/src/plugins/platforms/ios/qiossoftwareinputhandler.h b/src/plugins/platforms/ios/qiossoftwareinputhandler.h index 99e8fac61b..5dad6b8d86 100644 --- a/src/plugins/platforms/ios/qiossoftwareinputhandler.h +++ b/src/plugins/platforms/ios/qiossoftwareinputhandler.h @@ -1,40 +1,38 @@ - - /**************************************************************************** ** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ -- cgit v1.2.3 From b3eccb0c15a3d4c9bee236c82c9a155c8752b66c Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 13 Nov 2012 17:15:19 +0100 Subject: iOS: add QIOSOrientationListener MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QIOSScreen will use this to listen for orientation changes from UIDevice. Change-Id: I5a30f3808f8b9b885303608ce2fc1316c962898b Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/plugin.pro | 2 + .../platforms/ios/qiosorientationlistener.h | 65 +++++++++++++ .../platforms/ios/qiosorientationlistener.mm | 108 +++++++++++++++++++++ 3 files changed, 175 insertions(+) create mode 100644 src/plugins/platforms/ios/qiosorientationlistener.h create mode 100644 src/plugins/platforms/ios/qiosorientationlistener.mm (limited to 'src') diff --git a/src/plugins/platforms/ios/plugin.pro b/src/plugins/platforms/ios/plugin.pro index 222d8c8445..ab49115ed3 100644 --- a/src/plugins/platforms/ios/plugin.pro +++ b/src/plugins/platforms/ios/plugin.pro @@ -14,6 +14,7 @@ OBJECTIVE_SOURCES = \ qioseventdispatcher.mm \ qiosbackingstore.mm \ qiosapplicationdelegate.mm \ + qiosorientationlistener.mm \ qioscontext.mm HEADERS = \ @@ -23,6 +24,7 @@ HEADERS = \ qioseventdispatcher.h \ qiosbackingstore.h \ qiosapplicationdelegate.h \ + qiosorientationlistener.h \ qioscontext.h #HEADERS = qiossoftwareinputhandler.h diff --git a/src/plugins/platforms/ios/qiosorientationlistener.h b/src/plugins/platforms/ios/qiosorientationlistener.h new file mode 100644 index 0000000000..c7b481a03a --- /dev/null +++ b/src/plugins/platforms/ios/qiosorientationlistener.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSORIENTATIONLISTENER_H +#define QIOSORIENTATIONLISTENER_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QIOSScreen; +Qt::ScreenOrientation convertToQtOrientation(UIDeviceOrientation uiDeviceOrientation); + +QT_END_NAMESPACE + +@interface QIOSOrientationListener : NSObject { + @public + QIOSScreen *m_screen; + Qt::ScreenOrientation m_orientation; +} +- (id) initWithQIOSScreen:(QIOSScreen *)screen; + +@end + +#endif + diff --git a/src/plugins/platforms/ios/qiosorientationlistener.mm b/src/plugins/platforms/ios/qiosorientationlistener.mm new file mode 100644 index 0000000000..626e43129b --- /dev/null +++ b/src/plugins/platforms/ios/qiosorientationlistener.mm @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qiosorientationlistener.h" +#include "qiosscreen.h" +#include + +QT_BEGIN_NAMESPACE + +Qt::ScreenOrientation convertToQtOrientation(UIDeviceOrientation uiDeviceOrientation) +{ + Qt::ScreenOrientation qtOrientation; + switch (uiDeviceOrientation) { + case UIDeviceOrientationPortraitUpsideDown: + qtOrientation = Qt::InvertedPortraitOrientation; + break; + case UIDeviceOrientationLandscapeLeft: + qtOrientation = Qt::InvertedLandscapeOrientation; + break; + case UIDeviceOrientationLandscapeRight: + qtOrientation = Qt::LandscapeOrientation; + break; + case UIDeviceOrientationFaceUp: + case UIDeviceOrientationFaceDown: + qtOrientation = static_cast(-1); // not supported ATM. + break; + default: + qtOrientation = Qt::PortraitOrientation; + break; + } + return qtOrientation; +} + +QT_END_NAMESPACE + +@implementation QIOSOrientationListener + +- (id) initWithQIOSScreen:(QIOSScreen *)screen +{ + self = [super init]; + if (self) { + m_screen = screen; + m_orientation = convertToQtOrientation([UIDevice currentDevice].orientation); + [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(orientationChanged:) + name:@"UIDeviceOrientationDidChangeNotification" object:nil]; + } + return self; +} + +- (void) dealloc +{ + [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; + [super dealloc]; +} + +- (void) orientationChanged:(NSNotification *)notification +{ + Q_UNUSED(notification); + Qt::ScreenOrientation qtOrientation = convertToQtOrientation([UIDevice currentDevice].orientation); + if (qtOrientation != -1) { + m_orientation = qtOrientation; + QWindowSystemInterface::handleScreenOrientationChange(m_screen->screen(), m_orientation); + } +} + +@end + -- cgit v1.2.3 From 92252bcb93b2e8ba8cefeadf8cc0330c8ff1c47b Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 15 Nov 2012 13:06:22 +0100 Subject: iOS: let QIOSScreen start/stop listening for device orientation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From the qpa docs, we only need to listen for device orientation if orientationUpdateMask is non-zero Change-Id: Id5e828cdff9a08794c8a029e11763cc037e1b959 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosscreen.h | 7 +++++++ src/plugins/platforms/ios/qiosscreen.mm | 27 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index f17f1c1d70..ed21e54f4a 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -45,6 +45,7 @@ #include #include +#include QT_BEGIN_NAMESPACE @@ -52,6 +53,7 @@ class QIOSScreen : public QPlatformScreen { public: QIOSScreen(unsigned int screenIndex); + ~QIOSScreen(); enum ScreenIndex { MainScreen = 0 }; @@ -61,6 +63,10 @@ public: QImage::Format format() const; QSizeF physicalSize() const; + Qt::ScreenOrientation nativeOrientation() const; + Qt::ScreenOrientation orientation() const; + void setOrientationUpdateMask(Qt::ScreenOrientations mask); + UIScreen *uiScreen() const; private: @@ -68,6 +74,7 @@ private: QRect m_geometry; int m_depth; QSizeF m_physicalSize; + QIOSOrientationListener *m_orientationListener; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index efeacb8cb6..00deaa2fc0 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -41,6 +41,7 @@ #include "qiosscreen.h" #include "qioswindow.h" +#include #include @@ -68,6 +69,7 @@ static QString deviceModelIdentifier() QIOSScreen::QIOSScreen(unsigned int screenIndex) : QPlatformScreen() , m_uiScreen([[UIScreen screens] objectAtIndex:qMin(screenIndex, [[UIScreen screens] count] - 1)]) + , m_orientationListener(0) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -97,6 +99,11 @@ QIOSScreen::QIOSScreen(unsigned int screenIndex) [pool release]; } +QIOSScreen::~QIOSScreen() +{ + [m_orientationListener release]; +} + QRect QIOSScreen::geometry() const { return m_geometry; @@ -123,6 +130,26 @@ QSizeF QIOSScreen::physicalSize() const return m_physicalSize; } +Qt::ScreenOrientation QIOSScreen::nativeOrientation() const +{ + return Qt::PortraitOrientation; +} + +Qt::ScreenOrientation QIOSScreen::orientation() const +{ + return m_orientationListener ? m_orientationListener->m_orientation : nativeOrientation(); +} + +void QIOSScreen::setOrientationUpdateMask(Qt::ScreenOrientations mask) +{ + if (m_orientationListener && mask == Qt::PrimaryOrientation) { + [m_orientationListener release]; + m_orientationListener = 0; + } else if (!m_orientationListener) { + m_orientationListener = [[QIOSOrientationListener alloc] initWithQIOSScreen:this]; + } +} + UIScreen *QIOSScreen::uiScreen() const { return m_uiScreen; -- cgit v1.2.3 From 72f66a8ee57ad3865d25e0157179d042a474cfff Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 15 Nov 2012 14:02:04 +0100 Subject: iOS: add function convertToUIOrientation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6145121d49eb3f5bab3f2a1ba57c779ec0b01023 Reviewed-by: Tor Arne Vestbø --- .../platforms/ios/qiosorientationlistener.h | 1 + .../platforms/ios/qiosorientationlistener.mm | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosorientationlistener.h b/src/plugins/platforms/ios/qiosorientationlistener.h index c7b481a03a..9d2e902ce1 100644 --- a/src/plugins/platforms/ios/qiosorientationlistener.h +++ b/src/plugins/platforms/ios/qiosorientationlistener.h @@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE class QIOSScreen; Qt::ScreenOrientation convertToQtOrientation(UIDeviceOrientation uiDeviceOrientation); +UIDeviceOrientation convertToUIOrientation(Qt::ScreenOrientation qtOrientation); QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosorientationlistener.mm b/src/plugins/platforms/ios/qiosorientationlistener.mm index 626e43129b..264b77f14f 100644 --- a/src/plugins/platforms/ios/qiosorientationlistener.mm +++ b/src/plugins/platforms/ios/qiosorientationlistener.mm @@ -69,6 +69,28 @@ Qt::ScreenOrientation convertToQtOrientation(UIDeviceOrientation uiDeviceOrienta return qtOrientation; } +UIDeviceOrientation convertToUIOrientation(Qt::ScreenOrientation qtOrientation) +{ + UIDeviceOrientation uiOrientation; + switch (qtOrientation) { + case Qt::LandscapeOrientation: + uiOrientation = UIDeviceOrientationLandscapeRight; + break; + case Qt::InvertedLandscapeOrientation: + uiOrientation = UIDeviceOrientationLandscapeLeft; + break; + case Qt::InvertedPortraitOrientation: + uiOrientation = UIDeviceOrientationPortraitUpsideDown; + break; + case Qt::PrimaryOrientation: + case Qt::PortraitOrientation: + default: + uiOrientation = UIDeviceOrientationPortrait; + break; + } + return uiOrientation; +} + QT_END_NAMESPACE @implementation QIOSOrientationListener -- cgit v1.2.3 From fa731cddd16aed426f7c73bf4807475f0b087d4c Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 16 Nov 2012 09:24:41 +0100 Subject: iOS: add QIOSViewController MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We need our own viewcontroller to better control which orientations iOS can enter, and also ito be able to stop auto-rotation. We stop auto-rotation to happend by default, since this is how Qt wants it (it is seen as the responsibility of the application). Change-Id: Id07a96e355396752fffd28984af528aeb0b7c3e3 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/plugin.pro | 2 + src/plugins/platforms/ios/qiosviewcontroller.h | 46 +++++++++++++++++++ src/plugins/platforms/ios/qiosviewcontroller.mm | 60 +++++++++++++++++++++++++ src/plugins/platforms/ios/qtmain.mm | 3 +- src/plugins/platforms/ios/qtmain.pro | 5 ++- 5 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 src/plugins/platforms/ios/qiosviewcontroller.h create mode 100644 src/plugins/platforms/ios/qiosviewcontroller.mm (limited to 'src') diff --git a/src/plugins/platforms/ios/plugin.pro b/src/plugins/platforms/ios/plugin.pro index ab49115ed3..12c5c6db01 100644 --- a/src/plugins/platforms/ios/plugin.pro +++ b/src/plugins/platforms/ios/plugin.pro @@ -15,6 +15,7 @@ OBJECTIVE_SOURCES = \ qiosbackingstore.mm \ qiosapplicationdelegate.mm \ qiosorientationlistener.mm \ + qiosviewcontroller.mm \ qioscontext.mm HEADERS = \ @@ -25,6 +26,7 @@ HEADERS = \ qiosbackingstore.h \ qiosapplicationdelegate.h \ qiosorientationlistener.h \ + qiosviewcontroller.h \ qioscontext.h #HEADERS = qiossoftwareinputhandler.h diff --git a/src/plugins/platforms/ios/qiosviewcontroller.h b/src/plugins/platforms/ios/qiosviewcontroller.h new file mode 100644 index 0000000000..d5a61cb3f4 --- /dev/null +++ b/src/plugins/platforms/ios/qiosviewcontroller.h @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#import + +@interface QIOSViewController : UIViewController +@end + diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm new file mode 100644 index 0000000000..5381b3a21e --- /dev/null +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#import "qiosviewcontroller.h" + +@implementation QIOSViewController + +- (BOOL)shouldAutorotate +{ + return NO; +} + +- (NSUInteger)supportedInterfaceOrientations +{ + // We need to tell iOS that we support all orientations in order to set + // status bar orientation when application content orientation changes. + // But we return 'NO' above when asked if we 'shouldAutorotate': + return UIInterfaceOrientationMaskAll; +} + +@end + diff --git a/src/plugins/platforms/ios/qtmain.mm b/src/plugins/platforms/ios/qtmain.mm index 9b4ce9918e..61756edc93 100644 --- a/src/plugins/platforms/ios/qtmain.mm +++ b/src/plugins/platforms/ios/qtmain.mm @@ -40,6 +40,7 @@ ****************************************************************************/ #include "qiosapplicationdelegate.h" +#include "qiosviewcontroller.h" int main(int argc, char *argv[]) { @@ -58,7 +59,7 @@ extern int qt_main(int argc, char *argv[]); if (!self.window) { // If not, we create one ourselves self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - UIViewController *controller = [[UIViewController alloc] init]; + QIOSViewController *controller = [[QIOSViewController alloc] init]; self.window.rootViewController = controller; controller.view = [[UIView alloc] init]; diff --git a/src/plugins/platforms/ios/qtmain.pro b/src/plugins/platforms/ios/qtmain.pro index 49ada385bb..7c4c4ab398 100644 --- a/src/plugins/platforms/ios/qtmain.pro +++ b/src/plugins/platforms/ios/qtmain.pro @@ -3,4 +3,7 @@ TARGET = qiosmain PLUGIN_TYPE = platforms load(qt_plugin) -OBJECTIVE_SOURCES = qtmain.mm +OBJECTIVE_SOURCES = qtmain.mm \ + qiosviewcontroller.mm + +HEADERS = qiosviewcontroller.h -- cgit v1.2.3 From 575d28a6fd62c83c82de5dfc0c34013948c0c9bd Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 15 Nov 2012 13:28:59 +0100 Subject: iOS: handle content orientation feedback from application MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2bfb4ee4840086dcd3ec85c2ee7e8769e76d2700 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 1 + src/plugins/platforms/ios/qioswindow.mm | 9 +++++++++ 2 files changed, 10 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 4e1970d4d4..b20c1c4fc5 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -86,6 +86,7 @@ public: void updateGeometry(const QRect &rect); void setWindowState(Qt::WindowState state); + void handleContentOrientationChange(Qt::ScreenOrientation orientation); GLuint framebufferObject(const QIOSContext &context) const; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 5701ac8aa2..e220312d15 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -43,6 +43,7 @@ #include "qioscontext.h" #include "qiosscreen.h" #include "qiosapplicationdelegate.h" +#include "qiosorientationlistener.h" #import @@ -248,6 +249,14 @@ void QIOSWindow::setWindowState(Qt::WindowState state) } } +void QIOSWindow::handleContentOrientationChange(Qt::ScreenOrientation orientation) +{ + // Keep the status bar in sync with content orientation. This will ensure + // that the task bar (and associated gestures) are aligned correctly: + UIDeviceOrientation uiOrientation = convertToUIOrientation(orientation); + [[UIApplication sharedApplication] setStatusBarOrientation:uiOrientation animated:NO]; +} + GLuint QIOSWindow::framebufferObject(const QIOSContext &context) const { static GLuint framebuffer = 0; -- cgit v1.2.3 From 55f0bce0945a2f2b28e2454fbc03b1efd61819e4 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 16 Nov 2012 11:14:34 +0100 Subject: iOS: implement requestWindowOrientation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The application is normally supposed to rotate the content on its own, but can call requestWindowOrientation to ask the window manager to do it instead. This way of integrating orientation with the OS is fragile, because: 1. In some cases, you cannot stop the OS from rotating at all (tablets). 2. It would be more safe to inform the window manager up-front which orientations it could rotate into, rather that relying on a function you call call to force this later on. 3. When the QML application starts, its a bit late to inform the platform plugin that it supports e.g landscape. If the OS is in landscape already, the plugin must still assume that the app operates in portrait (doing rotating on its own) until requestWindowOrientation is called. This might cause the app to first start up in portrait, just to rotate into landscape. On iOS, it seems like we can handle the first two cases. The third need some more investigation. We should anyway investigate if we need some adjustment to the Qt API. Change-Id: I50638b78d469ab70820a787de86a2f1981470786 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosviewcontroller.h | 8 +++++++- src/plugins/platforms/ios/qiosviewcontroller.mm | 26 ++++++++++++++++++++++--- src/plugins/platforms/ios/qioswindow.h | 1 + src/plugins/platforms/ios/qioswindow.mm | 17 ++++++++++++++++ 4 files changed, 48 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosviewcontroller.h b/src/plugins/platforms/ios/qiosviewcontroller.h index d5a61cb3f4..780ec7adab 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.h +++ b/src/plugins/platforms/ios/qiosviewcontroller.h @@ -40,7 +40,13 @@ ****************************************************************************/ #import +#import -@interface QIOSViewController : UIViewController +@interface QIOSViewController : UIViewController { +@public + bool m_shouldAutorotate; +} + +-(bool)rotateToDeviceOrientation; @end diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm index 5381b3a21e..8b1a085cc5 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.mm +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -43,12 +43,32 @@ @implementation QIOSViewController -- (BOOL)shouldAutorotate +-(id)init { - return NO; + self = [super init]; + if (self) { + m_shouldAutorotate = NO; + } + return self; } -- (NSUInteger)supportedInterfaceOrientations +-(bool)rotateToDeviceOrientation +{ + if ([UIViewController respondsToSelector:@selector(attemptRotationToDeviceOrientation)]) { + m_shouldAutorotate = YES; + [UIViewController attemptRotationToDeviceOrientation]; + m_shouldAutorotate = NO; + return true; + } + return false; +} + +-(BOOL)shouldAutorotate +{ + return m_shouldAutorotate; +} + +-(NSUInteger)supportedInterfaceOrientations { // We need to tell iOS that we support all orientations in order to set // status bar orientation when application content orientation changes. diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index b20c1c4fc5..e4c3a6a17c 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -87,6 +87,7 @@ public: void setWindowState(Qt::WindowState state); void handleContentOrientationChange(Qt::ScreenOrientation orientation); + Qt::ScreenOrientation requestWindowOrientation(Qt::ScreenOrientation orientation); GLuint framebufferObject(const QIOSContext &context) const; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index e220312d15..c1f14f22ef 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -44,6 +44,7 @@ #include "qiosscreen.h" #include "qiosapplicationdelegate.h" #include "qiosorientationlistener.h" +#include "qiosviewcontroller.h" #import @@ -257,6 +258,22 @@ void QIOSWindow::handleContentOrientationChange(Qt::ScreenOrientation orientatio [[UIApplication sharedApplication] setStatusBarOrientation:uiOrientation animated:NO]; } +Qt::ScreenOrientation QIOSWindow::requestWindowOrientation(Qt::ScreenOrientation orientation) +{ + if (!m_view.window) + return Qt::PortraitOrientation; + UIViewController *viewController = m_view.window.rootViewController; + if (!viewController || [viewController isKindOfClass:[QIOSViewController class]] == false) { + return convertToQtOrientation(viewController.interfaceOrientation); + } else { + QIOSViewController *qiosViewController = static_cast(viewController); + if ([qiosViewController rotateToDeviceOrientation]) + return orientation; + else + return convertToQtOrientation(viewController.interfaceOrientation); + } +} + GLuint QIOSWindow::framebufferObject(const QIOSContext &context) const { static GLuint framebuffer = 0; -- cgit v1.2.3 From 7f7d75201271bc1b87a8607a78c04aeab1ad3513 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 19 Nov 2012 13:58:11 +0100 Subject: iOS: use 'self' rather than 'super' pointer in initWithQIOSWindow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If we use super, our own initWithFrame override will never be called. Change-Id: I606beb653239cdfc46f41db4ec0791dfa5d4edea Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index c1f14f22ef..4e10c19ecc 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -72,7 +72,7 @@ static QRect fromCGRect(const CGRect &rect) -(id)initWithQIOSWindow:(QIOSWindow *)window { - if (self = [super initWithFrame:toCGRect(window->geometry())]) + if (self = [self initWithFrame:toCGRect(window->geometry())]) m_qioswindow = window; return self; -- cgit v1.2.3 From ad4cf5068cd39b9ca16bdd9705d0a3ef61783d33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Fri, 16 Nov 2012 07:36:49 +0100 Subject: iOS: Don't recreate paint device on beginPaint() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This causes painting errors. Use one lazily-created device that is used for the lifetime of the backing store. Change-Id: Ib36b6f1d6c9f958304dc8403cf17e5d71136469a Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosbackingstore.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm index 71f14fdd91..6cefc03377 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.mm +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -60,6 +60,7 @@ QIOSBackingStore::QIOSBackingStore(QWindow *window) QIOSBackingStore::~QIOSBackingStore() { delete m_context; + delete m_device; } void QIOSBackingStore::beginPaint(const QRegion &) @@ -68,7 +69,8 @@ void QIOSBackingStore::beginPaint(const QRegion &) window()->setSurfaceType(QSurface::OpenGLSurface); m_context->makeCurrent(window()); - m_device = new QOpenGLPaintDevice(window()->size()); + if (!m_device) + m_device = new QOpenGLPaintDevice(window()->size()); } QPaintDevice *QIOSBackingStore::paintDevice() @@ -86,8 +88,6 @@ void QIOSBackingStore::flush(QWindow *window, const QRegion ®ion, const QPoin void QIOSBackingStore::endPaint() { - delete m_device; - // Calling makeDone() on the context here would be an option, // but is not needed, and would actually add some overhead. } -- cgit v1.2.3 From 5d878cae1d090b9c7d5730a85667e569e67c17d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 6 Dec 2012 14:13:40 +0100 Subject: iOS: Remove requestWindowOrientation from QIOSWindow The API is scheduled to be removed in qtbase in time for Qt 5.0. Change-Id: Ie34d6cb79fcd81b0ce02892529e3e7184ddfa096 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosviewcontroller.h | 7 +------ src/plugins/platforms/ios/qiosviewcontroller.mm | 22 +--------------------- src/plugins/platforms/ios/qioswindow.h | 1 - src/plugins/platforms/ios/qioswindow.mm | 16 ---------------- 4 files changed, 2 insertions(+), 44 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosviewcontroller.h b/src/plugins/platforms/ios/qiosviewcontroller.h index 780ec7adab..605f0f5b4c 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.h +++ b/src/plugins/platforms/ios/qiosviewcontroller.h @@ -42,11 +42,6 @@ #import #import -@interface QIOSViewController : UIViewController { -@public - bool m_shouldAutorotate; -} - --(bool)rotateToDeviceOrientation; +@interface QIOSViewController : UIViewController @end diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm index 8b1a085cc5..a807dc2132 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.mm +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -43,29 +43,9 @@ @implementation QIOSViewController --(id)init -{ - self = [super init]; - if (self) { - m_shouldAutorotate = NO; - } - return self; -} - --(bool)rotateToDeviceOrientation -{ - if ([UIViewController respondsToSelector:@selector(attemptRotationToDeviceOrientation)]) { - m_shouldAutorotate = YES; - [UIViewController attemptRotationToDeviceOrientation]; - m_shouldAutorotate = NO; - return true; - } - return false; -} - -(BOOL)shouldAutorotate { - return m_shouldAutorotate; + return NO; } -(NSUInteger)supportedInterfaceOrientations diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index e4c3a6a17c..b20c1c4fc5 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -87,7 +87,6 @@ public: void setWindowState(Qt::WindowState state); void handleContentOrientationChange(Qt::ScreenOrientation orientation); - Qt::ScreenOrientation requestWindowOrientation(Qt::ScreenOrientation orientation); GLuint framebufferObject(const QIOSContext &context) const; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 4e10c19ecc..0b2b5fcfd7 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -258,22 +258,6 @@ void QIOSWindow::handleContentOrientationChange(Qt::ScreenOrientation orientatio [[UIApplication sharedApplication] setStatusBarOrientation:uiOrientation animated:NO]; } -Qt::ScreenOrientation QIOSWindow::requestWindowOrientation(Qt::ScreenOrientation orientation) -{ - if (!m_view.window) - return Qt::PortraitOrientation; - UIViewController *viewController = m_view.window.rootViewController; - if (!viewController || [viewController isKindOfClass:[QIOSViewController class]] == false) { - return convertToQtOrientation(viewController.interfaceOrientation); - } else { - QIOSViewController *qiosViewController = static_cast(viewController); - if ([qiosViewController rotateToDeviceOrientation]) - return orientation; - else - return convertToQtOrientation(viewController.interfaceOrientation); - } -} - GLuint QIOSWindow::framebufferObject(const QIOSContext &context) const { static GLuint framebuffer = 0; -- cgit v1.2.3 From 599c7a5ab91f44cb9ed5f12f65d58ff9d543c930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 6 Dec 2012 15:50:20 +0100 Subject: iOS: Set initial window state on window creation When showing a QWindow the window state is set first, and then the window is made visible. The latter is the step that creates the platform window, so we need to pick up the already set window state in our constructor and respect that. Change-Id: I54fe6c4ebcd3c9504614d2d48bd21f0d76adf3b7 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qioswindow.mm | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 0b2b5fcfd7..daeb86fb62 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -202,6 +202,8 @@ QIOSWindow::QIOSWindow(QWindow *window) { if ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]) [[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:m_view]; + + setWindowState(window->windowState()); } QIOSWindow::~QIOSWindow() -- cgit v1.2.3 From 189503933a9e59da22d6415e588a44c87d67c2bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 6 Dec 2012 16:42:56 +0100 Subject: iOS: Enable the ShowIsFullScreen style-hint so that show() implies fullscreen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We may need to qualify this setting for UC2, so that the user may still create windows as sub-controls of a regular iOS user interface, but for UC1 it makes sense. Change-Id: I1a7019f901fabed8b5b9cbb18a929913780e6595 Reviewed-by: Richard Moe Gustavsen Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/ios/qiosintegration.h | 2 ++ src/plugins/platforms/ios/qiosintegration.mm | 10 ++++++++++ 2 files changed, 12 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index d5f79857f7..363d267716 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -60,6 +60,8 @@ public: QPlatformFontDatabase *fontDatabase() const; + QVariant styleHint(StyleHint hint) const; + QAbstractEventDispatcher *guiThreadEventDispatcher() const; QPlatformNativeInterface *nativeInterface() const; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index a417021cbd..b37e803455 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -106,6 +106,16 @@ QPlatformFontDatabase * QIOSIntegration::fontDatabase() const return m_fontDatabase; } +QVariant QIOSIntegration::styleHint(StyleHint hint) const +{ + switch (hint) { + case ShowIsFullScreen: + return true; + default: + return QPlatformIntegration::styleHint(hint); + } +} + QPlatformNativeInterface *QIOSIntegration::nativeInterface() const { return const_cast(this); -- cgit v1.2.3 From 3a59fc4c97a3658b9712fa214778008bbf914cf9 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 7 Dec 2012 13:34:51 +0100 Subject: iOS: when in fullscreen, dont respond to geometry changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When QWindow is told to be in fullscreen, we should not respond to geometry changes. Instead we should bookkeep the requested geometry and set it when/if the window enters Qt::WindowNoState later. Change-Id: Ieaf4756b2a966212c8e1738af9df175a58786a75 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 1 - src/plugins/platforms/ios/qioswindow.mm | 34 ++++++++++++++------------------- 2 files changed, 14 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index b20c1c4fc5..df632e672e 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -83,7 +83,6 @@ public: ~QIOSWindow(); void setGeometry(const QRect &rect); - void updateGeometry(const QRect &rect); void setWindowState(Qt::WindowState state); void handleContentOrientationChange(Qt::ScreenOrientation orientation); diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index daeb86fb62..c91c0b2f35 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -109,13 +109,11 @@ static QRect fromCGRect(const CGRect &rect) // the position of our QWindow (and platform window) will only get updated // when the size is also changed. - if (CGAffineTransformIsIdentity(self.transform)) { - // Reflect the new size (and possibly also position) in the QWindow - m_qioswindow->updateGeometry(fromCGRect(self.frame)); - } else { - qWarning() << "QIOSPlatformWindow's UIView has transform set, ignoring geometry updates"; - } + if (!CGAffineTransformIsIdentity(self.transform)) + qWarning() << m_qioswindow->window() + << "is backed by a UIView that has a transform set. This is not supported."; + QWindowSystemInterface::handleGeometryChange(m_qioswindow->window(), fromCGRect(self.frame)); [super layoutSubviews]; } @@ -218,22 +216,17 @@ void QIOSWindow::setGeometry(const QRect &rect) return; } + // If the window is in fullscreen, just bookkeep the requested + // geometry in case the window goes into Qt::WindowNoState later: + QPlatformWindow::setGeometry(rect); + if (window()->windowState() & (Qt::WindowMaximized | Qt::WindowFullScreen)) + return; + // Since we don't support transformations on the UIView, we can set the frame // directly and let UIKit deal with translating that into bounds and center. + // Changing the size of the view will end up in a call to -[EAGLView layoutSubviews] + // which will update QWindowSystemInterface with the new size. m_view.frame = toCGRect(rect); - - updateGeometry(rect); -} - -void QIOSWindow::updateGeometry(const QRect &rect) -{ - // The baseclass implementation will store the geometry, and allows use to - // re-use the baseclass geometry() implementation, which just returns rect. - QPlatformWindow::setGeometry(rect); - - // We inform Qt about new geometry, which will trigger resize and - // expose events for the application. - QWindowSystemInterface::handleGeometryChange(window(), rect); } void QIOSWindow::setWindowState(Qt::WindowState state) @@ -245,9 +238,10 @@ void QIOSWindow::setWindowState(Qt::WindowState state) switch (state) { case Qt::WindowMaximized: case Qt::WindowFullScreen: - setGeometry(QRect(QPoint(0, 0), window()->screen()->availableSize())); + m_view.frame = toCGRect(QRect(QPoint(0, 0), window()->screen()->availableSize())); break; default: + m_view.frame = toCGRect(geometry()); break; } } -- cgit v1.2.3 From 2d4e96352a0f52351e0fa69273b064a66d460c04 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 7 Dec 2012 15:15:21 +0100 Subject: iOS: one 'transform' warning per window is sufficient MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The layoutSubviews function will be called when the geometry changes, and we will catch the transform issue there for both UC1 and UC2 Change-Id: I29578bbc5b3091c86fbe69c7095ff280a64be458 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.mm | 5 ----- 1 file changed, 5 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index c91c0b2f35..7f03e0d46a 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -211,11 +211,6 @@ QIOSWindow::~QIOSWindow() void QIOSWindow::setGeometry(const QRect &rect) { - if (!CGAffineTransformIsIdentity(m_view.transform)) { - qWarning() << "Setting the geometry of a QWindow with a transform set on the UIView is not supported"; - return; - } - // If the window is in fullscreen, just bookkeep the requested // geometry in case the window goes into Qt::WindowNoState later: QPlatformWindow::setGeometry(rect); -- cgit v1.2.3 From 0d9a50380c2d3ecc33f632f9f0e158c3a8cd2099 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 7 Dec 2012 15:28:13 +0100 Subject: iOS: when in fullscreen, autoresize the view when the device rotates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tell the view that backs QWindow to autoresize itself when the superview (view of the root view controller) changes size. This will typically happen when the device changes orientation. Change-Id: Ib7c4dff9112d57f60012d3f0837677e09088bcaf Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.mm | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 7f03e0d46a..2b97695a10 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -234,9 +234,11 @@ void QIOSWindow::setWindowState(Qt::WindowState state) case Qt::WindowMaximized: case Qt::WindowFullScreen: m_view.frame = toCGRect(QRect(QPoint(0, 0), window()->screen()->availableSize())); + m_view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; break; default: m_view.frame = toCGRect(geometry()); + m_view.autoresizingMask = UIViewAutoresizingNone; break; } } -- cgit v1.2.3 From b1cfa62ff45cc4b5c035fc5dbe49461e9fe6052a Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 7 Dec 2012 16:22:48 +0100 Subject: iOS: let fullscreen geometry take orientation into account MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since UIScreen is orientation agnostic, we need to look at the view of the top level view controller instead to determine available geometry. Change-Id: I3789ab7972a9970e46fbc8af81f2b7199e5ca5d1 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.mm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 2b97695a10..266000d2de 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -232,10 +232,13 @@ void QIOSWindow::setWindowState(Qt::WindowState state) switch (state) { case Qt::WindowMaximized: - case Qt::WindowFullScreen: - m_view.frame = toCGRect(QRect(QPoint(0, 0), window()->screen()->availableSize())); + case Qt::WindowFullScreen: { + // Since UIScreen does not take orientation into account when + // reporting geometry, we need to look at the top view instead: + CGSize fullscreenSize = m_view.window.rootViewController.view.bounds.size; + m_view.frame = CGRectMake(0, 0, fullscreenSize.width, fullscreenSize.height); m_view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - break; + break; } default: m_view.frame = toCGRect(geometry()); m_view.autoresizingMask = UIViewAutoresizingNone; -- cgit v1.2.3 From a1c9f565521f971adbb1e6aad6b82d194f1a1905 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 10 Dec 2012 10:18:59 +0100 Subject: iOS: update QPlatformWindow::geometry() when UIView changes size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It turns out that QWindow::geometry needs to be updated manually by the platform plugin, and not indirectly trough QWindowSystemInterface::handleGeometryChange as first assumed. We now always report the _actual_ geometry of the UIView (which also takes the status bar into account) to QWindow, and remember the _requested_ geometry of the window to use whenever the state of the window changes. Change-Id: Iea940173d26fb6af701234379cae914215dae984 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 1 + src/plugins/platforms/ios/qioswindow.mm | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index df632e672e..2a762d2bdc 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -93,6 +93,7 @@ public: private: EAGLView *m_view; + QRect m_requestedGeometry; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 266000d2de..b209bbc159 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -113,7 +113,9 @@ static QRect fromCGRect(const CGRect &rect) qWarning() << m_qioswindow->window() << "is backed by a UIView that has a transform set. This is not supported."; - QWindowSystemInterface::handleGeometryChange(m_qioswindow->window(), fromCGRect(self.frame)); + QRect geometry = fromCGRect(self.frame); + m_qioswindow->QPlatformWindow::setGeometry(geometry); + QWindowSystemInterface::handleGeometryChange(m_qioswindow->window(), geometry); [super layoutSubviews]; } @@ -197,6 +199,7 @@ QT_BEGIN_NAMESPACE QIOSWindow::QIOSWindow(QWindow *window) : QPlatformWindow(window) , m_view([[EAGLView alloc] initWithQIOSWindow:this]) + , m_requestedGeometry(QPlatformWindow::geometry()) { if ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]) [[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:m_view]; @@ -213,7 +216,7 @@ void QIOSWindow::setGeometry(const QRect &rect) { // If the window is in fullscreen, just bookkeep the requested // geometry in case the window goes into Qt::WindowNoState later: - QPlatformWindow::setGeometry(rect); + m_requestedGeometry = rect; if (window()->windowState() & (Qt::WindowMaximized | Qt::WindowFullScreen)) return; @@ -240,7 +243,7 @@ void QIOSWindow::setWindowState(Qt::WindowState state) m_view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; break; } default: - m_view.frame = toCGRect(geometry()); + m_view.frame = toCGRect(m_requestedGeometry); m_view.autoresizingMask = UIViewAutoresizingNone; break; } -- cgit v1.2.3 From 8dde67fcd33fc35fe95262bd7acb6f7b5143fead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 10 Dec 2012 16:40:40 +0100 Subject: iOS: Create QIOSBackingStore paint device lazily in paintDevice() Instead of constructor. Change-Id: I98cddd3f39add3e6f787c858b4d629325cc0f852 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosbackingstore.mm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm index 6cefc03377..dfa41f0003 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.mm +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -69,12 +69,13 @@ void QIOSBackingStore::beginPaint(const QRegion &) window()->setSurfaceType(QSurface::OpenGLSurface); m_context->makeCurrent(window()); - if (!m_device) - m_device = new QOpenGLPaintDevice(window()->size()); } QPaintDevice *QIOSBackingStore::paintDevice() { + if (!m_device) + m_device = new QOpenGLPaintDevice(window()->size()); + return m_device; } -- cgit v1.2.3 From d059866eb43a7415dd786a2bcba14f729d938675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 10 Dec 2012 17:11:15 +0100 Subject: iOS: Keep QIOSBackingStore's paint device size in sync with the window Treating the paint-device as a thing wrapper around the OpenGL paint engine failed when the window was resized, as the paint engine would clip the drawing to the old size. We need to update the size in beginPaint. QBackingStore resize still behaves like before, and we emit a warning if the user tries to resize the backing-store to some other size than the window size, as that's not a supported use-case for our iOS backing store. Change-Id: I1a0eeb65fa9db8b5538dc69963d6fc84be6e63f1 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosbackingstore.mm | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm index dfa41f0003..6bae08ce2b 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.mm +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -69,12 +69,14 @@ void QIOSBackingStore::beginPaint(const QRegion &) window()->setSurfaceType(QSurface::OpenGLSurface); m_context->makeCurrent(window()); + + static_cast(paintDevice())->setSize(window()->size()); } QPaintDevice *QIOSBackingStore::paintDevice() { if (!m_device) - m_device = new QOpenGLPaintDevice(window()->size()); + m_device = new QOpenGLPaintDevice; return m_device; } @@ -95,12 +97,16 @@ void QIOSBackingStore::endPaint() void QIOSBackingStore::resize(const QSize &size, const QRegion &staticContents) { - Q_UNUSED(size); Q_UNUSED(staticContents); - // We don't need to resize the QOpenGLPaintDevice, as it's just a thin wrapper - // around the OpenGL paint-engine, and the real geometry is handled by the - // context and window. + // Resizing the backing store would in our case mean resizing the QWindow, + // as we cheat and use an QOpenGLPaintDevice that we target at the window. + // That's probably not what the user intended, so we ignore resizes of the + // backing store and always keep the paint device's size in sync with the + // window size in beginPaint(). + + if (size != window()->size()) + qWarning() << "QIOSBackingStore needs to have the same size as its window"; } QT_END_NAMESPACE -- cgit v1.2.3 From 21965187096f8bde7866b05459444793e1a6c1b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 10 Dec 2012 17:49:53 +0100 Subject: iOS: Update GL render buffers when the accociated window is resized We keep track of the with and height of the FBO's buffers, and update their storage if the window size has changed since last time. Change-Id: I97788b69e7067a5b5b9f28e8498cf1bc5d2cf6ea Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qioscontext.h | 2 + src/plugins/platforms/ios/qioscontext.mm | 16 +++---- src/plugins/platforms/ios/qioswindow.h | 9 ++++ src/plugins/platforms/ios/qioswindow.mm | 82 ++++++++++++++++++-------------- 4 files changed, 66 insertions(+), 43 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioscontext.h b/src/plugins/platforms/ios/qioscontext.h index 102aaaa387..b45917832c 100644 --- a/src/plugins/platforms/ios/qioscontext.h +++ b/src/plugins/platforms/ios/qioscontext.h @@ -62,6 +62,8 @@ public: void doneCurrent(); GLuint defaultFramebufferObject(QPlatformSurface *) const; + GLuint defaultColorRenderbuffer(QPlatformSurface *) const; + QFunctionPointer getProcAddress(const QByteArray &procName); EAGLContext *nativeContext() const; diff --git a/src/plugins/platforms/ios/qioscontext.mm b/src/plugins/platforms/ios/qioscontext.mm index 8beb588b03..68db28212b 100644 --- a/src/plugins/platforms/ios/qioscontext.mm +++ b/src/plugins/platforms/ios/qioscontext.mm @@ -88,7 +88,8 @@ bool QIOSContext::makeCurrent(QPlatformSurface *surface) [EAGLContext setCurrentContext:m_eaglContext]; glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebufferObject(surface)); - return true; + // Ensures render buffers are set up and match the size of the window + return defaultColorRenderbuffer(surface) != 0; } void QIOSContext::doneCurrent() @@ -101,13 +102,7 @@ void QIOSContext::swapBuffers(QPlatformSurface *surface) Q_ASSERT(surface && surface->surface()->surfaceType() == QSurface::OpenGLSurface); [EAGLContext setCurrentContext:m_eaglContext]; - - GLint renderbuffer; - glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebufferObject(surface)); - glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, - GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &renderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer); - + glBindRenderbuffer(GL_RENDERBUFFER, defaultColorRenderbuffer(surface)); [m_eaglContext presentRenderbuffer:GL_RENDERBUFFER]; } @@ -116,6 +111,11 @@ GLuint QIOSContext::defaultFramebufferObject(QPlatformSurface *surface) const return static_cast(surface)->framebufferObject(*const_cast(this)); } +GLuint QIOSContext::defaultColorRenderbuffer(QPlatformSurface *surface) const +{ + return static_cast(surface)->colorRenderbuffer(*const_cast(this)); +} + QFunctionPointer QIOSContext::getProcAddress(const QByteArray& functionName) { return reinterpret_cast(dlsym(RTLD_NEXT, functionName.constData())); diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 2a762d2bdc..4c55249046 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -88,12 +88,21 @@ public: void handleContentOrientationChange(Qt::ScreenOrientation orientation); GLuint framebufferObject(const QIOSContext &context) const; + GLuint colorRenderbuffer(const QIOSContext &context) const; EAGLView *nativeView() const { return m_view; } private: EAGLView *m_view; QRect m_requestedGeometry; + + mutable struct GLData { + GLuint framebufferObject; + GLuint colorRenderbuffer; + GLuint depthRenderbuffer; + GLint renderbufferWidth; + GLint renderbufferHeight; + } m_glData; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index b209bbc159..90734e58e8 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -116,6 +116,10 @@ static QRect fromCGRect(const CGRect &rect) QRect geometry = fromCGRect(self.frame); m_qioswindow->QPlatformWindow::setGeometry(geometry); QWindowSystemInterface::handleGeometryChange(m_qioswindow->window(), geometry); + + // If we have a new size here we need to resize the FBO's corresponding buffers, + // but we defer that to when the application calls makeCurrent. + [super layoutSubviews]; } @@ -200,6 +204,7 @@ QIOSWindow::QIOSWindow(QWindow *window) : QPlatformWindow(window) , m_view([[EAGLView alloc] initWithQIOSWindow:this]) , m_requestedGeometry(QPlatformWindow::geometry()) + , m_glData() { if ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]) [[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:m_view]; @@ -209,6 +214,13 @@ QIOSWindow::QIOSWindow(QWindow *window) QIOSWindow::~QIOSWindow() { + if (m_glData.framebufferObject) + glDeleteFramebuffers(1, &m_glData.framebufferObject); + if (m_glData.colorRenderbuffer) + glDeleteRenderbuffers(1, &m_glData.colorRenderbuffer); + if (m_glData.depthRenderbuffer) + glDeleteRenderbuffers(1, &m_glData.depthRenderbuffer); + [m_view release]; } @@ -259,56 +271,56 @@ void QIOSWindow::handleContentOrientationChange(Qt::ScreenOrientation orientatio GLuint QIOSWindow::framebufferObject(const QIOSContext &context) const { - static GLuint framebuffer = 0; + if (!m_glData.framebufferObject) { + [EAGLContext setCurrentContext:context.nativeContext()]; - // FIXME: Cache context and recreate framebuffer if window - // is used with a different context then last time. + glGenFramebuffers(1, &m_glData.framebufferObject); + glBindFramebuffer(GL_FRAMEBUFFER, m_glData.framebufferObject); - if (!framebuffer) { - EAGLContext* eaglContext = context.nativeContext(); + glGenRenderbuffers(1, &m_glData.colorRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, m_glData.colorRenderbuffer); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_glData.colorRenderbuffer); - [EAGLContext setCurrentContext:eaglContext]; + QSurfaceFormat requestedFormat = context.format(); + if (requestedFormat.depthBufferSize() > 0 || requestedFormat.stencilBufferSize() > 0) { + glGenRenderbuffers(1, &m_glData.depthRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, m_glData.depthRenderbuffer); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_glData.depthRenderbuffer); - // Create the framebuffer and bind it - glGenFramebuffers(1, &framebuffer); - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); + if (requestedFormat.stencilBufferSize() > 0) + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, m_glData.depthRenderbuffer); + } + } - GLint width; - GLint height; + return m_glData.framebufferObject; +} - // Create a color renderbuffer, allocate storage for it, - // and attach it to the framebuffer’s color attachment point. - GLuint colorRenderbuffer; - glGenRenderbuffers(1, &colorRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, colorRenderbuffer); - [eaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:static_cast(m_view.layer)]; - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &width); - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &height); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorRenderbuffer); +GLuint QIOSWindow::colorRenderbuffer(const QIOSContext &context) const +{ + if (!m_glData.colorRenderbuffer || + m_glData.renderbufferWidth != geometry().width() || m_glData.renderbufferHeight != geometry().height()) { - QSurfaceFormat requestedFormat = context.format(); - if (requestedFormat.depthBufferSize() > 0 || requestedFormat.stencilBufferSize() > 0) { - // Create a depth or depth/stencil renderbuffer, allocate storage for it, - // and attach it to the framebuffer’s depth attachment point. - GLuint depthRenderbuffer; - glGenRenderbuffers(1, &depthRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, m_glData.colorRenderbuffer); + [context.nativeContext() renderbufferStorage:GL_RENDERBUFFER fromDrawable:static_cast(m_view.layer)]; + + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &m_glData.renderbufferWidth); + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &m_glData.renderbufferHeight); + + if (m_glData.depthRenderbuffer) { + glBindRenderbuffer(GL_RENDERBUFFER, m_glData.depthRenderbuffer); // FIXME: Support more fine grained control over depth/stencil buffer sizes - if (requestedFormat.stencilBufferSize() > 0) { - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, width, height); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer); - } else { - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height); - } - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer); + if (context.format().stencilBufferSize() > 0) + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, m_glData.renderbufferWidth, m_glData.renderbufferHeight); + else + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, m_glData.renderbufferWidth, m_glData.renderbufferHeight); } if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER)); } - return framebuffer; + return m_glData.colorRenderbuffer; } QT_END_NAMESPACE -- cgit v1.2.3 From 31a76b978b3f1c08787e3f88987e3a396d5eec45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 10 Dec 2012 19:27:30 +0100 Subject: iOS: Enable auto-rotation if no orientation update-mask has been set This is an intermediate heuristic until we have a proper API in Qt to deal with auto-rotation and orientation locking. Change-Id: I433992fa1c18d1670987f79e405a4501b6e5d365 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosviewcontroller.mm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm index a807dc2132..3121597dba 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.mm +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -41,18 +41,27 @@ #import "qiosviewcontroller.h" +#include +#include + @implementation QIOSViewController -(BOOL)shouldAutorotate { - return NO; + // For now we assume that if the application doesn't listen to orientation + // updates it means it would like to enable auto-rotation, and vice versa. + if (QGuiApplication *guiApp = qobject_cast(qApp)) + return !guiApp->primaryScreen()->orientationUpdateMask(); + else + return NO; + + // FIXME: Investigate a proper Qt API for auto-rotation and orientation locking } -(NSUInteger)supportedInterfaceOrientations { // We need to tell iOS that we support all orientations in order to set // status bar orientation when application content orientation changes. - // But we return 'NO' above when asked if we 'shouldAutorotate': return UIInterfaceOrientationMaskAll; } -- cgit v1.2.3 From 509697adc30f858ee3483c2b74e292c60b75ba9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 10 Dec 2012 20:00:27 +0100 Subject: iOS: Remove unnecessary const-trickery when passing QIOSContext to the window Change-Id: I56b3873342c1572ea6a651027e8f1a684cbe2a5a Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qioscontext.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioscontext.mm b/src/plugins/platforms/ios/qioscontext.mm index 68db28212b..00629a84ab 100644 --- a/src/plugins/platforms/ios/qioscontext.mm +++ b/src/plugins/platforms/ios/qioscontext.mm @@ -108,12 +108,12 @@ void QIOSContext::swapBuffers(QPlatformSurface *surface) GLuint QIOSContext::defaultFramebufferObject(QPlatformSurface *surface) const { - return static_cast(surface)->framebufferObject(*const_cast(this)); + return static_cast(surface)->framebufferObject(*this); } GLuint QIOSContext::defaultColorRenderbuffer(QPlatformSurface *surface) const { - return static_cast(surface)->colorRenderbuffer(*const_cast(this)); + return static_cast(surface)->colorRenderbuffer(*this); } QFunctionPointer QIOSContext::getProcAddress(const QByteArray& functionName) -- cgit v1.2.3 From d07bd1b22f6da2fcf961618b59f10f59d0a95d16 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 11 Dec 2012 12:07:05 +0100 Subject: iOS: remove the view from the view hierarchy upon destruction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We need to remove the view that backs QWindow when the window is destroyed. Otherwise the view will still be visible on screen, but now with a dangling QWindow pointer. This fixes a crash that happens when closing dialogs. Change-Id: I9053c83c6db80a39f4f71a63993cc7ae73fc4196 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.mm | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 90734e58e8..871a046c71 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -221,6 +221,7 @@ QIOSWindow::~QIOSWindow() if (m_glData.depthRenderbuffer) glDeleteRenderbuffers(1, &m_glData.depthRenderbuffer); + [m_view removeFromSuperview]; [m_view release]; } -- cgit v1.2.3 From 60294e0aa381419b897317e3eec208d98ca8b4aa Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 11 Dec 2012 12:01:17 +0100 Subject: iOS: implement in QIOSWindow::setVisible MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When QWindow is told to show/hide, we need to show/hide the backing UIView as well, otherwise the window will still be visible on screen. Change-Id: I806fdd8bb4afacbbc1c9c7381ba0a31195ee04ac Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 1 + src/plugins/platforms/ios/qioswindow.mm | 6 ++++++ 2 files changed, 7 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 4c55249046..3a05901ae7 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -86,6 +86,7 @@ public: void setWindowState(Qt::WindowState state); void handleContentOrientationChange(Qt::ScreenOrientation orientation); + void setVisible(bool visible); GLuint framebufferObject(const QIOSContext &context) const; GLuint colorRenderbuffer(const QIOSContext &context) const; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 871a046c71..a2901efd1d 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -225,6 +225,12 @@ QIOSWindow::~QIOSWindow() [m_view release]; } +void QIOSWindow::setVisible(bool visible) +{ + QPlatformWindow::setVisible(visible); + [m_view setHidden:!visible]; +} + void QIOSWindow::setGeometry(const QRect &rect) { // If the window is in fullscreen, just bookkeep the requested -- cgit v1.2.3 From c558c5c1b82256fc8c8e9e6f947eda6164ea59e8 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 11 Dec 2012 15:12:40 +0100 Subject: iOS: add class QIOSInputContext (to handle keyboard) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change will add an initial implementation of the QPlatformInputContext for dealing with the keyboard. Change-Id: I29c1cfbbebb8456977b8a1db0e966973cd2c24a5 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/plugin.pro | 6 +- src/plugins/platforms/ios/qiosinputcontext.h | 69 +++++++++++++ src/plugins/platforms/ios/qiosinputcontext.mm | 134 ++++++++++++++++++++++++++ src/plugins/platforms/ios/qiosintegration.h | 2 + src/plugins/platforms/ios/qiosintegration.mm | 7 ++ 5 files changed, 216 insertions(+), 2 deletions(-) create mode 100644 src/plugins/platforms/ios/qiosinputcontext.h create mode 100644 src/plugins/platforms/ios/qiosinputcontext.mm (limited to 'src') diff --git a/src/plugins/platforms/ios/plugin.pro b/src/plugins/platforms/ios/plugin.pro index 12c5c6db01..d4fe25ef08 100644 --- a/src/plugins/platforms/ios/plugin.pro +++ b/src/plugins/platforms/ios/plugin.pro @@ -16,7 +16,8 @@ OBJECTIVE_SOURCES = \ qiosapplicationdelegate.mm \ qiosorientationlistener.mm \ qiosviewcontroller.mm \ - qioscontext.mm + qioscontext.mm \ + qiosinputcontext.mm HEADERS = \ qiosintegration.h \ @@ -27,6 +28,7 @@ HEADERS = \ qiosapplicationdelegate.h \ qiosorientationlistener.h \ qiosviewcontroller.h \ - qioscontext.h + qioscontext.h \ + qiosinputcontext.h #HEADERS = qiossoftwareinputhandler.h diff --git a/src/plugins/platforms/ios/qiosinputcontext.h b/src/plugins/platforms/ios/qiosinputcontext.h new file mode 100644 index 0000000000..22782d183c --- /dev/null +++ b/src/plugins/platforms/ios/qiosinputcontext.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSINPUTCONTEXT_H +#define QIOSINPUTCONTEXT_H + +#include + +#include + +QT_BEGIN_NAMESPACE + +@class QIOSKeyboardListener; + +class QIOSInputContext : public QPlatformInputContext +{ +public: + QIOSInputContext(); + ~QIOSInputContext(); + + void showInputPanel(); + void hideInputPanel(); + bool isInputPanelVisible() const; + +private: + QIOSKeyboardListener *m_keyboardListener; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/platforms/ios/qiosinputcontext.mm b/src/plugins/platforms/ios/qiosinputcontext.mm new file mode 100644 index 0000000000..7937337e4a --- /dev/null +++ b/src/plugins/platforms/ios/qiosinputcontext.mm @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qiosinputcontext.h" +#include "qioswindow.h" +#include + +@interface QIOSKeyboardListener : NSObject { +@public + QIOSInputContext *m_context; + BOOL m_keyboardVisible; +} +@end + +@implementation QIOSKeyboardListener + +- (id)initWithQIOSInputContext:(QIOSInputContext *)context +{ + self = [super init]; + if (self) { + m_context = context; + m_keyboardVisible = NO; + // After the keyboard became undockable (iOS5), UIKeyboardWillShow/UIKeyboardWillHide + // no longer works for all cases. So listen to keyboard frame changes instead: + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(keyboardDidChangeFrame:) + name:@"UIKeyboardDidChangeFrameNotification" object:nil]; + } + return self; +} + +- (void) dealloc +{ + [[NSNotificationCenter defaultCenter] + removeObserver:self + name:@"UIKeyboardDidChangeFrameNotification" object:nil]; + [super dealloc]; +} + +- (void) keyboardDidChangeFrame:(NSNotification *)notification +{ + CGRect frame; + [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&frame]; + BOOL visible = CGRectIntersectsRect(frame, [UIScreen mainScreen].bounds); + if (m_keyboardVisible != visible) { + m_keyboardVisible = visible; + m_context->emitInputPanelVisibleChanged(); + } +} + +@end + +QIOSInputContext::QIOSInputContext() + : QPlatformInputContext(), + m_keyboardListener([[QIOSKeyboardListener alloc] initWithQIOSInputContext:this]) +{ +} + +QIOSInputContext::~QIOSInputContext() +{ + [m_keyboardListener release]; +} + +void QIOSInputContext::showInputPanel() +{ + if (isInputPanelVisible()) + return; + + // Documentation tells that one should call (and recall, if necessary) becomeFirstResponder/resignFirstResponder + // to show/hide the keyboard. This is slightly inconvenient, since there exist no API to get the current first + // responder. Rather than searching for it from the top, we assume that the view backing the focus window in Qt + // is the best candidate as long as there exist no first responder from before (which the isInputPanelVisible + // test on top should catch). Note that Qt will forward keyevents to whichever QObject that needs it, regardless of + // which UIView the input actually came from. So in this respect, we're undermining iOS' responder chain. + if (QWindow *window = QGuiApplication::focusWindow()) { + QIOSWindow *qiosWindow = static_cast(window->handle()); + [qiosWindow->nativeView() becomeFirstResponder]; + } +} + +void QIOSInputContext::hideInputPanel() +{ + if (!isInputPanelVisible()) + return; + + if (QWindow *window = QGuiApplication::focusWindow()) { + QIOSWindow *qiosWindow = static_cast(window->handle()); + [qiosWindow->nativeView() resignFirstResponder]; + } +} + +bool QIOSInputContext::isInputPanelVisible() const +{ + return m_keyboardListener->m_keyboardVisible; +} diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index 363d267716..9e6dadc5a1 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -59,6 +59,7 @@ public: QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const; QPlatformFontDatabase *fontDatabase() const; + QPlatformInputContext *inputContext() const; QVariant styleHint(StyleHint hint) const; @@ -69,6 +70,7 @@ public: private: QPlatformFontDatabase *m_fontDatabase; + QPlatformInputContext *m_inputContext; QPlatformScreen *m_screen; }; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index b37e803455..9d603da150 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -45,6 +45,7 @@ #include "qiosscreen.h" #include "qioseventdispatcher.h" #include "qioscontext.h" +#include "qiosinputcontext.h" #include @@ -54,6 +55,7 @@ QT_BEGIN_NAMESPACE QIOSIntegration::QIOSIntegration() : m_fontDatabase(new QCoreTextFontDatabase) + , m_inputContext(new QIOSInputContext) , m_screen(new QIOSScreen(QIOSScreen::MainScreen)) { if (![UIApplication sharedApplication]) { @@ -106,6 +108,11 @@ QPlatformFontDatabase * QIOSIntegration::fontDatabase() const return m_fontDatabase; } +QPlatformInputContext *QIOSIntegration::inputContext() const +{ + return m_inputContext; +} + QVariant QIOSIntegration::styleHint(StyleHint hint) const { switch (hint) { -- cgit v1.2.3 From 72c1ada86f8aed0109936542b66ab66981ec39ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 12 Dec 2012 15:23:21 +0100 Subject: iOS: Make fusion style the default style on iOS, not the windows style Change-Id: I81b6049ff666bf23ac58d60e10d7c3d8713a19ea Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/plugin.pro | 6 ++- src/plugins/platforms/ios/qiosintegration.h | 3 ++ src/plugins/platforms/ios/qiosintegration.mm | 14 ++++++ src/plugins/platforms/ios/qiostheme.h | 62 +++++++++++++++++++++++++ src/plugins/platforms/ios/qiostheme.mm | 69 ++++++++++++++++++++++++++++ 5 files changed, 152 insertions(+), 2 deletions(-) create mode 100644 src/plugins/platforms/ios/qiostheme.h create mode 100644 src/plugins/platforms/ios/qiostheme.mm (limited to 'src') diff --git a/src/plugins/platforms/ios/plugin.pro b/src/plugins/platforms/ios/plugin.pro index d4fe25ef08..1be24d920d 100644 --- a/src/plugins/platforms/ios/plugin.pro +++ b/src/plugins/platforms/ios/plugin.pro @@ -17,7 +17,8 @@ OBJECTIVE_SOURCES = \ qiosorientationlistener.mm \ qiosviewcontroller.mm \ qioscontext.mm \ - qiosinputcontext.mm + qiosinputcontext.mm \ + qiostheme.mm HEADERS = \ qiosintegration.h \ @@ -29,6 +30,7 @@ HEADERS = \ qiosorientationlistener.h \ qiosviewcontroller.h \ qioscontext.h \ - qiosinputcontext.h + qiosinputcontext.h \ + qiostheme.h #HEADERS = qiossoftwareinputhandler.h diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index 9e6dadc5a1..5ba97bff6e 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -63,6 +63,9 @@ public: QVariant styleHint(StyleHint hint) const; + QStringList themeNames() const; + QPlatformTheme *createPlatformTheme(const QString &name) const; + QAbstractEventDispatcher *guiThreadEventDispatcher() const; QPlatformNativeInterface *nativeInterface() const; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 9d603da150..8008c5c0b0 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -46,6 +46,7 @@ #include "qioseventdispatcher.h" #include "qioscontext.h" #include "qiosinputcontext.h" +#include "qiostheme.h" #include @@ -123,6 +124,19 @@ QVariant QIOSIntegration::styleHint(StyleHint hint) const } } +QStringList QIOSIntegration::themeNames() const +{ + return QStringList(QLatin1String(QIOSTheme::name)); +} + +QPlatformTheme *QIOSIntegration::createPlatformTheme(const QString &name) const +{ + if (name == QLatin1String(QIOSTheme::name)) + return new QIOSTheme; + + return QPlatformIntegration::createPlatformTheme(name); +} + QPlatformNativeInterface *QIOSIntegration::nativeInterface() const { return const_cast(this); diff --git a/src/plugins/platforms/ios/qiostheme.h b/src/plugins/platforms/ios/qiostheme.h new file mode 100644 index 0000000000..d21d8804fa --- /dev/null +++ b/src/plugins/platforms/ios/qiostheme.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSTHEME_H +#define QIOSTHEME_H + +#include + +QT_BEGIN_NAMESPACE + +class QIOSTheme : public QPlatformTheme +{ +public: + QIOSTheme(); + ~QIOSTheme(); + + QVariant themeHint(ThemeHint hint) const; + + static const char *name; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/platforms/ios/qiostheme.mm b/src/plugins/platforms/ios/qiostheme.mm new file mode 100644 index 0000000000..6e54b9cb3b --- /dev/null +++ b/src/plugins/platforms/ios/qiostheme.mm @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qiostheme.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +const char *QIOSTheme::name = "ios"; + +QIOSTheme::QIOSTheme() +{ +} + +QIOSTheme::~QIOSTheme() +{ +} + +QVariant QIOSTheme::themeHint(ThemeHint hint) const +{ + switch (hint) { + case QPlatformTheme::StyleNames: + return QStringList(QStringLiteral("fusion")); + default: + return QPlatformTheme::themeHint(hint); + } +} + +QT_END_NAMESPACE -- cgit v1.2.3 From 70b21ec3c12c655354676778e087182f20aadbb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 13 Dec 2012 15:20:30 +0100 Subject: iOS: Make default system font Helvetica Without a platform theme implementatin we were relying on QCoreTextFontDatabase::defaultFont() to return the system font. This didn't work because it reported the system font that iOS reports, '.Helvetica Neue UI', which is a private font that does not get added to our font database. The result was that we picked the first font in the list of known fonts -- in this case 'Academy Engraved LET'. We now implement QIOSTheme::font(), which takes precedence over the font database's default font, and hard-code the system font to 'Helvetica', since Qt does not yet have the concept of private system fonts. Change-Id: I901cf9c2b662ea2795212376b84b8391be2efbbe Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiostheme.h | 2 ++ src/plugins/platforms/ios/qiostheme.mm | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiostheme.h b/src/plugins/platforms/ios/qiostheme.h index d21d8804fa..5ccbcac710 100644 --- a/src/plugins/platforms/ios/qiostheme.h +++ b/src/plugins/platforms/ios/qiostheme.h @@ -54,6 +54,8 @@ public: QVariant themeHint(ThemeHint hint) const; + const QFont *font(Font type = SystemFont) const; + static const char *name; }; diff --git a/src/plugins/platforms/ios/qiostheme.mm b/src/plugins/platforms/ios/qiostheme.mm index 6e54b9cb3b..f98781f8a7 100644 --- a/src/plugins/platforms/ios/qiostheme.mm +++ b/src/plugins/platforms/ios/qiostheme.mm @@ -44,6 +44,11 @@ #include #include +#include + +#include +#include + QT_BEGIN_NAMESPACE const char *QIOSTheme::name = "ios"; @@ -66,4 +71,26 @@ QVariant QIOSTheme::themeHint(ThemeHint hint) const } } +const QFont *QIOSTheme::font(Font type) const +{ + static QHash fonts; + if (fonts.isEmpty()) { + // The real system font on iOS is '.Helvetica Neue UI', as returned by both [UIFont systemFontOfSize] + // and CTFontCreateUIFontForLanguage(kCTFontSystemFontType, ...), but this font is not included when + // populating the available fonts in QCoreTextFontDatabase::populateFontDatabase(), since the font + // is internal to iOS and not supposed to be used by applications. We could potentially add this + // font to the font-database, but it would then show up when enumerating user fonts from Qt + // applications since we don't have a flag in Qt to mark a font as a private system font. + // For now we hard-code the font to Helvetica, which should be very close to the actual + // system font. + QLatin1String systemFontFamilyName("Helvetica"); + fonts.insert(QPlatformTheme::SystemFont, new QFont(systemFontFamilyName, [UIFont systemFontSize])); + fonts.insert(QPlatformTheme::SmallFont, new QFont(systemFontFamilyName, [UIFont smallSystemFontSize])); + fonts.insert(QPlatformTheme::LabelFont, new QFont(systemFontFamilyName, [UIFont labelFontSize])); + fonts.insert(QPlatformTheme::PushButtonFont, new QFont(systemFontFamilyName, [UIFont buttonFontSize])); + } + + return fonts.value(type, 0); +} + QT_END_NAMESPACE -- cgit v1.2.3 From d5d3f5ea8e6620e1ae06488a9e35a36550367726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 26 Feb 2013 13:49:03 +0100 Subject: iOS: let QIOSScreen change geometry according to interface rotation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Qt expects the screen to change geometry when the "desktop" rotates. On iOS, we interpret this as when the root view controller changes orientation, since after all, this is the surface we place QWindows on top of. Change-Id: Ia00e68c8f9f0a65aefcc60518ee544fb260d4595 Reviewed-by: Tor Arne Vestbø Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosscreen.h | 3 +++ src/plugins/platforms/ios/qiosscreen.mm | 32 +++++++++++++++++++++---- src/plugins/platforms/ios/qiosviewcontroller.h | 1 - src/plugins/platforms/ios/qiosviewcontroller.mm | 12 ++++++++++ src/plugins/platforms/ios/qtmain.pro | 2 ++ 5 files changed, 45 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index ed21e54f4a..e05a6cd6a1 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -69,9 +69,12 @@ public: UIScreen *uiScreen() const; + void setPrimaryOrientation(Qt::ScreenOrientation orientation); + private: UIScreen *m_uiScreen; QRect m_geometry; + QRect m_availableGeometry; int m_depth; QSizeF m_physicalSize; QIOSOrientationListener *m_orientationListener; diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 00deaa2fc0..f4cade2e6d 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -88,11 +88,12 @@ QIOSScreen::QIOSScreen(unsigned int screenIndex) unscaledDpi = 132; }; - // UIScreen does not report different bounds for different orientations. We - // match this behavior by staying with a fixed QScreen geometry. CGRect bounds = [m_uiScreen bounds]; m_geometry = QRect(bounds.origin.x, bounds.origin.y, bounds.size.width, bounds.size.height); + CGRect frame = m_uiScreen.applicationFrame; + m_availableGeometry = QRect(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); + const qreal millimetersPerInch = 25.4; m_physicalSize = QSizeF(m_geometry.size()) / unscaledDpi * millimetersPerInch; @@ -111,8 +112,7 @@ QRect QIOSScreen::geometry() const QRect QIOSScreen::availableGeometry() const { - CGRect frame = m_uiScreen.applicationFrame; - return QRect(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); + return m_availableGeometry; } int QIOSScreen::depth() const @@ -150,6 +150,30 @@ void QIOSScreen::setOrientationUpdateMask(Qt::ScreenOrientations mask) } } +void QIOSScreen::setPrimaryOrientation(Qt::ScreenOrientation orientation) +{ + // Note that UIScreen never changes orientation, but QScreen should. To work around + // this, we let QIOSViewController call us whenever interface orientation changes, and + // use that as primary orientation. After all, the viewcontrollers geometry is what we + // place QWindows on top of. A problem with this approach is that QIOSViewController is + // not in use in a mixed environment, which results in no change to primary orientation. + // We see that as acceptable since Qt should most likely not interfere with orientation + // for that case anyway. + bool portrait = screen()->isPortrait(orientation); + if (portrait && m_geometry.width() < m_geometry.height()) + return; + + // Switching portrait/landscape means swapping width/height (and adjusting x/y): + CGRect frame = m_uiScreen.applicationFrame; + m_availableGeometry = portrait ? QRect(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height) + : QRect(frame.origin.y, m_geometry.width() - frame.size.width - frame.origin.x, frame.size.height, frame.size.width); + m_geometry = QRect(0, 0, m_geometry.height(), m_geometry.width()); + m_physicalSize = QSizeF(m_physicalSize.height(), m_physicalSize.width()); + + QWindowSystemInterface::handleScreenGeometryChange(screen(), m_geometry); + QWindowSystemInterface::handleScreenAvailableGeometryChange(screen(), m_availableGeometry); +} + UIScreen *QIOSScreen::uiScreen() const { return m_uiScreen; diff --git a/src/plugins/platforms/ios/qiosviewcontroller.h b/src/plugins/platforms/ios/qiosviewcontroller.h index 605f0f5b4c..d5a61cb3f4 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.h +++ b/src/plugins/platforms/ios/qiosviewcontroller.h @@ -40,7 +40,6 @@ ****************************************************************************/ #import -#import @interface QIOSViewController : UIViewController @end diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm index 3121597dba..fe9e02666f 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.mm +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -43,6 +43,7 @@ #include #include +#include "qiosscreen.h" @implementation QIOSViewController @@ -65,5 +66,16 @@ return UIInterfaceOrientationMaskAll; } +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation +{ + Q_UNUSED(fromInterfaceOrientation); + Qt::ScreenOrientation orientation = convertToQtOrientation(self.interfaceOrientation); + if (orientation == -1) + return; + + QIOSScreen *qiosScreen = static_cast(QGuiApplication::primaryScreen()->handle()); + qiosScreen->setPrimaryOrientation(orientation); +} + @end diff --git a/src/plugins/platforms/ios/qtmain.pro b/src/plugins/platforms/ios/qtmain.pro index 7c4c4ab398..5c290b6c00 100644 --- a/src/plugins/platforms/ios/qtmain.pro +++ b/src/plugins/platforms/ios/qtmain.pro @@ -3,6 +3,8 @@ TARGET = qiosmain PLUGIN_TYPE = platforms load(qt_plugin) +QT += gui-private + OBJECTIVE_SOURCES = qtmain.mm \ qiosviewcontroller.mm -- cgit v1.2.3 From 70774d021a4ddb6437646ab09bde0928e30c8a90 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 17 Dec 2012 10:59:45 +0100 Subject: iOS: refactor QIOSOrientationListener into QIOSScreen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Clean up a bit. The orientation conversion functions belongs to QIOSScreen more than QIOSOrientationListener. And rename them in the same go to follow toQRect/fromQRect standard. The orientation listener itself is tightly coupled to QIOSScreen, and does not make much sense on its own, so move it into QIOSScreen to follow the same patteren already implemented for QIOSInputContext. Change-Id: I8b6b4d08a42349b4232749d59d46748297083536 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/plugin.pro | 2 - .../platforms/ios/qiosorientationlistener.h | 66 ----------- .../platforms/ios/qiosorientationlistener.mm | 130 --------------------- src/plugins/platforms/ios/qiosscreen.h | 6 +- src/plugins/platforms/ios/qiosscreen.mm | 90 +++++++++++++- src/plugins/platforms/ios/qiosviewcontroller.mm | 2 +- src/plugins/platforms/ios/qioswindow.mm | 3 +- 7 files changed, 96 insertions(+), 203 deletions(-) delete mode 100644 src/plugins/platforms/ios/qiosorientationlistener.h delete mode 100644 src/plugins/platforms/ios/qiosorientationlistener.mm (limited to 'src') diff --git a/src/plugins/platforms/ios/plugin.pro b/src/plugins/platforms/ios/plugin.pro index 1be24d920d..a51ac39e03 100644 --- a/src/plugins/platforms/ios/plugin.pro +++ b/src/plugins/platforms/ios/plugin.pro @@ -14,7 +14,6 @@ OBJECTIVE_SOURCES = \ qioseventdispatcher.mm \ qiosbackingstore.mm \ qiosapplicationdelegate.mm \ - qiosorientationlistener.mm \ qiosviewcontroller.mm \ qioscontext.mm \ qiosinputcontext.mm \ @@ -27,7 +26,6 @@ HEADERS = \ qioseventdispatcher.h \ qiosbackingstore.h \ qiosapplicationdelegate.h \ - qiosorientationlistener.h \ qiosviewcontroller.h \ qioscontext.h \ qiosinputcontext.h \ diff --git a/src/plugins/platforms/ios/qiosorientationlistener.h b/src/plugins/platforms/ios/qiosorientationlistener.h deleted file mode 100644 index 9d2e902ce1..0000000000 --- a/src/plugins/platforms/ios/qiosorientationlistener.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QIOSORIENTATIONLISTENER_H -#define QIOSORIENTATIONLISTENER_H - -#include -#include - -QT_BEGIN_NAMESPACE - -class QIOSScreen; -Qt::ScreenOrientation convertToQtOrientation(UIDeviceOrientation uiDeviceOrientation); -UIDeviceOrientation convertToUIOrientation(Qt::ScreenOrientation qtOrientation); - -QT_END_NAMESPACE - -@interface QIOSOrientationListener : NSObject { - @public - QIOSScreen *m_screen; - Qt::ScreenOrientation m_orientation; -} -- (id) initWithQIOSScreen:(QIOSScreen *)screen; - -@end - -#endif - diff --git a/src/plugins/platforms/ios/qiosorientationlistener.mm b/src/plugins/platforms/ios/qiosorientationlistener.mm deleted file mode 100644 index 264b77f14f..0000000000 --- a/src/plugins/platforms/ios/qiosorientationlistener.mm +++ /dev/null @@ -1,130 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qiosorientationlistener.h" -#include "qiosscreen.h" -#include - -QT_BEGIN_NAMESPACE - -Qt::ScreenOrientation convertToQtOrientation(UIDeviceOrientation uiDeviceOrientation) -{ - Qt::ScreenOrientation qtOrientation; - switch (uiDeviceOrientation) { - case UIDeviceOrientationPortraitUpsideDown: - qtOrientation = Qt::InvertedPortraitOrientation; - break; - case UIDeviceOrientationLandscapeLeft: - qtOrientation = Qt::InvertedLandscapeOrientation; - break; - case UIDeviceOrientationLandscapeRight: - qtOrientation = Qt::LandscapeOrientation; - break; - case UIDeviceOrientationFaceUp: - case UIDeviceOrientationFaceDown: - qtOrientation = static_cast(-1); // not supported ATM. - break; - default: - qtOrientation = Qt::PortraitOrientation; - break; - } - return qtOrientation; -} - -UIDeviceOrientation convertToUIOrientation(Qt::ScreenOrientation qtOrientation) -{ - UIDeviceOrientation uiOrientation; - switch (qtOrientation) { - case Qt::LandscapeOrientation: - uiOrientation = UIDeviceOrientationLandscapeRight; - break; - case Qt::InvertedLandscapeOrientation: - uiOrientation = UIDeviceOrientationLandscapeLeft; - break; - case Qt::InvertedPortraitOrientation: - uiOrientation = UIDeviceOrientationPortraitUpsideDown; - break; - case Qt::PrimaryOrientation: - case Qt::PortraitOrientation: - default: - uiOrientation = UIDeviceOrientationPortrait; - break; - } - return uiOrientation; -} - -QT_END_NAMESPACE - -@implementation QIOSOrientationListener - -- (id) initWithQIOSScreen:(QIOSScreen *)screen -{ - self = [super init]; - if (self) { - m_screen = screen; - m_orientation = convertToQtOrientation([UIDevice currentDevice].orientation); - [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(orientationChanged:) - name:@"UIDeviceOrientationDidChangeNotification" object:nil]; - } - return self; -} - -- (void) dealloc -{ - [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; - [super dealloc]; -} - -- (void) orientationChanged:(NSNotification *)notification -{ - Q_UNUSED(notification); - Qt::ScreenOrientation qtOrientation = convertToQtOrientation([UIDevice currentDevice].orientation); - if (qtOrientation != -1) { - m_orientation = qtOrientation; - QWindowSystemInterface::handleScreenOrientationChange(m_screen->screen(), m_orientation); - } -} - -@end - diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index e05a6cd6a1..17a5c3149a 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -45,10 +45,14 @@ #include #include -#include + +@class QIOSOrientationListener; QT_BEGIN_NAMESPACE +Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation); +UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation); + class QIOSScreen : public QPlatformScreen { public: diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index f4cade2e6d..02d719eaf1 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -45,8 +45,96 @@ #include +@interface QIOSOrientationListener : NSObject { + @public + QIOSScreen *m_screen; +} +- (id) initWithQIOSScreen:(QIOSScreen *)screen; +@end + +@implementation QIOSOrientationListener + +- (id) initWithQIOSScreen:(QIOSScreen *)screen +{ + self = [super init]; + if (self) { + m_screen = screen; + [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(orientationChanged:) + name:@"UIDeviceOrientationDidChangeNotification" object:nil]; + } + return self; +} + +- (void) dealloc +{ + [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; + [[NSNotificationCenter defaultCenter] + removeObserver:self + name:@"UIDeviceOrientationDidChangeNotification" object:nil]; + [super dealloc]; +} + +- (void) orientationChanged:(NSNotification *)notification +{ + Q_UNUSED(notification); + Qt::ScreenOrientation orientation = toQtScreenOrientation([UIDevice currentDevice].orientation); + if (orientation != -1) + QWindowSystemInterface::handleScreenOrientationChange(m_screen->screen(), orientation); +} + +@end + QT_BEGIN_NAMESPACE +Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation) +{ + Qt::ScreenOrientation qtOrientation; + switch (uiDeviceOrientation) { + case UIDeviceOrientationPortraitUpsideDown: + qtOrientation = Qt::InvertedPortraitOrientation; + break; + case UIDeviceOrientationLandscapeLeft: + qtOrientation = Qt::InvertedLandscapeOrientation; + break; + case UIDeviceOrientationLandscapeRight: + qtOrientation = Qt::LandscapeOrientation; + break; + case UIDeviceOrientationFaceUp: + case UIDeviceOrientationFaceDown: + qtOrientation = static_cast(-1); // not supported ATM. + break; + default: + qtOrientation = Qt::PortraitOrientation; + break; + } + return qtOrientation; +} + +UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation) +{ + UIDeviceOrientation uiOrientation; + switch (qtOrientation) { + case Qt::LandscapeOrientation: + uiOrientation = UIDeviceOrientationLandscapeRight; + break; + case Qt::InvertedLandscapeOrientation: + uiOrientation = UIDeviceOrientationLandscapeLeft; + break; + case Qt::InvertedPortraitOrientation: + uiOrientation = UIDeviceOrientationPortraitUpsideDown; + break; + case Qt::PrimaryOrientation: + case Qt::PortraitOrientation: + default: + uiOrientation = UIDeviceOrientationPortrait; + break; + } + return uiOrientation; +} + /*! Returns the model identifier of the device. @@ -137,7 +225,7 @@ Qt::ScreenOrientation QIOSScreen::nativeOrientation() const Qt::ScreenOrientation QIOSScreen::orientation() const { - return m_orientationListener ? m_orientationListener->m_orientation : nativeOrientation(); + return toQtScreenOrientation([UIDevice currentDevice].orientation); } void QIOSScreen::setOrientationUpdateMask(Qt::ScreenOrientations mask) diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm index fe9e02666f..8c280d11d9 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.mm +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -69,7 +69,7 @@ - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { Q_UNUSED(fromInterfaceOrientation); - Qt::ScreenOrientation orientation = convertToQtOrientation(self.interfaceOrientation); + Qt::ScreenOrientation orientation = toQtScreenOrientation(self.interfaceOrientation); if (orientation == -1) return; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index a2901efd1d..cc016da106 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -43,7 +43,6 @@ #include "qioscontext.h" #include "qiosscreen.h" #include "qiosapplicationdelegate.h" -#include "qiosorientationlistener.h" #include "qiosviewcontroller.h" #import @@ -272,7 +271,7 @@ void QIOSWindow::handleContentOrientationChange(Qt::ScreenOrientation orientatio { // Keep the status bar in sync with content orientation. This will ensure // that the task bar (and associated gestures) are aligned correctly: - UIDeviceOrientation uiOrientation = convertToUIOrientation(orientation); + UIDeviceOrientation uiOrientation = fromQtScreenOrientation(orientation); [[UIApplication sharedApplication] setStatusBarOrientation:uiOrientation animated:NO]; } -- cgit v1.2.3 From d665ba2a9454dbd2ed9f4384e04c31d232b0c5eb Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 17 Dec 2012 13:39:59 +0100 Subject: iOS: let QIOSScreen use correct orientation at startup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When QScreen is created, we need to check if the application is already in landscape. Change-Id: I653c622154a5c23ec93e89ec3e80fefb6b1f1bdd Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosscreen.mm | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 02d719eaf1..a2fd10bdd4 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -42,6 +42,7 @@ #include "qiosscreen.h" #include "qioswindow.h" #include +#include "qiosapplicationdelegate.h" #include @@ -185,6 +186,12 @@ QIOSScreen::QIOSScreen(unsigned int screenIndex) const qreal millimetersPerInch = 25.4; m_physicalSize = QSizeF(m_geometry.size()) / unscaledDpi * millimetersPerInch; + if ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]) { + // When in a non-mixed environment, let QScreen follow the current interface orientation: + UIViewController *controller = [UIApplication sharedApplication].delegate.window.rootViewController; + setPrimaryOrientation(toQtScreenOrientation(controller.interfaceOrientation)); + } + [pool release]; } -- cgit v1.2.3 From a593de41edfac04f3e3c6dd5bb024254e7e6ff4e Mon Sep 17 00:00:00 2001 From: Morten Johan Sorvig Date: Fri, 14 Dec 2012 17:25:56 +0100 Subject: iOS: Retina display support. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Scale the OpenGL paint device size and physical dpi by the device pixel ratio. Change-Id: I8b576f23129aafc47371795151c548663e94ad52 Reviewed-by: Tor Arne Vestbø --- src/gui/opengl/qopenglpaintdevice.cpp | 14 ++++++++++++-- src/gui/opengl/qopenglpaintdevice.h | 1 + src/plugins/platforms/ios/qiosbackingstore.mm | 10 ++++++++-- src/plugins/platforms/ios/qioswindow.h | 2 ++ src/plugins/platforms/ios/qioswindow.mm | 21 ++++++++++++++++++--- 5 files changed, 41 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglpaintdevice.cpp b/src/gui/opengl/qopenglpaintdevice.cpp index 0b3d9dc46d..d55d6a91bf 100644 --- a/src/gui/opengl/qopenglpaintdevice.cpp +++ b/src/gui/opengl/qopenglpaintdevice.cpp @@ -116,6 +116,7 @@ public: qreal dpmx; qreal dpmy; + qreal devicePixelRatio; bool flipped; @@ -178,6 +179,7 @@ QOpenGLPaintDevicePrivate::QOpenGLPaintDevicePrivate(const QSize &sz) , ctx(QOpenGLContext::currentContext()) , dpmx(qt_defaultDpiX() * 100. / 2.54) , dpmy(qt_defaultDpiY() * 100. / 2.54) + , devicePixelRatio(1.0) , flipped(false) , engine(0) { @@ -248,6 +250,14 @@ void QOpenGLPaintDevice::setSize(const QSize &size) d_ptr->size = size; } +/*! + Sets the device pixel ratio for the paint device to \a devicePixelRatio. +*/ +void QOpenGLPaintDevice::setDevicePixelRatio(qreal devicePixelRatio) +{ + d_ptr->devicePixelRatio = devicePixelRatio; +} + /*! \reimp */ @@ -272,9 +282,9 @@ int QOpenGLPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const case PdmDpiY: return qRound(d_ptr->dpmy * 0.0254); case PdmPhysicalDpiX: - return qRound(d_ptr->dpmx * 0.0254); + return qRound(d_ptr->dpmx * 0.0254 * d_ptr->devicePixelRatio); case PdmPhysicalDpiY: - return qRound(d_ptr->dpmy * 0.0254); + return qRound(d_ptr->dpmy * 0.0254 * d_ptr->devicePixelRatio); default: qWarning("QOpenGLPaintDevice::metric() - metric %d not known", metric); return 0; diff --git a/src/gui/opengl/qopenglpaintdevice.h b/src/gui/opengl/qopenglpaintdevice.h index 731000f131..5868a5740a 100644 --- a/src/gui/opengl/qopenglpaintdevice.h +++ b/src/gui/opengl/qopenglpaintdevice.h @@ -68,6 +68,7 @@ public: QOpenGLContext *context() const; QSize size() const; void setSize(const QSize &size); + void setDevicePixelRatio(qreal devicePixelRatio); qreal dotsPerMeterX() const; qreal dotsPerMeterY() const; diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm index 6bae08ce2b..5ee048cb2f 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.mm +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -71,12 +71,18 @@ void QIOSBackingStore::beginPaint(const QRegion &) m_context->makeCurrent(window()); static_cast(paintDevice())->setSize(window()->size()); + QIOSWindow *iosWindow = static_cast(window()->handle()); + static_cast(paintDevice())->setSize(window()->size() * iosWindow->devicePixelRatio()); } QPaintDevice *QIOSBackingStore::paintDevice() { - if (!m_device) - m_device = new QOpenGLPaintDevice; + if (!m_device) { + QIOSWindow *iosWindow = static_cast(window()->handle()); + QOpenGLPaintDevice *openGLDevice = new QOpenGLPaintDevice(window()->size() * iosWindow->devicePixelRatio()); + openGLDevice->setDevicePixelRatio(iosWindow->devicePixelRatio()); + m_device = openGLDevice; + } return m_device; } diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 3a05901ae7..cb2854d60e 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -90,6 +90,7 @@ public: GLuint framebufferObject(const QIOSContext &context) const; GLuint colorRenderbuffer(const QIOSContext &context) const; + qreal devicePixelRatio() const; EAGLView *nativeView() const { return m_view; } @@ -104,6 +105,7 @@ private: GLint renderbufferWidth; GLint renderbufferHeight; } m_glData; + qreal m_devicePixelRatio; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index cc016da106..e3da694bac 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -126,8 +126,7 @@ static QRect fromCGRect(const CGRect &rect) { UITouch *touch = [touches anyObject]; CGPoint locationInView = [touch locationInView:self]; - CGFloat scaleFactor = [self contentScaleFactor]; - QPoint p(locationInView.x * scaleFactor, locationInView.y * scaleFactor); + QPoint p(locationInView.x , locationInView.y); // TODO handle global touch point? for status bar? QWindowSystemInterface::handleMouseEvent(m_qioswindow->window(), (ulong)(event.timestamp*1000), p, p, buttons); @@ -204,11 +203,21 @@ QIOSWindow::QIOSWindow(QWindow *window) , m_view([[EAGLView alloc] initWithQIOSWindow:this]) , m_requestedGeometry(QPlatformWindow::geometry()) , m_glData() + , m_devicePixelRatio(1.0) { if ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]) [[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:m_view]; setWindowState(window->windowState()); + + // Retina support: get screen scale factor and set it in the content view. + // This will make framebufferObject() create a 2x frame buffer on retina + // displays. Also set m_devicePixelRatio which is used for scaling the + // paint device. + if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] == YES) { + m_devicePixelRatio = [[UIScreen mainScreen] scale]; + [m_view setContentScaleFactor : m_devicePixelRatio]; + } } QIOSWindow::~QIOSWindow() @@ -304,7 +313,8 @@ GLuint QIOSWindow::framebufferObject(const QIOSContext &context) const GLuint QIOSWindow::colorRenderbuffer(const QIOSContext &context) const { if (!m_glData.colorRenderbuffer || - m_glData.renderbufferWidth != geometry().width() || m_glData.renderbufferHeight != geometry().height()) { + m_glData.renderbufferWidth != geometry().width() * m_devicePixelRatio || + m_glData.renderbufferHeight != geometry().height() *m_devicePixelRatio) { glBindRenderbuffer(GL_RENDERBUFFER, m_glData.colorRenderbuffer); [context.nativeContext() renderbufferStorage:GL_RENDERBUFFER fromDrawable:static_cast(m_view.layer)]; @@ -329,4 +339,9 @@ GLuint QIOSWindow::colorRenderbuffer(const QIOSContext &context) const return m_glData.colorRenderbuffer; } +qreal QIOSWindow::devicePixelRatio() const +{ + return m_devicePixelRatio; +} + QT_END_NAMESPACE -- cgit v1.2.3 From 54448b2f9fb7501e9d4a8e2c8b75acb9de8f7ae0 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 12 Dec 2012 11:16:13 +0100 Subject: iOS: remove warning from unused function in QIOSEventDispatcher MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From the documentation for QAbstractEventDispatcher::flush(), this function does only make sense for X11. Change-Id: I7f445b67b283f60c9a30ac00837beb44e8205d8b Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/ios/qioseventdispatcher.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm index 9d455370c0..f6f60387d4 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.mm +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -313,7 +313,7 @@ void QIOSEventDispatcher::interrupt() void QIOSEventDispatcher::flush() { - qDebug() << __FUNCTION__ << "not implemented"; + // X11 only. } QT_END_NAMESPACE -- cgit v1.2.3 From 5abe9aa435c316b845f4cf5f6a930eefd449f4e1 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 18 Dec 2012 10:15:39 +0100 Subject: iOS: refactor general convenience functions into new file 'qiosglobal' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some functions are needed across several files and classes. Lets place them in a common file for all to use. Change-Id: I5f9b578f948d66d10e57a835b80b5c493e07fb4c Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/plugin.pro | 6 +- src/plugins/platforms/ios/qiosglobal.h | 59 ++++++++++++++ src/plugins/platforms/ios/qiosglobal.mm | 104 ++++++++++++++++++++++++ src/plugins/platforms/ios/qiosscreen.h | 3 - src/plugins/platforms/ios/qiosscreen.mm | 49 +---------- src/plugins/platforms/ios/qiosviewcontroller.mm | 1 + src/plugins/platforms/ios/qioswindow.mm | 11 +-- 7 files changed, 170 insertions(+), 63 deletions(-) create mode 100644 src/plugins/platforms/ios/qiosglobal.h create mode 100644 src/plugins/platforms/ios/qiosglobal.mm (limited to 'src') diff --git a/src/plugins/platforms/ios/plugin.pro b/src/plugins/platforms/ios/plugin.pro index a51ac39e03..591a0a67ed 100644 --- a/src/plugins/platforms/ios/plugin.pro +++ b/src/plugins/platforms/ios/plugin.pro @@ -17,7 +17,8 @@ OBJECTIVE_SOURCES = \ qiosviewcontroller.mm \ qioscontext.mm \ qiosinputcontext.mm \ - qiostheme.mm + qiostheme.mm \ + qiosglobal.mm HEADERS = \ qiosintegration.h \ @@ -29,6 +30,7 @@ HEADERS = \ qiosviewcontroller.h \ qioscontext.h \ qiosinputcontext.h \ - qiostheme.h + qiostheme.h \ + qiosglobal.h #HEADERS = qiossoftwareinputhandler.h diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h new file mode 100644 index 0000000000..cf4c89cfad --- /dev/null +++ b/src/plugins/platforms/ios/qiosglobal.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSGLOBAL_H +#define QIOSGLOBAL_H + +#import +#import +#import +#import "qiosscreen.h" + +QT_BEGIN_NAMESPACE + +CGRect toCGRect(const QRect &rect); +QRect fromCGRect(const CGRect &rect); +Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation); +UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation); + +QT_END_NAMESPACE + +#endif // QIOSGLOBAL_H diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm new file mode 100644 index 0000000000..30138acc1b --- /dev/null +++ b/src/plugins/platforms/ios/qiosglobal.mm @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qiosglobal.h" +#include + +QT_BEGIN_NAMESPACE + +CGRect toCGRect(const QRect &rect) +{ + return CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()); +} + +QRect fromCGRect(const CGRect &rect) +{ + return QRect(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); +} + +Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation) +{ + Qt::ScreenOrientation qtOrientation; + switch (uiDeviceOrientation) { + case UIDeviceOrientationPortraitUpsideDown: + qtOrientation = Qt::InvertedPortraitOrientation; + break; + case UIDeviceOrientationLandscapeLeft: + qtOrientation = Qt::InvertedLandscapeOrientation; + break; + case UIDeviceOrientationLandscapeRight: + qtOrientation = Qt::LandscapeOrientation; + break; + case UIDeviceOrientationFaceUp: + case UIDeviceOrientationFaceDown: + qtOrientation = static_cast(-1); // not supported ATM. + break; + default: + qtOrientation = Qt::PortraitOrientation; + break; + } + return qtOrientation; +} + +UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation) +{ + UIDeviceOrientation uiOrientation; + switch (qtOrientation) { + case Qt::LandscapeOrientation: + uiOrientation = UIDeviceOrientationLandscapeRight; + break; + case Qt::InvertedLandscapeOrientation: + uiOrientation = UIDeviceOrientationLandscapeLeft; + break; + case Qt::InvertedPortraitOrientation: + uiOrientation = UIDeviceOrientationPortraitUpsideDown; + break; + case Qt::PrimaryOrientation: + case Qt::PortraitOrientation: + default: + uiOrientation = UIDeviceOrientationPortrait; + break; + } + return uiOrientation; +} + +QT_END_NAMESPACE + diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index 17a5c3149a..762c60e6da 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -50,9 +50,6 @@ QT_BEGIN_NAMESPACE -Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation); -UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation); - class QIOSScreen : public QPlatformScreen { public: diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index a2fd10bdd4..87ddc63f4a 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -39,6 +39,7 @@ ** ****************************************************************************/ +#include "qiosglobal.h" #include "qiosscreen.h" #include "qioswindow.h" #include @@ -88,54 +89,6 @@ @end -QT_BEGIN_NAMESPACE - -Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation) -{ - Qt::ScreenOrientation qtOrientation; - switch (uiDeviceOrientation) { - case UIDeviceOrientationPortraitUpsideDown: - qtOrientation = Qt::InvertedPortraitOrientation; - break; - case UIDeviceOrientationLandscapeLeft: - qtOrientation = Qt::InvertedLandscapeOrientation; - break; - case UIDeviceOrientationLandscapeRight: - qtOrientation = Qt::LandscapeOrientation; - break; - case UIDeviceOrientationFaceUp: - case UIDeviceOrientationFaceDown: - qtOrientation = static_cast(-1); // not supported ATM. - break; - default: - qtOrientation = Qt::PortraitOrientation; - break; - } - return qtOrientation; -} - -UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation) -{ - UIDeviceOrientation uiOrientation; - switch (qtOrientation) { - case Qt::LandscapeOrientation: - uiOrientation = UIDeviceOrientationLandscapeRight; - break; - case Qt::InvertedLandscapeOrientation: - uiOrientation = UIDeviceOrientationLandscapeLeft; - break; - case Qt::InvertedPortraitOrientation: - uiOrientation = UIDeviceOrientationPortraitUpsideDown; - break; - case Qt::PrimaryOrientation: - case Qt::PortraitOrientation: - default: - uiOrientation = UIDeviceOrientationPortrait; - break; - } - return uiOrientation; -} - /*! Returns the model identifier of the device. diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm index 8c280d11d9..6950288912 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.mm +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -44,6 +44,7 @@ #include #include #include "qiosscreen.h" +#include "qiosglobal.h" @implementation QIOSViewController diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index e3da694bac..9b10ba4e1c 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -39,6 +39,7 @@ ** ****************************************************************************/ +#include "qiosglobal.h" #include "qioswindow.h" #include "qioscontext.h" #include "qiosscreen.h" @@ -52,16 +53,6 @@ #include -static CGRect toCGRect(const QRect &rect) -{ - return CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()); -} - -static QRect fromCGRect(const CGRect &rect) -{ - return QRect(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); -} - @implementation EAGLView + (Class)layerClass -- cgit v1.2.3 From b960424195634c00673d499e4719ccb4f8704ad0 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 18 Dec 2012 12:50:50 +0100 Subject: iOS: add global function 'isQtApplication' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Several places in the code we need to check if the plugin is running as a cross-platform Qt application or inside a native app. So we refactor this function to qiosglobal so we can access it from everywhere. Change-Id: I78db0dcde71b7d281868ce304867c8f876caef2a Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosglobal.h | 1 + src/plugins/platforms/ios/qiosglobal.mm | 13 +++++++++++++ src/plugins/platforms/ios/qiosscreen.mm | 2 +- src/plugins/platforms/ios/qioswindow.mm | 2 +- 4 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h index cf4c89cfad..7a23a2a485 100644 --- a/src/plugins/platforms/ios/qiosglobal.h +++ b/src/plugins/platforms/ios/qiosglobal.h @@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE +bool isQtApplication(); CGRect toCGRect(const QRect &rect); QRect fromCGRect(const CGRect &rect); Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation); diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm index 30138acc1b..a8a89a1637 100644 --- a/src/plugins/platforms/ios/qiosglobal.mm +++ b/src/plugins/platforms/ios/qiosglobal.mm @@ -40,10 +40,23 @@ ****************************************************************************/ #include "qiosglobal.h" +#include "qiosapplicationdelegate.h" #include QT_BEGIN_NAMESPACE +bool isQtApplication() +{ + // Returns true if the plugin is in full control of the whole application. This means + // that we control the application delegate and the top view controller, and can take + // actions that impacts all parts of the application. The opposite means that we are + // embedded inside a native iOS application, and should be more focused on playing along + // with native UIControls, and less inclined to change structures that lies outside the + // scope of our QWindows/UIViews. + static bool isQt = ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]); + return isQt; +} + CGRect toCGRect(const QRect &rect) { return CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()); diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 87ddc63f4a..fdf2f31ea1 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -139,7 +139,7 @@ QIOSScreen::QIOSScreen(unsigned int screenIndex) const qreal millimetersPerInch = 25.4; m_physicalSize = QSizeF(m_geometry.size()) / unscaledDpi * millimetersPerInch; - if ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]) { + if (isQtApplication()) { // When in a non-mixed environment, let QScreen follow the current interface orientation: UIViewController *controller = [UIApplication sharedApplication].delegate.window.rootViewController; setPrimaryOrientation(toQtScreenOrientation(controller.interfaceOrientation)); diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 9b10ba4e1c..af184e2e7b 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -196,7 +196,7 @@ QIOSWindow::QIOSWindow(QWindow *window) , m_glData() , m_devicePixelRatio(1.0) { - if ([[UIApplication sharedApplication].delegate isKindOfClass:[QIOSApplicationDelegate class]]) + if (isQtApplication()) [[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:m_view]; setWindowState(window->windowState()); -- cgit v1.2.3 From 31796ca8abb8878165c7099145b08abfdf8bf1e3 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 18 Dec 2012 09:50:28 +0100 Subject: iOS: report changes to keyboard rect back to Qt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QInputContext expects us to report whenever the input panel changes geometry. This patch implements this. Change-Id: I9162f0d48da6925274a7489c9bcb6adab9afae82 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosglobal.h | 1 + src/plugins/platforms/ios/qiosglobal.mm | 9 +++++++++ src/plugins/platforms/ios/qiosinputcontext.h | 1 + src/plugins/platforms/ios/qiosinputcontext.mm | 15 +++++++++++++-- src/plugins/platforms/ios/qiosscreen.mm | 4 +--- 5 files changed, 25 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h index 7a23a2a485..849d9bce37 100644 --- a/src/plugins/platforms/ios/qiosglobal.h +++ b/src/plugins/platforms/ios/qiosglobal.h @@ -54,6 +54,7 @@ CGRect toCGRect(const QRect &rect); QRect fromCGRect(const CGRect &rect); Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation); UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation); +QRect fromPortraitToPrimary(const QRect &rect); QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm index a8a89a1637..f9b4b14a19 100644 --- a/src/plugins/platforms/ios/qiosglobal.mm +++ b/src/plugins/platforms/ios/qiosglobal.mm @@ -113,5 +113,14 @@ UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation) return uiOrientation; } +QRect fromPortraitToPrimary(const QRect &rect) +{ + // UIScreen is always in portrait. Use this function to convert CGRects + // aligned with UIScreen into whatever is the current orientation of QScreen. + QScreen *screen = QGuiApplication::primaryScreen(); + return screen->isPortrait(screen->primaryOrientation()) ? rect + : QRect(rect.y(), screen->geometry().width() - rect.width() - rect.x(), rect.height(), rect.width()); +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosinputcontext.h b/src/plugins/platforms/ios/qiosinputcontext.h index 22782d183c..ceed5ffaf2 100644 --- a/src/plugins/platforms/ios/qiosinputcontext.h +++ b/src/plugins/platforms/ios/qiosinputcontext.h @@ -56,6 +56,7 @@ public: QIOSInputContext(); ~QIOSInputContext(); + QRectF keyboardRect() const; void showInputPanel(); void hideInputPanel(); bool isInputPanelVisible() const; diff --git a/src/plugins/platforms/ios/qiosinputcontext.mm b/src/plugins/platforms/ios/qiosinputcontext.mm index 7937337e4a..89d210cb54 100644 --- a/src/plugins/platforms/ios/qiosinputcontext.mm +++ b/src/plugins/platforms/ios/qiosinputcontext.mm @@ -39,6 +39,7 @@ ** ****************************************************************************/ +#include "qiosglobal.h" #include "qiosinputcontext.h" #include "qioswindow.h" #include @@ -47,6 +48,7 @@ @public QIOSInputContext *m_context; BOOL m_keyboardVisible; + QRectF m_keyboardRect; } @end @@ -80,6 +82,10 @@ { CGRect frame; [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&frame]; + + m_keyboardRect = fromPortraitToPrimary(fromCGRect(frame)); + m_context->emitKeyboardRectChanged(); + BOOL visible = CGRectIntersectsRect(frame, [UIScreen mainScreen].bounds); if (m_keyboardVisible != visible) { m_keyboardVisible = visible; @@ -90,8 +96,8 @@ @end QIOSInputContext::QIOSInputContext() - : QPlatformInputContext(), - m_keyboardListener([[QIOSKeyboardListener alloc] initWithQIOSInputContext:this]) + : QPlatformInputContext() + , m_keyboardListener([[QIOSKeyboardListener alloc] initWithQIOSInputContext:this]) { } @@ -100,6 +106,11 @@ QIOSInputContext::~QIOSInputContext() [m_keyboardListener release]; } +QRectF QIOSInputContext::keyboardRect() const +{ + return m_keyboardListener->m_keyboardRect; +} + void QIOSInputContext::showInputPanel() { if (isInputPanelVisible()) diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index fdf2f31ea1..a0403a0d69 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -212,11 +212,9 @@ void QIOSScreen::setPrimaryOrientation(Qt::ScreenOrientation orientation) return; // Switching portrait/landscape means swapping width/height (and adjusting x/y): - CGRect frame = m_uiScreen.applicationFrame; - m_availableGeometry = portrait ? QRect(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height) - : QRect(frame.origin.y, m_geometry.width() - frame.size.width - frame.origin.x, frame.size.height, frame.size.width); m_geometry = QRect(0, 0, m_geometry.height(), m_geometry.width()); m_physicalSize = QSizeF(m_physicalSize.height(), m_physicalSize.width()); + m_availableGeometry = fromPortraitToPrimary(fromCGRect(m_uiScreen.applicationFrame)); QWindowSystemInterface::handleScreenGeometryChange(screen(), m_geometry); QWindowSystemInterface::handleScreenAvailableGeometryChange(screen(), m_availableGeometry); -- cgit v1.2.3 From 5b452a502214a927c54b7cc6e4fb81a7c2141267 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 18 Dec 2012 12:58:43 +0100 Subject: iOS: update primary orientation when the rotation starts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We need to update primary orientation when the rotation starts, and not when it ends, so that we are in sync with the resize that happens to the backingstore upon layoutSubviews. Change-Id: I466a2d135e6c15550c6207c9659871629d748b73 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosviewcontroller.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm index 6950288912..a441258f4e 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.mm +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -67,10 +67,10 @@ return UIInterfaceOrientationMaskAll; } -- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - Q_UNUSED(fromInterfaceOrientation); - Qt::ScreenOrientation orientation = toQtScreenOrientation(self.interfaceOrientation); + Q_UNUSED(duration); + Qt::ScreenOrientation orientation = toQtScreenOrientation(toInterfaceOrientation); if (orientation == -1) return; -- cgit v1.2.3 From cbdd73d25d4c4aa6436591b259dec10aa4f74b0d Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 18 Dec 2012 13:52:13 +0100 Subject: iOS: bugfix portraitToPrimary global function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QScreen geometry and orientation is updated a bit after we change geometry in QPlatformScreen, which this time was enough to break availableGeometry. Since this function is for internal use, we let it be based on internal data. Change-Id: I7701b0a6043839c89c01e87242decb8a739d00f1 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosglobal.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm index f9b4b14a19..69547fb2a1 100644 --- a/src/plugins/platforms/ios/qiosglobal.mm +++ b/src/plugins/platforms/ios/qiosglobal.mm @@ -117,9 +117,9 @@ QRect fromPortraitToPrimary(const QRect &rect) { // UIScreen is always in portrait. Use this function to convert CGRects // aligned with UIScreen into whatever is the current orientation of QScreen. - QScreen *screen = QGuiApplication::primaryScreen(); - return screen->isPortrait(screen->primaryOrientation()) ? rect - : QRect(rect.y(), screen->geometry().width() - rect.width() - rect.x(), rect.height(), rect.width()); + QRect geometry = QGuiApplication::primaryScreen()->handle()->geometry(); + return geometry.width() < geometry.height() ? rect + : QRect(rect.y(), geometry.width() - rect.width() - rect.x(), rect.height(), rect.width()); } QT_END_NAMESPACE -- cgit v1.2.3 From 2dea9fdc3a04ccc9759427c6450e88cb78003381 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 19 Dec 2012 09:15:27 +0100 Subject: iOS: add convenience function to get to the root QIOSViewController MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It seems that we need to access our view controller from many places, and the syntax to do so is tricky to remember. So lets just add it to our global functions, with the added bonus of a using a little cache. Note: many of these functions could be made inline, but since one concern of the plugin will be the end size of the app, I prefer to trade size for speed at this point. We can always change this later. Change-Id: I578ea9ae8218d23d635b7728a930763ca53c4eaa Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosglobal.h | 4 ++++ src/plugins/platforms/ios/qiosglobal.mm | 8 ++++++++ src/plugins/platforms/ios/qiosscreen.mm | 4 ++-- src/plugins/platforms/ios/qioswindow.mm | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h index 849d9bce37..86377e7c64 100644 --- a/src/plugins/platforms/ios/qiosglobal.h +++ b/src/plugins/platforms/ios/qiosglobal.h @@ -47,9 +47,13 @@ #import #import "qiosscreen.h" +@class QIOSViewController; + QT_BEGIN_NAMESPACE bool isQtApplication(); +QIOSViewController *rootViewController(); + CGRect toCGRect(const QRect &rect); QRect fromCGRect(const CGRect &rect); Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation); diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm index 69547fb2a1..cf69d8fdef 100644 --- a/src/plugins/platforms/ios/qiosglobal.mm +++ b/src/plugins/platforms/ios/qiosglobal.mm @@ -41,6 +41,7 @@ #include "qiosglobal.h" #include "qiosapplicationdelegate.h" +#include "qiosviewcontroller.h" #include QT_BEGIN_NAMESPACE @@ -57,6 +58,13 @@ bool isQtApplication() return isQt; } +QIOSViewController *rootViewController() +{ + static QIOSViewController *c = isQtApplication() ? + static_cast([UIApplication sharedApplication].delegate.window.rootViewController) : nil; + return c; +} + CGRect toCGRect(const QRect &rect) { return CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()); diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index a0403a0d69..5905f1630e 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -44,6 +44,7 @@ #include "qioswindow.h" #include #include "qiosapplicationdelegate.h" +#include "qiosviewcontroller.h" #include @@ -141,8 +142,7 @@ QIOSScreen::QIOSScreen(unsigned int screenIndex) if (isQtApplication()) { // When in a non-mixed environment, let QScreen follow the current interface orientation: - UIViewController *controller = [UIApplication sharedApplication].delegate.window.rootViewController; - setPrimaryOrientation(toQtScreenOrientation(controller.interfaceOrientation)); + setPrimaryOrientation(toQtScreenOrientation(rootViewController().interfaceOrientation)); } [pool release]; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index af184e2e7b..71816f7d94 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -197,7 +197,7 @@ QIOSWindow::QIOSWindow(QWindow *window) , m_devicePixelRatio(1.0) { if (isQtApplication()) - [[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:m_view]; + [rootViewController().view addSubview:m_view]; setWindowState(window->windowState()); -- cgit v1.2.3 From bbb8db9bdb503f4f2c558e5f081c201c09d33d77 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 19 Dec 2012 10:46:22 +0100 Subject: iOS: make EAGLView private in QIOSWindow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Not the biggest gain, but since all the members of EAGLView are declared private, we might as well move the whole interface into the source file. We can then make the members public without caring about interface readability. We will make use of this in a following patch. Change-Id: I144fb5748573ca6faf257d72597907b5c17b1e05 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 29 ++--------------------------- src/plugins/platforms/ios/qioswindow.mm | 24 +++++++++++++++++++++++- 2 files changed, 25 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index cb2854d60e..d0df791cf0 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -49,31 +49,6 @@ class QIOSContext; class QIOSWindow; -@interface EAGLView : UIView -{ - UITextAutocapitalizationType autocapitalizationType; - UITextAutocorrectionType autocorrectionType; - BOOL enablesReturnKeyAutomatically; - UIKeyboardAppearance keyboardAppearance; - UIKeyboardType keyboardType; - UIReturnKeyType returnKeyType; - BOOL secureTextEntry; - QIOSWindow *m_qioswindow; -} - -- (id)initWithQIOSWindow:(QIOSWindow *)qioswindow; -- (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons; - -@property(nonatomic) UITextAutocapitalizationType autocapitalizationType; -@property(nonatomic) UITextAutocorrectionType autocorrectionType; -@property(nonatomic) BOOL enablesReturnKeyAutomatically; -@property(nonatomic) UIKeyboardAppearance keyboardAppearance; -@property(nonatomic) UIKeyboardType keyboardType; -@property(nonatomic) UIReturnKeyType returnKeyType; -@property(nonatomic, getter=isSecureTextEntry) BOOL secureTextEntry; - -@end - QT_BEGIN_NAMESPACE class QIOSWindow : public QPlatformWindow @@ -92,10 +67,10 @@ public: GLuint colorRenderbuffer(const QIOSContext &context) const; qreal devicePixelRatio() const; - EAGLView *nativeView() const { return m_view; } + UIView *nativeView() const { return m_view; } private: - EAGLView *m_view; + UIView *m_view; QRect m_requestedGeometry; mutable struct GLData { diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 71816f7d94..220f30c485 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -53,6 +53,29 @@ #include +@interface EAGLView : UIView +{ +@public + UITextAutocapitalizationType autocapitalizationType; + UITextAutocorrectionType autocorrectionType; + BOOL enablesReturnKeyAutomatically; + UIKeyboardAppearance keyboardAppearance; + UIKeyboardType keyboardType; + UIReturnKeyType returnKeyType; + BOOL secureTextEntry; + QIOSWindow *m_qioswindow; +} + +@property(nonatomic) UITextAutocapitalizationType autocapitalizationType; +@property(nonatomic) UITextAutocorrectionType autocorrectionType; +@property(nonatomic) BOOL enablesReturnKeyAutomatically; +@property(nonatomic) UIKeyboardAppearance keyboardAppearance; +@property(nonatomic) UIKeyboardType keyboardType; +@property(nonatomic) UIReturnKeyType returnKeyType; +@property(nonatomic, getter=isSecureTextEntry) BOOL secureTextEntry; + +@end + @implementation EAGLView + (Class)layerClass @@ -186,7 +209,6 @@ @end - QT_BEGIN_NAMESPACE QIOSWindow::QIOSWindow(QWindow *window) -- cgit v1.2.3 From 646b1fd2b65f42327ff81b92ead96c634bec6468 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 19 Dec 2012 10:23:54 +0100 Subject: iOS: add UIView category to get the QWindow it represents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adding a simple way to get the QWindow pointer from any UIView makes writing code where you only have UIView pointers a bit easier. Perhaps we should also investigate if it is worthwhile to make this category public to the application, to further enhance working in a mixed environment. Change-Id: Ic263003dc7683a8d976024cbbbc2558e8472a790 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 4 ++++ src/plugins/platforms/ios/qioswindow.mm | 11 +++++++++++ 2 files changed, 15 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index d0df791cf0..63099682f1 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -49,6 +49,10 @@ class QIOSContext; class QIOSWindow; +@interface UIView (QIOS) +@property(readonly) QWindow *qwindow; +@end + QT_BEGIN_NAMESPACE class QIOSWindow : public QPlatformWindow diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 220f30c485..d79c1de461 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -209,6 +209,17 @@ @end +@implementation UIView (QIOS) + +- (QWindow *)qwindow +{ + if ([self isKindOfClass:[EAGLView class]]) + return static_cast(self)->m_qioswindow->window(); + return nil; +} + +@end + QT_BEGIN_NAMESPACE QIOSWindow::QIOSWindow(QWindow *window) -- cgit v1.2.3 From 1ff571142d5c06e91a1698d635ab092bbcf393cf Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 19 Dec 2012 11:05:27 +0100 Subject: iOS: activate next window when active window hides MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since the OS does not handle window management for us, we need to handle this ourselves. So when a QWindow is closed or hidden, we transfer activation to the top-most visible window. This will fix application unresponsive after closing a dialog. Change-Id: I83f836ebafa71edca5ab5ae3a2bdba7cd1decbc1 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.mm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index d79c1de461..53da97e12d 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -260,7 +260,21 @@ QIOSWindow::~QIOSWindow() void QIOSWindow::setVisible(bool visible) { QPlatformWindow::setVisible(visible); - [m_view setHidden:!visible]; + m_view.hidden = !visible; + + if (isQtApplication() && !visible) { + // Activate top-most visible QWindow: + NSArray *subviews = rootViewController().view.subviews; + for (int i = int(subviews.count) - 1; i >= 0; --i) { + UIView *view = [subviews objectAtIndex:i]; + if (!view.hidden) { + if (QWindow *window = view.qwindow) { + QWindowSystemInterface::handleWindowActivated(window); + break; + } + } + } + } } void QIOSWindow::setGeometry(const QRect &rect) -- cgit v1.2.3 From 9acae5ce0bfe94bde2711986ccebadf12e9a8a7a Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 19 Dec 2012 11:19:37 +0100 Subject: iOS: clean-up header includes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Try to keep qiosglobal.h free from unnecessary includes, since its typically included from many different locations. Change-Id: I6638bcaef1189b3eee3dbd5f744c15f8f7858d71 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosglobal.h | 4 +--- src/plugins/platforms/ios/qiosglobal.mm | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h index 86377e7c64..3fe426c901 100644 --- a/src/plugins/platforms/ios/qiosglobal.h +++ b/src/plugins/platforms/ios/qiosglobal.h @@ -43,9 +43,7 @@ #define QIOSGLOBAL_H #import -#import -#import -#import "qiosscreen.h" +#include @class QIOSViewController; diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm index cf69d8fdef..712968d216 100644 --- a/src/plugins/platforms/ios/qiosglobal.mm +++ b/src/plugins/platforms/ios/qiosglobal.mm @@ -42,7 +42,7 @@ #include "qiosglobal.h" #include "qiosapplicationdelegate.h" #include "qiosviewcontroller.h" -#include +#include "qiosscreen.h" QT_BEGIN_NAMESPACE -- cgit v1.2.3 From 25ce3a021ba3007ec0d2f059c5ec7fa259bdae83 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 19 Dec 2012 12:06:10 +0100 Subject: iOS: make QWindow views hidden by default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Qt will tell us when the window should be visible. Showing all windows by default makes e.g the desktop widget visible as well, which causes problems with activation of windows. Change-Id: Ibf2283bc5f009df7ff23126f4dd04ec898141720 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.mm | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 53da97e12d..4b4871dd64 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -109,6 +109,9 @@ keyboardType = UIKeyboardTypeDefault; returnKeyType = UIReturnKeyDone; secureTextEntry = NO; + + if (isQtApplication()) + self.hidden = YES; } return self; -- cgit v1.2.3 From e30659aaf500a2186dfe67f29ce57bea5bf86b76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 21 Dec 2012 15:06:55 +0100 Subject: iOS: Fix style nitpicks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I670567f1793b5548393a3b315650bf34a0a3880e Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/ios/qioswindow.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 4b4871dd64..9c814ac924 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -243,7 +243,7 @@ QIOSWindow::QIOSWindow(QWindow *window) // paint device. if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] == YES) { m_devicePixelRatio = [[UIScreen mainScreen] scale]; - [m_view setContentScaleFactor : m_devicePixelRatio]; + [m_view setContentScaleFactor: m_devicePixelRatio]; } } @@ -355,7 +355,7 @@ GLuint QIOSWindow::colorRenderbuffer(const QIOSContext &context) const { if (!m_glData.colorRenderbuffer || m_glData.renderbufferWidth != geometry().width() * m_devicePixelRatio || - m_glData.renderbufferHeight != geometry().height() *m_devicePixelRatio) { + m_glData.renderbufferHeight != geometry().height() * m_devicePixelRatio) { glBindRenderbuffer(GL_RENDERBUFFER, m_glData.colorRenderbuffer); [context.nativeContext() renderbufferStorage:GL_RENDERBUFFER fromDrawable:static_cast(m_view.layer)]; -- cgit v1.2.3 From b05c20b4f33b35c8b3428caf2ee59675d858d5ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 25 Dec 2012 21:44:13 +0100 Subject: iOS: Don't check for existing window in QIOSMainWrapperApplicationDelegate The delegate is only used when we control the application, so we know that there isn't any window yet. Change-Id: Ibd774cb4fd8ceaab6a181769d2792b569f490495 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qtmain.mm | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qtmain.mm b/src/plugins/platforms/ios/qtmain.mm index 61756edc93..7cc96f54b1 100644 --- a/src/plugins/platforms/ios/qtmain.mm +++ b/src/plugins/platforms/ios/qtmain.mm @@ -55,20 +55,16 @@ extern int qt_main(int argc, char *argv[]); - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - // We may have a window already from a NIB or storyboard - if (!self.window) { - // If not, we create one ourselves - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - QIOSViewController *controller = [[QIOSViewController alloc] init]; - self.window.rootViewController = controller; - controller.view = [[UIView alloc] init]; + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + QIOSViewController *controller = [[QIOSViewController alloc] init]; + self.window.rootViewController = controller; + controller.view = [[UIView alloc] init]; - // Aid debugging during development - self.window.backgroundColor = [UIColor cyanColor]; - self.window.rootViewController.view.backgroundColor = [UIColor magentaColor]; + // Aid debugging during development + self.window.backgroundColor = [UIColor cyanColor]; + self.window.rootViewController.view.backgroundColor = [UIColor magentaColor]; - [self.window makeKeyAndVisible]; - } + [self.window makeKeyAndVisible]; // We schedule the main-redirection for the next eventloop pass so that we // can return from this function and let UIApplicationMain finish its job. -- cgit v1.2.3 From 78fec3372ad819cc93b9cfb5bd3df2da6d792cbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 25 Dec 2012 21:55:10 +0100 Subject: iOS: Auto-release the UIWindow and root view-controller They are retained properties. Change-Id: Id1808d93fe30950fc05e41375f00183e098bff0b Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qtmain.mm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qtmain.mm b/src/plugins/platforms/ios/qtmain.mm index 7cc96f54b1..04151cd720 100644 --- a/src/plugins/platforms/ios/qtmain.mm +++ b/src/plugins/platforms/ios/qtmain.mm @@ -55,10 +55,9 @@ extern int qt_main(int argc, char *argv[]); - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - QIOSViewController *controller = [[QIOSViewController alloc] init]; - self.window.rootViewController = controller; - controller.view = [[UIView alloc] init]; + self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; + self.window.rootViewController = [[[QIOSViewController alloc] init] autorelease]; + self.window.rootViewController.view = [[UIView alloc] init]; // Aid debugging during development self.window.backgroundColor = [UIColor cyanColor]; -- cgit v1.2.3 From 8a854ea804c500c2f0425784fd6a24b843016077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 25 Dec 2012 22:27:27 +0100 Subject: iOS: Don't init our own base view for the root viewcontroller This is handled automatically by the default implementation. Change-Id: Ia9bd0143490e6f2507ede03f3654a2b0b00e3e3d Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qtmain.mm | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qtmain.mm b/src/plugins/platforms/ios/qtmain.mm index 04151cd720..00bb581535 100644 --- a/src/plugins/platforms/ios/qtmain.mm +++ b/src/plugins/platforms/ios/qtmain.mm @@ -57,7 +57,6 @@ extern int qt_main(int argc, char *argv[]); { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.rootViewController = [[[QIOSViewController alloc] init] autorelease]; - self.window.rootViewController.view = [[UIView alloc] init]; // Aid debugging during development self.window.backgroundColor = [UIColor cyanColor]; -- cgit v1.2.3 From c77d3d78e448f519c1770c863bb0fccc6c9b7263 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 25 Dec 2012 22:31:43 +0100 Subject: iOS: Move debug background color setting and guard for release builds Change-Id: Ie9131c3dfe16045805b37bf8af9381f4f9929da6 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosviewcontroller.mm | 8 ++++++++ src/plugins/platforms/ios/qtmain.mm | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm index a441258f4e..c85058743c 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.mm +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -48,6 +48,14 @@ @implementation QIOSViewController +- (void)viewDidLoad +{ +#ifdef QT_DEBUG + if (!self.nibName) + self.view.backgroundColor = [UIColor magentaColor]; +#endif +} + -(BOOL)shouldAutorotate { // For now we assume that if the application doesn't listen to orientation diff --git a/src/plugins/platforms/ios/qtmain.mm b/src/plugins/platforms/ios/qtmain.mm index 00bb581535..10c83f4b18 100644 --- a/src/plugins/platforms/ios/qtmain.mm +++ b/src/plugins/platforms/ios/qtmain.mm @@ -58,9 +58,9 @@ extern int qt_main(int argc, char *argv[]); self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.rootViewController = [[[QIOSViewController alloc] init] autorelease]; - // Aid debugging during development +#ifdef QT_DEBUG self.window.backgroundColor = [UIColor cyanColor]; - self.window.rootViewController.view.backgroundColor = [UIColor magentaColor]; +#endif [self.window makeKeyAndVisible]; -- cgit v1.2.3 From 157d690b8c190f341f1fa4cb6aff4c044456e99f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 25 Dec 2012 22:56:42 +0100 Subject: iOS: Don't build qiosviewcontroller.mm into qtmain plugin It's already built as part of the iOS platform plugin. Change-Id: I5a97e8723b566b9ef15aafce374be35f01e6cf08 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qtmain.pro | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qtmain.pro b/src/plugins/platforms/ios/qtmain.pro index 5c290b6c00..cbcb272217 100644 --- a/src/plugins/platforms/ios/qtmain.pro +++ b/src/plugins/platforms/ios/qtmain.pro @@ -5,7 +5,4 @@ load(qt_plugin) QT += gui-private -OBJECTIVE_SOURCES = qtmain.mm \ - qiosviewcontroller.mm - -HEADERS = qiosviewcontroller.h +OBJECTIVE_SOURCES = qtmain.mm -- cgit v1.2.3 From 847ac6008ca02a9acb1f4bd2159c6e4cfa332961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 25 Dec 2012 00:21:25 +0100 Subject: iOS: Move handling of FBOs to QIOSContext instead of QIOSWindow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The lifetime of an FBO is tied to its context, so letting each window manage its own FBO failed when the window tried to delete the FBO at destruction time without the proper context being current, or even available anymore. We solve this by moving all handling of FBOs to the context itself, which is fine as we're exposing the necessary bits from the window to allocate storage based on its layer. Change-Id: I8c7c96cf63d6b667527c816f10ac2f4ff6a05e0c Reviewed-by: Tor Arne Vestbø Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qioscontext.h | 21 +++++-- src/plugins/platforms/ios/qioscontext.mm | 100 +++++++++++++++++++++++++++---- src/plugins/platforms/ios/qioswindow.h | 11 +--- src/plugins/platforms/ios/qioswindow.mm | 65 ++------------------ 4 files changed, 113 insertions(+), 84 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioscontext.h b/src/plugins/platforms/ios/qioscontext.h index b45917832c..082ec4794c 100644 --- a/src/plugins/platforms/ios/qioscontext.h +++ b/src/plugins/platforms/ios/qioscontext.h @@ -48,8 +48,10 @@ QT_BEGIN_NAMESPACE -class QIOSContext : public QPlatformOpenGLContext +class QIOSContext : public QObject, public QPlatformOpenGLContext { + Q_OBJECT + public: QIOSContext(QOpenGLContext *context); ~QIOSContext(); @@ -62,15 +64,26 @@ public: void doneCurrent(); GLuint defaultFramebufferObject(QPlatformSurface *) const; - GLuint defaultColorRenderbuffer(QPlatformSurface *) const; - QFunctionPointer getProcAddress(const QByteArray &procName); - EAGLContext *nativeContext() const; +private Q_SLOTS: + void windowDestroyed(QObject *object); private: EAGLContext *m_eaglContext; QSurfaceFormat m_format; + + struct FramebufferObject { + GLuint handle; + GLuint colorRenderbuffer; + GLuint depthRenderbuffer; + GLint renderbufferWidth; + GLint renderbufferHeight; + }; + + static void deleteBuffers(const FramebufferObject &framebufferObject); + + mutable QHash m_framebufferObjects; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioscontext.mm b/src/plugins/platforms/ios/qioscontext.mm index 00629a84ab..dc431b57dd 100644 --- a/src/plugins/platforms/ios/qioscontext.mm +++ b/src/plugins/platforms/ios/qioscontext.mm @@ -70,12 +70,25 @@ QIOSContext::QIOSContext(QOpenGLContext *context) QIOSContext::~QIOSContext() { - if ([EAGLContext currentContext] == m_eaglContext) - doneCurrent(); + [EAGLContext setCurrentContext:m_eaglContext]; + + foreach (const FramebufferObject &framebufferObject, m_framebufferObjects) + deleteBuffers(framebufferObject); + [EAGLContext setCurrentContext:nil]; [m_eaglContext release]; } +void QIOSContext::deleteBuffers(const FramebufferObject &framebufferObject) +{ + if (framebufferObject.handle) + glDeleteFramebuffers(1, &framebufferObject.handle); + if (framebufferObject.colorRenderbuffer) + glDeleteRenderbuffers(1, &framebufferObject.colorRenderbuffer); + if (framebufferObject.depthRenderbuffer) + glDeleteRenderbuffers(1, &framebufferObject.depthRenderbuffer); +} + QSurfaceFormat QIOSContext::format() const { return m_format; @@ -88,8 +101,7 @@ bool QIOSContext::makeCurrent(QPlatformSurface *surface) [EAGLContext setCurrentContext:m_eaglContext]; glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebufferObject(surface)); - // Ensures render buffers are set up and match the size of the window - return defaultColorRenderbuffer(surface) != 0; + return true; } void QIOSContext::doneCurrent() @@ -100,20 +112,86 @@ void QIOSContext::doneCurrent() void QIOSContext::swapBuffers(QPlatformSurface *surface) { Q_ASSERT(surface && surface->surface()->surfaceType() == QSurface::OpenGLSurface); + Q_ASSERT(surface->surface()->surfaceClass() == QSurface::Window); + QWindow *window = static_cast(surface->surface()); + Q_ASSERT(m_framebufferObjects.contains(window)); [EAGLContext setCurrentContext:m_eaglContext]; - glBindRenderbuffer(GL_RENDERBUFFER, defaultColorRenderbuffer(surface)); + glBindRenderbuffer(GL_RENDERBUFFER, m_framebufferObjects[window].colorRenderbuffer); [m_eaglContext presentRenderbuffer:GL_RENDERBUFFER]; } GLuint QIOSContext::defaultFramebufferObject(QPlatformSurface *surface) const { - return static_cast(surface)->framebufferObject(*this); + Q_ASSERT(surface && surface->surface()->surfaceClass() == QSurface::Window); + QWindow *window = static_cast(surface->surface()); + + FramebufferObject &framebufferObject = m_framebufferObjects[window]; + + // Set up an FBO for the window if it hasn't been created yet + if (!framebufferObject.handle) { + [EAGLContext setCurrentContext:m_eaglContext]; + + glGenFramebuffers(1, &framebufferObject.handle); + glBindFramebuffer(GL_FRAMEBUFFER, framebufferObject.handle); + + glGenRenderbuffers(1, &framebufferObject.colorRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, framebufferObject.colorRenderbuffer); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, + framebufferObject.colorRenderbuffer); + + if (m_format.depthBufferSize() > 0 || m_format.stencilBufferSize() > 0) { + glGenRenderbuffers(1, &framebufferObject.depthRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, framebufferObject.depthRenderbuffer); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, + framebufferObject.depthRenderbuffer); + + if (m_format.stencilBufferSize() > 0) + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, + framebufferObject.depthRenderbuffer); + } + + connect(window, SIGNAL(destroyed(QObject*)), this, SLOT(windowDestroyed(QObject*))); + } + + // Ensure that the FBO's buffers match the size of the window + QIOSWindow *platformWindow = static_cast(surface); + if (framebufferObject.renderbufferWidth != platformWindow->effectiveWidth() || + framebufferObject.renderbufferHeight != platformWindow->effectiveHeight()) { + + glBindRenderbuffer(GL_RENDERBUFFER, framebufferObject.colorRenderbuffer); + CAEAGLLayer *layer = static_cast(platformWindow->nativeView().layer); + [m_eaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer]; + + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &framebufferObject.renderbufferWidth); + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &framebufferObject.renderbufferHeight); + + if (framebufferObject.depthRenderbuffer) { + glBindRenderbuffer(GL_RENDERBUFFER, framebufferObject.depthRenderbuffer); + + // FIXME: Support more fine grained control over depth/stencil buffer sizes + if (m_format.stencilBufferSize() > 0) + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, + framebufferObject.renderbufferWidth, framebufferObject.renderbufferHeight); + else + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, + framebufferObject.renderbufferWidth, framebufferObject.renderbufferHeight); + } + + if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) + NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER)); + } + + return framebufferObject.handle; } -GLuint QIOSContext::defaultColorRenderbuffer(QPlatformSurface *surface) const +void QIOSContext::windowDestroyed(QObject *object) { - return static_cast(surface)->colorRenderbuffer(*this); + QWindow *window = static_cast(object); + if (m_framebufferObjects.contains(window)) { + deleteBuffers(m_framebufferObjects[window]); + m_framebufferObjects.remove(window); + } } QFunctionPointer QIOSContext::getProcAddress(const QByteArray& functionName) @@ -121,7 +199,5 @@ QFunctionPointer QIOSContext::getProcAddress(const QByteArray& functionName) return reinterpret_cast(dlsym(RTLD_NEXT, functionName.constData())); } -EAGLContext *QIOSContext::nativeContext() const -{ - return m_eaglContext; -} +#include "moc_qioscontext.cpp" + diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 63099682f1..1f36c525ce 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -67,9 +67,9 @@ public: void handleContentOrientationChange(Qt::ScreenOrientation orientation); void setVisible(bool visible); - GLuint framebufferObject(const QIOSContext &context) const; - GLuint colorRenderbuffer(const QIOSContext &context) const; qreal devicePixelRatio() const; + int effectiveWidth() const; + int effectiveHeight() const; UIView *nativeView() const { return m_view; } @@ -77,13 +77,6 @@ private: UIView *m_view; QRect m_requestedGeometry; - mutable struct GLData { - GLuint framebufferObject; - GLuint colorRenderbuffer; - GLuint depthRenderbuffer; - GLint renderbufferWidth; - GLint renderbufferHeight; - } m_glData; qreal m_devicePixelRatio; }; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 9c814ac924..88debb7c33 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -229,7 +229,6 @@ QIOSWindow::QIOSWindow(QWindow *window) : QPlatformWindow(window) , m_view([[EAGLView alloc] initWithQIOSWindow:this]) , m_requestedGeometry(QPlatformWindow::geometry()) - , m_glData() , m_devicePixelRatio(1.0) { if (isQtApplication()) @@ -249,13 +248,6 @@ QIOSWindow::QIOSWindow(QWindow *window) QIOSWindow::~QIOSWindow() { - if (m_glData.framebufferObject) - glDeleteFramebuffers(1, &m_glData.framebufferObject); - if (m_glData.colorRenderbuffer) - glDeleteRenderbuffers(1, &m_glData.colorRenderbuffer); - if (m_glData.depthRenderbuffer) - glDeleteRenderbuffers(1, &m_glData.depthRenderbuffer); - [m_view removeFromSuperview]; [m_view release]; } @@ -325,64 +317,19 @@ void QIOSWindow::handleContentOrientationChange(Qt::ScreenOrientation orientatio [[UIApplication sharedApplication] setStatusBarOrientation:uiOrientation animated:NO]; } -GLuint QIOSWindow::framebufferObject(const QIOSContext &context) const +qreal QIOSWindow::devicePixelRatio() const { - if (!m_glData.framebufferObject) { - [EAGLContext setCurrentContext:context.nativeContext()]; - - glGenFramebuffers(1, &m_glData.framebufferObject); - glBindFramebuffer(GL_FRAMEBUFFER, m_glData.framebufferObject); - - glGenRenderbuffers(1, &m_glData.colorRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, m_glData.colorRenderbuffer); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_glData.colorRenderbuffer); - - QSurfaceFormat requestedFormat = context.format(); - if (requestedFormat.depthBufferSize() > 0 || requestedFormat.stencilBufferSize() > 0) { - glGenRenderbuffers(1, &m_glData.depthRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, m_glData.depthRenderbuffer); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_glData.depthRenderbuffer); - - if (requestedFormat.stencilBufferSize() > 0) - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, m_glData.depthRenderbuffer); - } - } - - return m_glData.framebufferObject; + return m_devicePixelRatio; } -GLuint QIOSWindow::colorRenderbuffer(const QIOSContext &context) const +int QIOSWindow::effectiveWidth() const { - if (!m_glData.colorRenderbuffer || - m_glData.renderbufferWidth != geometry().width() * m_devicePixelRatio || - m_glData.renderbufferHeight != geometry().height() * m_devicePixelRatio) { - - glBindRenderbuffer(GL_RENDERBUFFER, m_glData.colorRenderbuffer); - [context.nativeContext() renderbufferStorage:GL_RENDERBUFFER fromDrawable:static_cast(m_view.layer)]; - - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &m_glData.renderbufferWidth); - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &m_glData.renderbufferHeight); - - if (m_glData.depthRenderbuffer) { - glBindRenderbuffer(GL_RENDERBUFFER, m_glData.depthRenderbuffer); - - // FIXME: Support more fine grained control over depth/stencil buffer sizes - if (context.format().stencilBufferSize() > 0) - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, m_glData.renderbufferWidth, m_glData.renderbufferHeight); - else - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, m_glData.renderbufferWidth, m_glData.renderbufferHeight); - } - - if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) - NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER)); - } - - return m_glData.colorRenderbuffer; + return geometry().width() * m_devicePixelRatio; } -qreal QIOSWindow::devicePixelRatio() const +int QIOSWindow::effectiveHeight() const { - return m_devicePixelRatio; + return geometry().height() * m_devicePixelRatio; } QT_END_NAMESPACE -- cgit v1.2.3 From 16e8eca3621b89730f13e07c258fb8a4ae68a1ce Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 2 Jan 2013 11:03:59 +0100 Subject: iOS: transfer focus to the window touched MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since our QWindows are UIViews rather than UIWindows, we need to implement window activation manually. This patch will ensure that the window touched by the user also gets keyboard focus. Change-Id: I9390c5c8e50a4b066cd1320a2a044e02f2a9f75d Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.mm | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 88debb7c33..c7c27c08ce 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -151,6 +151,11 @@ - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + // Transfer focus to the touched window: + QWindow *window = m_qioswindow->window(); + if (window != QGuiApplication::focusWindow()) + QWindowSystemInterface::handleWindowActivated(window); + [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::LeftButton]; } -- cgit v1.2.3 From 7150e8f51f44b6299728c5bdfb8cb5b54b8d1141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 14 Jan 2013 15:41:33 +0100 Subject: iOS: Use 72 DPI for font size conversion This matches how UIKit behaves Change-Id: I13fd2578cac84e57b6be29c42ddee414b7ee9cb9 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosscreen.h | 1 + src/plugins/platforms/ios/qiosscreen.mm | 5 +++++ 2 files changed, 6 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index 762c60e6da..bbc3eb7432 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -63,6 +63,7 @@ public: int depth() const; QImage::Format format() const; QSizeF physicalSize() const; + QDpi logicalDpi() const; Qt::ScreenOrientation nativeOrientation() const; Qt::ScreenOrientation orientation() const; diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 5905f1630e..f3585407ce 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -178,6 +178,11 @@ QSizeF QIOSScreen::physicalSize() const return m_physicalSize; } +QDpi QIOSScreen::logicalDpi() const +{ + return QDpi(72, 72); +} + Qt::ScreenOrientation QIOSScreen::nativeOrientation() const { return Qt::PortraitOrientation; -- cgit v1.2.3 From 355f064ec97cf61c7041a6d32f198a6bde800e6e Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 2 Jan 2013 12:53:43 +0100 Subject: iOS: implement QPlatformWindow::raise() and lower() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Probably not going to be the most used functions on iOS, but implemented to support old widget apps out of the box. The implementation stacks both staysOnTop and popup windows on the same level for simplicity, since iOS does not have a concept of z-ordering UIViews (UILayer has z-order, but layers belong in a different hierarchy, and cannot be used in this respect). Change-Id: Idd68e5ceea7d4eaeb3066486c47400930cebb1b0 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 5 +++++ src/plugins/platforms/ios/qioswindow.mm | 32 +++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 1f36c525ce..e7b04c53eb 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -67,6 +67,9 @@ public: void handleContentOrientationChange(Qt::ScreenOrientation orientation); void setVisible(bool visible); + void raise() { raiseOrLower(true); } + void lower() { raiseOrLower(false); } + qreal devicePixelRatio() const; int effectiveWidth() const; int effectiveHeight() const; @@ -78,6 +81,8 @@ private: QRect m_requestedGeometry; qreal m_devicePixelRatio; + + void raiseOrLower(bool raise); }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index c7c27c08ce..5bb5048b0a 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -153,8 +153,10 @@ { // Transfer focus to the touched window: QWindow *window = m_qioswindow->window(); - if (window != QGuiApplication::focusWindow()) + if (window != QGuiApplication::focusWindow()) { + m_qioswindow->raise(); QWindowSystemInterface::handleWindowActivated(window); + } [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::LeftButton]; } @@ -314,6 +316,34 @@ void QIOSWindow::setWindowState(Qt::WindowState state) } } +void QIOSWindow::raiseOrLower(bool raise) +{ + // Re-insert m_view at the correct index among its sibling views (QWindows), and ensure + // that window flags (staysOnTop, popup) are respected. This function assumes that all + // sibling views are sorted correctly. Note: We sort popup and staysOnTop windows at + // the same level: + if (!isQtApplication()) + return; + + NSArray *subviews = m_view.superview.subviews; + if (subviews.count == 1) + return; + + const Qt::WindowFlags topFlag = (Qt::Popup | Qt::WindowStaysOnTopHint) & ~Qt::Dialog; + bool thisWindowIsTop = topFlag & window()->flags(); + + for (int i = int(subviews.count) - 1; i >= 0; --i) { + UIView *view = static_cast([subviews objectAtIndex:i]); + bool otherWindowIsTop = topFlag & view.qwindow->flags(); + if ((raise && (thisWindowIsTop || !otherWindowIsTop)) + || (!raise && (thisWindowIsTop && !otherWindowIsTop))) { + [m_view.superview insertSubview:m_view aboveSubview:view]; + return; + } + } + [m_view.superview insertSubview:m_view atIndex:0]; +} + void QIOSWindow::handleContentOrientationChange(Qt::ScreenOrientation orientation) { // Keep the status bar in sync with content orientation. This will ensure -- cgit v1.2.3 From e83bed82c1b58cde1f9a49ad4e4b86d8a13304f1 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 15 Jan 2013 13:22:01 +0100 Subject: iOS: raise windows that becomes visible MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a QWindow becomes visible, it should move to front and be active. Change-Id: Icab12c6031c0cc8d791e4f8cc49b9c2d5c73100d Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.mm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 5bb5048b0a..488962ab66 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -264,7 +264,15 @@ void QIOSWindow::setVisible(bool visible) QPlatformWindow::setVisible(visible); m_view.hidden = !visible; - if (isQtApplication() && !visible) { + if (!isQtApplication()) + return; + + // Since iOS doesn't do window management the way a Qt application + // expects, we need to raise and activate windows ourselves: + if (visible) { + raise(); + QWindowSystemInterface::handleWindowActivated(window()); + } else { // Activate top-most visible QWindow: NSArray *subviews = rootViewController().view.subviews; for (int i = int(subviews.count) - 1; i >= 0; --i) { -- cgit v1.2.3 From 73e879660376a40fd21ded84020f2e527f22cd13 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 15 Jan 2013 14:30:20 +0100 Subject: iOS: implement QPlatformWindow::requestActivateWindow() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dispite the name, 'requestActivateWindow' means raise and transfer focus to the window. Change-Id: Ib97321ed7ec8da90e924ff8155a95896c12160c9 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 1 + src/plugins/platforms/ios/qioswindow.mm | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index e7b04c53eb..01c1978a56 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -69,6 +69,7 @@ public: void raise() { raiseOrLower(true); } void lower() { raiseOrLower(false); } + void requestActivateWindow(); qreal devicePixelRatio() const; int effectiveWidth() const; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 488962ab66..59f82fb64e 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -153,10 +153,8 @@ { // Transfer focus to the touched window: QWindow *window = m_qioswindow->window(); - if (window != QGuiApplication::focusWindow()) { - m_qioswindow->raise(); - QWindowSystemInterface::handleWindowActivated(window); - } + if (window != QGuiApplication::focusWindow()) + m_qioswindow->requestActivateWindow(); [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::LeftButton]; } @@ -270,8 +268,7 @@ void QIOSWindow::setVisible(bool visible) // Since iOS doesn't do window management the way a Qt application // expects, we need to raise and activate windows ourselves: if (visible) { - raise(); - QWindowSystemInterface::handleWindowActivated(window()); + requestActivateWindow(); } else { // Activate top-most visible QWindow: NSArray *subviews = rootViewController().view.subviews; @@ -279,7 +276,7 @@ void QIOSWindow::setVisible(bool visible) UIView *view = [subviews objectAtIndex:i]; if (!view.hidden) { if (QWindow *window = view.qwindow) { - QWindowSystemInterface::handleWindowActivated(window); + static_cast(window->handle())->requestActivateWindow(); break; } } @@ -324,6 +321,15 @@ void QIOSWindow::setWindowState(Qt::WindowState state) } } +void QIOSWindow::requestActivateWindow() +{ + // Note that several windows can be active at the same time if they exist in the same + // hierarchy (transient children). But only one window can be QGuiApplication::focusWindow(). + // Dispite the name, 'requestActivateWindow' means raise and transfer focus to the window: + raise(); + QPlatformWindow::requestActivateWindow(); +} + void QIOSWindow::raiseOrLower(bool raise) { // Re-insert m_view at the correct index among its sibling views (QWindows), and ensure -- cgit v1.2.3 From 0a9a4e826fc0a3909481f40d77708a86be55a345 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 16 Jan 2013 10:42:31 +0100 Subject: iOS: let first responder follow the view of the focus window MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This to ensure that the keyboard does not close prematurly. This can happen if the user opens up the keyboard while typing inside one window, then switch window, continue typing while the other window gets deleted. Change-Id: I5cfb1673ccbe4d5aaa14167b7aa53451031089a1 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosinputcontext.h | 3 +++ src/plugins/platforms/ios/qiosinputcontext.mm | 33 ++++++++++++--------------- src/plugins/platforms/ios/qioswindow.mm | 5 ++++ 3 files changed, 23 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosinputcontext.h b/src/plugins/platforms/ios/qiosinputcontext.h index ceed5ffaf2..176ad05733 100644 --- a/src/plugins/platforms/ios/qiosinputcontext.h +++ b/src/plugins/platforms/ios/qiosinputcontext.h @@ -61,8 +61,11 @@ public: void hideInputPanel(); bool isInputPanelVisible() const; + void focusViewChanged(UIView *view); + private: QIOSKeyboardListener *m_keyboardListener; + UIView *m_focusView; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosinputcontext.mm b/src/plugins/platforms/ios/qiosinputcontext.mm index 89d210cb54..c0ff3b2531 100644 --- a/src/plugins/platforms/ios/qiosinputcontext.mm +++ b/src/plugins/platforms/ios/qiosinputcontext.mm @@ -98,12 +98,14 @@ QIOSInputContext::QIOSInputContext() : QPlatformInputContext() , m_keyboardListener([[QIOSKeyboardListener alloc] initWithQIOSInputContext:this]) + , m_focusView(0) { } QIOSInputContext::~QIOSInputContext() { [m_keyboardListener release]; + [m_focusView release]; } QRectF QIOSInputContext::keyboardRect() const @@ -113,33 +115,28 @@ QRectF QIOSInputContext::keyboardRect() const void QIOSInputContext::showInputPanel() { - if (isInputPanelVisible()) - return; - // Documentation tells that one should call (and recall, if necessary) becomeFirstResponder/resignFirstResponder // to show/hide the keyboard. This is slightly inconvenient, since there exist no API to get the current first - // responder. Rather than searching for it from the top, we assume that the view backing the focus window in Qt - // is the best candidate as long as there exist no first responder from before (which the isInputPanelVisible - // test on top should catch). Note that Qt will forward keyevents to whichever QObject that needs it, regardless of - // which UIView the input actually came from. So in this respect, we're undermining iOS' responder chain. - if (QWindow *window = QGuiApplication::focusWindow()) { - QIOSWindow *qiosWindow = static_cast(window->handle()); - [qiosWindow->nativeView() becomeFirstResponder]; - } + // responder. Rather than searching for it from the top, we let the active QIOSWindow tell us which view to use. + // Note that Qt will forward keyevents to whichever QObject that needs it, regardless of which UIView the input + // actually came from. So in this respect, we're undermining iOS' responder chain. + [m_focusView becomeFirstResponder]; } void QIOSInputContext::hideInputPanel() { - if (!isInputPanelVisible()) - return; - - if (QWindow *window = QGuiApplication::focusWindow()) { - QIOSWindow *qiosWindow = static_cast(window->handle()); - [qiosWindow->nativeView() resignFirstResponder]; - } + [m_focusView resignFirstResponder]; } bool QIOSInputContext::isInputPanelVisible() const { return m_keyboardListener->m_keyboardVisible; } + +void QIOSInputContext::focusViewChanged(UIView *view) +{ + if ([m_focusView isFirstResponder]) + [view becomeFirstResponder]; + [m_focusView release]; + m_focusView = [view retain]; +} diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 59f82fb64e..c5d9cbe323 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -42,9 +42,12 @@ #include "qiosglobal.h" #include "qioswindow.h" #include "qioscontext.h" +#include "qiosinputcontext.h" #include "qiosscreen.h" #include "qiosapplicationdelegate.h" #include "qiosviewcontroller.h" +#include +#include #import @@ -327,6 +330,8 @@ void QIOSWindow::requestActivateWindow() // hierarchy (transient children). But only one window can be QGuiApplication::focusWindow(). // Dispite the name, 'requestActivateWindow' means raise and transfer focus to the window: raise(); + QPlatformInputContext *context = QGuiApplicationPrivate::platformIntegration()->inputContext(); + static_cast(context)->focusViewChanged(m_view); QPlatformWindow::requestActivateWindow(); } -- cgit v1.2.3 From f2c52d65608d238ad35ca91099a8751e0c37ef52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Tue, 22 Jan 2013 12:00:19 +0100 Subject: iOS: Implement touch events. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Track touch events during the standard [Began -> Moved -> Ended] event sequence based on the UITouch pointer which stays constant. Enable multiTouch on Qt's UIView. Mouse events should now be automatically created from (unhanded) touch events by QGuiApplication. Reviewed by: Ada Sørvig (fingerpaint app approved) Change-Id: I2aeb48c962c697d8b8337f8ceab062070c2a4240 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosintegration.h | 3 + src/plugins/platforms/ios/qiosintegration.mm | 11 +++ src/plugins/platforms/ios/qioswindow.h | 9 +++ src/plugins/platforms/ios/qioswindow.mm | 106 ++++++++++++++++++++++++--- 4 files changed, 118 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index 5ba97bff6e..054933ea44 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -44,6 +44,7 @@ #include #include +#include QT_BEGIN_NAMESPACE @@ -71,10 +72,12 @@ public: void *nativeResourceForWindow(const QByteArray &resource, QWindow *window); + QTouchDevice *touchDevice(); private: QPlatformFontDatabase *m_fontDatabase; QPlatformInputContext *m_inputContext; QPlatformScreen *m_screen; + QTouchDevice *m_touchDevice; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 8008c5c0b0..cbe2717c34 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -72,10 +72,16 @@ QIOSIntegration::QIOSIntegration() } screenAdded(m_screen); + + m_touchDevice = new QTouchDevice; + m_touchDevice->setType(QTouchDevice::TouchScreen); + m_touchDevice->setCapabilities(QTouchDevice::Position | QTouchDevice::NormalizedPosition); + QWindowSystemInterface::registerTouchDevice(m_touchDevice); } QIOSIntegration::~QIOSIntegration() { + delete m_touchDevice; } QPlatformWindow *QIOSIntegration::createPlatformWindow(QWindow *window) const @@ -157,4 +163,9 @@ void *QIOSIntegration::nativeResourceForWindow(const QByteArray &resource, QWind return 0; } +QTouchDevice *QIOSIntegration::touchDevice() +{ + return m_touchDevice; +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 01c1978a56..b3a94a8d0e 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -43,6 +43,7 @@ #define QIOSWINDOW_H #include +#include #import @@ -77,8 +78,16 @@ public: UIView *nativeView() const { return m_view; } + QList &touchPoints() { return m_touchPoints; } + QHash &activeTouches() { return m_activeTouches; } + int &touchId() { return m_touchId; } + private: UIView *m_view; + QList m_touchPoints; + QHash m_activeTouches; + int m_touchId; + QRect m_requestedGeometry; qreal m_devicePixelRatio; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index c5d9cbe323..91e75bc660 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -46,6 +46,7 @@ #include "qiosscreen.h" #include "qiosapplicationdelegate.h" #include "qiosviewcontroller.h" +#include "qiosintegration.h" #include #include @@ -115,6 +116,8 @@ if (isQtApplication()) self.hidden = YES; + + self.multipleTouchEnabled = YES; } return self; @@ -142,39 +145,119 @@ [super layoutSubviews]; } -- (void)sendMouseEventForTouches:(NSSet *)touches withEvent:(UIEvent *)event fakeButtons:(Qt::MouseButtons)buttons +/* + Touch handling: + + UIKit generates [Began -> Moved -> Ended] event sequences for + each touch point. The iOS plugin tracks each individual + touch and assigns it an id for use by Qt. The id counter is + incremented on each began and decrement as follows: + 1) by one when the most recent touch ends. + 2) to zero when all touches ends. + + The TouchPoint list is reused between events. +*/ +- (void)updateTouchList:(NSSet *)touches withState:(Qt::TouchPointState)state { - UITouch *touch = [touches anyObject]; - CGPoint locationInView = [touch locationInView:self]; - QPoint p(locationInView.x , locationInView.y); + QList &touchPoints = m_qioswindow->touchPoints(); + QHash &activeTouches = m_qioswindow->activeTouches(); + + // Mark all touch points as stationary + for (QList::iterator it = touchPoints.begin(); it != touchPoints.end(); ++it) + it->state = Qt::TouchPointStationary; + + // Update changed touch points with the new state + for (UITouch *touch in touches) { + const int touchId = activeTouches.value(touch); + QWindowSystemInterface::TouchPoint &touchPoint = touchPoints[touchId]; + touchPoint.state = state; + if (state == Qt::TouchPointPressed) + touchPoint.pressure = 1.0; + else if (state == Qt::TouchPointReleased) + touchPoint.pressure = 0.0; + + // Set position + CGPoint location = [touch locationInView:self]; + touchPoint.area = QRectF(location.x, location.y, 0, 0); + QSize viewSize = fromCGRect(self.frame).size(); + touchPoint.normalPosition = QPointF(location.x / viewSize.width(), location.y / viewSize.height()); + } +} - // TODO handle global touch point? for status bar? - QWindowSystemInterface::handleMouseEvent(m_qioswindow->window(), (ulong)(event.timestamp*1000), p, p, buttons); +- (void) sendTouchEventWithTimestamp:(ulong)timeStamp +{ + // Send touch event synchronously + QIOSIntegration *iosIntegration = static_cast(QGuiApplicationPrivate::platformIntegration()); + QWindowSystemInterface::handleTouchEvent(m_qioswindow->window(), timeStamp, + iosIntegration->touchDevice(), m_qioswindow->touchPoints()); + QWindowSystemInterface::flushWindowSystemEvents(); } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - // Transfer focus to the touched window: QWindow *window = m_qioswindow->window(); + + // Transfer focus to the touched window: if (window != QGuiApplication::focusWindow()) m_qioswindow->requestActivateWindow(); - [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::LeftButton]; + // Track Cocoa touch id to Qt touch id. The UITouch pointer is constant + // for the touch duration. + QHash &activeTouches = m_qioswindow->activeTouches(); + QList &touchPoints = m_qioswindow->touchPoints(); + for (UITouch *touch in touches) + activeTouches.insert(touch, m_qioswindow->touchId()++); + + // Create new touch points if needed. + int newTouchPointsNeeded = m_qioswindow->touchId() - touchPoints.count(); + for (int i = 0; i < newTouchPointsNeeded; ++i) { + QWindowSystemInterface::TouchPoint touchPoint; + touchPoint.id = touchPoints.count(); // id is the index in the touchPoints list. + touchPoints.append(touchPoint); + } + + [self updateTouchList:touches withState:Qt::TouchPointPressed]; + [self sendTouchEventWithTimestamp:ulong(event.timestamp * 1000)]; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { - [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::LeftButton]; + [self updateTouchList:touches withState:Qt::TouchPointMoved]; + [self sendTouchEventWithTimestamp:ulong(event.timestamp * 1000)]; } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::NoButton]; + [self updateTouchList:touches withState:Qt::TouchPointReleased]; + [self sendTouchEventWithTimestamp:ulong(event.timestamp * 1000)]; + + // Remove ended touch points from the active set (event processing has completed at this point) + QHash &activeTouches = m_qioswindow->activeTouches(); + for (UITouch *touch in touches) { + int id = activeTouches.take(touch); + + // If this touch is the most recent touch we can reuse its id + if (id == m_qioswindow->touchId() - 1) + --m_qioswindow->touchId(); + } + + // Reset the touch id when there are no more active touches + if (activeTouches.isEmpty()) + m_qioswindow->touchId() = 0; } - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { - [self sendMouseEventForTouches:touches withEvent:event fakeButtons:Qt::NoButton]; + Q_UNUSED(touches) // ### can a subset of the active touches be cancelled? + + // Clear current touch points + m_qioswindow->activeTouches().clear(); + m_qioswindow->touchId() = 0; + + // Send cancel touch event synchronously + QIOSIntegration *iosIntegration = static_cast(QGuiApplicationPrivate::platformIntegration()); + QWindowSystemInterface::handleTouchCancelEvent(m_qioswindow->window(), ulong(event.timestamp * 1000), iosIntegration->touchDevice()); + QWindowSystemInterface::flushWindowSystemEvents(); } @synthesize autocapitalizationType; @@ -236,6 +319,7 @@ QT_BEGIN_NAMESPACE QIOSWindow::QIOSWindow(QWindow *window) : QPlatformWindow(window) , m_view([[EAGLView alloc] initWithQIOSWindow:this]) + , m_touchId(0) , m_requestedGeometry(QPlatformWindow::geometry()) , m_devicePixelRatio(1.0) { -- cgit v1.2.3 From 38e6d5a91588bfe823ff6bcb19bd356965d328f7 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 25 Jan 2013 11:49:34 +0100 Subject: iOS: add QIOSWindow::windowLevel() to simplify window stacking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When adding modal windows into the mix, raiseOrLower became even more messy to write. So do it the usual way instead, and add a windowLevel variable to each QIOSWindow that we can sort on. The code becomes more readable, and we can handle more window types correctly. Change-Id: I348352473a7d8cf9909c17c1b074b2fe3fab9819 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 3 ++- src/plugins/platforms/ios/qioswindow.mm | 42 +++++++++++++++++++++++++-------- 2 files changed, 34 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index b3a94a8d0e..2d7c4c9103 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -89,10 +89,11 @@ private: int m_touchId; QRect m_requestedGeometry; - + int m_windowLevel; qreal m_devicePixelRatio; void raiseOrLower(bool raise); + void updateWindowLevel(); }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 91e75bc660..4aa6b8a24e 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -321,6 +321,7 @@ QIOSWindow::QIOSWindow(QWindow *window) , m_view([[EAGLView alloc] initWithQIOSWindow:this]) , m_touchId(0) , m_requestedGeometry(QPlatformWindow::geometry()) + , m_windowLevel(0) , m_devicePixelRatio(1.0) { if (isQtApplication()) @@ -355,6 +356,7 @@ void QIOSWindow::setVisible(bool visible) // Since iOS doesn't do window management the way a Qt application // expects, we need to raise and activate windows ourselves: if (visible) { + updateWindowLevel(); requestActivateWindow(); } else { // Activate top-most visible QWindow: @@ -421,10 +423,8 @@ void QIOSWindow::requestActivateWindow() void QIOSWindow::raiseOrLower(bool raise) { - // Re-insert m_view at the correct index among its sibling views (QWindows), and ensure - // that window flags (staysOnTop, popup) are respected. This function assumes that all - // sibling views are sorted correctly. Note: We sort popup and staysOnTop windows at - // the same level: + // Re-insert m_view at the correct index among its sibling views + // (QWindows) according to their current m_windowLevel: if (!isQtApplication()) return; @@ -432,14 +432,12 @@ void QIOSWindow::raiseOrLower(bool raise) if (subviews.count == 1) return; - const Qt::WindowFlags topFlag = (Qt::Popup | Qt::WindowStaysOnTopHint) & ~Qt::Dialog; - bool thisWindowIsTop = topFlag & window()->flags(); - for (int i = int(subviews.count) - 1; i >= 0; --i) { UIView *view = static_cast([subviews objectAtIndex:i]); - bool otherWindowIsTop = topFlag & view.qwindow->flags(); - if ((raise && (thisWindowIsTop || !otherWindowIsTop)) - || (!raise && (thisWindowIsTop && !otherWindowIsTop))) { + if (view.hidden || view == m_view) + continue; + int level = static_cast(view.qwindow->handle())->m_windowLevel; + if (m_windowLevel > level || (raise && m_windowLevel == level)) { [m_view.superview insertSubview:m_view aboveSubview:view]; return; } @@ -447,6 +445,30 @@ void QIOSWindow::raiseOrLower(bool raise) [m_view.superview insertSubview:m_view atIndex:0]; } +void QIOSWindow::updateWindowLevel() +{ + Qt::WindowType type = static_cast(int(window()->flags() & Qt::WindowType_Mask)); + + if (type == Qt::ToolTip) + m_windowLevel = 120; + else if (window()->flags() & Qt::WindowStaysOnTopHint) + m_windowLevel = 100; + else if (window()->isModal()) + m_windowLevel = 30; + else if (type & Qt::Popup & ~Qt::Window) + m_windowLevel = 20; + else if (type == Qt::Tool) + m_windowLevel = 10; + else + m_windowLevel = 0; + + // A window should be in at least the same m_windowLevel as its parent: + QWindow *transientParent = window()->transientParent(); + QIOSWindow *transientParentWindow = transientParent ? static_cast(transientParent->handle()) : 0; + if (transientParentWindow) + m_windowLevel = qMax(transientParentWindow->m_windowLevel, m_windowLevel); +} + void QIOSWindow::handleContentOrientationChange(Qt::ScreenOrientation orientation) { // Keep the status bar in sync with content orientation. This will ensure -- cgit v1.2.3 From 58415530aacc5ef92f0076f7dff04d4f5074c4da Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 25 Jan 2013 11:00:54 +0100 Subject: iOS: avoid activating modally blocked windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make sure that the user cannot activate a window that is modally shaddowed. Change-Id: Ib92be319d017460bbc1ef63ad7556cb4758dfa6c Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 1 + src/plugins/platforms/ios/qioswindow.mm | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 2d7c4c9103..31fd8d3185 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -94,6 +94,7 @@ private: void raiseOrLower(bool raise); void updateWindowLevel(); + bool blockedByModal(); }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 4aa6b8a24e..9bc2541715 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -345,6 +345,12 @@ QIOSWindow::~QIOSWindow() [m_view release]; } +bool QIOSWindow::blockedByModal() +{ + QWindow *modalWindow = QGuiApplication::modalWindow(); + return modalWindow && modalWindow != window(); +} + void QIOSWindow::setVisible(bool visible) { QPlatformWindow::setVisible(visible); @@ -355,8 +361,16 @@ void QIOSWindow::setVisible(bool visible) // Since iOS doesn't do window management the way a Qt application // expects, we need to raise and activate windows ourselves: - if (visible) { + if (visible) updateWindowLevel(); + + if (blockedByModal()) { + if (visible) + raise(); + return; + } + + if (visible) { requestActivateWindow(); } else { // Activate top-most visible QWindow: @@ -415,6 +429,9 @@ void QIOSWindow::requestActivateWindow() // Note that several windows can be active at the same time if they exist in the same // hierarchy (transient children). But only one window can be QGuiApplication::focusWindow(). // Dispite the name, 'requestActivateWindow' means raise and transfer focus to the window: + if (blockedByModal()) + return; + raise(); QPlatformInputContext *context = QGuiApplicationPrivate::platformIntegration()->inputContext(); static_cast(context)->focusViewChanged(m_view); -- cgit v1.2.3 From 60685407c208466c67830744808b8a902bd2377b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Wed, 30 Jan 2013 20:31:06 +0100 Subject: iOS: Enable retina resolution for styles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The QStyle code uses the global qApp->devicePixelRatio(), which queries the screen, not the window. Implement QIOSScreen::devicePixelRatio(). Change-Id: I0091e5793f8d07ab7a46b6de443edd9457dcff85 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosscreen.h | 1 + src/plugins/platforms/ios/qiosscreen.mm | 5 +++++ 2 files changed, 6 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index bbc3eb7432..40c7a3ccf7 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -64,6 +64,7 @@ public: QImage::Format format() const; QSizeF physicalSize() const; QDpi logicalDpi() const; + qreal devicePixelRatio() const; Qt::ScreenOrientation nativeOrientation() const; Qt::ScreenOrientation orientation() const; diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index f3585407ce..5cee5a3362 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -183,6 +183,11 @@ QDpi QIOSScreen::logicalDpi() const return QDpi(72, 72); } +qreal QIOSScreen::devicePixelRatio() const +{ + return [m_uiScreen scale]; +} + Qt::ScreenOrientation QIOSScreen::nativeOrientation() const { return Qt::PortraitOrientation; -- cgit v1.2.3 From 4993d3ed6bff681889faec3711fffa2400b7a601 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 6 Feb 2013 11:34:14 +0100 Subject: iOS: implement QIOSWindow::winId() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I3dd7accae43bcf7d4d6dfd8b272ab65d67bd935c Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioscontext.mm | 3 ++- src/plugins/platforms/ios/qiosintegration.mm | 2 +- src/plugins/platforms/ios/qioswindow.h | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioscontext.mm b/src/plugins/platforms/ios/qioscontext.mm index dc431b57dd..d3966964e0 100644 --- a/src/plugins/platforms/ios/qioscontext.mm +++ b/src/plugins/platforms/ios/qioscontext.mm @@ -160,7 +160,8 @@ GLuint QIOSContext::defaultFramebufferObject(QPlatformSurface *surface) const framebufferObject.renderbufferHeight != platformWindow->effectiveHeight()) { glBindRenderbuffer(GL_RENDERBUFFER, framebufferObject.colorRenderbuffer); - CAEAGLLayer *layer = static_cast(platformWindow->nativeView().layer); + UIView *view = reinterpret_cast(platformWindow->winId()); + CAEAGLLayer *layer = static_cast(view.layer); [m_eaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer]; glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &framebufferObject.renderbufferWidth); diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index cbe2717c34..c5fef243ce 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -158,7 +158,7 @@ void *QIOSIntegration::nativeResourceForWindow(const QByteArray &resource, QWind QIOSWindow *platformWindow = static_cast(window->handle()); if (lowerCaseResource == "uiview") - return platformWindow->nativeView(); + return reinterpret_cast(platformWindow->winId()); return 0; } diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 31fd8d3185..7a0224dab0 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -76,7 +76,7 @@ public: int effectiveWidth() const; int effectiveHeight() const; - UIView *nativeView() const { return m_view; } + WId winId() const { return WId(m_view); }; QList &touchPoints() { return m_touchPoints; } QHash &activeTouches() { return m_activeTouches; } -- cgit v1.2.3 From 029029fa97b8f11b2384040f12dc1ca6b31e03a6 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 4 Feb 2013 12:42:59 +0100 Subject: iOS: QIOSWindow::setParent() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1a413d898d10b55a4d0653eae719f5bd909a01ec Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qioswindow.h | 1 + src/plugins/platforms/ios/qioswindow.mm | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index 7a0224dab0..cefb6f9388 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -65,6 +65,7 @@ public: void setGeometry(const QRect &rect); void setWindowState(Qt::WindowState state); + void setParent(const QPlatformWindow *window); void handleContentOrientationChange(Qt::ScreenOrientation orientation); void setVisible(bool visible); diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 9bc2541715..e95f392655 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -324,9 +324,7 @@ QIOSWindow::QIOSWindow(QWindow *window) , m_windowLevel(0) , m_devicePixelRatio(1.0) { - if (isQtApplication()) - [rootViewController().view addSubview:m_view]; - + setParent(parent()); setWindowState(window->windowState()); // Retina support: get screen scale factor and set it in the content view. @@ -424,6 +422,16 @@ void QIOSWindow::setWindowState(Qt::WindowState state) } } +void QIOSWindow::setParent(const QPlatformWindow *parentWindow) +{ + if (parentWindow) { + UIView *parentView = reinterpret_cast(parentWindow->winId()); + [parentView addSubview:m_view]; + } else if (isQtApplication()) { + [rootViewController().view addSubview:m_view]; + } +} + void QIOSWindow::requestActivateWindow() { // Note that several windows can be active at the same time if they exist in the same -- cgit v1.2.3 From 3eeb388b429242da8bfd9b9dc70660980f62090a Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 8 Feb 2013 13:36:24 +0100 Subject: iOS: Skip flushing child windows in QIOSBackingStore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We skip flushing raster-based child windows, to avoid the extra cost of copying from the parent FBO into the child FBO. Since the child is already drawn inside the parent FBO, it will become visible when flushing the parent. The only case we end up not supporting is if the child window overlaps a sibling window that's draws using a separate QOpenGLContext. Change-Id: Ib10414f4494747e5fe67f84b06575fe16ffddf96 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosbackingstore.mm | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm index 5ee048cb2f..566ff3a672 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.mm +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -92,6 +92,13 @@ void QIOSBackingStore::flush(QWindow *window, const QRegion ®ion, const QPoin Q_UNUSED(region); Q_UNUSED(offset); + if (window != this->window()) { + // We skip flushing raster-based child windows, to avoid the extra cost of copying from the + // parent FBO into the child FBO. Since the child is already drawn inside the parent FBO, it + // will become visible when flushing the parent. The only case we end up not supporting is if + // the child window overlaps a sibling window that's draws using a separate QOpenGLContext. + return; + } m_context->swapBuffers(window); } -- cgit v1.2.3 From 11d50be6dd8bbfe695408ccd011cbf63f1b4324a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Thu, 14 Feb 2013 13:09:08 +0100 Subject: iOS: Set touch point position in screen coords. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously the position was set in window coordinates, which would break for non-fullscreen windows. Change-Id: Iefa2f590c6d62b09fc3e7fe60a882c1acd33e029 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosglobal.h | 2 ++ src/plugins/platforms/ios/qiosglobal.mm | 10 ++++++++++ src/plugins/platforms/ios/qioswindow.mm | 11 +++++++---- 3 files changed, 19 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h index 3fe426c901..cd265c0603 100644 --- a/src/plugins/platforms/ios/qiosglobal.h +++ b/src/plugins/platforms/ios/qiosglobal.h @@ -54,6 +54,8 @@ QIOSViewController *rootViewController(); CGRect toCGRect(const QRect &rect); QRect fromCGRect(const CGRect &rect); +CGPoint toCGPoint(const QPoint &point); +QPoint fromCGPoint(const CGPoint &point); Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation); UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation); QRect fromPortraitToPrimary(const QRect &rect); diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm index 712968d216..4657b73a10 100644 --- a/src/plugins/platforms/ios/qiosglobal.mm +++ b/src/plugins/platforms/ios/qiosglobal.mm @@ -75,6 +75,16 @@ QRect fromCGRect(const CGRect &rect) return QRect(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); } +CGPoint toCGPoint(const QPoint &point) +{ + return CGPointMake(point.x(), point.y()); +} + +QPoint fromCGPoint(const CGPoint &point) +{ + return QPoint(point.x, point.y); +} + Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation) { Qt::ScreenOrientation qtOrientation; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index e95f392655..e4fb5e2e1c 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -177,10 +177,13 @@ touchPoint.pressure = 0.0; // Set position - CGPoint location = [touch locationInView:self]; - touchPoint.area = QRectF(location.x, location.y, 0, 0); - QSize viewSize = fromCGRect(self.frame).size(); - touchPoint.normalPosition = QPointF(location.x / viewSize.width(), location.y / viewSize.height()); + QRect viewGeometry = fromCGRect(self.frame); + QPoint touchViewLocation = fromCGPoint([touch locationInView:self]); + QPoint touchScreenLocation = touchViewLocation + viewGeometry.topLeft(); + touchPoint.area = QRectF(touchScreenLocation , QSize(0, 0)); + + CGSize fullscreenSize = self.window.rootViewController.view.bounds.size; + touchPoint.normalPosition = QPointF(touchScreenLocation.x() / fullscreenSize.width, touchScreenLocation.y() / fullscreenSize.height); } } -- cgit v1.2.3 From c75bc5b532479e8dbe6b7f07dcc5f9fcc915f5c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Thu, 14 Feb 2013 14:08:09 +0100 Subject: iOS: Don't crash on landscape mode startup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fromPortraitToPrimary is called from the QIOSScreen constructor. This is probably to early to call QGuiApplication functions. Change-Id: I882304fd641df13dc530491990245ba9ad495377 Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosglobal.h | 4 +++- src/plugins/platforms/ios/qiosglobal.mm | 4 ++-- src/plugins/platforms/ios/qiosinputcontext.mm | 2 +- src/plugins/platforms/ios/qiosscreen.mm | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h index cd265c0603..3be9f8bb21 100644 --- a/src/plugins/platforms/ios/qiosglobal.h +++ b/src/plugins/platforms/ios/qiosglobal.h @@ -49,6 +49,8 @@ QT_BEGIN_NAMESPACE +class QPlatformScreen; + bool isQtApplication(); QIOSViewController *rootViewController(); @@ -58,7 +60,7 @@ CGPoint toCGPoint(const QPoint &point); QPoint fromCGPoint(const CGPoint &point); Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation); UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation); -QRect fromPortraitToPrimary(const QRect &rect); +QRect fromPortraitToPrimary(const QRect &rect, QPlatformScreen *screen); QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm index 4657b73a10..5860078372 100644 --- a/src/plugins/platforms/ios/qiosglobal.mm +++ b/src/plugins/platforms/ios/qiosglobal.mm @@ -131,11 +131,11 @@ UIDeviceOrientation fromQtScreenOrientation(Qt::ScreenOrientation qtOrientation) return uiOrientation; } -QRect fromPortraitToPrimary(const QRect &rect) +QRect fromPortraitToPrimary(const QRect &rect, QPlatformScreen *screen) { // UIScreen is always in portrait. Use this function to convert CGRects // aligned with UIScreen into whatever is the current orientation of QScreen. - QRect geometry = QGuiApplication::primaryScreen()->handle()->geometry(); + QRect geometry = screen->geometry(); return geometry.width() < geometry.height() ? rect : QRect(rect.y(), geometry.width() - rect.width() - rect.x(), rect.height(), rect.width()); } diff --git a/src/plugins/platforms/ios/qiosinputcontext.mm b/src/plugins/platforms/ios/qiosinputcontext.mm index c0ff3b2531..1d3ab12de9 100644 --- a/src/plugins/platforms/ios/qiosinputcontext.mm +++ b/src/plugins/platforms/ios/qiosinputcontext.mm @@ -83,7 +83,7 @@ CGRect frame; [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&frame]; - m_keyboardRect = fromPortraitToPrimary(fromCGRect(frame)); + m_keyboardRect = fromPortraitToPrimary(fromCGRect(frame), QGuiApplication::primaryScreen()->handle()); m_context->emitKeyboardRectChanged(); BOOL visible = CGRectIntersectsRect(frame, [UIScreen mainScreen].bounds); diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 5cee5a3362..3265ed8e37 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -224,7 +224,7 @@ void QIOSScreen::setPrimaryOrientation(Qt::ScreenOrientation orientation) // Switching portrait/landscape means swapping width/height (and adjusting x/y): m_geometry = QRect(0, 0, m_geometry.height(), m_geometry.width()); m_physicalSize = QSizeF(m_physicalSize.height(), m_physicalSize.width()); - m_availableGeometry = fromPortraitToPrimary(fromCGRect(m_uiScreen.applicationFrame)); + m_availableGeometry = fromPortraitToPrimary(fromCGRect(m_uiScreen.applicationFrame), this); QWindowSystemInterface::handleScreenGeometryChange(screen(), m_geometry); QWindowSystemInterface::handleScreenAvailableGeometryChange(screen(), m_availableGeometry); -- cgit v1.2.3 From fecc1554080aa58167b8cc7018b2ccd037d05cfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Thu, 14 Feb 2013 19:45:48 +0100 Subject: iOS: Enable autorotate on startup. The qobject_cast to QGuiAppplication will always fail at startup since QGuiApplication is not ready yet. Return YES in that case. Allowed orientations can then be controlled by setting "Supported Interface Orientations" in Xcode or the Info.plist file. Change-Id: Ifd86bbcedabc716e63563bbb7cb0c1c6833fd6c7 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qiosviewcontroller.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm index c85058743c..c52bfd7345 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.mm +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -63,7 +63,7 @@ if (QGuiApplication *guiApp = qobject_cast(qApp)) return !guiApp->primaryScreen()->orientationUpdateMask(); else - return NO; + return YES; // Startup case: QGuiApplication is not ready yet. // FIXME: Investigate a proper Qt API for auto-rotation and orientation locking } -- cgit v1.2.3 From 0c1ae5f8660941fed55c468487635c9a74846f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 21 Feb 2013 08:07:04 +0100 Subject: iOS: Add potentially undefined version defines to qsystemdetection.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unless we're building on the 6.1 SDK some of the version defines will not be defined in Availability.h, so we define them ourselves so that Qt can still use them. Change-Id: Ibb45e9f8f4e888fc57e35286bf15d2fee2c1a217 Reviewed-by: Morten Johan Sørvig --- src/corelib/global/qsystemdetection.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/corelib/global/qsystemdetection.h b/src/corelib/global/qsystemdetection.h index 86c724ebb5..6062dc7b7b 100644 --- a/src/corelib/global/qsystemdetection.h +++ b/src/corelib/global/qsystemdetection.h @@ -208,6 +208,22 @@ # define MAC_OS_X_VERSION_10_8 1080 # endif # +# if !defined(__IPHONE_4_3) +# define __IPHONE_4_3 40300 +# endif +# if !defined(__IPHONE_5_0) +# define __IPHONE_5_0 50000 +# endif +# if !defined(__IPHONE_5_1) +# define __IPHONE_5_1 50100 +# endif +# if !defined(__IPHONE_6_0) +# define __IPHONE_6_0 60000 +# endif +# if !defined(__IPHONE_6_1) +# define __IPHONE_6_1 60100 +# endif +# # if (__MAC_OS_X_VERSION_MAX_ALLOWED > __MAC_10_8) # warning "This version of Mac OS X is unsupported" # endif -- cgit v1.2.3 From aa5528b050472d1d1097e2665fb346232cbfa7e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Fri, 15 Feb 2013 11:25:39 +0100 Subject: iOS: Implement socket notifiers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Create the QCFSocketNotifier class in platform support which contains shared socket notifier support for the Cocoa and iOS plugins. Remove the old code from the Cocoa plugin. The Cocoa code had one QCocoaEventDispatcher-specific call: maybeCancelWaitForMoreEvents. Create a forwarding function that is passed to QCFSocketNotifier. Change-Id: Ibf9bd4745ba4f577a55f13d0cc00f5ae04447405 Reviewed-by: Tor Arne Vestbø Reviewed-by: Richard Moe Gustavsen --- .../cfsocketnotifier/cfsocketnotifier.pri | 4 + .../cfsocketnotifier/qcfsocketnotifier.cpp | 255 +++++++++++++++++++++ .../cfsocketnotifier/qcfsocketnotifier_p.h | 90 ++++++++ src/platformsupport/platformsupport.pro | 1 + .../platforms/cocoa/qcocoaeventdispatcher.h | 12 +- .../platforms/cocoa/qcocoaeventdispatcher.mm | 193 +--------------- src/plugins/platforms/ios/qioseventdispatcher.h | 3 + src/plugins/platforms/ios/qioseventdispatcher.mm | 10 +- 8 files changed, 374 insertions(+), 194 deletions(-) create mode 100644 src/platformsupport/cfsocketnotifier/cfsocketnotifier.pri create mode 100644 src/platformsupport/cfsocketnotifier/qcfsocketnotifier.cpp create mode 100644 src/platformsupport/cfsocketnotifier/qcfsocketnotifier_p.h (limited to 'src') diff --git a/src/platformsupport/cfsocketnotifier/cfsocketnotifier.pri b/src/platformsupport/cfsocketnotifier/cfsocketnotifier.pri new file mode 100644 index 0000000000..9a19d3c278 --- /dev/null +++ b/src/platformsupport/cfsocketnotifier/cfsocketnotifier.pri @@ -0,0 +1,4 @@ +mac { + HEADERS += $$PWD/qcfsocketnotifier_p.h + SOURCES += $$PWD/qcfsocketnotifier.cpp +} diff --git a/src/platformsupport/cfsocketnotifier/qcfsocketnotifier.cpp b/src/platformsupport/cfsocketnotifier/qcfsocketnotifier.cpp new file mode 100644 index 0000000000..5dcd6a4ffd --- /dev/null +++ b/src/platformsupport/cfsocketnotifier/qcfsocketnotifier.cpp @@ -0,0 +1,255 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qcfsocketnotifier_p.h" +#include +#include +#include + + +/************************************************************************** + Socket Notifiers + *************************************************************************/ +void qt_mac_socket_callback(CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef, + const void *, void *info) +{ + + QCFSocketNotifier *cfSocketNotifier = static_cast(info); + int nativeSocket = CFSocketGetNative(s); + MacSocketInfo *socketInfo = cfSocketNotifier->macSockets.value(nativeSocket); + QEvent notifierEvent(QEvent::SockAct); + + // There is a race condition that happen where we disable the notifier and + // the kernel still has a notification to pass on. We then get this + // notification after we've successfully disabled the CFSocket, but our Qt + // notifier is now gone. The upshot is we have to check the notifier + // every time. + if (callbackType == kCFSocketReadCallBack) { + if (socketInfo->readNotifier) + QGuiApplication::sendEvent(socketInfo->readNotifier, ¬ifierEvent); + } else if (callbackType == kCFSocketWriteCallBack) { + if (socketInfo->writeNotifier) + QGuiApplication::sendEvent(socketInfo->writeNotifier, ¬ifierEvent); + } + + if (cfSocketNotifier->maybeCancelWaitForMoreEvents) + cfSocketNotifier->maybeCancelWaitForMoreEvents(cfSocketNotifier->eventDispatcher); +} + +/* + Adds a loop source for the given socket to the current run loop. +*/ +CFRunLoopSourceRef qt_mac_add_socket_to_runloop(const CFSocketRef socket) +{ + CFRunLoopSourceRef loopSource = CFSocketCreateRunLoopSource(kCFAllocatorDefault, socket, 0); + if (!loopSource) + return 0; + + CFRunLoopAddSource(CFRunLoopGetMain(), loopSource, kCFRunLoopCommonModes); + return loopSource; +} + +/* + Removes the loop source for the given socket from the current run loop. +*/ +void qt_mac_remove_socket_from_runloop(const CFSocketRef socket, CFRunLoopSourceRef runloop) +{ + Q_ASSERT(runloop); + CFRunLoopRemoveSource(CFRunLoopGetMain(), runloop, kCFRunLoopCommonModes); + CFSocketDisableCallBacks(socket, kCFSocketReadCallBack); + CFSocketDisableCallBacks(socket, kCFSocketWriteCallBack); + CFRunLoopSourceInvalidate(runloop); +} + +QCFSocketNotifier::QCFSocketNotifier() +:eventDispatcher(0) +{ + +} + +QCFSocketNotifier::~QCFSocketNotifier() +{ + +} + +void QCFSocketNotifier::setHostEventDispatcher(QAbstractEventDispatcher *hostEventDispacher) +{ + eventDispatcher = hostEventDispacher; +} + +void QCFSocketNotifier::setMaybeCancelWaitForMoreEventsCallback(MaybeCancelWaitForMoreEventsFn callBack) +{ + maybeCancelWaitForMoreEvents = callBack; +} + +void QCFSocketNotifier::registerSocketNotifier(QSocketNotifier *notifier) +{ + Q_ASSERT(notifier); + int nativeSocket = notifier->socket(); + int type = notifier->type(); +#ifndef QT_NO_DEBUG + if (nativeSocket < 0 || nativeSocket > FD_SETSIZE) { + qWarning("QSocketNotifier: Internal error"); + return; + } else if (notifier->thread() != eventDispatcher->thread() + || eventDispatcher->thread() != QThread::currentThread()) { + qWarning("QSocketNotifier: socket notifiers cannot be enabled from another thread"); + return; + } +#endif + + if (type == QSocketNotifier::Exception) { + qWarning("QSocketNotifier::Exception is not supported on iOS"); + return; + } + + // Check if we have a CFSocket for the native socket, create one if not. + MacSocketInfo *socketInfo = macSockets.value(nativeSocket); + if (!socketInfo) { + socketInfo = new MacSocketInfo(); + + // Create CFSocket, specify that we want both read and write callbacks (the callbacks + // are enabled/disabled later on). + const int callbackTypes = kCFSocketReadCallBack | kCFSocketWriteCallBack; + CFSocketContext context = {0, this, 0, 0, 0}; + socketInfo->socket = CFSocketCreateWithNative(kCFAllocatorDefault, nativeSocket, callbackTypes, qt_mac_socket_callback, &context); + if (CFSocketIsValid(socketInfo->socket) == false) { + qWarning("QEventDispatcherMac::registerSocketNotifier: Failed to create CFSocket"); + return; + } + + CFOptionFlags flags = CFSocketGetSocketFlags(socketInfo->socket); + flags |= kCFSocketAutomaticallyReenableWriteCallBack; //QSocketNotifier stays enabled after a write + flags &= ~kCFSocketCloseOnInvalidate; //QSocketNotifier doesn't close the socket upon destruction/invalidation + CFSocketSetSocketFlags(socketInfo->socket, flags); + + // Add CFSocket to runloop. + if (!(socketInfo->runloop = qt_mac_add_socket_to_runloop(socketInfo->socket))) { + qWarning("QEventDispatcherMac::registerSocketNotifier: Failed to add CFSocket to runloop"); + CFSocketInvalidate(socketInfo->socket); + CFRelease(socketInfo->socket); + return; + } + + // Disable both callback types by default. This must be done after + // we add the CFSocket to the runloop, or else these calls will have + // no effect. + CFSocketDisableCallBacks(socketInfo->socket, kCFSocketReadCallBack); + CFSocketDisableCallBacks(socketInfo->socket, kCFSocketWriteCallBack); + + macSockets.insert(nativeSocket, socketInfo); + } + + // Increment read/write counters and select enable callbacks if necessary. + if (type == QSocketNotifier::Read) { + Q_ASSERT(socketInfo->readNotifier == 0); + socketInfo->readNotifier = notifier; + CFSocketEnableCallBacks(socketInfo->socket, kCFSocketReadCallBack); + } else if (type == QSocketNotifier::Write) { + Q_ASSERT(socketInfo->writeNotifier == 0); + socketInfo->writeNotifier = notifier; + CFSocketEnableCallBacks(socketInfo->socket, kCFSocketWriteCallBack); + } +} + +void QCFSocketNotifier::unregisterSocketNotifier(QSocketNotifier *notifier) +{ + Q_ASSERT(notifier); + int nativeSocket = notifier->socket(); + int type = notifier->type(); +#ifndef QT_NO_DEBUG + if (nativeSocket < 0 || nativeSocket > FD_SETSIZE) { + qWarning("QSocketNotifier: Internal error"); + return; + } else if (notifier->thread() != eventDispatcher->thread() || eventDispatcher->thread() != QThread::currentThread()) { + qWarning("QSocketNotifier: socket notifiers cannot be disabled from another thread"); + return; + } +#endif + + if (type == QSocketNotifier::Exception) { + qWarning("QSocketNotifier::Exception is not supported on iOS"); + return; + } + MacSocketInfo *socketInfo = macSockets.value(nativeSocket); + if (!socketInfo) { + qWarning("QEventDispatcherMac::unregisterSocketNotifier: Tried to unregister a not registered notifier"); + return; + } + + // Decrement read/write counters and disable callbacks if necessary. + if (type == QSocketNotifier::Read) { + Q_ASSERT(notifier == socketInfo->readNotifier); + socketInfo->readNotifier = 0; + CFSocketDisableCallBacks(socketInfo->socket, kCFSocketReadCallBack); + } else if (type == QSocketNotifier::Write) { + Q_ASSERT(notifier == socketInfo->writeNotifier); + socketInfo->writeNotifier = 0; + CFSocketDisableCallBacks(socketInfo->socket, kCFSocketWriteCallBack); + } + + // Remove CFSocket from runloop if this was the last QSocketNotifier. + if (socketInfo->readNotifier == 0 && socketInfo->writeNotifier == 0) { + if (CFSocketIsValid(socketInfo->socket)) + qt_mac_remove_socket_from_runloop(socketInfo->socket, socketInfo->runloop); + CFRunLoopSourceInvalidate(socketInfo->runloop); + CFRelease(socketInfo->runloop); + CFSocketInvalidate(socketInfo->socket); + CFRelease(socketInfo->socket); + delete socketInfo; + macSockets.remove(nativeSocket); + } +} + +void QCFSocketNotifier::removeSocketNotifiers() +{ + // Remove CFSockets from the runloop. + for (MacSocketHash::ConstIterator it = macSockets.constBegin(); it != macSockets.constEnd(); ++it) { + MacSocketInfo *socketInfo = (*it); + if (CFSocketIsValid(socketInfo->socket)) { + qt_mac_remove_socket_from_runloop(socketInfo->socket, socketInfo->runloop); + CFRunLoopSourceInvalidate(socketInfo->runloop); + CFRelease(socketInfo->runloop); + CFSocketInvalidate(socketInfo->socket); + CFRelease(socketInfo->socket); + } + } +} diff --git a/src/platformsupport/cfsocketnotifier/qcfsocketnotifier_p.h b/src/platformsupport/cfsocketnotifier/qcfsocketnotifier_p.h new file mode 100644 index 0000000000..cd1eb8e4ca --- /dev/null +++ b/src/platformsupport/cfsocketnotifier/qcfsocketnotifier_p.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QCFSOCKETNOTIFIER_P_H +#define QCFSOCKETNOTIFIER_P_H + +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +struct MacSocketInfo { + MacSocketInfo() : socket(0), runloop(0), readNotifier(0), writeNotifier(0) {} + CFSocketRef socket; + CFRunLoopSourceRef runloop; + QObject *readNotifier; + QObject *writeNotifier; +}; +typedef QHash MacSocketHash; + +typedef void (*MaybeCancelWaitForMoreEventsFn)(QAbstractEventDispatcher *hostEventDispacher); + +// The CoreFoundationSocketNotifier class implements socket notifiers support using +// CFSocket for event dispatchers running on top of the Core Foundation run loop system. +// (currently Mac and iOS) +// +// The principal functions are registerSocketNotifier() and unregisterSocketNotifier(). +// +// setHostEventDispatcher() should be called at startup. +// removeSocketNotifiers() should be called at shutdown. +// +class QCFSocketNotifier +{ +public: + QCFSocketNotifier(); + ~QCFSocketNotifier(); + void setHostEventDispatcher(QAbstractEventDispatcher *hostEventDispacher); + void setMaybeCancelWaitForMoreEventsCallback(MaybeCancelWaitForMoreEventsFn callBack); + void registerSocketNotifier(QSocketNotifier *notifier); + void unregisterSocketNotifier(QSocketNotifier *notifier); + void removeSocketNotifiers(); + + MacSocketHash macSockets; + QAbstractEventDispatcher *eventDispatcher; + MaybeCancelWaitForMoreEventsFn maybeCancelWaitForMoreEvents; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/platformsupport/platformsupport.pro b/src/platformsupport/platformsupport.pro index 469c76ffae..8e0f396993 100644 --- a/src/platformsupport/platformsupport.pro +++ b/src/platformsupport/platformsupport.pro @@ -9,6 +9,7 @@ load(qt_module) DEFINES += QT_NO_CAST_FROM_ASCII PRECOMPILED_HEADER = ../corelib/global/qt_pch.h +include(cfsocketnotifier/cfsocketnotifier.pri) include(cglconvenience/cglconvenience.pri) include(dnd/dnd.pri) include(eglconvenience/eglconvenience.pri) diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h index f63ac0d205..93476ee1b4 100644 --- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h +++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h @@ -93,6 +93,7 @@ #include #include #include +#include #include @@ -132,16 +133,9 @@ public: void wakeUp(); void interrupt(); void flush(); -}; -struct MacSocketInfo { - MacSocketInfo() : socket(0), runloop(0), readNotifier(0), writeNotifier(0) {} - CFSocketRef socket; - CFRunLoopSourceRef runloop; - QObject *readNotifier; - QObject *writeNotifier; + friend void qt_mac_maybeCancelWaitForMoreEventsForwarder(QAbstractEventDispatcher *eventDispatcher); }; -typedef QHash MacSocketHash; class QCocoaEventDispatcherPrivate : public QAbstractEventDispatcherPrivate { @@ -183,7 +177,7 @@ public: void maybeCancelWaitForMoreEvents(); void ensureNSAppInitialized(); - MacSocketHash macSockets; + QCFSocketNotifier cfSocketNotifier; QList queuedUserInputEvents; // NSEvent * CFRunLoopSourceRef postedEventsSource; CFRunLoopObserverRef waitingObserver; diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm index 987600c6b4..ed4f8cd1fb 100644 --- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm +++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm @@ -270,58 +270,6 @@ QCocoaEventDispatcher::registeredTimers(QObject *object) const return d->timerInfoList.registeredTimers(object); } -/************************************************************************** - Socket Notifiers - *************************************************************************/ -void qt_mac_socket_callback(CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef, - const void *, void *info) { - QCocoaEventDispatcherPrivate *const eventDispatcher - = static_cast(info); - int nativeSocket = CFSocketGetNative(s); - MacSocketInfo *socketInfo = eventDispatcher->macSockets.value(nativeSocket); - QEvent notifierEvent(QEvent::SockAct); - - // There is a race condition that happen where we disable the notifier and - // the kernel still has a notification to pass on. We then get this - // notification after we've successfully disabled the CFSocket, but our Qt - // notifier is now gone. The upshot is we have to check the notifier - // everytime. - if (callbackType == kCFSocketReadCallBack) { - if (socketInfo->readNotifier) - QGuiApplication::sendEvent(socketInfo->readNotifier, ¬ifierEvent); - } else if (callbackType == kCFSocketWriteCallBack) { - if (socketInfo->writeNotifier) - QGuiApplication::sendEvent(socketInfo->writeNotifier, ¬ifierEvent); - } - - eventDispatcher->maybeCancelWaitForMoreEvents(); -} - -/* - Adds a loop source for the given socket to the current run loop. -*/ -CFRunLoopSourceRef qt_mac_add_socket_to_runloop(const CFSocketRef socket) -{ - CFRunLoopSourceRef loopSource = CFSocketCreateRunLoopSource(kCFAllocatorDefault, socket, 0); - if (!loopSource) - return 0; - - CFRunLoopAddSource(mainRunLoop(), loopSource, kCFRunLoopCommonModes); - return loopSource; -} - -/* - Removes the loop source for the given socket from the current run loop. -*/ -void qt_mac_remove_socket_from_runloop(const CFSocketRef socket, CFRunLoopSourceRef runloop) -{ - Q_ASSERT(runloop); - CFRunLoopRemoveSource(mainRunLoop(), runloop, kCFRunLoopCommonModes); - CFSocketDisableCallBacks(socket, kCFSocketReadCallBack); - CFSocketDisableCallBacks(socket, kCFSocketWriteCallBack); - CFRunLoopSourceInvalidate(runloop); -} - /* Register a QSocketNotifier with the mac event system by creating a CFSocket with with a read/write callback. @@ -331,130 +279,14 @@ void qt_mac_remove_socket_from_runloop(const CFSocketRef socket, CFRunLoopSource */ void QCocoaEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier) { - Q_ASSERT(notifier); - int nativeSocket = notifier->socket(); - int type = notifier->type(); -#ifndef QT_NO_DEBUG - if (nativeSocket < 0 || nativeSocket > FD_SETSIZE) { - qWarning("QSocketNotifier: Internal error"); - return; - } else if (notifier->thread() != thread() - || thread() != QThread::currentThread()) { - qWarning("QSocketNotifier: socket notifiers cannot be enabled from another thread"); - return; - } -#endif - Q_D(QCocoaEventDispatcher); - - if (type == QSocketNotifier::Exception) { - qWarning("QSocketNotifier::Exception is not supported on Mac OS X"); - return; - } - - // Check if we have a CFSocket for the native socket, create one if not. - MacSocketInfo *socketInfo = d->macSockets.value(nativeSocket); - if (!socketInfo) { - socketInfo = new MacSocketInfo(); - - // Create CFSocket, specify that we want both read and write callbacks (the callbacks - // are enabled/disabled later on). - const int callbackTypes = kCFSocketReadCallBack | kCFSocketWriteCallBack; - CFSocketContext context = {0, d, 0, 0, 0}; - socketInfo->socket = CFSocketCreateWithNative(kCFAllocatorDefault, nativeSocket, callbackTypes, qt_mac_socket_callback, &context); - if (CFSocketIsValid(socketInfo->socket) == false) { - qWarning("QEventDispatcherMac::registerSocketNotifier: Failed to create CFSocket"); - return; - } - - CFOptionFlags flags = CFSocketGetSocketFlags(socketInfo->socket); - flags |= kCFSocketAutomaticallyReenableWriteCallBack; //QSocketNotifier stays enabled after a write - flags &= ~kCFSocketCloseOnInvalidate; //QSocketNotifier doesn't close the socket upon destruction/invalidation - CFSocketSetSocketFlags(socketInfo->socket, flags); - - // Add CFSocket to runloop. - if(!(socketInfo->runloop = qt_mac_add_socket_to_runloop(socketInfo->socket))) { - qWarning("QEventDispatcherMac::registerSocketNotifier: Failed to add CFSocket to runloop"); - CFSocketInvalidate(socketInfo->socket); - CFRelease(socketInfo->socket); - return; - } - - // Disable both callback types by default. This must be done after - // we add the CFSocket to the runloop, or else these calls will have - // no effect. - CFSocketDisableCallBacks(socketInfo->socket, kCFSocketReadCallBack); - CFSocketDisableCallBacks(socketInfo->socket, kCFSocketWriteCallBack); - - d->macSockets.insert(nativeSocket, socketInfo); - } - - // Increment read/write counters and select enable callbacks if necessary. - if (type == QSocketNotifier::Read) { - Q_ASSERT(socketInfo->readNotifier == 0); - socketInfo->readNotifier = notifier; - CFSocketEnableCallBacks(socketInfo->socket, kCFSocketReadCallBack); - } else if (type == QSocketNotifier::Write) { - Q_ASSERT(socketInfo->writeNotifier == 0); - socketInfo->writeNotifier = notifier; - CFSocketEnableCallBacks(socketInfo->socket, kCFSocketWriteCallBack); - } + d->cfSocketNotifier.registerSocketNotifier(notifier); } -/* - Unregister QSocketNotifer. The CFSocket correspoding to this notifier is - removed from the runloop of this is the last notifier that users - that CFSocket. -*/ void QCocoaEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier) { - Q_ASSERT(notifier); - int nativeSocket = notifier->socket(); - int type = notifier->type(); -#ifndef QT_NO_DEBUG - if (nativeSocket < 0 || nativeSocket > FD_SETSIZE) { - qWarning("QSocketNotifier: Internal error"); - return; - } else if (notifier->thread() != thread() || thread() != QThread::currentThread()) { - qWarning("QSocketNotifier: socket notifiers cannot be disabled from another thread"); - return; - } -#endif - Q_D(QCocoaEventDispatcher); - - if (type == QSocketNotifier::Exception) { - qWarning("QSocketNotifier::Exception is not supported on Mac OS X"); - return; - } - MacSocketInfo *socketInfo = d->macSockets.value(nativeSocket); - if (!socketInfo) { - qWarning("QEventDispatcherMac::unregisterSocketNotifier: Tried to unregister a not registered notifier"); - return; - } - - // Decrement read/write counters and disable callbacks if necessary. - if (type == QSocketNotifier::Read) { - Q_ASSERT(notifier == socketInfo->readNotifier); - socketInfo->readNotifier = 0; - CFSocketDisableCallBacks(socketInfo->socket, kCFSocketReadCallBack); - } else if (type == QSocketNotifier::Write) { - Q_ASSERT(notifier == socketInfo->writeNotifier); - socketInfo->writeNotifier = 0; - CFSocketDisableCallBacks(socketInfo->socket, kCFSocketWriteCallBack); - } - - // Remove CFSocket from runloop if this was the last QSocketNotifier. - if (socketInfo->readNotifier == 0 && socketInfo->writeNotifier == 0) { - if (CFSocketIsValid(socketInfo->socket)) - qt_mac_remove_socket_from_runloop(socketInfo->socket, socketInfo->runloop); - CFRunLoopSourceInvalidate(socketInfo->runloop); - CFRelease(socketInfo->runloop); - CFSocketInvalidate(socketInfo->socket); - CFRelease(socketInfo->socket); - delete socketInfo; - d->macSockets.remove(nativeSocket); - } + d->cfSocketNotifier.unregisterSocketNotifier(notifier); } bool QCocoaEventDispatcher::hasPendingEvents() @@ -940,11 +772,19 @@ QCocoaEventDispatcherPrivate::QCocoaEventDispatcherPrivate() { } +void qt_mac_maybeCancelWaitForMoreEventsForwarder(QAbstractEventDispatcher *eventDispatcher) +{ + static_cast(eventDispatcher)->d_func()->maybeCancelWaitForMoreEvents(); +} + QCocoaEventDispatcher::QCocoaEventDispatcher(QObject *parent) : QAbstractEventDispatcher(*new QCocoaEventDispatcherPrivate, parent) { Q_D(QCocoaEventDispatcher); + d->cfSocketNotifier.setHostEventDispatcher(this); + d->cfSocketNotifier.setMaybeCancelWaitForMoreEventsCallback(qt_mac_maybeCancelWaitForMoreEventsForwarder); + // keep our sources running when modal loops are running CFRunLoopAddCommonMode(mainRunLoop(), (CFStringRef) NSModalPanelRunLoopMode); @@ -1127,17 +967,8 @@ QCocoaEventDispatcher::~QCocoaEventDispatcher() [nsevent release]; } - // Remove CFSockets from the runloop. - for (MacSocketHash::ConstIterator it = d->macSockets.constBegin(); it != d->macSockets.constEnd(); ++it) { - MacSocketInfo *socketInfo = (*it); - if (CFSocketIsValid(socketInfo->socket)) { - qt_mac_remove_socket_from_runloop(socketInfo->socket, socketInfo->runloop); - CFRunLoopSourceInvalidate(socketInfo->runloop); - CFRelease(socketInfo->runloop); - CFSocketInvalidate(socketInfo->socket); - CFRelease(socketInfo->socket); - } - } + d->cfSocketNotifier.removeSocketNotifiers(); + CFRunLoopRemoveSource(mainRunLoop(), d->postedEventsSource, kCFRunLoopCommonModes); CFRelease(d->postedEventsSource); diff --git a/src/plugins/platforms/ios/qioseventdispatcher.h b/src/plugins/platforms/ios/qioseventdispatcher.h index 88d5127855..53a75618ce 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.h +++ b/src/plugins/platforms/ios/qioseventdispatcher.h @@ -78,6 +78,7 @@ #include #include +#include #include QT_BEGIN_NAMESPACE @@ -116,6 +117,8 @@ private: QTimerInfoList m_timerInfoList; CFRunLoopTimerRef m_runLoopTimerRef; + QCFSocketNotifier m_cfSocketNotifier; + void processPostedEvents(); void maybeStartCFRunLoopTimer(); void maybeStopCFRunLoopTimer(); diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm index f6f60387d4..e9bf039047 100644 --- a/src/plugins/platforms/ios/qioseventdispatcher.mm +++ b/src/plugins/platforms/ios/qioseventdispatcher.mm @@ -155,6 +155,8 @@ QIOSEventDispatcher::QIOSEventDispatcher(QObject *parent) , m_interrupted(false) , m_runLoopTimerRef(0) { + m_cfSocketNotifier.setHostEventDispatcher(this); + CFRunLoopRef mainRunLoop = CFRunLoopGetMain(); CFRunLoopSourceContext context; bzero(&context, sizeof(CFRunLoopSourceContext)); @@ -184,6 +186,8 @@ QIOSEventDispatcher::~QIOSEventDispatcher() maybeStopCFRunLoopTimer(); CFRunLoopRemoveSource(CFRunLoopGetMain(), m_blockingTimerRunLoopSource, kCFRunLoopCommonModes); CFRelease(m_blockingTimerRunLoopSource); + + m_cfSocketNotifier.removeSocketNotifiers(); } bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) @@ -215,14 +219,12 @@ bool QIOSEventDispatcher::hasPendingEvents() void QIOSEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier) { - qDebug() << __FUNCTION__ << "not implemented"; - Q_UNUSED(notifier); + m_cfSocketNotifier.registerSocketNotifier(notifier); } void QIOSEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier) { - qDebug() << __FUNCTION__ << "not implemented"; - Q_UNUSED(notifier); + m_cfSocketNotifier.unregisterSocketNotifier(notifier); } void QIOSEventDispatcher::registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *obj) -- cgit v1.2.3 From 76e4b6d2f24f7f88250db34fb03838a30fc43eec Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 21 Feb 2013 14:41:12 +0100 Subject: iOS: Add QIOSIntegration::hasCapability function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the missing override, and report that we support OpenGL (and multiple windows). Change-Id: If95138cab9099b547d12d3dfed008bd63b6d2acf Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosintegration.h | 2 ++ src/plugins/platforms/ios/qiosintegration.mm | 12 ++++++++++++ 2 files changed, 14 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index 054933ea44..329a0a3d9b 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -54,6 +54,8 @@ public: QIOSIntegration(); ~QIOSIntegration(); + bool hasCapability(Capability cap) const; + QPlatformWindow *createPlatformWindow(QWindow *window) const; QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index c5fef243ce..adb33da344 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -84,6 +84,18 @@ QIOSIntegration::~QIOSIntegration() delete m_touchDevice; } +bool QIOSIntegration::hasCapability(Capability cap) const +{ + switch (cap) { + case OpenGL: + return true; + case MultipleWindows: + return true; + default: + return QPlatformIntegration::hasCapability(cap); + } +} + QPlatformWindow *QIOSIntegration::createPlatformWindow(QWindow *window) const { qDebug() << __FUNCTION__ << "Creating platform window"; -- cgit v1.2.3 From 75a7dc7a574e0c949214feecc711e385f38060e9 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 21 Feb 2013 14:59:30 +0100 Subject: iOS: Remove debug output noise MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This debug information is not needed anymore, and only causes noise when trying to debug other stuff. Change-Id: I076826e251b84a3883e63aa7669f6e1bb55a0d1f Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/ios/qiosintegration.mm | 3 --- 1 file changed, 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index adb33da344..c7541c3e38 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -98,14 +98,12 @@ bool QIOSIntegration::hasCapability(Capability cap) const QPlatformWindow *QIOSIntegration::createPlatformWindow(QWindow *window) const { - qDebug() << __FUNCTION__ << "Creating platform window"; return new QIOSWindow(window); } // Used when the QWindow's surface type is set by the client to QSurface::RasterSurface QPlatformBackingStore *QIOSIntegration::createPlatformBackingStore(QWindow *window) const { - qDebug() << __FUNCTION__ << "Creating platform backingstore"; return new QIOSBackingStore(window); } @@ -113,7 +111,6 @@ QPlatformBackingStore *QIOSIntegration::createPlatformBackingStore(QWindow *wind QPlatformOpenGLContext *QIOSIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const { Q_UNUSED(context); - qDebug() << __FUNCTION__ << "Creating platform opengl context"; return new QIOSContext(context); } -- cgit v1.2.3 From 9b05f675e311d1962f0670193cf4df75a07f4999 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 21 Feb 2013 13:44:01 +0100 Subject: QFusionStyle: Fix crash on iOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First of all, the ifdef section was meant for osx, and not ios. Second, a platform theme does not necessarily need to override the palette function, which will return 0 by default. Change-Id: I5a28f4ee1020c9253d0803c9d962c6a058e5358c Reviewed-by: Tor Arne Vestbø Reviewed-by: J-P Nurmi Reviewed-by: Jens Bache-Wiig --- src/widgets/styles/qfusionstyle_p_p.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qfusionstyle_p_p.h b/src/widgets/styles/qfusionstyle_p_p.h index d3f2ff5f40..58595fe889 100644 --- a/src/widgets/styles/qfusionstyle_p_p.h +++ b/src/widgets/styles/qfusionstyle_p_p.h @@ -88,9 +88,9 @@ public: // On mac we want a standard blue color used when the system palette is used bool isMacSystemPalette(const QPalette &pal) const { Q_UNUSED(pal); -#ifdef Q_OS_MAC +#if defined(Q_OS_MAC) && !defined(Q_OS_IOS) const QPalette *themePalette = QGuiApplicationPrivate::platformTheme()->palette(); - if (themePalette->color(QPalette::Normal, QPalette::Highlight) == + if (themePalette && themePalette->color(QPalette::Normal, QPalette::Highlight) == pal.color(QPalette::Normal, QPalette::Highlight) && themePalette->color(QPalette::Normal, QPalette::HighlightedText) == pal.color(QPalette::Normal, QPalette::HighlightedText)) -- cgit v1.2.3 From f4d7b4d10f7d3badbb0ac5ad5c0754a044f8bdd2 Mon Sep 17 00:00:00 2001 From: Israel Lins Date: Tue, 26 Feb 2013 14:23:43 -0300 Subject: PSQL: lastInsertId without OID on table Make lastInsertID work for tables without OIDs. The use of OID in tables is now deprecated in PostgeSQL and lastval() is now provided. http://www.postgresql.org/docs/8.1/interactive/runtime-config-compatible.html#GUC-DEFAULT-WITH-OIDS Change-Id: I01dfdd7a2aab8826487657f691fea3c9268c16b2 Reviewed-by: Israel Lins Albuquerque Reviewed-by: Mark Brand --- src/sql/drivers/psql/qsql_psql.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp index 6a37e4b50d..7d844fa1bd 100644 --- a/src/sql/drivers/psql/qsql_psql.cpp +++ b/src/sql/drivers/psql/qsql_psql.cpp @@ -474,7 +474,12 @@ int QPSQLResult::numRowsAffected() QVariant QPSQLResult::lastInsertId() const { - if (isActive()) { + if (d->privDriver->pro >= QPSQLDriver::Version81) { + QSqlQuery qry(driver()->createResult()); + // Most recent sequence value obtained from nextval + if (qry.exec(QLatin1String("SELECT lastval();")) && qry.next()) + return qry.value(0); + } else if (isActive()) { Oid id = PQoidValue(d->result); if (id != InvalidOid) return QVariant(id); -- cgit v1.2.3 From dedec0b305baabe894e53bf3b70560cec68e3464 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Wed, 27 Feb 2013 17:08:03 +0100 Subject: EGLFS: Enablers for Android plugin These are some changes that are needed to make the Android plugin as a subclass of the EGLFS plugin. Change-Id: I7c77931f311d8a07f9292715d2abc256c5d552d8 Reviewed-by: Gunnar Sletta --- src/plugins/platforms/eglfs/eglfs.pri | 44 +++++++++++++++++++++++ src/plugins/platforms/eglfs/eglfs.pro | 46 ++---------------------- src/plugins/platforms/eglfs/qeglfscontext.cpp | 2 +- src/plugins/platforms/eglfs/qeglfshooks_stub.cpp | 2 ++ src/plugins/platforms/eglfs/qeglfsintegration.h | 3 ++ src/plugins/platforms/eglfs/qeglfswindow.cpp | 28 +++++++++++---- src/plugins/platforms/eglfs/qeglfswindow.h | 4 +++ 7 files changed, 78 insertions(+), 51 deletions(-) create mode 100644 src/plugins/platforms/eglfs/eglfs.pri (limited to 'src') diff --git a/src/plugins/platforms/eglfs/eglfs.pri b/src/plugins/platforms/eglfs/eglfs.pri new file mode 100644 index 0000000000..eb66e17479 --- /dev/null +++ b/src/plugins/platforms/eglfs/eglfs.pri @@ -0,0 +1,44 @@ +QT += core-private gui-private platformsupport-private + +#DEFINES += QEGL_EXTRA_DEBUG + +#Avoid X11 header collision +DEFINES += MESA_EGL_NO_X11_HEADERS + +#To test the hooks on x11 (xlib), comment the above define too +#EGLFS_PLATFORM_HOOKS_SOURCES += qeglfshooks_x11.cpp +#LIBS += -lX11 + +SOURCES += $$PWD/qeglfsintegration.cpp \ + $$PWD/qeglfswindow.cpp \ + $$PWD/qeglfsbackingstore.cpp \ + $$PWD/qeglfsscreen.cpp \ + $$PWD/qeglfshooks_stub.cpp \ + $$PWD/qeglfscursor.cpp \ + $$PWD/qeglfscontext.cpp + +HEADERS += $$PWD/qeglfsintegration.h \ + $$PWD/qeglfswindow.h \ + $$PWD/qeglfsbackingstore.h \ + $$PWD/qeglfsscreen.h \ + $$PWD/qeglfscursor.h \ + $$PWD/qeglfshooks.h \ + $$PWD/qeglfscontext.h + +QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF + +INCLUDEPATH += $$PWD + +!isEmpty(EGLFS_PLATFORM_HOOKS_SOURCES) { + HEADERS += $$EGLFS_PLATFORM_HOOKS_HEADERS + SOURCES += $$EGLFS_PLATFORM_HOOKS_SOURCES + LIBS += $$EGLFS_PLATFORM_HOOKS_LIBS + DEFINES += EGLFS_PLATFORM_HOOKS +} + +CONFIG += egl qpa/genericunixfontdatabase + +RESOURCES += $$PWD/cursor.qrc + +OTHER_FILES += \ + $$PWD/eglfs.json diff --git a/src/plugins/platforms/eglfs/eglfs.pro b/src/plugins/platforms/eglfs/eglfs.pro index 45059a9cb9..8827f7680c 100644 --- a/src/plugins/platforms/eglfs/eglfs.pro +++ b/src/plugins/platforms/eglfs/eglfs.pro @@ -4,48 +4,6 @@ PLUGIN_TYPE = platforms PLUGIN_CLASS_NAME = QEglFSIntegrationPlugin load(qt_plugin) -QT += core-private gui-private platformsupport-private +SOURCES += $$PWD/main.cpp -#DEFINES += QEGL_EXTRA_DEBUG - -#Avoid X11 header collision -DEFINES += MESA_EGL_NO_X11_HEADERS - -#To test the hooks on x11 (xlib), comment the above define too -#EGLFS_PLATFORM_HOOKS_SOURCES += qeglfshooks_x11.cpp -#LIBS += -lX11 - -SOURCES = main.cpp \ - qeglfsintegration.cpp \ - qeglfswindow.cpp \ - qeglfsbackingstore.cpp \ - qeglfsscreen.cpp \ - qeglfshooks_stub.cpp \ - qeglfscursor.cpp \ - qeglfscontext.cpp - -HEADERS = qeglfsintegration.h \ - qeglfswindow.h \ - qeglfsbackingstore.h \ - qeglfsscreen.h \ - qeglfscursor.h \ - qeglfshooks.h \ - qeglfscontext.h - -QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF - -INCLUDEPATH += $$PWD - -!isEmpty(EGLFS_PLATFORM_HOOKS_SOURCES) { - HEADERS += $$EGLFS_PLATFORM_HOOKS_HEADERS - SOURCES += $$EGLFS_PLATFORM_HOOKS_SOURCES - LIBS += $$EGLFS_PLATFORM_HOOKS_LIBS - DEFINES += EGLFS_PLATFORM_HOOKS -} - -CONFIG += egl qpa/genericunixfontdatabase - -RESOURCES += cursor.qrc - -OTHER_FILES += \ - eglfs.json +include(eglfs.pri) diff --git a/src/plugins/platforms/eglfs/qeglfscontext.cpp b/src/plugins/platforms/eglfs/qeglfscontext.cpp index 6bd0d35191..51439646c6 100644 --- a/src/plugins/platforms/eglfs/qeglfscontext.cpp +++ b/src/plugins/platforms/eglfs/qeglfscontext.cpp @@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE QEglFSContext::QEglFSContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share, EGLDisplay display, EGLenum eglApi) - : QEGLPlatformContext(format, share, display, QEglFSIntegration::chooseConfig(display, format), eglApi) + : QEGLPlatformContext(QEglFSHooks::hooks()->surfaceFormatFor(format), share, display, QEglFSIntegration::chooseConfig(display, QEglFSHooks::hooks()->surfaceFormatFor(format)), eglApi) { } diff --git a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp index 5298eb47ea..8200fa70b2 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp +++ b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp @@ -246,12 +246,14 @@ QEglFSCursor *QEglFSHooks::createCursor(QEglFSScreen *screen) const void QEglFSHooks::waitForVSync() const { +#if defined(FBIO_WAITFORVSYNC) static const bool forceSync = qgetenv("QT_QPA_EGLFS_FORCEVSYNC").toInt(); if (forceSync && framebuffer != -1) { int arg = 0; if (ioctl(framebuffer, FBIO_WAITFORVSYNC, &arg) == -1) qWarning("Could not wait for vsync."); } +#endif } #ifndef EGLFS_PLATFORM_HOOKS diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h index e048c5d310..5427137463 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.h +++ b/src/plugins/platforms/eglfs/qeglfsintegration.h @@ -74,8 +74,11 @@ public: void *nativeResourceForIntegration(const QByteArray &resource); void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context); + QPlatformScreen *screen() const { return mScreen; } static EGLConfig chooseConfig(EGLDisplay display, const QSurfaceFormat &format); + EGLDisplay display() const { return mDisplay; } + private: EGLDisplay mDisplay; QAbstractEventDispatcher *mEventDispatcher; diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp index 4a0e2a9a7d..68cef6253e 100644 --- a/src/plugins/platforms/eglfs/qeglfswindow.cpp +++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp @@ -84,11 +84,28 @@ void QEglFSWindow::create() EGLDisplay display = (static_cast(window()->screen()->handle()))->display(); QSurfaceFormat platformFormat = QEglFSHooks::hooks()->surfaceFormatFor(window()->requestedFormat()); - EGLConfig config = QEglFSIntegration::chooseConfig(display, platformFormat); + m_config = QEglFSIntegration::chooseConfig(display, platformFormat); + m_format = q_glFormatFromConfig(display, m_config); + resetSurface(); +} + +void QEglFSWindow::invalidateSurface() +{ + // Native surface has been deleted behind our backs + m_window = 0; + if (m_surface != 0) { + EGLDisplay display = (static_cast(window()->screen()->handle()))->display(); + eglDestroySurface(display, m_surface); + m_surface = 0; + } +} + +void QEglFSWindow::resetSurface() +{ + EGLDisplay display = static_cast(screen())->display(); - m_format = q_glFormatFromConfig(display, config); m_window = QEglFSHooks::hooks()->createNativeWindow(QEglFSHooks::hooks()->screenSize(), m_format); - m_surface = eglCreateWindowSurface(display, config, m_window, NULL); + m_surface = eglCreateWindowSurface(display, m_config, m_window, NULL); if (m_surface == EGL_NO_SURFACE) { EGLint error = eglGetError(); eglTerminate(display); @@ -99,7 +116,7 @@ void QEglFSWindow::create() void QEglFSWindow::destroy() { if (m_surface) { - EGLDisplay display = (static_cast(window()->screen()->handle()))->display(); + EGLDisplay display = static_cast(screen())->display(); eglDestroySurface(display, m_surface); m_surface = 0; } @@ -114,9 +131,8 @@ void QEglFSWindow::setGeometry(const QRect &) { // We only support full-screen windows QRect rect(screen()->availableGeometry()); - QWindowSystemInterface::handleGeometryChange(window(), rect); - QPlatformWindow::setGeometry(rect); + QWindowSystemInterface::handleGeometryChange(window(), rect); } void QEglFSWindow::setWindowState(Qt::WindowState) diff --git a/src/plugins/platforms/eglfs/qeglfswindow.h b/src/plugins/platforms/eglfs/qeglfswindow.h index 706bbddd22..a351b4a6f4 100644 --- a/src/plugins/platforms/eglfs/qeglfswindow.h +++ b/src/plugins/platforms/eglfs/qeglfswindow.h @@ -65,10 +65,14 @@ public: void create(); void destroy(); + virtual void invalidateSurface(); + virtual void resetSurface(); + private: WId m_winid; EGLSurface m_surface; EGLNativeWindowType m_window; + EGLConfig m_config; QSurfaceFormat m_format; }; QT_END_NAMESPACE -- cgit v1.2.3 From 05a61de622917ba67986afff6288c05a34ff5a90 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Thu, 28 Feb 2013 14:07:04 +0100 Subject: Allow flushing window system events from other thread For platform plugins such as the Android plugin, we need to make sure an event is delivered and handled before continuing execution (e.g. when doing an expose event to report that the EGL surface has been destroyed when the app goes into the background.) Change-Id: Ibd381baafa93f111dbc887d4cf9d9ca37429b186 Reviewed-by: Gunnar Sletta --- src/gui/kernel/qguiapplication.cpp | 3 +++ src/gui/kernel/qwindowsysteminterface.cpp | 20 +++++++++++++++++++- src/gui/kernel/qwindowsysteminterface.h | 1 + src/gui/kernel/qwindowsysteminterface_p.h | 14 +++++++++++++- 4 files changed, 36 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index b8c6e4db20..1763624b83 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1279,6 +1279,9 @@ void QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePriv case QWindowSystemInterfacePrivate::ApplicationStateChanged: QGuiApplicationPrivate::processApplicationStateChangedEvent(static_cast(e)); break; + case QWindowSystemInterfacePrivate::FlushEvents: + QWindowSystemInterface::deferredFlushWindowSystemEvents(); + break; case QWindowSystemInterfacePrivate::Close: QGuiApplicationPrivate::processCloseEvent( static_cast(e)); diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 01100d8555..8c5a3bc215 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -54,6 +54,8 @@ QT_BEGIN_NAMESPACE QElapsedTimer QWindowSystemInterfacePrivate::eventTime; bool QWindowSystemInterfacePrivate::synchronousWindowsSystemEvents = false; +QWaitCondition QWindowSystemInterfacePrivate::eventsFlushed; +QMutex QWindowSystemInterfacePrivate::flushEventMutex; //------------------------------------------------------------ // @@ -514,9 +516,25 @@ void QWindowSystemInterface::handleExposeEvent(QWindow *tlw, const QRegion ®i QWindowSystemInterfacePrivate::handleWindowSystemEvent(e); } +void QWindowSystemInterface::deferredFlushWindowSystemEvents() +{ + Q_ASSERT(QThread::currentThread() == QGuiApplication::instance()->thread()); + + QMutexLocker locker(&QWindowSystemInterfacePrivate::flushEventMutex); + flushWindowSystemEvents(); + QWindowSystemInterfacePrivate::eventsFlushed.wakeOne(); +} + void QWindowSystemInterface::flushWindowSystemEvents() { - sendWindowSystemEventsImplementation(QEventLoop::AllEvents); + if (QThread::currentThread() != QGuiApplication::instance()->thread()) { + QMutexLocker locker(&QWindowSystemInterfacePrivate::flushEventMutex); + QWindowSystemInterfacePrivate::FlushEventsEvent *e = new QWindowSystemInterfacePrivate::FlushEventsEvent(); + QWindowSystemInterfacePrivate::handleWindowSystemEvent(e); + QWindowSystemInterfacePrivate::eventsFlushed.wait(&QWindowSystemInterfacePrivate::flushEventMutex); + } else { + sendWindowSystemEventsImplementation(QEventLoop::AllEvents); + } } bool QWindowSystemInterface::sendWindowSystemEvents(QEventLoop::ProcessEventsFlags flags) diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h index 5668f3c0cf..22e5983a07 100644 --- a/src/gui/kernel/qwindowsysteminterface.h +++ b/src/gui/kernel/qwindowsysteminterface.h @@ -186,6 +186,7 @@ public: static bool sendWindowSystemEvents(QEventLoop::ProcessEventsFlags flags); static void setSynchronousWindowsSystemEvents(bool enable); static void flushWindowSystemEvents(); + static void deferredFlushWindowSystemEvents(); static int windowSystemEventsQueued(); private: diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h index 8336c3d63c..431b2cbe1e 100644 --- a/src/gui/kernel/qwindowsysteminterface_p.h +++ b/src/gui/kernel/qwindowsysteminterface_p.h @@ -58,6 +58,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -89,7 +90,8 @@ public: TabletLeaveProximity = UserInputEvent | 0x16, PlatformPanel = UserInputEvent | 0x17, ContextMenu = UserInputEvent | 0x18, - ApplicationStateChanged = 0x19 + ApplicationStateChanged = 0x19, + FlushEvents = 0x20 }; class WindowSystemEvent { @@ -162,6 +164,13 @@ public: Qt::ApplicationState newState; }; + class FlushEventsEvent : public WindowSystemEvent { + public: + FlushEventsEvent() + : WindowSystemEvent(FlushEvents) + { } + }; + class UserEvent : public WindowSystemEvent { public: UserEvent(QWindow * w, ulong time, EventType t) @@ -432,6 +441,9 @@ public: static QElapsedTimer eventTime; static bool synchronousWindowsSystemEvents; + static QWaitCondition eventsFlushed; + static QMutex flushEventMutex; + static QList convertTouchPoints(const QList &points, QEvent::Type *type); }; -- cgit v1.2.3 From 2c8c0cb33aa8137186e8dde8ecff856a5fbf0c55 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Wed, 10 Oct 2012 13:13:56 +0100 Subject: OpenGL: Reinstate support for OpenGL geometry shaders Unlike QGLShader, this requires the OpenGL 3.2 core implementation of geometry shaders to keep the API simple. Change-Id: Icb07f430c4c5b5d950bcf6f7119becec4cfaad8a Reviewed-by: James Turner Reviewed-by: Gunnar Sletta --- src/gui/opengl/qopengl.h | 1 + src/gui/opengl/qopenglshaderprogram.cpp | 56 +++++++++++++++++++++++++++++++-- src/gui/opengl/qopenglshaderprogram.h | 5 ++- 3 files changed, 58 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h index 049bb23207..1f99738a9f 100644 --- a/src/gui/opengl/qopengl.h +++ b/src/gui/opengl/qopengl.h @@ -103,6 +103,7 @@ typedef GLfloat GLdouble; #if !defined(QT_OPENGL_ES_2) # if !defined(Q_OS_MAC) || (defined(Q_OS_MAC) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7) # define QT_OPENGL_3 +# define QT_OPENGL_3_2 # endif #endif diff --git a/src/gui/opengl/qopenglshaderprogram.cpp b/src/gui/opengl/qopenglshaderprogram.cpp index 88c9c8008c..a5c98605b4 100644 --- a/src/gui/opengl/qopenglshaderprogram.cpp +++ b/src/gui/opengl/qopenglshaderprogram.cpp @@ -145,6 +145,8 @@ QT_BEGIN_NAMESPACE \value Vertex Vertex shader written in the OpenGL Shading Language (GLSL). \value Fragment Fragment shader written in the OpenGL Shading Language (GLSL). + \value Geometry Geometry shaders written in the OpenGL Shading Language (GLSL) + based on the OpenGL core feature (requires OpenGL >= 3.2). */ class QOpenGLShaderPrivate : public QObjectPrivate @@ -156,7 +158,17 @@ public: , shaderType(type) , compiled(false) , glfuncs(new QOpenGLFunctions(ctx)) +#ifndef QT_OPENGL_ES_2 + , supportsGeometryShaders(false) +#endif { +#ifndef QT_OPENGL_ES_2 + // Geometry shaders require OpenGL >= 3.2 + if (shaderType & QOpenGLShader::Geometry) { + QSurfaceFormat f = ctx->format(); + supportsGeometryShaders = (f.version() >= qMakePair(3, 2)); + } +#endif } ~QOpenGLShaderPrivate(); @@ -167,6 +179,11 @@ public: QOpenGLFunctions *glfuncs; +#ifndef QT_OPENGL_ES_2 + // Support for geometry shaders + bool supportsGeometryShaders; +#endif + bool create(); bool compile(QOpenGLShader *q); void deleteShader(); @@ -192,10 +209,15 @@ bool QOpenGLShaderPrivate::create() if (!context) return false; GLuint shader; - if (shaderType == QOpenGLShader::Vertex) + if (shaderType == QOpenGLShader::Vertex) { shader = glfuncs->glCreateShader(GL_VERTEX_SHADER); - else +#if defined(QT_OPENGL_3_2) + } else if (shaderType == QOpenGLShader::Geometry && supportsGeometryShaders) { + shader = glfuncs->glCreateShader(GL_GEOMETRY_SHADER); +#endif + } else { shader = glfuncs->glCreateShader(GL_FRAGMENT_SHADER); + } if (!shader) { qWarning() << "QOpenGLShader: could not create shader"; return false; @@ -234,6 +256,8 @@ bool QOpenGLShaderPrivate::compile(QOpenGLShader *q) type = types[0]; else if (shaderType == QOpenGLShader::Vertex) type = types[1]; + else if (shaderType == QOpenGLShader::Geometry) + type = types[2]; // Get info and source code lengths GLint infoLogLength = 0; @@ -2926,6 +2950,19 @@ void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4 setUniformValueArray(uniformLocation(name), values, count); } +/*! + Returns the hardware limit for how many vertices a geometry shader + can output. +*/ +int QOpenGLShaderProgram::maxGeometryOutputVertices() const +{ + GLint n = 0; +#if defined(QT_OPENGL_3_2) + glGetIntegerv(GL_MAX_GEOMETRY_OUTPUT_VERTICES, &n); +#endif + return n; +} + /*! Returns true if shader programs written in the OpenGL Shading Language (GLSL) are supported on this system; false otherwise. @@ -2972,9 +3009,22 @@ bool QOpenGLShader::hasOpenGLShaders(ShaderType type, QOpenGLContext *context) if (!context) return false; - if ((type & ~(Vertex | Fragment)) || type == 0) + if ((type & ~(Geometry | Vertex | Fragment)) || type == 0) return false; + if (type == Geometry) { +#ifndef QT_OPENGL_ES_2 + // Geometry shaders require OpenGL 3.2 or newer + QSurfaceFormat format = context->format(); + return (format.version() >= qMakePair(3, 2)); +#else + // No geometry shader support in OpenGL ES2 + return false; +#endif + } + + // Unconditional support of vertex and fragment shaders implicitly assumes + // a minimum OpenGL version of 2.0 return true; } diff --git a/src/gui/opengl/qopenglshaderprogram.h b/src/gui/opengl/qopenglshaderprogram.h index f371326239..00b67f9434 100644 --- a/src/gui/opengl/qopenglshaderprogram.h +++ b/src/gui/opengl/qopenglshaderprogram.h @@ -64,7 +64,8 @@ public: enum ShaderTypeBit { Vertex = 0x0001, - Fragment = 0x0002 + Fragment = 0x0002, + Geometry = 0x0004 }; Q_DECLARE_FLAGS(ShaderType, ShaderTypeBit) @@ -126,6 +127,8 @@ public: GLuint programId() const; + int maxGeometryOutputVertices() const; + void bindAttributeLocation(const char *name, int location); void bindAttributeLocation(const QByteArray& name, int location); void bindAttributeLocation(const QString& name, int location); -- cgit v1.2.3 From 40192d68140c58bc963af78327b919e0db6405e9 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Sat, 11 Aug 2012 10:20:18 +0100 Subject: OpenGL: Add QOpenGLVertexArrayObject class This class makes it much simpler to manage OpenGL state relating to vertex data (i.e. vertex buffer objects, vertex attribute divisors, index buffer objects, vertex buffer formats). Change-Id: I9fb932cc3f0691ec9ba065bf871e43cd2e369bad Reviewed-by: James Turner Reviewed-by: Gunnar Sletta --- src/gui/opengl/opengl.pri | 6 +- src/gui/opengl/qopenglvertexarrayobject.cpp | 472 ++++++++++++++++++++++++++++ src/gui/opengl/qopenglvertexarrayobject.h | 110 +++++++ 3 files changed, 586 insertions(+), 2 deletions(-) create mode 100644 src/gui/opengl/qopenglvertexarrayobject.cpp create mode 100644 src/gui/opengl/qopenglvertexarrayobject.h (limited to 'src') diff --git a/src/gui/opengl/opengl.pri b/src/gui/opengl/opengl.pri index 4f4701f7f5..0c16e1582d 100644 --- a/src/gui/opengl/opengl.pri +++ b/src/gui/opengl/opengl.pri @@ -29,7 +29,8 @@ contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2) { opengl/qtriangulator_p.h \ opengl/qrbtree_p.h \ opengl/qopenglversionfunctions.h \ - opengl/qopenglversionfunctionsfactory_p.h + opengl/qopenglversionfunctionsfactory_p.h \ + opengl/qopenglvertexarrayobject.h SOURCES += opengl/qopengl.cpp \ opengl/qopenglfunctions.cpp \ @@ -47,7 +48,8 @@ contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2) { opengl/qopengltextureglyphcache.cpp \ opengl/qtriangulator.cpp \ opengl/qopenglversionfunctions.cpp \ - opengl/qopenglversionfunctionsfactory.cpp + opengl/qopenglversionfunctionsfactory.cpp \ + opengl/qopenglvertexarrayobject.cpp !contains(QT_CONFIG, opengles2) { diff --git a/src/gui/opengl/qopenglvertexarrayobject.cpp b/src/gui/opengl/qopenglvertexarrayobject.cpp new file mode 100644 index 0000000000..7f130505ec --- /dev/null +++ b/src/gui/opengl/qopenglvertexarrayobject.cpp @@ -0,0 +1,472 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qopenglvertexarrayobject.h" + +#include +#include + +#if !defined(QT_OPENGL_ES_2) +#include +#include +#endif + +QT_BEGIN_NAMESPACE + +class QVertexArrayObjectHelper +{ +public: + QVertexArrayObjectHelper(QOpenGLContext *context) + { + Q_ASSERT(context); +#if !defined(QT_OPENGL_ES_2) + GenVertexArrays = reinterpret_cast(context->getProcAddress("glGenVertexArrays")); + DeleteVertexArrays = reinterpret_cast(context->getProcAddress("glDeleteVertexArrays")); + BindVertexArray = reinterpret_cast(context->getProcAddress("glBindVertexArray")); +#else + GenVertexArrays = reinterpret_cast(context->getProcAddress("glGenVertexArraysOES")); + DeleteVertexArrays = reinterpret_cast(context->getProcAddress("glDeleteVertexArraysOES")); + BindVertexArray = reinterpret_cast(context->getProcAddress("glBindVertexArrayOES")); +#endif + } + + inline void glGenVertexArrays(GLsizei n, GLuint *arrays) + { + GenVertexArrays(n, arrays); + } + + inline void glDeleteVertexArrays(GLsizei n, const GLuint *arrays) + { + DeleteVertexArrays(n, arrays); + } + + inline void glBindVertexArray(GLuint array) + { + BindVertexArray(array); + } + +private: + // Function signatures are equivalent between desktop core, ARB and ES 2 extensions + void (QOPENGLF_APIENTRYP GenVertexArrays)(GLsizei n, GLuint *arrays); + void (QOPENGLF_APIENTRYP DeleteVertexArrays)(GLsizei n, const GLuint *arrays); + void (QOPENGLF_APIENTRYP BindVertexArray)(GLuint array); +}; + +class QOpenGLVertexArrayObjectPrivate : public QObjectPrivate +{ +public: + QOpenGLVertexArrayObjectPrivate() + : vao(0) +#if defined(QT_OPENGL_ES_2) + , vaoFuncs(0) +#else + , vaoFuncsType(NotSupported) +#endif + , context(0) + { + } + + ~QOpenGLVertexArrayObjectPrivate() + { +#if defined(QT_OPENGL_ES_2) + delete vaoFuncs; +#else + if (vaoFuncsType == ARB) + delete vaoFuncs.arb; +#endif + } + + bool create(); + void destroy(); + void bind(); + void release(); + + GLuint vao; + +#if defined(QT_OPENGL_ES_2) + QVertexArrayObjectHelper *vaoFuncs; +#else + union { + QOpenGLFunctions_3_0 *core_3_0; + QOpenGLFunctions_3_2_Core *core_3_2; + QVertexArrayObjectHelper *arb; + } vaoFuncs; + enum { + NotSupported, + Core_3_0, + Core_3_2, + ARB + } vaoFuncsType; +#endif + QOpenGLContext *context; +}; + +bool QOpenGLVertexArrayObjectPrivate::create() +{ + QOpenGLContext *ctx = QOpenGLContext::currentContext(); + if (!ctx) { + qWarning("QOpenGLVertexArrayObject::create() requires a valid current OpenGL context"); + return false; + } + +#if defined(QT_OPENGL_ES_2) + if (ctx->hasExtension("GL_OES_vertex_array_object")) { + vaoFuncs = new QVertexArrayObjectHelper(ctx); + vaoFuncs->glGenVertexArrays(1, &vao); + } +#else + vaoFuncs.core_3_0 = 0; + vaoFuncsType = NotSupported; + QSurfaceFormat format = ctx->format(); + if (format.version() >= qMakePair(3,2)) { + vaoFuncs.core_3_2 = ctx->versionFunctions(); + vaoFuncsType = Core_3_2; + vaoFuncs.core_3_2->initializeOpenGLFunctions(); + vaoFuncs.core_3_2->glGenVertexArrays(1, &vao); + } else if (format.majorVersion() >= 3) { + vaoFuncs.core_3_0 = ctx->versionFunctions(); + vaoFuncsType = Core_3_0; + vaoFuncs.core_3_0->initializeOpenGLFunctions(); + vaoFuncs.core_3_0->glGenVertexArrays(1, &vao); + } else if (ctx->hasExtension("GL_ARB_vertex_array_object")) { + vaoFuncs.arb = new QVertexArrayObjectHelper(ctx); + vaoFuncsType = ARB; + vaoFuncs.arb->glGenVertexArrays(1, &vao); + } +#endif + return (vao != 0); +} + +void QOpenGLVertexArrayObjectPrivate::destroy() +{ + if (!vao) + return; +#if defined(QT_OPENGL_ES_2) + if (vaoFuncs) + vaoFuncs->glDeleteVertexArrays(1, &vao); +#else + switch (vaoFuncsType) { + case Core_3_2: + vaoFuncs.core_3_2->glDeleteVertexArrays(1, &vao); + break; + case Core_3_0: + vaoFuncs.core_3_0->glDeleteVertexArrays(1, &vao); + break; + case ARB: + vaoFuncs.arb->glDeleteVertexArrays(1, &vao); + break; + case NotSupported: + break; + } + vao = 0; +#endif +} + +void QOpenGLVertexArrayObjectPrivate::bind() +{ +#if defined(QT_OPENGL_ES_2) + if (vaoFuncs) + vaoFuncs->glBindVertexArray(vao); +#else + switch (vaoFuncsType) { + case Core_3_2: + vaoFuncs.core_3_2->glBindVertexArray(vao); + break; + case Core_3_0: + vaoFuncs.core_3_0->glBindVertexArray(vao); + break; + case ARB: + vaoFuncs.arb->glBindVertexArray(vao); + break; + case NotSupported: + break; + } +#endif +} + +void QOpenGLVertexArrayObjectPrivate::release() +{ +#if defined(QT_OPENGL_ES_2) + if (vaoFuncs) + vaoFuncs->glBindVertexArray(0); +#else + switch (vaoFuncsType) { + case Core_3_2: + vaoFuncs.core_3_2->glBindVertexArray(0); + break; + case Core_3_0: + vaoFuncs.core_3_0->glBindVertexArray(0); + break; + case ARB: + vaoFuncs.arb->glBindVertexArray(0); + break; + case NotSupported: + break; + } +#endif +} + + +/*! + \class QOpenGLVertexArrayObject + \brief The QOpenGLVertexArrayObject class wraps an OpenGL Vertex Array Object. + \inmodule QtGui + \since 5.1 + \ingroup painting-3D + + A Vertex Array Object (VAO) is an OpenGL container object that encapsulates + the state needed to specify per-vertex attribute data to the OpenGL pipeline. + To put it another way, a VAO remembers the states of buffer objects (see + QOpenGLBuffer) and their associated state (e.g. vertex attribute divisors). + This allows a very easy and efficient method of switching between OpenGL buffer + states for rendering different "objects" in a scene. The QOpenGLVertexArrayObject + class is a thin wrapper around an OpenGL VAO. + + For the desktop, VAOs are supported as a core feature in OpenGL 3.0 or newer and by the + GL_ARB_vertex_array_object for older versions. On OpenGL ES 2, VAOs are provided by + the optional GL_OES_vertex_array_object extension. You can check the version of + OpenGL with QOpenGLContext::surfaceFormat() and check for the presence of extensions + with QOpenGLContext::hasExtension(). + + As with the other Qt OpenGL classes, QOpenGLVertexArrayObject has a create() + function to create the underlying OpenGL object. This is to allow the developer to + ensure that there is a valid current OpenGL context at the time. + + Once you have successfully created a VAO the typical usage pattern is: + + \list + \li In scene initialization function, for each visual object: + \list + \li Bind the VAO + \li Set vertex data state for this visual object (vertices, normals, texture coordinates etc.) + \li Unbind (release()) the VAO + \endlist + \li In render function, for each visual object: + \list + \li Bind the VAO (and shader program if needed) + \li Call a glDraw*() function + \li Unbind (release()) the VAO + \endlist + \endlist + + The act of binding the VAO in the render function has the effect of restoring + all of the vertex data state setup in the initialization phase. In this way we can + set a great deal of state when setting up a VAO and efficiently switch between + state sets of objects to be rendered. Using VAOs also allows the OpenGL driver + to amortise the validation checks of the vertex data. + + \note Vertex Array Objects, like all other OpenGL container objects, are specific + to the context for which they were created and cannot be shared amongst a + context group. + + \sa QOpenGLVertexArrayObject::Binder, QOpenGLBuffer +*/ + +/*! + Creates a QOpenGLVertexArrayObject with the given \a parent. You must call create() + with a valid OpenGL context before using. +*/ +QOpenGLVertexArrayObject::QOpenGLVertexArrayObject(QObject* parent) + : QObject(*new QOpenGLVertexArrayObjectPrivate, parent) +{ +} + +/*! + \internal +*/ +QOpenGLVertexArrayObject::QOpenGLVertexArrayObject(QOpenGLVertexArrayObjectPrivate &dd) + : QObject(dd) +{ +} + +/*! + Destroys the QOpenGLVertexArrayObject and the underlying OpenGL resource. +*/ +QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject() +{ + QOpenGLContext* ctx = QOpenGLContext::currentContext(); + + Q_D(QOpenGLVertexArrayObject); + QOpenGLContext *oldContext = 0; + if (d->context != ctx) { + oldContext = ctx; + if (d->context->makeCurrent(oldContext->surface())) { + ctx = d->context; + } else { + qWarning("QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject() failed to make VAO's context current"); + ctx = 0; + } + } + + if (ctx) + destroy(); + + if (oldContext) { + if (!oldContext->makeCurrent(oldContext->surface())) + qWarning("QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject() failed to restore current context"); + } +} + +/*! + Creates the underlying OpenGL vertex array object. There must be a valid OpenGL context + that supports vertex array objects current for this function to succeed. + + Returns true if the OpenGL vertex array object was successfully created. +*/ +bool QOpenGLVertexArrayObject::create() +{ + Q_D(QOpenGLVertexArrayObject); + return d->create(); +} + +/*! + Destroys the underlying OpenGL vertex array object. There must be a valid OpenGL context + that supports vertex array objects current for this function to succeed. +*/ +void QOpenGLVertexArrayObject::destroy() +{ + Q_D(QOpenGLVertexArrayObject); + d->destroy(); +} + +/*! + Returns true is the underlying OpenGL vertex array object has been created. If this + returns true and the associated OpenGL context is current, then you are able to bind() + this object. +*/ +bool QOpenGLVertexArrayObject::isCreated() const +{ + Q_D(const QOpenGLVertexArrayObject); + return (d->vao != 0); +} + +/*! + Returns the id of the underlying OpenGL vertex array object. +*/ +GLuint QOpenGLVertexArrayObject::objectId() const +{ + Q_D(const QOpenGLVertexArrayObject); + return d->vao; +} + +/*! + Binds this vertex array object to the OpenGL binding point. From this point on + and until release() is called or another vertex array object is bound, any + modifications made to vertex data state are stored inside this vertex array object. + + If another vertex array object is then bound you can later restore the set of + state associated with this object by calling bind() on this object once again. + This allows efficient changes between vertex data states in rendering functions. +*/ +void QOpenGLVertexArrayObject::bind() +{ + Q_D(QOpenGLVertexArrayObject); + d->bind(); +} + +/*! + Unbinds this vertex array object by binding the default vertex array object (id = 0). +*/ +void QOpenGLVertexArrayObject::release() +{ + Q_D(QOpenGLVertexArrayObject); + d->release(); +} + + +/*! + \class QOpenGLVertexArrayObject::Binder + \brief The QOpenGLVertexArrayObject::Binder class is a convenience class to help + with the binding and releasing of OpenGL Vertex Array Objects. + \inmodule QtGui + \reentrant + \since 5.1 + \ingroup painting-3D + + QOpenGLVertexArrayObject::Binder is a simple convenience class that can be used + to assist with the binding and releasing of QOpenGLVertexArrayObject instances. + This class is to QOpenGLVertexArrayObject as QMutexLocker is to QMutex. + + This class implements the RAII principle which helps to ensure behavior in + complex code or in the presence of exceptions. + + The constructor of this class accepts a QOpenGLVertexArrayObject (VAO) as an + argument and attempts to bind the VAO, calling QOpenGLVertexArrayObject::create() + if necessary. The destructor of this class calls QOpenGLVertexArrayObject::release() + which unbinds the VAO. + + If needed the VAO can be temporarily unbound with the release() function and bound + once more with rebind(). + + \sa QOpenGLVertexArrayObject +*/ + +/*! + \fn QOpenGLVertexArrayObject::Binder::Binder(QOpenGLVertexArrayObject *v) + + Creates a QOpenGLVertexArrayObject::Binder object and binds \a v by calling + QOpenGLVertexArrayObject::bind(). If necessary it first calls + QOpenGLVertexArrayObject::create(). +*/ + +/*! + \fn QOpenGLVertexArrayObject::Binder::~Binder() + + Destroys the QOpenGLVertexArrayObject::Binder and releases the associated vertex array object. +*/ + +/*! + \fn QOpenGLVertexArrayObject::Binder::release() + + Can be used to temporarily release the associated vertex array object. + + \sa rebind() +*/ + +/*! + \fn QOpenGLVertexArrayObject::Binder::rebind() + + Can be used to rebind the associated vertex array object. + + \sa release() +*/ + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopenglvertexarrayobject.h b/src/gui/opengl/qopenglvertexarrayobject.h new file mode 100644 index 0000000000..d5226d3ebd --- /dev/null +++ b/src/gui/opengl/qopenglvertexarrayobject.h @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLVERTEXARRAYOBJECT_H +#define QOPENGLVERTEXARRAYOBJECT_H + +#ifndef QT_NO_OPENGL + +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLVertexArrayObjectPrivate; + +class Q_GUI_EXPORT QOpenGLVertexArrayObject : public QObject +{ + Q_OBJECT + +public: + explicit QOpenGLVertexArrayObject(QObject* parent = 0); + ~QOpenGLVertexArrayObject(); + + bool create(); + void destroy(); + bool isCreated() const; + GLuint objectId() const; + void bind(); + void release(); + + class Q_GUI_EXPORT Binder + { + public: + inline Binder(QOpenGLVertexArrayObject *v) + : vao(v) + { + Q_ASSERT(v); + if (vao->isCreated() || vao->create()) + vao->bind(); + } + + inline ~Binder() + { + release(); + } + + inline void release() + { + vao->release(); + } + + inline void rebind() + { + vao->bind(); + } + + private: + Q_DISABLE_COPY(Binder) + QOpenGLVertexArrayObject *vao; + }; + +private: + Q_DISABLE_COPY(QOpenGLVertexArrayObject) + Q_DECLARE_PRIVATE(QOpenGLVertexArrayObject) + QOpenGLVertexArrayObject(QOpenGLVertexArrayObjectPrivate &dd); +}; + +QT_END_NAMESPACE + +#endif + +#endif // QOPENGLVERTEXARRAYOBJECT_H -- cgit v1.2.3 From ab59a7ef09d56e59f9496ac59d88ba05db61e298 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 12 Oct 2012 12:20:40 +0200 Subject: Add private API to connect to slots in QObjectPrivate Change-Id: I16ffbf91ff4c6e9fca6fe7984800d2c24e70701b Reviewed-by: Thiago Macieira --- src/corelib/kernel/qobject_p.h | 77 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) (limited to 'src') diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h index e4b4ce8b42..e849ec1599 100644 --- a/src/corelib/kernel/qobject_p.h +++ b/src/corelib/kernel/qobject_p.h @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Olivier Goffart ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -198,6 +199,14 @@ public: inline void connectNotify(const QMetaMethod &signal); inline void disconnectNotify(const QMetaMethod &signal); + template + static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, + const typename QtPrivate::FunctionPointer::Object *receiverPrivate, Func2 slot, + Qt::ConnectionType type = Qt::AutoConnection); + + template + static inline bool disconnect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, + const typename QtPrivate::FunctionPointer::Object *receiverPrivate, Func2 slot); public: ExtraData *extraData; // extra data set by the user QThreadData *threadData; // id of the thread that owns the object @@ -267,6 +276,74 @@ inline void QObjectPrivate::disconnectNotify(const QMetaMethod &signal) q_ptr->disconnectNotify(signal); } +namespace QtPrivate { +template class QPrivateSlotObject : public QSlotObjectBase +{ + typedef QtPrivate::FunctionPointer FuncType; + Func function; + static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret) + { + switch (which) { + case Destroy: + delete static_cast(this_); + break; + case Call: + FuncType::template call(static_cast(this_)->function, + static_cast(QObjectPrivate::get(r)), a); + break; + case Compare: + *ret = *reinterpret_cast(a) == static_cast(this_)->function; + break; + case NumOperations: ; + } + } +public: + explicit QPrivateSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {} +}; +} //namespace QtPrivate + +template +inline QMetaObject::Connection QObjectPrivate::connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, + const typename QtPrivate::FunctionPointer::Object *receiverPrivate, Func2 slot, + Qt::ConnectionType type) +{ + typedef QtPrivate::FunctionPointer SignalType; + typedef QtPrivate::FunctionPointer SlotType; + reinterpret_cast(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast(0)); + + //compilation error if the arguments does not match. + Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount), + "The slot requires more arguments than the signal provides."); + Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments::value), + "Signal and slot arguments are not compatible."); + Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible::value), + "Return type of the slot is not compatible with the return type of the signal."); + + const int *types = 0; + if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection) + types = QtPrivate::ConnectionTypes::types(); + + return QObject::connectImpl(sender, reinterpret_cast(&signal), + receiverPrivate->q_func(), reinterpret_cast(&slot), + new QtPrivate::QPrivateSlotObject::Value, + typename SignalType::ReturnType>(slot), + type, types, &SignalType::Object::staticMetaObject); +} + +template +bool QObjectPrivate::disconnect(const typename QtPrivate::FunctionPointer< Func1 >::Object* sender, Func1 signal, + const typename QtPrivate::FunctionPointer< Func2 >::Object* receiverPrivate, Func2 slot) +{ + typedef QtPrivate::FunctionPointer SignalType; + typedef QtPrivate::FunctionPointer SlotType; + reinterpret_cast(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast(0)); + //compilation error if the arguments does not match. + Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments::value), + "Signal and slot arguments are not compatible."); + return QObject::disconnectImpl(sender, reinterpret_cast(&signal), + receiverPrivate->q_func(), reinterpret_cast(&slot), + &SignalType::Object::staticMetaObject); +} Q_DECLARE_TYPEINFO(QObjectPrivate::Connection, Q_MOVABLE_TYPE); Q_DECLARE_TYPEINFO(QObjectPrivate::Sender, Q_MOVABLE_TYPE); -- cgit v1.2.3 From 439002cddeb32766ea9806ac8b5cf9a973ed0f13 Mon Sep 17 00:00:00 2001 From: Rafael Roquetto Date: Mon, 25 Feb 2013 19:45:02 -0300 Subject: BlackBerry: handle window state navigator events Change-Id: I925b1c53c5e251111469501056ee162a23e36faf Reviewed-by: Kevin Krammer Reviewed-by: Sean Harmer --- src/plugins/platforms/qnx/qqnxbpseventfilter.cpp | 20 +++++++++++ src/plugins/platforms/qnx/qqnxintegration.cpp | 2 ++ .../platforms/qnx/qqnxnavigatoreventhandler.cpp | 6 ++++ .../platforms/qnx/qqnxnavigatoreventhandler.h | 2 ++ src/plugins/platforms/qnx/qqnxscreen.cpp | 41 ++++++++++++++++++---- src/plugins/platforms/qnx/qqnxscreen.h | 3 ++ 6 files changed, 67 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp index 2d19537896..542833473d 100644 --- a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp +++ b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp @@ -210,6 +210,26 @@ bool QQnxBpsEventFilter::handleNavigatorEvent(bps_event_t *event) m_navigatorEventHandler->handleExit(); break; + case NAVIGATOR_WINDOW_STATE: { + qBpsEventFilterDebug() << Q_FUNC_INFO << "WINDOW STATE event"; + const navigator_window_state_t state = navigator_event_get_window_state(event); + const QByteArray id(navigator_event_get_groupid(event)); + + switch (state) { + case NAVIGATOR_WINDOW_FULLSCREEN: + m_navigatorEventHandler->handleWindowGroupStateChanged(id, Qt::WindowFullScreen); + break; + case NAVIGATOR_WINDOW_THUMBNAIL: + m_navigatorEventHandler->handleWindowGroupStateChanged(id, Qt::WindowMinimized); + break; + case NAVIGATOR_WINDOW_INVISIBLE: + m_navigatorEventHandler->handleWindowGroupDeactivated(id); + break; + } + + break; + } + case NAVIGATOR_WINDOW_ACTIVE: { qBpsEventFilterDebug() << Q_FUNC_INFO << "WINDOW ACTIVE event"; const QByteArray id(navigator_event_get_groupid(event)); diff --git a/src/plugins/platforms/qnx/qqnxintegration.cpp b/src/plugins/platforms/qnx/qqnxintegration.cpp index f3cfdab9c6..2d5c2e54e7 100644 --- a/src/plugins/platforms/qnx/qqnxintegration.cpp +++ b/src/plugins/platforms/qnx/qqnxintegration.cpp @@ -495,6 +495,8 @@ void QQnxIntegration::createDisplay(screen_display_t display, bool isPrimary) QObject::connect(m_navigatorEventHandler, SIGNAL(rotationChanged(int)), screen, SLOT(setRotation(int))); QObject::connect(m_navigatorEventHandler, SIGNAL(windowGroupActivated(QByteArray)), screen, SLOT(activateWindowGroup(QByteArray))); QObject::connect(m_navigatorEventHandler, SIGNAL(windowGroupDeactivated(QByteArray)), screen, SLOT(deactivateWindowGroup(QByteArray))); + QObject::connect(m_navigatorEventHandler, SIGNAL(windowGroupStateChanged(QByteArray,Qt::WindowState)), + screen, SLOT(windowGroupStateChanged(QByteArray,Qt::WindowState))); } void QQnxIntegration::removeDisplay(QQnxScreen *screen) diff --git a/src/plugins/platforms/qnx/qqnxnavigatoreventhandler.cpp b/src/plugins/platforms/qnx/qqnxnavigatoreventhandler.cpp index 19fa9c5a9f..d561482b47 100644 --- a/src/plugins/platforms/qnx/qqnxnavigatoreventhandler.cpp +++ b/src/plugins/platforms/qnx/qqnxnavigatoreventhandler.cpp @@ -106,4 +106,10 @@ void QQnxNavigatorEventHandler::handleWindowGroupDeactivated(const QByteArray &i Q_EMIT windowGroupDeactivated(id); } +void QQnxNavigatorEventHandler::handleWindowGroupStateChanged(const QByteArray &id, Qt::WindowState state) +{ + qNavigatorEventHandlerDebug() << Q_FUNC_INFO << id; + Q_EMIT windowGroupStateChanged(id, state); +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/qnx/qqnxnavigatoreventhandler.h b/src/plugins/platforms/qnx/qqnxnavigatoreventhandler.h index 2068163473..cce3921a27 100644 --- a/src/plugins/platforms/qnx/qqnxnavigatoreventhandler.h +++ b/src/plugins/platforms/qnx/qqnxnavigatoreventhandler.h @@ -58,11 +58,13 @@ public: void handleExit(); void handleWindowGroupActivated(const QByteArray &id); void handleWindowGroupDeactivated(const QByteArray &id); + void handleWindowGroupStateChanged(const QByteArray &id, Qt::WindowState state); Q_SIGNALS: void rotationChanged(int angle); void windowGroupActivated(const QByteArray &id); void windowGroupDeactivated(const QByteArray &id); + void windowGroupStateChanged(const QByteArray &id, Qt::WindowState state); }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/qnx/qqnxscreen.cpp b/src/plugins/platforms/qnx/qqnxscreen.cpp index fc8b3bb167..bd60c6b71d 100644 --- a/src/plugins/platforms/qnx/qqnxscreen.cpp +++ b/src/plugins/platforms/qnx/qqnxscreen.cpp @@ -551,6 +551,21 @@ void QQnxScreen::windowClosed(void *window) removeOverlayWindow(windowHandle); } +void QQnxScreen::windowGroupStateChanged(const QByteArray &id, Qt::WindowState state) +{ + qScreenDebug() << Q_FUNC_INFO; + + if (!rootWindow() || id != rootWindow()->groupName()) + return; + + QWindow * const window = topMostChildWindow(); + + if (!window) + return; + + QWindowSystemInterface::handleWindowStateChanged(window, state); +} + void QQnxScreen::activateWindowGroup(const QByteArray &id) { qScreenDebug() << Q_FUNC_INFO; @@ -558,13 +573,12 @@ void QQnxScreen::activateWindowGroup(const QByteArray &id) if (!rootWindow() || id != rootWindow()->groupName()) return; - if (!m_childWindows.isEmpty()) { - // We're picking up the last window of the list here - // because this list is ordered by stacking order. - // Last window is effectively the one on top. - QWindow * const window = m_childWindows.last()->window(); - QWindowSystemInterface::handleWindowActivated(window); - } + QWindow * const window = topMostChildWindow(); + + if (!window) + return; + + QWindowSystemInterface::handleWindowActivated(window); } void QQnxScreen::deactivateWindowGroup(const QByteArray &id) @@ -586,4 +600,17 @@ QSharedPointer QQnxScreen::rootWindow() const return m_rootWindow; } +QWindow * QQnxScreen::topMostChildWindow() const +{ + if (!m_childWindows.isEmpty()) { + + // We're picking up the last window of the list here + // because this list is ordered by stacking order. + // Last window is effectively the one on top. + return m_childWindows.last()->window(); + } + + return 0; +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/qnx/qqnxscreen.h b/src/plugins/platforms/qnx/qqnxscreen.h index 39cd4159d1..41dc675599 100644 --- a/src/plugins/platforms/qnx/qqnxscreen.h +++ b/src/plugins/platforms/qnx/qqnxscreen.h @@ -101,6 +101,7 @@ public Q_SLOTS: void setRotation(int rotation); void newWindowCreated(void *window); void windowClosed(void *window); + void windowGroupStateChanged(const QByteArray &id, Qt::WindowState state); void activateWindowGroup(const QByteArray &id); void deactivateWindowGroup(const QByteArray &id); @@ -114,6 +115,8 @@ private: void addOverlayWindow(screen_window_t window); void removeOverlayWindow(screen_window_t window); + QWindow *topMostChildWindow() const; + screen_context_t m_screenContext; screen_display_t m_display; mutable QSharedPointer m_rootWindow; -- cgit v1.2.3 From 50d3a2917e37cd173f373a83542314002b2ab6c7 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 27 Feb 2013 15:48:17 -0800 Subject: Fix Q_GLOBAL_STATIC support for exceptions The problem was that the HolderBase destructor was getting called after the contained type's constructor threw an exception, as is required by RAII semantics (the base was fully initialized, so it had to be destroyed). That was required because we want to return a non-null pointer from operator() during destruction and return null after destruction, to keep compatibility with Qt 4. The solution is to only set the guard to Destroyed only if it is already at value Initialized. This way, if the HolderBase destructor is run as part of the stack unwinding, it knows that the construction did not complete. Change-Id: I9849b43ed7112bf9e70861b48a56a924c286617e Reviewed-by: Olivier Goffart --- src/corelib/global/qglobalstatic.cpp | 8 +++++--- src/corelib/global/qglobalstatic.h | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qglobalstatic.cpp b/src/corelib/global/qglobalstatic.cpp index 7caa2e9848..8474d132b4 100644 --- a/src/corelib/global/qglobalstatic.cpp +++ b/src/corelib/global/qglobalstatic.cpp @@ -288,9 +288,11 @@ structure so holder's destructor can set the guard variable to the value -2 (destroyed) when the type has finished destruction. Since we need to set the guard \b after the destruction has finished, this code needs to be in a - base struct's destructor. A holder structure is used to avoid creating two - statics, which the ABI might require duplicating the thread-safe control - structures for. + base struct's destructor. And it only sets to -2 (destroyed) if it finds + the guard at -1 (initialized): this is done to ensure that the guard isn't + set to -2 in the event the type's constructor threw an exception. A holder + structure is used to avoid creating two statics, which the ABI might + require duplicating the thread-safe control structures for. The other implementation is similar to Qt 4's Q_GLOBAL_STATIC, but unlike that one, it uses a \l QBasicMutex to provide locking. It is also more diff --git a/src/corelib/global/qglobalstatic.h b/src/corelib/global/qglobalstatic.h index 336512eac3..a6268e057e 100644 --- a/src/corelib/global/qglobalstatic.h +++ b/src/corelib/global/qglobalstatic.h @@ -68,7 +68,8 @@ enum GuardValues { { \ struct HolderBase { \ ~HolderBase() Q_DECL_NOTHROW \ - { guard.store(QtGlobalStatic::Destroyed); } \ + { if (guard.load() == QtGlobalStatic::Initialized) \ + guard.store(QtGlobalStatic::Destroyed); } \ }; \ static struct Holder : public HolderBase { \ Type value; \ -- cgit v1.2.3 From 8b0868bb17690fa601b3b0cb8c630ac7a178062a Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Mon, 25 Feb 2013 13:37:37 -0800 Subject: Add notify signals to some QCoreApplication properties The various string properties are good candidates for exposure to QML. While QCoreApplication itself is unlikely to be exposed to QML directly, a wrapper exposure also needs these signals in order to react to changes from QCoreApplication. Change-Id: I266da6010f1c9300de4bb5e7775a0bdacab7f26c Reviewed-by: Richard J. Moore --- src/corelib/kernel/qcoreapplication.cpp | 42 +++++++++++++++++++++++++++++++++ src/corelib/kernel/qcoreapplication.h | 13 ++++++---- 2 files changed, 51 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 05688d3ba6..1696aeb77b 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -2039,9 +2039,21 @@ QStringList QCoreApplication::arguments() \sa organizationDomain, applicationName */ +/*! + \fn void QCoreApplication::organizationNameChanged() + \internal + + While not useful from C++ due to how organizationName is normally set once on + startup, this is still needed for QML so that bindings are reevaluated after + that initial change. +*/ void QCoreApplication::setOrganizationName(const QString &orgName) { + if (coreappdata()->orgName == orgName) + return; coreappdata()->orgName = orgName; + if (QCoreApplication::self) + emit QCoreApplication::self->organizationNameChanged(); } QString QCoreApplication::organizationName() @@ -2067,9 +2079,19 @@ QString QCoreApplication::organizationName() \sa organizationName, applicationName, applicationVersion */ +/*! + \fn void QCoreApplication::organizationDomainChanged() + \internal + + Primarily for QML, see organizationNameChanged. +*/ void QCoreApplication::setOrganizationDomain(const QString &orgDomain) { + if (coreappdata()->orgDomain == orgDomain) + return; coreappdata()->orgDomain = orgDomain; + if (QCoreApplication::self) + emit QCoreApplication::self->organizationDomainChanged(); } QString QCoreApplication::organizationDomain() @@ -2089,9 +2111,19 @@ QString QCoreApplication::organizationDomain() \sa organizationName, organizationDomain, applicationVersion, applicationFilePath */ +/*! + \fn void QCoreApplication::applicationNameChanged() + \internal + + Primarily for QML, see organizationNameChanged. +*/ void QCoreApplication::setApplicationName(const QString &application) { + if (coreappdata()->application == application) + return; coreappdata()->application = application; + if (QCoreApplication::self) + emit QCoreApplication::self->applicationNameChanged(); } QString QCoreApplication::applicationName() @@ -2118,9 +2150,19 @@ Q_CORE_EXPORT QString qt_applicationName_noFallback() \sa applicationName, organizationName, organizationDomain */ +/*! + \fn void QCoreApplication::applicationVersionChanged() + \internal + + Primarily for QML, see organizationNameChanged. +*/ void QCoreApplication::setApplicationVersion(const QString &version) { + if (coreappdata()->applicationVersion == version) + return; coreappdata()->applicationVersion = version; + if (QCoreApplication::self) + emit QCoreApplication::self->applicationVersionChanged(); } QString QCoreApplication::applicationVersion() diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h index b235e327e0..022ef8c0bc 100644 --- a/src/corelib/kernel/qcoreapplication.h +++ b/src/corelib/kernel/qcoreapplication.h @@ -66,10 +66,10 @@ class QAbstractNativeEventFilter; class Q_CORE_EXPORT QCoreApplication : public QObject { Q_OBJECT - Q_PROPERTY(QString applicationName READ applicationName WRITE setApplicationName) - Q_PROPERTY(QString applicationVersion READ applicationVersion WRITE setApplicationVersion) - Q_PROPERTY(QString organizationName READ organizationName WRITE setOrganizationName) - Q_PROPERTY(QString organizationDomain READ organizationDomain WRITE setOrganizationDomain) + Q_PROPERTY(QString applicationName READ applicationName WRITE setApplicationName NOTIFY applicationNameChanged) + Q_PROPERTY(QString applicationVersion READ applicationVersion WRITE setApplicationVersion NOTIFY applicationVersionChanged) + Q_PROPERTY(QString organizationName READ organizationName WRITE setOrganizationName NOTIFY organizationNameChanged) + Q_PROPERTY(QString organizationDomain READ organizationDomain WRITE setOrganizationDomain NOTIFY organizationDomainChanged) Q_PROPERTY(bool quitLockEnabled READ isQuitLockEnabled WRITE setQuitLockEnabled) Q_DECLARE_PRIVATE(QCoreApplication) @@ -164,6 +164,11 @@ Q_SIGNALS: #endif ); + void organizationNameChanged(); + void organizationDomainChanged(); + void applicationNameChanged(); + void applicationVersionChanged(); + protected: bool event(QEvent *); -- cgit v1.2.3 From c474f404526d82f74e3272e1debbc7f50679e9eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Tue, 26 Feb 2013 14:15:03 +0100 Subject: Add QDBusReply::error() const. The accessor was missing. Task-number: QTBUG-29917 Change-Id: Ie6759a1120bc9ed6550c271df35f276e15b4eb79 Reviewed-by: Thiago Macieira --- src/dbus/qdbusreply.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/dbus/qdbusreply.h b/src/dbus/qdbusreply.h index 7b4a4ebcf8..4567c80131 100644 --- a/src/dbus/qdbusreply.h +++ b/src/dbus/qdbusreply.h @@ -111,6 +111,7 @@ public: inline bool isValid() const { return !m_error.isValid(); } inline const QDBusError& error() { return m_error; } + inline const QDBusError& error() const { return m_error; } inline Type value() const { @@ -182,6 +183,7 @@ public: inline bool isValid() const { return !m_error.isValid(); } inline const QDBusError& error() { return m_error; } + inline const QDBusError& error() const { return m_error; } private: QDBusError m_error; -- cgit v1.2.3 From 2ca46a5526e4341a620b5c9adf93844fb9fddea9 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Sat, 2 Feb 2013 23:06:51 +0000 Subject: OpenGL: Add support for OpenGL 4 tessellation shader stages This adds support for OpenGL 4 tessellation shader stages to QOpenGLShaderProgram and QOpenGLShader. Change-Id: Iefb2f411e00767990d54670c5d39413be694dd66 Reviewed-by: James Turner Reviewed-by: Giuseppe D'Angelo Reviewed-by: Gunnar Sletta --- src/gui/doc/src/external-resources.qdoc | 5 + src/gui/opengl/qopengl.h | 4 + src/gui/opengl/qopenglshaderprogram.cpp | 233 +++++++++++++++++++++++++++++++- src/gui/opengl/qopenglshaderprogram.h | 17 ++- 4 files changed, 252 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/gui/doc/src/external-resources.qdoc b/src/gui/doc/src/external-resources.qdoc index 858dd76bbf..0e955b11f6 100644 --- a/src/gui/doc/src/external-resources.qdoc +++ b/src/gui/doc/src/external-resources.qdoc @@ -45,3 +45,8 @@ \externalpage http://www.xfree86.org/4.3.0/Xcursor.3.html \title Xcursor */ + +/*! + \externalpage http://www.opengl.org/wiki/Tessellation_Shader + \title OpenGL Tessellation Shaders +*/ \ No newline at end of file diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h index 1f99738a9f..df63eac1f7 100644 --- a/src/gui/opengl/qopengl.h +++ b/src/gui/opengl/qopengl.h @@ -100,11 +100,15 @@ typedef GLfloat GLdouble; #endif // Desktops, apart from Mac OS X prior to 10.7 can support OpenGL 3 +// and desktops apart from Mac can support OpenGL 4 #if !defined(QT_OPENGL_ES_2) # if !defined(Q_OS_MAC) || (defined(Q_OS_MAC) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7) # define QT_OPENGL_3 # define QT_OPENGL_3_2 # endif +#if !defined(Q_OS_MAC) +# define QT_OPENGL_4 +#endif #endif QT_BEGIN_NAMESPACE diff --git a/src/gui/opengl/qopenglshaderprogram.cpp b/src/gui/opengl/qopenglshaderprogram.cpp index a5c98605b4..4f824f5fb6 100644 --- a/src/gui/opengl/qopenglshaderprogram.cpp +++ b/src/gui/opengl/qopenglshaderprogram.cpp @@ -50,6 +50,10 @@ #include #include +#if !defined(QT_OPENGL_ES_2) +#include +#endif + QT_BEGIN_NAMESPACE /*! @@ -147,6 +151,10 @@ QT_BEGIN_NAMESPACE \value Fragment Fragment shader written in the OpenGL Shading Language (GLSL). \value Geometry Geometry shaders written in the OpenGL Shading Language (GLSL) based on the OpenGL core feature (requires OpenGL >= 3.2). + \value TessellationControl Tessellation control shaders written in the OpenGL + shading language (GLSL), based on the core feature (requires OpenGL >= 4.0). + \value TessellationEvaluation Tessellation evaluation shaders written in the OpenGL + shading language (GLSL), based on the core feature (requires OpenGL >= 4.0). */ class QOpenGLShaderPrivate : public QObjectPrivate @@ -160,14 +168,17 @@ public: , glfuncs(new QOpenGLFunctions(ctx)) #ifndef QT_OPENGL_ES_2 , supportsGeometryShaders(false) + , supportsTessellationShaders(false) #endif { #ifndef QT_OPENGL_ES_2 + QSurfaceFormat f = ctx->format(); + // Geometry shaders require OpenGL >= 3.2 - if (shaderType & QOpenGLShader::Geometry) { - QSurfaceFormat f = ctx->format(); + if (shaderType & QOpenGLShader::Geometry) supportsGeometryShaders = (f.version() >= qMakePair(3, 2)); - } + else if (shaderType & (QOpenGLShader::TessellationControl | QOpenGLShader::TessellationEvaluation)) + supportsTessellationShaders = (f.version() >= qMakePair(4, 0)); #endif } ~QOpenGLShaderPrivate(); @@ -182,6 +193,9 @@ public: #ifndef QT_OPENGL_ES_2 // Support for geometry shaders bool supportsGeometryShaders; + + // Support for tessellation shaders + bool supportsTessellationShaders; #endif bool create(); @@ -214,6 +228,12 @@ bool QOpenGLShaderPrivate::create() #if defined(QT_OPENGL_3_2) } else if (shaderType == QOpenGLShader::Geometry && supportsGeometryShaders) { shader = glfuncs->glCreateShader(GL_GEOMETRY_SHADER); +#endif +#if defined(QT_OPENGL_4) + } else if (shaderType == QOpenGLShader::TessellationControl && supportsTessellationShaders) { + shader = glfuncs->glCreateShader(GL_TESS_CONTROL_SHADER); + } else if (shaderType == QOpenGLShader::TessellationEvaluation && supportsTessellationShaders) { + shader = glfuncs->glCreateShader(GL_TESS_EVALUATION_SHADER); #endif } else { shader = glfuncs->glCreateShader(GL_FRAGMENT_SHADER); @@ -534,6 +554,9 @@ public: , inited(false) , removingShaders(false) , glfuncs(new QOpenGLFunctions) +#ifndef QT_OPENGL_ES_2 + , tessellationFuncs(0) +#endif { } ~QOpenGLShaderProgramPrivate(); @@ -549,6 +572,11 @@ public: QOpenGLFunctions *glfuncs; +#ifndef QT_OPENGL_ES_2 + // Tessellation shader support + QOpenGLFunctions_4_0_Core *tessellationFuncs; +#endif + bool hasShader(QOpenGLShader::ShaderType type) const; }; @@ -606,6 +634,16 @@ bool QOpenGLShaderProgram::init() if (!context) return false; d->glfuncs->initializeOpenGLFunctions(); + +#ifndef QT_OPENGL_ES_2 + // Resolve OpenGL 4 functions for tessellation shader support + QSurfaceFormat format = context->format(); + if (format.version() >= qMakePair(4, 0)) { + d->tessellationFuncs = context->versionFunctions(); + d->tessellationFuncs->initializeOpenGLFunctions(); + } +#endif + GLuint program = d->glfuncs->glCreateProgram(); if (!program) { qWarning() << "QOpenGLShaderProgram: could not create shader program"; @@ -2963,6 +3001,185 @@ int QOpenGLShaderProgram::maxGeometryOutputVertices() const return n; } +/*! + Use this function to specify to OpenGL the number of vertices in + a patch to \a count. A patch is a custom OpenGL primitive whose interpretation + is entirely defined by the tessellation shader stages. Therefore, calling + this function only makes sense when using a QOpenGLShaderProgram + containing tessellation stage shaders. When using OpenGL tessellation, + the only primitive that can be rendered with \c{glDraw*()} functions is + \c{GL_PATCHES}. + + This is equivalent to calling glPatchParameteri(GL_PATCH_VERTICES, count). + + \note This modifies global OpenGL state and is not specific to this + QOpenGLShaderProgram instance. You should call this in your render + function when needed, as QOpenGLShaderProgram will not apply this for + you. This is purely a convenience function. + + \sa patchVertexCount() +*/ +void QOpenGLShaderProgram::setPatchVertexCount(int count) +{ +#if defined(QT_OPENGL_4) + Q_D(QOpenGLShaderProgram); + if (d->tessellationFuncs) + d->tessellationFuncs->glPatchParameteri(GL_PATCH_VERTICES, count); +#else + Q_UNUSED(count); +#endif +} + +/*! + Returns the number of vertices per-patch to be used when rendering. + + \note This returns the global OpenGL state value. It is not specific to + this QOpenGLShaderProgram instance. + + \sa setPatchVertexCount() +*/ +int QOpenGLShaderProgram::patchVertexCount() const +{ + int patchVertices = 0; +#if defined(QT_OPENGL_4) + Q_D(const QOpenGLShaderProgram); + if (d->tessellationFuncs) + d->tessellationFuncs->glGetIntegerv(GL_PATCH_VERTICES, &patchVertices); +#endif + return patchVertices; +} + +/*! + Sets the default outer tessellation levels to be used by the tessellation + primitive generator in the event that the tessellation control shader + does not output them to \a levels. For more details on OpenGL and Tessellation + shaders see \l{OpenGL Tessellation Shaders}. + + The \a levels argument should be a QVector consisting of 4 floats. Not all + of the values make sense for all tessellation modes. If you specify a vector with + fewer than 4 elements, the remaining elements will be given a default value of 1. + + \note This modifies global OpenGL state and is not specific to this + QOpenGLShaderProgram instance. You should call this in your render + function when needed, as QOpenGLShaderProgram will not apply this for + you. This is purely a convenience function. + + \sa defaultOuterTessellationLevels(), setDefaultInnerTessellationLevels() +*/ +void QOpenGLShaderProgram::setDefaultOuterTessellationLevels(const QVector &levels) +{ +#if defined(QT_OPENGL_4) + QVector tessLevels = levels; + + // Ensure we have the required 4 outer tessellation levels + // Use default of 1 for missing entries (same as spec) + const int argCount = 4; + if (tessLevels.size() < argCount) { + tessLevels.reserve(argCount); + for (int i = tessLevels.size(); i < argCount; ++i) + tessLevels.append(1.0f); + } + + Q_D(QOpenGLShaderProgram); + if (d->tessellationFuncs) + d->tessellationFuncs->glPatchParameterfv(GL_PATCH_DEFAULT_OUTER_LEVEL, tessLevels.data()); +#else + Q_UNUSED(levels); +#endif +} + +/*! + Returns the default outer tessellation levels to be used by the tessellation + primitive generator in the event that the tessellation control shader + does not output them. For more details on OpenGL and Tessellation shaders see + \l{OpenGL Tessellation Shaders}. + + Returns a QVector of floats describing the outer tessellation levels. The vector + will always have four elements but not all of them make sense for every mode + of tessellation. + + \note This returns the global OpenGL state value. It is not specific to + this QOpenGLShaderProgram instance. + + \sa setDefaultOuterTessellationLevels(), defaultInnerTessellationLevels() +*/ +QVector QOpenGLShaderProgram::defaultOuterTessellationLevels() const +{ + QVector tessLevels(4, 1.0f); +#if defined(QT_OPENGL_4) + Q_D(const QOpenGLShaderProgram); + if (d->tessellationFuncs) + d->tessellationFuncs->glGetFloatv(GL_PATCH_DEFAULT_OUTER_LEVEL, tessLevels.data()); +#endif + return tessLevels; +} + +/*! + Sets the default outer tessellation levels to be used by the tessellation + primitive generator in the event that the tessellation control shader + does not output them to \a levels. For more details on OpenGL and Tessellation shaders see + \l{OpenGL Tessellation Shaders}. + + The \a levels argument should be a QVector consisting of 2 floats. Not all + of the values make sense for all tessellation modes. If you specify a vector with + fewer than 2 elements, the remaining elements will be given a default value of 1. + + \note This modifies global OpenGL state and is not specific to this + QOpenGLShaderProgram instance. You should call this in your render + function when needed, as QOpenGLShaderProgram will not apply this for + you. This is purely a convenience function. + + \sa defaultInnerTessellationLevels(), setDefaultOuterTessellationLevels() +*/ +void QOpenGLShaderProgram::setDefaultInnerTessellationLevels(const QVector &levels) +{ +#if defined(QT_OPENGL_4) + QVector tessLevels = levels; + + // Ensure we have the required 2 inner tessellation levels + // Use default of 1 for missing entries (same as spec) + const int argCount = 2; + if (tessLevels.size() < argCount) { + tessLevels.reserve(argCount); + for (int i = tessLevels.size(); i < argCount; ++i) + tessLevels.append(1.0f); + } + + Q_D(QOpenGLShaderProgram); + if (d->tessellationFuncs) + d->tessellationFuncs->glPatchParameterfv(GL_PATCH_DEFAULT_INNER_LEVEL, tessLevels.data()); +#else + Q_UNUSED(levels); +#endif +} + +/*! + Returns the default inner tessellation levels to be used by the tessellation + primitive generator in the event that the tessellation control shader + does not output them. For more details on OpenGL and Tessellation shaders see + \l{OpenGL Tessellation Shaders}. + + Returns a QVector of floats describing the inner tessellation levels. The vector + will always have two elements but not all of them make sense for every mode + of tessellation. + + \note This returns the global OpenGL state value. It is not specific to + this QOpenGLShaderProgram instance. + + \sa setDefaultInnerTessellationLevels(), defaultOuterTessellationLevels() +*/ +QVector QOpenGLShaderProgram::defaultInnerTessellationLevels() const +{ + QVector tessLevels(2, 1.0f); +#if defined(QT_OPENGL_4) + Q_D(const QOpenGLShaderProgram); + if (d->tessellationFuncs) + d->tessellationFuncs->glGetFloatv(GL_PATCH_DEFAULT_OUTER_LEVEL, tessLevels.data()); +#endif + return tessLevels; +} + + /*! Returns true if shader programs written in the OpenGL Shading Language (GLSL) are supported on this system; false otherwise. @@ -3009,9 +3226,10 @@ bool QOpenGLShader::hasOpenGLShaders(ShaderType type, QOpenGLContext *context) if (!context) return false; - if ((type & ~(Geometry | Vertex | Fragment)) || type == 0) + if ((type & ~(Geometry | Vertex | Fragment | TessellationControl | TessellationEvaluation)) || type == 0) return false; + QSurfaceFormat format = context->format(); if (type == Geometry) { #ifndef QT_OPENGL_ES_2 // Geometry shaders require OpenGL 3.2 or newer @@ -3020,6 +3238,13 @@ bool QOpenGLShader::hasOpenGLShaders(ShaderType type, QOpenGLContext *context) #else // No geometry shader support in OpenGL ES2 return false; +#endif + } else if (type == TessellationControl || type == TessellationEvaluation) { +#if !defined(QT_OPENGL_ES_2) + return (format.version() >= qMakePair(4, 0)); +#else + // No tessellation shader support in OpenGL ES2 + return false; #endif } diff --git a/src/gui/opengl/qopenglshaderprogram.h b/src/gui/opengl/qopenglshaderprogram.h index 00b67f9434..3677779a6a 100644 --- a/src/gui/opengl/qopenglshaderprogram.h +++ b/src/gui/opengl/qopenglshaderprogram.h @@ -63,9 +63,11 @@ class Q_GUI_EXPORT QOpenGLShader : public QObject public: enum ShaderTypeBit { - Vertex = 0x0001, - Fragment = 0x0002, - Geometry = 0x0004 + Vertex = 0x0001, + Fragment = 0x0002, + Geometry = 0x0004, + TessellationControl = 0x0008, + TessellationEvaluation = 0x0010 }; Q_DECLARE_FLAGS(ShaderType, ShaderTypeBit) @@ -129,6 +131,15 @@ public: int maxGeometryOutputVertices() const; + void setPatchVertexCount(int count); + int patchVertexCount() const; + + void setDefaultOuterTessellationLevels(const QVector &levels); + QVector defaultOuterTessellationLevels() const; + + void setDefaultInnerTessellationLevels(const QVector &levels); + QVector defaultInnerTessellationLevels() const; + void bindAttributeLocation(const char *name, int location); void bindAttributeLocation(const QByteArray& name, int location); void bindAttributeLocation(const QString& name, int location); -- cgit v1.2.3 From 658616b44e8d6ff860ab2f58ff6e51f89c212f95 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 17 Feb 2013 12:11:30 +0100 Subject: QOpenGLShaderProgram: insert precision defines based on runtime detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Given that we can create OpenGL/ES contexts even under a Desktop OpenGL implementation, we must check the type of the surface we're renderering on at runtime. Change-Id: I55004ce918889b3fc094702976500fcfc675bd1a Reviewed-by: Samuel Rødal Reviewed-by: Sean Harmer Reviewed-by: Gunnar Sletta --- src/gui/opengl/qopenglshaderprogram.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglshaderprogram.cpp b/src/gui/opengl/qopenglshaderprogram.cpp index 4f824f5fb6..e48b922dac 100644 --- a/src/gui/opengl/qopenglshaderprogram.cpp +++ b/src/gui/opengl/qopenglshaderprogram.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #if !defined(QT_OPENGL_ES_2) #include @@ -373,18 +374,12 @@ QOpenGLShader::ShaderType QOpenGLShader::shaderType() const return d->shaderType; } -// The precision qualifiers are useful on OpenGL/ES systems, -// but usually not present on desktop systems. Define the -// keywords to empty strings on desktop systems. -#if !defined(QT_OPENGL_ES) || defined(QT_OPENGL_FORCE_SHADER_DEFINES) -#define QOpenGL_DEFINE_QUALIFIERS 1 static const char qualifierDefines[] = "#define lowp\n" "#define mediump\n" "#define highp\n"; -#else - +#if defined(QT_OPENGL_ES) && !defined(QT_OPENGL_FORCE_SHADER_DEFINES) // The "highp" qualifier doesn't exist in fragment shaders // on all ES platforms. When it doesn't exist, use "mediump". #define QOpenGL_REDEFINE_HIGHP 1 @@ -424,10 +419,19 @@ bool QOpenGLShader::compileSourceCode(const char *source) src.append(source); srclen.append(GLint(headerLen)); } -#ifdef QOpenGL_DEFINE_QUALIFIERS - src.append(qualifierDefines); - srclen.append(GLint(sizeof(qualifierDefines) - 1)); + + // The precision qualifiers are useful on OpenGL/ES systems, + // but usually not present on desktop systems. + const QSurfaceFormat currentSurfaceFormat = QOpenGLContext::currentContext()->format(); + if (currentSurfaceFormat.renderableType() == QSurfaceFormat::OpenGL +#ifdef QT_OPENGL_FORCE_SHADER_DEFINES + || true #endif + ) { + src.append(qualifierDefines); + srclen.append(GLint(sizeof(qualifierDefines) - 1)); + } + #ifdef QOpenGL_REDEFINE_HIGHP if (d->shaderType == Fragment) { src.append(redefineHighp); -- cgit v1.2.3 From b20d15b58b83e76144dbeac4dc9b83215cc91f6a Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Wed, 6 Feb 2013 15:26:22 +0100 Subject: QUrl: update top level domains that may contain non-ASCII characters Most notably, .com and .net now may contain non-ASCII characters. list has been generated from http://www.mozilla.org/projects/security/tld-idn-policy-list.html Change-Id: Idc3191dc782bc4173ccb19b4bc81f4f061ca7999 Reviewed-by: Thiago Macieira --- src/corelib/io/qurlidna.cpp | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qurlidna.cpp b/src/corelib/io/qurlidna.cpp index e2cd481035..fac1703da8 100644 --- a/src/corelib/io/qurlidna.cpp +++ b/src/corelib/io/qurlidna.cpp @@ -2336,27 +2336,42 @@ Q_AUTOTEST_EXPORT QString qt_punycodeDecoder(const QString &pc) } static const char * const idn_whitelist[] = { - "ac", "ar", "at", + "ac", "ar", "asia", "at", "biz", "br", - "cat", "ch", "cl", "cn", + "cat", "ch", "cl", "cn", "com", "de", "dk", "es", "fi", "gr", "hu", - "info", "io", "is", + "il", "info", "io", "is", "ir", "jp", "kr", - "li", "lt", + "li", "lt", "lu", "lv", "museum", - "no", + "name", "net", "no", "nu", "nz", "org", + "pl", "pr", "se", "sh", - "th", "tm", "tw", + "tel", "th", "tm", "tw", + "ua", "vn", + "xn--fiqs8s", // China + "xn--fiqz9s", // China + "xn--fzc2c9e2c", // Sri Lanka + "xn--j6w193g", // Hong Kong + "xn--kprw13d", // Taiwan + "xn--kpry57d", // Taiwan + "xn--mgba3a4f16a", // Iran + "xn--mgba3a4fra", // Iran "xn--mgbaam7a8h", // UAE + "xn--mgbayh7gpa", // Jordan "xn--mgberp4a5d4ar", // Saudi Arabia - "xn--wgbh1c" // Egypt + "xn--ogbpf8fl", // Syria + "xn--p1ai", // Russian Federation + "xn--wgbh1c", // Egypt + "xn--wgbl6a", // Qatar + "xn--xkc2al3hye2a" // Sri Lanka }; static const size_t idn_whitelist_size = sizeof idn_whitelist / sizeof *idn_whitelist; -- cgit v1.2.3 From e786a347c8f8a90f5c5d0fa0d198e343e96c82d2 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Thu, 14 Feb 2013 09:10:53 +0200 Subject: Add __ARM_ARCH_5TE__ to Q_PROCESSOR_ARM_V5 Android uses this define for armv5. Change-Id: Iee32f3e8691fa731ab0c2185a01620e18741f9a4 Reviewed-by: Thiago Macieira Reviewed-by: BogDan Vatra --- src/corelib/global/qprocessordetection.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/corelib/global/qprocessordetection.h b/src/corelib/global/qprocessordetection.h index c005c5446e..86023d1703 100644 --- a/src/corelib/global/qprocessordetection.h +++ b/src/corelib/global/qprocessordetection.h @@ -118,6 +118,7 @@ # define Q_PROCESSOR_ARM_V6 # define Q_PROCESSOR_ARM_V5 # elif defined(__ARM_ARCH_5TEJ__) \ + || defined(__ARM_ARCH_5TE__) \ || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 5) \ || (defined(_M_ARM) && _M_ARM-0 >= 5) # define Q_PROCESSOR_ARM_V5 -- cgit v1.2.3 From b0e58a9008a01cd819d942ddc79534e8dd8ef8bd Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 1 Mar 2013 15:48:32 +0100 Subject: Fix compilation of moc generated file with MEMBER properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the object has only MEMBER properties, without any other property specifying READ, the generated will fail to compile with this error: tst_moc.moc: In member function ‘virtual int ClassWithOneMember::qt_metacall(QMetaObject::Call, int, void**)’: tst_moc.moc:3810:42: error: ‘_v’ was not declared in this scope That's because the '_v' is only declared if 'needTempVarForGet' is set, and it should be set when we have a MEMBER property. Change-Id: I829fad3faf69654b5a3fd540857df19f4a9449d4 Reviewed-by: Gerhard Gappmeier Reviewed-by: Simon Hausmann --- src/tools/moc/generator.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index d3200ba42c..4957f7de67 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Olivier Goffart ** Contact: http://www.qt-project.org/ ** ** This file is part of the tools applications of the Qt Toolkit. @@ -896,7 +897,7 @@ void Generator::generateMetacall() for (int i = 0; i < cdef->propertyList.size(); ++i) { const PropertyDef &p = cdef->propertyList.at(i); needGet |= !p.read.isEmpty() || !p.member.isEmpty(); - if (!p.read.isEmpty()) + if (!p.read.isEmpty() || !p.member.isEmpty()) needTempVarForGet |= (p.gspec != PropertyDef::PointerSpec && p.gspec != PropertyDef::ReferenceSpec); -- cgit v1.2.3 From 7e5d1c1c2fc764d4cacc3e367542e1f42e6b772e Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 1 Mar 2013 15:06:33 +0100 Subject: moc: Support the '$' character as an identifier Both gcc and clang allow the use of '$' in their identifiers as an extension. moc should not throw a parse error if there is one in the file. Instead, consider '$' as valid in identifiers. Task-number: QTBUG-22720 Change-Id: I8be3a52429c0db5b7e8308b8f4fe475d3d3994bf Reviewed-by: Simon Hausmann --- src/tools/moc/keywords.cpp | 2 +- src/tools/moc/ppkeywords.cpp | 2 +- src/tools/moc/util/generate_keywords.cpp | 9 +++++---- src/tools/moc/utils.h | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/tools/moc/keywords.cpp b/src/tools/moc/keywords.cpp index 558e99c1d6..dc03af3378 100644 --- a/src/tools/moc/keywords.cpp +++ b/src/tools/moc/keywords.cpp @@ -45,7 +45,7 @@ static const short keyword_trans[][128] = { {0,0,0,0,0,0,0,0,0,546,543,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 546,252,544,547,0,38,239,545,25,26,236,234,30,235,27,237, + 546,252,544,547,8,38,239,545,25,26,236,234,30,235,27,237, 22,22,22,22,22,22,22,22,22,22,34,41,23,39,24,43, 0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,21,8,8,8,8,8,8,8,8,8,31,549,32,238,8, diff --git a/src/tools/moc/ppkeywords.cpp b/src/tools/moc/ppkeywords.cpp index e9d199705d..76387d4b18 100644 --- a/src/tools/moc/ppkeywords.cpp +++ b/src/tools/moc/ppkeywords.cpp @@ -45,7 +45,7 @@ static const short pp_keyword_trans[][128] = { {0,0,0,0,0,0,0,0,0,98,12,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 98,76,96,13,0,60,62,97,9,10,58,56,11,57,102,59, + 98,76,96,13,1,60,62,97,9,10,58,56,11,57,102,59, 6,6,6,6,6,6,6,6,6,6,92,0,7,81,8,91, 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,0,101,0,61,1, diff --git a/src/tools/moc/util/generate_keywords.cpp b/src/tools/moc/util/generate_keywords.cpp index 47ff0f9ac8..7ad553608c 100644 --- a/src/tools/moc/util/generate_keywords.cpp +++ b/src/tools/moc/util/generate_keywords.cpp @@ -268,7 +268,7 @@ inline bool is_ident_start(char s) { return ((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z') - || s == '_' + || s == '_' || s == '$' ); } @@ -277,7 +277,7 @@ inline bool is_ident_char(char s) return ((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z') || (s >= '0' && s <= '9') - || s == '_' + || s == '_' || s == '$' ); } struct State @@ -360,8 +360,9 @@ void makeTable(const Keyword keywords[]) newState(states, pre?"PP_CHARACTER":"CHARACTER", c); for (c = 'A'; c <= 'Z'; ++c) newState(states, pre?"PP_CHARACTER":"CHARACTER", c); - c = '_'; - newState(states, pre?"PP_CHARACTER":"CHARACTER", c); + + newState(states, pre?"PP_CHARACTER":"CHARACTER", '_'); + newState(states, pre?"PP_CHARACTER":"CHARACTER", '$'); // add digits for (c = '0'; c <= '9'; ++c) diff --git a/src/tools/moc/utils.h b/src/tools/moc/utils.h index aeb9b745f1..a2c65e4b2a 100644 --- a/src/tools/moc/utils.h +++ b/src/tools/moc/utils.h @@ -60,7 +60,7 @@ inline bool is_ident_start(char s) { return ((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z') - || s == '_' + || s == '_' || s == '$' ); } @@ -69,7 +69,7 @@ inline bool is_ident_char(char s) return ((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z') || (s >= '0' && s <= '9') - || s == '_' + || s == '_' || s == '$' ); } -- cgit v1.2.3 From 8c4d02ef875518be21f63bd115a0bec813da5a91 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Fri, 1 Mar 2013 16:32:04 +0000 Subject: OpenGL: Add support for the Compute shader stage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ibb1b79358758c2adf818af8c6fcd5c379efad8c3 Reviewed-by: Samuel Rødal --- src/gui/opengl/qopengl.h | 1 + src/gui/opengl/qopenglshaderprogram.cpp | 15 ++++++++++++++- src/gui/opengl/qopenglshaderprogram.h | 3 ++- 3 files changed, 17 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h index df63eac1f7..e4e06ba284 100644 --- a/src/gui/opengl/qopengl.h +++ b/src/gui/opengl/qopengl.h @@ -108,6 +108,7 @@ typedef GLfloat GLdouble; # endif #if !defined(Q_OS_MAC) # define QT_OPENGL_4 +# define QT_OPENGL_4_3 #endif #endif diff --git a/src/gui/opengl/qopenglshaderprogram.cpp b/src/gui/opengl/qopenglshaderprogram.cpp index e48b922dac..1cde0cb92d 100644 --- a/src/gui/opengl/qopenglshaderprogram.cpp +++ b/src/gui/opengl/qopenglshaderprogram.cpp @@ -156,6 +156,8 @@ QT_BEGIN_NAMESPACE shading language (GLSL), based on the core feature (requires OpenGL >= 4.0). \value TessellationEvaluation Tessellation evaluation shaders written in the OpenGL shading language (GLSL), based on the core feature (requires OpenGL >= 4.0). + \value Compute Compute shaders written in the OpenGL shading language (GLSL), + based on the core feature (requires OpenGL >= 4.3). */ class QOpenGLShaderPrivate : public QObjectPrivate @@ -235,6 +237,10 @@ bool QOpenGLShaderPrivate::create() shader = glfuncs->glCreateShader(GL_TESS_CONTROL_SHADER); } else if (shaderType == QOpenGLShader::TessellationEvaluation && supportsTessellationShaders) { shader = glfuncs->glCreateShader(GL_TESS_EVALUATION_SHADER); +#endif +#if defined(QT_OPENGL_4_3) + } else if (shaderType == QOpenGLShader::Compute) { + shader = glfuncs->glCreateShader(GL_COMPUTE_SHADER); #endif } else { shader = glfuncs->glCreateShader(GL_FRAGMENT_SHADER); @@ -3230,7 +3236,7 @@ bool QOpenGLShader::hasOpenGLShaders(ShaderType type, QOpenGLContext *context) if (!context) return false; - if ((type & ~(Geometry | Vertex | Fragment | TessellationControl | TessellationEvaluation)) || type == 0) + if ((type & ~(Geometry | Vertex | Fragment | TessellationControl | TessellationEvaluation | Compute)) || type == 0) return false; QSurfaceFormat format = context->format(); @@ -3249,6 +3255,13 @@ bool QOpenGLShader::hasOpenGLShaders(ShaderType type, QOpenGLContext *context) #else // No tessellation shader support in OpenGL ES2 return false; +#endif + } else if (type == Compute) { +#if defined(QT_OPENGL_4_3) + return (format.version() >= qMakePair(4, 3)); +#else + // No compute shader support without OpenGL 4.3 or newer + return false; #endif } diff --git a/src/gui/opengl/qopenglshaderprogram.h b/src/gui/opengl/qopenglshaderprogram.h index 3677779a6a..6c3dd37843 100644 --- a/src/gui/opengl/qopenglshaderprogram.h +++ b/src/gui/opengl/qopenglshaderprogram.h @@ -67,7 +67,8 @@ public: Fragment = 0x0002, Geometry = 0x0004, TessellationControl = 0x0008, - TessellationEvaluation = 0x0010 + TessellationEvaluation = 0x0010, + Compute = 0x0020 }; Q_DECLARE_FLAGS(ShaderType, ShaderTypeBit) -- cgit v1.2.3 From 078b3419bd33031923c791f9286686d2babb1b61 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Thu, 28 Feb 2013 17:34:07 +0100 Subject: QGtk2Theme: use GtkSettings to fetch the icon theme name Change-Id: Ib486d65276512a94299650adfbf3d87108ae5845 Reviewed-by: Dmitry Shachnev Reviewed-by: Jens Bache-Wiig --- src/plugins/platformthemes/gtk2/qgtk2theme.cpp | 23 +++++++++++++++++++++++ src/plugins/platformthemes/gtk2/qgtk2theme.h | 2 ++ 2 files changed, 25 insertions(+) (limited to 'src') diff --git a/src/plugins/platformthemes/gtk2/qgtk2theme.cpp b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp index 7bb538b888..b26ab94b83 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2theme.cpp +++ b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp @@ -41,6 +41,7 @@ #include "qgtk2theme.h" #include "qgtk2dialoghelpers.h" +#include #undef signals #include @@ -49,11 +50,33 @@ QT_BEGIN_NAMESPACE const char *QGtk2Theme::name = "gtk2"; +static QString gtkSetting(const gchar *propertyName) +{ + GtkSettings *settings = gtk_settings_get_default(); + gchararray value; + g_object_get(settings, propertyName, &value, NULL); + QString str = QString::fromUtf8(value); + g_free(value); + return str; +} + QGtk2Theme::QGtk2Theme() { gtk_init(0, 0); } +QVariant QGtk2Theme::themeHint(QPlatformTheme::ThemeHint hint) const +{ + switch (hint) { + case QPlatformTheme::SystemIconThemeName: + return QVariant(gtkSetting("gtk-icon-theme-name")); + case QPlatformTheme::SystemIconFallbackThemeName: + return QVariant(gtkSetting("gtk-fallback-icon-theme")); + default: + return QGnomeTheme::themeHint(hint); + } +} + bool QGtk2Theme::usePlatformNativeDialog(DialogType type) const { Q_UNUSED(type); diff --git a/src/plugins/platformthemes/gtk2/qgtk2theme.h b/src/plugins/platformthemes/gtk2/qgtk2theme.h index 6d8768dd8e..a351b5b738 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2theme.h +++ b/src/plugins/platformthemes/gtk2/qgtk2theme.h @@ -51,6 +51,8 @@ class QGtk2Theme : public QGnomeTheme public: QGtk2Theme(); + virtual QVariant themeHint(ThemeHint hint) const; + virtual bool usePlatformNativeDialog(DialogType type) const; virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const; -- cgit v1.2.3 From d93b2ef968f70fe2dd66f0879cc13ad4170e8553 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 22 Dec 2012 13:10:53 -0800 Subject: Mark all qtbase headers that aren't clean QtCore has a few headers that, though public, aren't meant to be included directly. Those are the atomic headers, the three _impl.h headers and qt_windows.h. QtGui includes two OpenGL headers that don't compile on their own. Other libraries should not have headers like that (but they do, something we need to fix eventually). Change-Id: I55e4eb057748f47df927ee618f9409acbc189cc1 Reviewed-by: Sean Harmer Reviewed-by: Gunnar Sletta Reviewed-by: Thiago Macieira --- src/corelib/arch/qatomic_alpha.h | 9 +++++++++ src/corelib/arch/qatomic_armv5.h | 1 + src/corelib/arch/qatomic_armv6.h | 1 + src/corelib/arch/qatomic_armv7.h | 3 +++ src/corelib/arch/qatomic_bfin.h | 9 +++++++++ src/corelib/arch/qatomic_bootstrap.h | 1 + src/corelib/arch/qatomic_cxx11.h | 1 + src/corelib/arch/qatomic_gcc.h | 1 + src/corelib/arch/qatomic_ia64.h | 1 + src/corelib/arch/qatomic_integrity.h | 9 +++++++++ src/corelib/arch/qatomic_mips.h | 1 + src/corelib/arch/qatomic_msvc.h | 1 + src/corelib/arch/qatomic_power.h | 9 +++++++++ src/corelib/arch/qatomic_s390.h | 9 +++++++++ src/corelib/arch/qatomic_sh4a.h | 5 +++++ src/corelib/arch/qatomic_sparc.h | 9 +++++++++ src/corelib/arch/qatomic_unix.h | 1 + src/corelib/arch/qatomic_vxworks.h | 9 +++++++++ src/corelib/arch/qatomic_x86.h | 1 + src/corelib/global/qt_windows.h | 5 +++++ src/corelib/kernel/qobject_impl.h | 5 +++++ src/corelib/kernel/qobjectdefs_impl.h | 5 +++++ src/corelib/thread/qgenericatomic.h | 1 + src/corelib/thread/qoldbasicatomic.h | 1 + src/corelib/tools/qsharedpointer_impl.h | 5 +++++ src/gui/opengl/qopengles2ext.h | 1 + src/gui/opengl/qopenglext.h | 1 + 27 files changed, 105 insertions(+) (limited to 'src') diff --git a/src/corelib/arch/qatomic_alpha.h b/src/corelib/arch/qatomic_alpha.h index c5657de9a8..71cb112d47 100644 --- a/src/corelib/arch/qatomic_alpha.h +++ b/src/corelib/arch/qatomic_alpha.h @@ -46,6 +46,15 @@ QT_BEGIN_NAMESPACE +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +QT_END_HEADER + +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE inline bool QBasicAtomicInt::isReferenceCountingNative() diff --git a/src/corelib/arch/qatomic_armv5.h b/src/corelib/arch/qatomic_armv5.h index 92e2b02e5b..e0a50b3c24 100644 --- a/src/corelib/arch/qatomic_armv5.h +++ b/src/corelib/arch/qatomic_armv5.h @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/arch/qatomic_armv6.h b/src/corelib/arch/qatomic_armv6.h index 877d32af8b..7f5939e391 100644 --- a/src/corelib/arch/qatomic_armv6.h +++ b/src/corelib/arch/qatomic_armv6.h @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/arch/qatomic_armv7.h b/src/corelib/arch/qatomic_armv7.h index 70dc24f807..1929ae0ab3 100644 --- a/src/corelib/arch/qatomic_armv7.h +++ b/src/corelib/arch/qatomic_armv7.h @@ -57,6 +57,9 @@ QT_BEGIN_NAMESPACE QT_END_NAMESPACE + +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing #endif #endif // QATOMIC_ARMV7_H diff --git a/src/corelib/arch/qatomic_bfin.h b/src/corelib/arch/qatomic_bfin.h index 9791d80818..79519308a4 100644 --- a/src/corelib/arch/qatomic_bfin.h +++ b/src/corelib/arch/qatomic_bfin.h @@ -46,6 +46,15 @@ QT_BEGIN_NAMESPACE +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +QT_END_HEADER + +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE inline bool QBasicAtomicInt::isReferenceCountingNative() diff --git a/src/corelib/arch/qatomic_bootstrap.h b/src/corelib/arch/qatomic_bootstrap.h index 810d9de722..160e0abdf3 100644 --- a/src/corelib/arch/qatomic_bootstrap.h +++ b/src/corelib/arch/qatomic_bootstrap.h @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/arch/qatomic_cxx11.h b/src/corelib/arch/qatomic_cxx11.h index d56e5823c8..3119edaf45 100644 --- a/src/corelib/arch/qatomic_cxx11.h +++ b/src/corelib/arch/qatomic_cxx11.h @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/arch/qatomic_gcc.h b/src/corelib/arch/qatomic_gcc.h index 38fd73ff15..bd296053e5 100644 --- a/src/corelib/arch/qatomic_gcc.h +++ b/src/corelib/arch/qatomic_gcc.h @@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/arch/qatomic_ia64.h b/src/corelib/arch/qatomic_ia64.h index f57b44bcfd..d4b187ffea 100644 --- a/src/corelib/arch/qatomic_ia64.h +++ b/src/corelib/arch/qatomic_ia64.h @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/arch/qatomic_integrity.h b/src/corelib/arch/qatomic_integrity.h index 307d9d51a7..f8cfc8ce5b 100644 --- a/src/corelib/arch/qatomic_integrity.h +++ b/src/corelib/arch/qatomic_integrity.h @@ -47,6 +47,15 @@ QT_BEGIN_NAMESPACE +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +QT_END_HEADER + +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #define qt_i2addr(a) reinterpret_cast
(const_cast(a)) #define qt_p2addr(a) reinterpret_cast
(const_cast(a)) #define qt_addr(a) reinterpret_cast
(a) diff --git a/src/corelib/arch/qatomic_mips.h b/src/corelib/arch/qatomic_mips.h index 51e33bee35..7716750332 100644 --- a/src/corelib/arch/qatomic_mips.h +++ b/src/corelib/arch/qatomic_mips.h @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/arch/qatomic_msvc.h b/src/corelib/arch/qatomic_msvc.h index 3d55471cb7..4f91e3d9da 100644 --- a/src/corelib/arch/qatomic_msvc.h +++ b/src/corelib/arch/qatomic_msvc.h @@ -219,6 +219,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/arch/qatomic_power.h b/src/corelib/arch/qatomic_power.h index 1be2b770a8..ad1c619d56 100644 --- a/src/corelib/arch/qatomic_power.h +++ b/src/corelib/arch/qatomic_power.h @@ -46,6 +46,15 @@ QT_BEGIN_NAMESPACE +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +QT_END_HEADER + +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE inline bool QBasicAtomicInt::isReferenceCountingNative() diff --git a/src/corelib/arch/qatomic_s390.h b/src/corelib/arch/qatomic_s390.h index 3e82110794..0469f44e5f 100644 --- a/src/corelib/arch/qatomic_s390.h +++ b/src/corelib/arch/qatomic_s390.h @@ -46,6 +46,15 @@ QT_BEGIN_NAMESPACE +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +QT_END_HEADER + +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE inline bool QBasicAtomicInt::isReferenceCountingNative() diff --git a/src/corelib/arch/qatomic_sh4a.h b/src/corelib/arch/qatomic_sh4a.h index 75b9bed40b..08f75e44f2 100644 --- a/src/corelib/arch/qatomic_sh4a.h +++ b/src/corelib/arch/qatomic_sh4a.h @@ -49,6 +49,11 @@ QT_BEGIN_NAMESPACE QT_END_NAMESPACE +#if 0 +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE inline bool QBasicAtomicInt::isReferenceCountingNative() diff --git a/src/corelib/arch/qatomic_sparc.h b/src/corelib/arch/qatomic_sparc.h index 8508638d02..8aea33ce85 100644 --- a/src/corelib/arch/qatomic_sparc.h +++ b/src/corelib/arch/qatomic_sparc.h @@ -46,6 +46,15 @@ QT_BEGIN_NAMESPACE +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +QT_END_HEADER + +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #if defined(_LP64) #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE diff --git a/src/corelib/arch/qatomic_unix.h b/src/corelib/arch/qatomic_unix.h index 3bf8fa82f1..03c7d2eee8 100644 --- a/src/corelib/arch/qatomic_unix.h +++ b/src/corelib/arch/qatomic_unix.h @@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/arch/qatomic_vxworks.h b/src/corelib/arch/qatomic_vxworks.h index def5e24ff5..57e3b6a32b 100644 --- a/src/corelib/arch/qatomic_vxworks.h +++ b/src/corelib/arch/qatomic_vxworks.h @@ -67,6 +67,15 @@ inline int taskUnlock() { return 0; } QT_BEGIN_NAMESPACE +#if 0 +// silence syncqt warnings +QT_END_NAMESPACE +QT_END_HEADER + +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE inline bool QBasicAtomicInt::isReferenceCountingNative() diff --git a/src/corelib/arch/qatomic_x86.h b/src/corelib/arch/qatomic_x86.h index 543b2e056c..f8180ad9d6 100644 --- a/src/corelib/arch/qatomic_x86.h +++ b/src/corelib/arch/qatomic_x86.h @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/global/qt_windows.h b/src/corelib/global/qt_windows.h index 26b55336ed..c3266c5487 100644 --- a/src/corelib/global/qt_windows.h +++ b/src/corelib/global/qt_windows.h @@ -42,6 +42,11 @@ #ifndef QT_WINDOWS_H #define QT_WINDOWS_H +#if 0 +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #if defined(Q_CC_BOR) // Borland's windows.h does not set these correctly, resulting in // unusable WinSDK standard dialogs diff --git a/src/corelib/kernel/qobject_impl.h b/src/corelib/kernel/qobject_impl.h index e6f924814d..0b5631f2a6 100644 --- a/src/corelib/kernel/qobject_impl.h +++ b/src/corelib/kernel/qobject_impl.h @@ -45,6 +45,11 @@ #error Do not include qobject_impl.h directly #endif +#if 0 +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + QT_BEGIN_NAMESPACE diff --git a/src/corelib/kernel/qobjectdefs_impl.h b/src/corelib/kernel/qobjectdefs_impl.h index 2d2107f666..8d85175a17 100644 --- a/src/corelib/kernel/qobjectdefs_impl.h +++ b/src/corelib/kernel/qobjectdefs_impl.h @@ -45,6 +45,11 @@ #error Do not include qobjectdefs_impl.h directly #endif +#if 0 +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + QT_BEGIN_NAMESPACE diff --git a/src/corelib/thread/qgenericatomic.h b/src/corelib/thread/qgenericatomic.h index a8d626a43f..a0a851eabb 100644 --- a/src/corelib/thread/qgenericatomic.h +++ b/src/corelib/thread/qgenericatomic.h @@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/thread/qoldbasicatomic.h b/src/corelib/thread/qoldbasicatomic.h index 220dade850..b755256ff7 100644 --- a/src/corelib/thread/qoldbasicatomic.h +++ b/src/corelib/thread/qoldbasicatomic.h @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE #if 0 // silence syncqt warnings QT_END_NAMESPACE +#pragma qt_sync_skip_header_check #pragma qt_no_master_include #pragma qt_sync_stop_processing #endif diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h index 3121bcdf40..5e30cf3ecb 100644 --- a/src/corelib/tools/qsharedpointer_impl.h +++ b/src/corelib/tools/qsharedpointer_impl.h @@ -45,6 +45,11 @@ #error Do not include qsharedpointer_impl.h directly #endif +#if 0 +#pragma qt_sync_skip_header_check +#pragma qt_sync_stop_processing +#endif + #if 0 // These macros are duplicated here to make syncqt not complain a about // this header, as we have a "qt_sync_stop_processing" below, which in turn diff --git a/src/gui/opengl/qopengles2ext.h b/src/gui/opengl/qopengles2ext.h index 61bfb595cc..6213fab344 100644 --- a/src/gui/opengl/qopengles2ext.h +++ b/src/gui/opengl/qopengles2ext.h @@ -3,6 +3,7 @@ #if 0 #pragma qt_no_master_include +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif diff --git a/src/gui/opengl/qopenglext.h b/src/gui/opengl/qopenglext.h index 68025f3e5c..e65578caee 100644 --- a/src/gui/opengl/qopenglext.h +++ b/src/gui/opengl/qopenglext.h @@ -3,6 +3,7 @@ #if 0 #pragma qt_no_master_include +#pragma qt_sync_skip_header_check #pragma qt_sync_stop_processing #endif -- cgit v1.2.3 From 4b7276b93f21e4b131c8840ca2f6c6bf4f003595 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Fri, 1 Mar 2013 19:35:07 +0100 Subject: Fusion style: Remove unnecessary widget cast Change-Id: I8d7fd79b396525ee00fb0ba95faf0c95b5d2899a Reviewed-by: Jens Bache-Wiig --- src/widgets/styles/qfusionstyle.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index 11558de16a..defdf30b6b 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -1768,12 +1768,10 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio painter->save(); { painter->fillRect(rect, option->palette.window()); - if (widget && qobject_cast(widget->parentWidget())) { - QColor shadow = mergedColors(option->palette.background().color().darker(120), - outline.lighter(140), 60); - painter->setPen(QPen(shadow)); - painter->drawLine(option->rect.bottomLeft(), option->rect.bottomRight()); - } + QColor shadow = mergedColors(option->palette.background().color().darker(120), + outline.lighter(140), 60); + painter->setPen(QPen(shadow)); + painter->drawLine(option->rect.bottomLeft(), option->rect.bottomRight()); } painter->restore(); break; -- cgit v1.2.3 From 14dab5b2d7cb7b6b32d9672758c0f3b5d4ec3354 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 27 Nov 2012 00:06:14 +0100 Subject: Add QProxyStyle(QString key) constructor for convenience The QStyle implementations are becoming private, so the following slightly verbose pattern seems to be now repeated a lot: new QProxyStyle(QStyleFactory::create("windows")) This change adds an alternative, more convenient constructor for this particular use case: new QProxyStyle("windows") Change-Id: I97ded597a0fd3225a6354ebea0abb367237430af Reviewed-by: Jens Bache-Wiig --- src/widgets/styles/qproxystyle.cpp | 27 +++++++++++++++++++++++---- src/widgets/styles/qproxystyle.h | 3 ++- 2 files changed, 25 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qproxystyle.cpp b/src/widgets/styles/qproxystyle.cpp index 66ace0f60b..911223cae2 100644 --- a/src/widgets/styles/qproxystyle.cpp +++ b/src/widgets/styles/qproxystyle.cpp @@ -108,10 +108,9 @@ void QProxyStylePrivate::ensureBaseStyle() const } /*! - Constructs a QProxyStyle object for overriding behavior in \a style - or in the current application \l{QStyle}{style} if \a style is 0 - (default). Normally \a style is 0, because you want to override - behavior in the system style. + Constructs a QProxyStyle object for overriding behavior in the + specified base \a style, or in the current \l{QApplication::style} + {application style} if base \a style is not specified. Ownership of \a style is transferred to QProxyStyle. */ @@ -126,6 +125,26 @@ QProxyStyle::QProxyStyle(QStyle *style) : } } +/*! + Constructs a QProxyStyle object for overriding behavior in + the base style specified by style \a key, or in the current + \l{QApplication::style}{application style} if the specified + style \a key is unrecognized. + + \sa QStyleFactory::create() +*/ +QProxyStyle::QProxyStyle(const QString &key) : + QCommonStyle(*new QProxyStylePrivate()) +{ + Q_D(QProxyStyle); + QStyle *style = QStyleFactory::create(key); + if (style) { + d->baseStyle = style; + style->setProxy(this); + style->setParent(this); // Take ownership + } +} + /*! Destroys the QProxyStyle object. */ diff --git a/src/widgets/styles/qproxystyle.h b/src/widgets/styles/qproxystyle.h index 62a263b520..d1623c745c 100644 --- a/src/widgets/styles/qproxystyle.h +++ b/src/widgets/styles/qproxystyle.h @@ -55,7 +55,8 @@ class Q_WIDGETS_EXPORT QProxyStyle : public QCommonStyle Q_OBJECT public: - QProxyStyle(QStyle *baseStyle = 0); + QProxyStyle(QStyle *style = 0); + QProxyStyle(const QString &key); ~QProxyStyle(); QStyle *baseStyle() const; -- cgit v1.2.3 From c63e7f576609e90e7cb6d1b4c107182ae8c2d6c6 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 2 Mar 2013 22:29:48 +0200 Subject: Fix selection of fonts that require OpenType features HB_Face's supported_scripts[] expects HB_Script, so QChar::Script should be remapped via script_to_hbscript(). Change-Id: Ib068c35ab76567fe9a61da7d8ab01133a6f58bc0 Reviewed-by: Lars Knoll --- src/gui/text/qfontengine.cpp | 5 +++++ src/gui/text/qfontengine_p.h | 1 + src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp | 3 +-- src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp | 3 +-- src/plugins/platforms/windows/qwindowsfontdatabase.cpp | 3 +-- 5 files changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 1a7f2b7b4d..2d09cf9f78 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -236,6 +236,11 @@ HB_Face QFontEngine::initializedHarfbuzzFace() const return face; } +bool QFontEngine::supportsScript(QChar::Script script) const +{ + return initializedHarfbuzzFace()->supported_scripts[script_to_hbscript(script)]; +} + glyph_metrics_t QFontEngine::boundingBox(glyph_t glyph, const QTransform &matrix) { glyph_metrics_t metrics = boundingBox(glyph); diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h index a373c3d5f1..7ce920b6af 100644 --- a/src/gui/text/qfontengine_p.h +++ b/src/gui/text/qfontengine_p.h @@ -255,6 +255,7 @@ public: HB_Font harfbuzzFont() const; HB_Face harfbuzzFace() const; HB_Face initializedHarfbuzzFace() const; + bool supportsScript(QChar::Script script) const; virtual HB_Error getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints); diff --git a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp index e65a5f5aec..f17eff4dd7 100644 --- a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp +++ b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp @@ -262,8 +262,7 @@ QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, QChar::Scri delete engine; engine = 0; } else if (scriptRequiresOpenType(script)) { - HB_Face hbFace = engine->initializedHarfbuzzFace(); - if (!hbFace || !hbFace->supported_scripts[script]) { + if (!engine->supportsScript(script)) { delete engine; engine = 0; } diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index 728d11500a..329268395e 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -638,8 +638,7 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QChar::Script sc delete engine; engine = 0; } else if (scriptRequiresOpenType(script)) { - HB_Face hbFace = engine->initializedHarfbuzzFace(); - if (!hbFace || !hbFace->supported_scripts[script]) { + if (!engine->supportsScript(script)) { delete engine; engine = 0; } diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp index c1c906523f..6fdb10288a 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp @@ -1883,8 +1883,7 @@ QFontEngine *QWindowsFontDatabase::createEngine(int script, const QFontDef &requ // for scripts that do not require OpenType we should just look at the list of // supported writing systems in the font's OS/2 table. if (scriptRequiresOpenType(script)) { - HB_Face hbFace = few->harfbuzzFace(); - if (!hbFace || !hbFace->supported_scripts[script]) { + if (!few->supportsScript(QChar::Script(script))) { qWarning(" OpenType support missing for script\n"); delete few; return 0; -- cgit v1.2.3 From 2f31bbd9ccd4d6e7e6ed1dd89ab5648f69a2e8b4 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 4 Mar 2013 10:02:56 +0200 Subject: Fix potential issue in QTBF itemization code Since 5.0, script is QChar::Script which isn't of 1:1 mapping to HB_Script Change-Id: I2d88f929d7d3c3c994076a4e92ea22370962c41c Reviewed-by: Lars Knoll --- src/corelib/tools/qunicodetools.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index 0181e765f7..01aa1c4d52 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -611,7 +611,7 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, scriptItems.reserve(numItems); int start = 0; for (int i = start + 1; i < numItems; ++i) { - if (items[i].script == items[start].script) + if (script_to_hbscript(items[i].script) == script_to_hbscript(items[start].script)) continue; HB_ScriptItem item; item.pos = items[start].position; -- cgit v1.2.3 From e27ca37d18a1a2bbddce3479e34fa12b88ba481c Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 28 Feb 2013 14:57:27 +0100 Subject: ApplicationStates: add more states to Qt::ApplicationState MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On mobile platforms, Qt::ApplicationActive and Qt::ApplicationInactive are not sufficient to describe the different states an application can be in. This patch introduces Qt::ApplicationHidden and Qt::ApplicationSuspended that should fill in the gaps, at least on Android and iOS. Change-Id: I3f5a584cf6f4832e7c81dea095dcf711a8866c38 Reviewed-by: Samuel Rødal Reviewed-by: Gunnar Sletta --- src/corelib/global/qnamespace.h | 6 ++++-- src/corelib/global/qnamespace.qdoc | 19 +++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index 6f977d847d..41bca2a443 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -326,8 +326,10 @@ public: Q_DECLARE_FLAGS(WindowStates, WindowState) enum ApplicationState { - ApplicationInactive = 0x00000000, - ApplicationActive = 0x00000001 + ApplicationSuspended = 0x00000000, + ApplicationHidden = 0x00000001, + ApplicationInactive = 0x00000002, + ApplicationActive = 0x00000004 }; Q_DECLARE_FLAGS(ApplicationStates, ApplicationState) diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index e1c64aab94..8ec206a572 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -1791,8 +1791,23 @@ The states are - \value ApplicationInactive The application is running in the background. - \value ApplicationActive The application is running in the foreground. + \value ApplicationSuspended The application is about to suspend. When entering this state, the + application should save its state, cease all activities, and be + prepared for code execution to stop. While suspended, the + application can be killed at any time without further warnings + (e.g. when low memory forces the OS to purge suspended applications). + \value ApplicationHidden The application is hidden and runs in the background. This + is the normal state for applications that need to do background + processing, like playing music, while the user interacts with + other applications. The application should free up all graphical + resources when entering this state. + \value ApplicationInactive The application is visible, but not selected to be in front. + On desktop platforms, this typically means that the user + activated another application. On mobile platforms, it is + more common to enter this state when the OS is interrupting + the user with e.g. incoming calls or SMS-messages. + While in this state, consider reducing CPU-intensive tasks. + \value ApplicationActive The application is visible and selected to be in front. \since 5.1 */ -- cgit v1.2.3 From 6f8bc4de406be856eeba9e62700888941ccfdcc1 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 2 Mar 2013 22:23:30 -0800 Subject: Make the new OpenGL function headers compile on their own You can't use #ifndef QT_NO_OPENGL before including whatever is supposed to define that. That's qconfig.h, included by qglobal.h. Also, make sure that the desktop OpenGL code isn't activated when compiling in OpenGL ES 2 mode -- QOpenGLFunctions_1_0_CoreBackend and other classes aren't defined. Change-Id: I127edf56d42257580579789d0566b7e11c21133b Reviewed-by: Sean Harmer --- src/gui/opengl/qopenglfunctions_1_0.h | 6 ++++-- src/gui/opengl/qopenglfunctions_1_1.h | 6 ++++-- src/gui/opengl/qopenglfunctions_1_2.h | 6 ++++-- src/gui/opengl/qopenglfunctions_1_3.h | 6 ++++-- src/gui/opengl/qopenglfunctions_1_4.h | 6 ++++-- src/gui/opengl/qopenglfunctions_1_5.h | 6 ++++-- src/gui/opengl/qopenglfunctions_2_0.h | 6 ++++-- src/gui/opengl/qopenglfunctions_2_1.h | 6 ++++-- src/gui/opengl/qopenglfunctions_3_0.h | 6 ++++-- src/gui/opengl/qopenglfunctions_3_1.h | 6 ++++-- src/gui/opengl/qopenglfunctions_3_2_compatibility.h | 6 ++++-- src/gui/opengl/qopenglfunctions_3_2_core.h | 6 ++++-- src/gui/opengl/qopenglfunctions_3_3_compatibility.h | 6 ++++-- src/gui/opengl/qopenglfunctions_3_3_core.h | 6 ++++-- src/gui/opengl/qopenglfunctions_4_0_compatibility.h | 6 ++++-- src/gui/opengl/qopenglfunctions_4_0_core.h | 6 ++++-- src/gui/opengl/qopenglfunctions_4_1_compatibility.h | 6 ++++-- src/gui/opengl/qopenglfunctions_4_1_core.h | 6 ++++-- src/gui/opengl/qopenglfunctions_4_2_compatibility.h | 6 ++++-- src/gui/opengl/qopenglfunctions_4_2_core.h | 6 ++++-- src/gui/opengl/qopenglfunctions_4_3_compatibility.h | 6 ++++-- src/gui/opengl/qopenglfunctions_4_3_core.h | 6 ++++-- src/gui/opengl/qopenglfunctions_es2.h | 6 ++++-- 23 files changed, 92 insertions(+), 46 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglfunctions_1_0.h b/src/gui/opengl/qopenglfunctions_1_0.h index 398d8db9b1..189d06bfec 100644 --- a/src/gui/opengl/qopenglfunctions_1_0.h +++ b/src/gui/opengl/qopenglfunctions_1_0.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_1_0_H #define QOPENGLVERSIONFUNCTIONS_1_0_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -1923,6 +1925,6 @@ inline void QOpenGLFunctions_1_0::glNewList(GLuint list, GLenum mode) QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_1_1.h b/src/gui/opengl/qopenglfunctions_1_1.h index 4eb065e1ee..fbe714c9ad 100644 --- a/src/gui/opengl/qopenglfunctions_1_1.h +++ b/src/gui/opengl/qopenglfunctions_1_1.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_1_1_H #define QOPENGLVERSIONFUNCTIONS_1_1_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -2113,6 +2115,6 @@ inline void QOpenGLFunctions_1_1::glArrayElement(GLint i) QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_1_2.h b/src/gui/opengl/qopenglfunctions_1_2.h index 0288b0faf6..b0b06da76e 100644 --- a/src/gui/opengl/qopenglfunctions_1_2.h +++ b/src/gui/opengl/qopenglfunctions_1_2.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_1_2_H #define QOPENGLVERSIONFUNCTIONS_1_2_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -2351,6 +2353,6 @@ inline void QOpenGLFunctions_1_2::glTexImage3D(GLenum target, GLint level, GLint QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_1_3.h b/src/gui/opengl/qopenglfunctions_1_3.h index e59d6ea3c6..362a60649b 100644 --- a/src/gui/opengl/qopenglfunctions_1_3.h +++ b/src/gui/opengl/qopenglfunctions_1_3.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_1_3_H #define QOPENGLVERSIONFUNCTIONS_1_3_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -2637,6 +2639,6 @@ inline void QOpenGLFunctions_1_3::glClientActiveTexture(GLenum texture) QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_1_4.h b/src/gui/opengl/qopenglfunctions_1_4.h index 41f4c6f8ac..fbb5b2e86c 100644 --- a/src/gui/opengl/qopenglfunctions_1_4.h +++ b/src/gui/opengl/qopenglfunctions_1_4.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_1_4_H #define QOPENGLVERSIONFUNCTIONS_1_4_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -2917,6 +2919,6 @@ inline void QOpenGLFunctions_1_4::glFogCoordf(GLfloat coord) QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_1_5.h b/src/gui/opengl/qopenglfunctions_1_5.h index ee444849e1..cdb2140a5c 100644 --- a/src/gui/opengl/qopenglfunctions_1_5.h +++ b/src/gui/opengl/qopenglfunctions_1_5.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_1_5_H #define QOPENGLVERSIONFUNCTIONS_1_5_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -3040,6 +3042,6 @@ inline void QOpenGLFunctions_1_5::glFogCoordf(GLfloat coord) QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_2_0.h b/src/gui/opengl/qopenglfunctions_2_0.h index 915d35e963..afc5eabb38 100644 --- a/src/gui/opengl/qopenglfunctions_2_0.h +++ b/src/gui/opengl/qopenglfunctions_2_0.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_2_0_H #define QOPENGLVERSIONFUNCTIONS_2_0_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -3608,6 +3610,6 @@ inline void QOpenGLFunctions_2_0::glVertexAttrib1d(GLuint index, GLdouble x) QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_2_1.h b/src/gui/opengl/qopenglfunctions_2_1.h index fc009001ab..c1d291fba4 100644 --- a/src/gui/opengl/qopenglfunctions_2_1.h +++ b/src/gui/opengl/qopenglfunctions_2_1.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_2_1_H #define QOPENGLVERSIONFUNCTIONS_2_1_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -3653,6 +3655,6 @@ inline void QOpenGLFunctions_2_1::glVertexAttrib1d(GLuint index, GLdouble x) QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_3_0.h b/src/gui/opengl/qopenglfunctions_3_0.h index 767e88ba7a..f586bdec58 100644 --- a/src/gui/opengl/qopenglfunctions_3_0.h +++ b/src/gui/opengl/qopenglfunctions_3_0.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_3_0_H #define QOPENGLVERSIONFUNCTIONS_3_0_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -4167,6 +4169,6 @@ inline void QOpenGLFunctions_3_0::glVertexAttribI1i(GLuint index, GLint x) QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_3_1.h b/src/gui/opengl/qopenglfunctions_3_1.h index 1fd1867d33..46beec85e0 100644 --- a/src/gui/opengl/qopenglfunctions_3_1.h +++ b/src/gui/opengl/qopenglfunctions_3_1.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_3_1_H #define QOPENGLVERSIONFUNCTIONS_3_1_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -1585,6 +1587,6 @@ inline void QOpenGLFunctions_3_1::glDrawArraysInstanced(GLenum mode, GLint first QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_3_2_compatibility.h b/src/gui/opengl/qopenglfunctions_3_2_compatibility.h index cfa5cd1406..f279f1037a 100644 --- a/src/gui/opengl/qopenglfunctions_3_2_compatibility.h +++ b/src/gui/opengl/qopenglfunctions_3_2_compatibility.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_3_2_COMPATIBILITY_H #define QOPENGLVERSIONFUNCTIONS_3_2_COMPATIBILITY_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -4371,6 +4373,6 @@ inline void QOpenGLFunctions_3_2_Compatibility::glVertexAttribI1i(GLuint index, QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_3_2_core.h b/src/gui/opengl/qopenglfunctions_3_2_core.h index 8e25643c09..b3d9a5040c 100644 --- a/src/gui/opengl/qopenglfunctions_3_2_core.h +++ b/src/gui/opengl/qopenglfunctions_3_2_core.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_3_2_CORE_H #define QOPENGLVERSIONFUNCTIONS_3_2_CORE_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -1704,6 +1706,6 @@ inline void QOpenGLFunctions_3_2_Core::glGetInteger64i_v(GLenum target, GLuint i QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_3_3_compatibility.h b/src/gui/opengl/qopenglfunctions_3_3_compatibility.h index b2371a1445..95e000f88d 100644 --- a/src/gui/opengl/qopenglfunctions_3_3_compatibility.h +++ b/src/gui/opengl/qopenglfunctions_3_3_compatibility.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_3_3_COMPATIBILITY_H #define QOPENGLVERSIONFUNCTIONS_3_3_COMPATIBILITY_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -4728,6 +4730,6 @@ inline void QOpenGLFunctions_3_3_Compatibility::glVertexAttribI1i(GLuint index, QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_3_3_core.h b/src/gui/opengl/qopenglfunctions_3_3_core.h index 58e7fa0ba3..0ffb156831 100644 --- a/src/gui/opengl/qopenglfunctions_3_3_core.h +++ b/src/gui/opengl/qopenglfunctions_3_3_core.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_3_3_CORE_H #define QOPENGLVERSIONFUNCTIONS_3_3_CORE_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -2057,6 +2059,6 @@ inline void QOpenGLFunctions_3_3_Core::glVertexAttribDivisor(GLuint index, GLuin QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_4_0_compatibility.h b/src/gui/opengl/qopenglfunctions_4_0_compatibility.h index 7fce72a130..a77a2951b1 100644 --- a/src/gui/opengl/qopenglfunctions_4_0_compatibility.h +++ b/src/gui/opengl/qopenglfunctions_4_0_compatibility.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_4_0_COMPATIBILITY_H #define QOPENGLVERSIONFUNCTIONS_4_0_COMPATIBILITY_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -5013,6 +5015,6 @@ inline void QOpenGLFunctions_4_0_Compatibility::glVertexAttribI1i(GLuint index, QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_4_0_core.h b/src/gui/opengl/qopenglfunctions_4_0_core.h index a3004817f5..64b75a7374 100644 --- a/src/gui/opengl/qopenglfunctions_4_0_core.h +++ b/src/gui/opengl/qopenglfunctions_4_0_core.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_4_0_CORE_H #define QOPENGLVERSIONFUNCTIONS_4_0_CORE_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -2338,6 +2340,6 @@ inline void QOpenGLFunctions_4_0_Core::glMinSampleShading(GLfloat value) QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_4_1_compatibility.h b/src/gui/opengl/qopenglfunctions_4_1_compatibility.h index 555e3e1e97..3d7f703b8d 100644 --- a/src/gui/opengl/qopenglfunctions_4_1_compatibility.h +++ b/src/gui/opengl/qopenglfunctions_4_1_compatibility.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_4_1_COMPATIBILITY_H #define QOPENGLVERSIONFUNCTIONS_4_1_COMPATIBILITY_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -5550,6 +5552,6 @@ inline void QOpenGLFunctions_4_1_Compatibility::glVertexAttribI1i(GLuint index, QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_4_1_core.h b/src/gui/opengl/qopenglfunctions_4_1_core.h index 045b49c14b..90ec87568e 100644 --- a/src/gui/opengl/qopenglfunctions_4_1_core.h +++ b/src/gui/opengl/qopenglfunctions_4_1_core.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_4_1_CORE_H #define QOPENGLVERSIONFUNCTIONS_4_1_CORE_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -2871,6 +2873,6 @@ inline void QOpenGLFunctions_4_1_Core::glReleaseShaderCompiler() QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_4_2_compatibility.h b/src/gui/opengl/qopenglfunctions_4_2_compatibility.h index 8a9d56978b..65bb26767a 100644 --- a/src/gui/opengl/qopenglfunctions_4_2_compatibility.h +++ b/src/gui/opengl/qopenglfunctions_4_2_compatibility.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_4_2_COMPATIBILITY_H #define QOPENGLVERSIONFUNCTIONS_4_2_COMPATIBILITY_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -5631,6 +5633,6 @@ inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI1i(GLuint index, QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_4_2_core.h b/src/gui/opengl/qopenglfunctions_4_2_core.h index 40f24eaf25..2abe9cb033 100644 --- a/src/gui/opengl/qopenglfunctions_4_2_core.h +++ b/src/gui/opengl/qopenglfunctions_4_2_core.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_4_2_CORE_H #define QOPENGLVERSIONFUNCTIONS_4_2_CORE_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -2948,6 +2950,6 @@ inline void QOpenGLFunctions_4_2_Core::glDrawArraysInstancedBaseInstance(GLenum QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_4_3_compatibility.h b/src/gui/opengl/qopenglfunctions_4_3_compatibility.h index 0dcf16e503..124685d0c0 100644 --- a/src/gui/opengl/qopenglfunctions_4_3_compatibility.h +++ b/src/gui/opengl/qopenglfunctions_4_3_compatibility.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_4_3_COMPATIBILITY_H #define QOPENGLVERSIONFUNCTIONS_4_3_COMPATIBILITY_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -5838,6 +5840,6 @@ inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI1i(GLuint index, QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_4_3_core.h b/src/gui/opengl/qopenglfunctions_4_3_core.h index 036fb2c51e..c004594eb8 100644 --- a/src/gui/opengl/qopenglfunctions_4_3_core.h +++ b/src/gui/opengl/qopenglfunctions_4_3_core.h @@ -51,7 +51,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_4_3_CORE_H #define QOPENGLVERSIONFUNCTIONS_4_3_CORE_H -#ifndef QT_NO_OPENGL +#include + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) #include #include @@ -3151,6 +3153,6 @@ inline void QOpenGLFunctions_4_3_Core::glClearBufferData(GLenum target, GLenum i QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2 #endif diff --git a/src/gui/opengl/qopenglfunctions_es2.h b/src/gui/opengl/qopenglfunctions_es2.h index c040f2cf82..9c14567723 100644 --- a/src/gui/opengl/qopenglfunctions_es2.h +++ b/src/gui/opengl/qopenglfunctions_es2.h @@ -42,7 +42,9 @@ #ifndef QOPENGLVERSIONFUNCTIONS_ES2_H #define QOPENGLVERSIONFUNCTIONS_ES2_H -#ifndef QT_NO_OPENGL +#include + +#if defined(QT_OPENGL_ES_2) #include #include @@ -926,6 +928,6 @@ inline void QOpenGLFunctions_ES2::glViewport(GLint x, GLint y, GLsizei width, GL QT_END_NAMESPACE -#endif // QT_NO_OPENGL +#endif // QT_OPENGL_ES_2 #endif -- cgit v1.2.3 From 1b582d64eb6d13e60a02ebc40956302a4864eb6c Mon Sep 17 00:00:00 2001 From: David Faure Date: Sun, 3 Feb 2013 12:00:50 +0100 Subject: Long live QLockFile Locking between processes, implemented with open(O_EXCL) on Unix and CreateFile(CREATE_NEW) on Windows. Supports detecting stale lock files and deleting them. Advisory locking is used to prevent deletion of files that are still in use. Change-Id: Id00ee2a4e77a29483d869037c7047c59cb909339 Reviewed-by: Thiago Macieira --- src/corelib/io/io.pri | 5 + src/corelib/io/qlockfile.cpp | 346 ++++++++++++++++++++++++++++++++++++++ src/corelib/io/qlockfile.h | 91 ++++++++++ src/corelib/io/qlockfile_p.h | 104 ++++++++++++ src/corelib/io/qlockfile_unix.cpp | 207 +++++++++++++++++++++++ src/corelib/io/qlockfile_win.cpp | 138 +++++++++++++++ src/corelib/io/qtemporaryfile.h | 2 + src/corelib/io/qtemporaryfile_p.h | 2 + 8 files changed, 895 insertions(+) create mode 100644 src/corelib/io/qlockfile.cpp create mode 100644 src/corelib/io/qlockfile.h create mode 100644 src/corelib/io/qlockfile_p.h create mode 100644 src/corelib/io/qlockfile_unix.cpp create mode 100644 src/corelib/io/qlockfile_win.cpp (limited to 'src') diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri index e0364a1460..d4ed8e5362 100644 --- a/src/corelib/io/io.pri +++ b/src/corelib/io/io.pri @@ -18,6 +18,8 @@ HEADERS += \ io/qipaddress_p.h \ io/qiodevice.h \ io/qiodevice_p.h \ + io/qlockfile.h \ + io/qlockfile_p.h \ io/qnoncontiguousbytedevice_p.h \ io/qprocess.h \ io/qprocess_p.h \ @@ -61,6 +63,7 @@ SOURCES += \ io/qfileinfo.cpp \ io/qipaddress.cpp \ io/qiodevice.cpp \ + io/qlockfile.cpp \ io/qnoncontiguousbytedevice.cpp \ io/qprocess.cpp \ io/qtextstream.cpp \ @@ -85,6 +88,7 @@ SOURCES += \ win32 { SOURCES += io/qsettings_win.cpp SOURCES += io/qfsfileengine_win.cpp + SOURCES += io/qlockfile_win.cpp SOURCES += io/qfilesystemwatcher_win.cpp HEADERS += io/qfilesystemwatcher_win_p.h @@ -109,6 +113,7 @@ win32 { SOURCES += \ io/qfsfileengine_unix.cpp \ io/qfilesystemengine_unix.cpp \ + io/qlockfile_unix.cpp \ io/qprocess_unix.cpp \ io/qfilesystemiterator_unix.cpp \ diff --git a/src/corelib/io/qlockfile.cpp b/src/corelib/io/qlockfile.cpp new file mode 100644 index 0000000000..5d56a67f48 --- /dev/null +++ b/src/corelib/io/qlockfile.cpp @@ -0,0 +1,346 @@ +/**************************************************************************** +** +** Copyright (C) 2013 David Faure +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qlockfile.h" +#include "qlockfile_p.h" + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +/*! + \class QLockFile + \inmodule QtCore + \brief The QLockFile class provides locking between processes using a file. + \since 5.1 + + A lock file can be used to prevent multiple processes from accessing concurrently + the same resource. For instance, a configuration file on disk, or a socket, a port, + a region of shared memory... + + Serialization is only guaranteed if all processes that access the shared resource + use QLockFile, with the same file path. + + QLockFile supports two use cases: + to protect a resource for a short-term operation (e.g. verifying if a configuration + file has changed before saving new settings), and for long-lived protection of a + resource (e.g. a document opened by a user in an editor) for an indefinite amount of time. + + When protecting for a short-term operation, it is acceptable to call lock() and wait + until any running operation finishes. + When protecting a resource over a long time, however, the application should always + call setStaleLockTime(0) and then tryLock() with a short timeout, in order to + warn the user that the resource is locked. + + If the process holding the lock crashes, the lock file stays on disk and can prevent + any other process from accessing the shared resource, ever. For this reason, QLockFile + tries to detect such a "stale" lock file, based on the process ID written into the file, + and (in case that process ID got reused meanwhile), on the last modification time of + the lock file (30s by default, for the use case of a short-lived operation). + If the lock file is found to be stale, it will be deleted. + + For the use case of protecting a resource over a long time, you should therefore call + setStaleLockTime(0), and when tryLock() returns LockFailedError, inform the user + that the document is locked, possibly using getLockInfo() for more details. +*/ + +/*! + \enum QLockFile::LockError + + This enum describes the result of the last call to lock() or tryLock(). + + \value NoError The lock was acquired successfully. + \value LockFailedError The lock could not be acquired because another process holds it. + \value PermissionError The lock file could not be created, for lack of permissions + in the parent directory. + \value UnknownError Another error happened, for instance a full partition + prevented writing out the lock file. +*/ + +/*! + Constructs a new lock file object. + The object is created in an unlocked state. + When calling lock() or tryLock(), a lock file named \a fileName will be created, + if it doesn't already exist. + + \sa lock(), unlock() +*/ +QLockFile::QLockFile(const QString &fileName) + : d_ptr(new QLockFilePrivate(fileName)) +{ +} + +/*! + Destroys the lock file object. + If the lock was acquired, this will release the lock, by deleting the lock file. +*/ +QLockFile::~QLockFile() +{ + unlock(); +} + +/*! + Sets \a staleLockTime to be the time in milliseconds after which + a lock file is considered stale. + The default value is 30000, i.e. 30 seconds. + If your application typically keeps the file locked for more than 30 seconds + (for instance while saving megabytes of data for 2 minutes), you should set + a bigger value using setStaleLockTime(). + + The value of \a staleLockTime is used by lock() and tryLock() in order + to determine when an existing lock file is considered stale, i.e. left over + by a crashed process. This is useful for the case where the PID got reused + meanwhile, so the only way to detect a stale lock file is by the fact that + it has been around for a long time. + + \sa staleLockTime() +*/ +void QLockFile::setStaleLockTime(int staleLockTime) +{ + Q_D(QLockFile); + d->staleLockTime = staleLockTime; +} + +/*! + Returns the time in milliseconds after which + a lock file is considered stale. + + \sa setStaleLockTime() +*/ +int QLockFile::staleLockTime() const +{ + Q_D(const QLockFile); + return d->staleLockTime; +} + +/*! + Returns true if the lock was acquired by this QLockFile instance, + otherwise returns false. + + \sa lock(), unlock(), tryLock() +*/ +bool QLockFile::isLocked() const +{ + Q_D(const QLockFile); + return d->isLocked; +} + +/*! + Creates the lock file. + + If another process (or another thread) has created the lock file already, + this function will block until that process (or thread) releases it. + + Calling this function multiple times on the same lock from the same + thread without unlocking first is not allowed. This function will + \e dead-lock when the file is locked recursively. + + Returns true if the lock was acquired, false if it could not be acquired + due to an unrecoverable error, such as no permissions in the parent directory. + + \sa unlock(), tryLock() +*/ +bool QLockFile::lock() +{ + return tryLock(-1); +} + +/*! + Attempts to create the lock file. This function returns true if the + lock was obtained; otherwise it returns false. If another process (or + another thread) has created the lock file already, this function will + wait for at most \a timeout milliseconds for the lock file to become + available. + + Note: Passing a negative number as the \a timeout is equivalent to + calling lock(), i.e. this function will wait forever until the lock + file can be locked if \a timeout is negative. + + If the lock was obtained, it must be released with unlock() + before another process (or thread) can successfully lock it. + + Calling this function multiple times on the same lock from the same + thread without unlocking first is not allowed, this function will + \e always return false when attempting to lock the file recursively. + + \sa lock(), unlock() +*/ +bool QLockFile::tryLock(int timeout) +{ + Q_D(QLockFile); + QElapsedTimer timer; + if (timeout > 0) + timer.start(); + int sleepTime = 100; + forever { + d->lockError = d->tryLock_sys(); + switch (d->lockError) { + case NoError: + d->isLocked = true; + return true; + case PermissionError: + case UnknownError: + return false; + case LockFailedError: + if (!d->isLocked && d->isApparentlyStale()) { + // Stale lock from another thread/process + // Ensure two processes don't remove it at the same time + QLockFile rmlock(d->fileName + QStringLiteral(".rmlock")); + if (rmlock.tryLock()) { + if (d->isApparentlyStale() && d->removeStaleLock()) + continue; + } + } + break; + } + if (timeout == 0 || (timeout > 0 && timer.hasExpired(timeout))) + return false; + QThread::msleep(sleepTime); + if (sleepTime < 5 * 1000) + sleepTime *= 2; + } + // not reached + return false; +} + +/*! + \fn void QLockFile::unlock() + Releases the lock, by deleting the lock file. + + Calling unlock() without locking the file first, does nothing. + + \sa lock(), tryLock() +*/ + +/*! + Retrieves information about the current owner of the lock file. + + If tryLock() returns false, and error() returns LockFailedError, + this function can be called to find out more information about the existing + lock file: + \list + \li the PID of the application (returned in \a pid) + \li the \a hostname it's running on (useful in case of networked filesystems), + \li the name of the application which created it (returned in \a appname), + \endlist + + Note that tryLock() automatically deleted the file if there is no + running application with this PID, so LockFailedError can only happen if there is + an application with this PID (it could be unrelated though). + + This can be used to inform users about the existing lock file and give them + the choice to delete it. After removing the file using removeStaleLockFile(), + the application can call tryLock() again. + + This function returns true if the information could be successfully retrieved, false + if the lock file doesn't exist or doesn't contain the expected data. + This can happen if the lock file was deleted between the time where tryLock() failed + and the call to this function. Simply call tryLock() again if this happens. +*/ +bool QLockFile::getLockInfo(qint64 *pid, QString *hostname, QString *appname) const +{ + Q_D(const QLockFile); + return d->getLockInfo(pid, hostname, appname); +} + +bool QLockFilePrivate::getLockInfo(qint64 *pid, QString *hostname, QString *appname) const +{ + QFile reader(fileName); + if (!reader.open(QIODevice::ReadOnly)) + return false; + + QByteArray pidLine = reader.readLine(); + pidLine.chop(1); + QByteArray appNameLine = reader.readLine(); + appNameLine.chop(1); + QByteArray hostNameLine = reader.readLine(); + hostNameLine.chop(1); + if (pidLine.isEmpty() || appNameLine.isEmpty()) + return false; + + qint64 thePid = pidLine.toLongLong(); + if (pid) + *pid = thePid; + if (appname) + *appname = QString::fromUtf8(appNameLine); + if (hostname) + *hostname = QString::fromUtf8(hostNameLine); + return thePid > 0; +} + +/*! + Attempts to forcefully remove an existing lock file. + + Calling this is not recommended when protecting a short-lived operation: QLockFile + already takes care of removing lock files after they are older than staleLockTime(). + + This method should only be called when protecting a resource for a long time, i.e. + with staleLockTime(0), and after tryLock() returned LockFailedError, and the user + agreed on removing the lock file. + + Returns true on success, false if the lock file couldn't be removed. This happens + on Windows, when the application owning the lock is still running. +*/ +bool QLockFile::removeStaleLockFile() +{ + Q_D(QLockFile); + if (d->isLocked) { + qWarning("removeStaleLockFile can only be called when not holding the lock"); + return false; + } + return d->removeStaleLock(); +} + +/*! + Returns the lock file error status. + + If tryLock() returns false, this function can be called to find out + the reason why the locking failed. +*/ +QLockFile::LockError QLockFile::error() const +{ + Q_D(const QLockFile); + return d->lockError; +} + +QT_END_NAMESPACE diff --git a/src/corelib/io/qlockfile.h b/src/corelib/io/qlockfile.h new file mode 100644 index 0000000000..4c8b6bf31a --- /dev/null +++ b/src/corelib/io/qlockfile.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2013 David Faure +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCKFILE_H +#define QLOCKFILE_H + +#include +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QLockFilePrivate; + +class Q_CORE_EXPORT QLockFile +{ +public: + QLockFile(const QString &fileName); + ~QLockFile(); + + bool lock(); + bool tryLock(int timeout = 0); + void unlock(); + + void setStaleLockTime(int); + int staleLockTime() const; + + bool isLocked() const; + bool getLockInfo(qint64 *pid, QString *hostname, QString *appname) const; + bool removeStaleLockFile(); + + enum LockError { + NoError = 0, + LockFailedError = 1, + PermissionError = 2, + UnknownError = 3 + }; + LockError error() const; + +protected: + QScopedPointer d_ptr; + +private: + Q_DECLARE_PRIVATE(QLockFile) + Q_DISABLE_COPY(QLockFile) +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QLOCKFILE_H diff --git a/src/corelib/io/qlockfile_p.h b/src/corelib/io/qlockfile_p.h new file mode 100644 index 0000000000..e046e87cf4 --- /dev/null +++ b/src/corelib/io/qlockfile_p.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2013 David Faure +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCKFILE_P_H +#define QLOCKFILE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#ifdef Q_OS_WIN +#include +#endif + +QT_BEGIN_NAMESPACE + +class QLockFilePrivate +{ +public: + QLockFilePrivate(const QString &fn) + : fileName(fn), +#ifdef Q_OS_WIN + fileHandle(INVALID_HANDLE_VALUE), +#else + fileHandle(-1), +#endif + staleLockTime(30 * 1000), // 30 seconds + lockError(QLockFile::NoError), + isLocked(false) + { + } + QLockFile::LockError tryLock_sys(); + bool removeStaleLock(); + bool getLockInfo(qint64 *pid, QString *hostname, QString *appname) const; + // Returns true if the lock belongs to dead PID, or is old. + // The attempt to delete it will tell us if it was really stale or not, though. + bool isApparentlyStale() const; + +#ifdef Q_OS_UNIX + static int checkFcntlWorksAfterFlock(); +#endif + + QString fileName; +#ifdef Q_OS_WIN + Qt::HANDLE fileHandle; +#else + int fileHandle; +#endif + int staleLockTime; // "int milliseconds" is big enough for 24 days + QLockFile::LockError lockError; + bool isLocked; +}; + +QT_END_NAMESPACE + +#endif /* QLOCKFILE_P_H */ diff --git a/src/corelib/io/qlockfile_unix.cpp b/src/corelib/io/qlockfile_unix.cpp new file mode 100644 index 0000000000..ed3b399fbf --- /dev/null +++ b/src/corelib/io/qlockfile_unix.cpp @@ -0,0 +1,207 @@ +/**************************************************************************** +** +** Copyright (C) 2013 David Faure +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "private/qlockfile_p.h" + +#include "QtCore/qtemporaryfile.h" +#include "QtCore/qcoreapplication.h" +#include "QtCore/qfileinfo.h" +#include "QtCore/qdebug.h" + +#include "private/qcore_unix_p.h" // qt_safe_open +#include "private/qabstractfileengine_p.h" +#include "private/qtemporaryfile_p.h" + +#include // flock +#include // kill +#include // kill + +QT_BEGIN_NAMESPACE + +static QString localHostName() // from QHostInfo::localHostName() +{ + char hostName[512]; + if (gethostname(hostName, sizeof(hostName)) == -1) + return QString(); + hostName[sizeof(hostName) - 1] = '\0'; + return QString::fromLocal8Bit(hostName); +} + +// ### merge into qt_safe_write? +static qint64 qt_write_loop(int fd, const char *data, qint64 len) +{ + qint64 pos = 0; + while (pos < len) { + const qint64 ret = qt_safe_write(fd, data + pos, len - pos); + if (ret == -1) // e.g. partition full + return pos; + pos += ret; + } + return pos; +} + +int QLockFilePrivate::checkFcntlWorksAfterFlock() +{ + QTemporaryFile file; + if (!file.open()) + return -2; + const int fd = file.d_func()->engine()->handle(); + if (flock(fd, LOCK_EX | LOCK_NB) == -1) // other threads, and other processes on a local fs + return -3; + struct flock flockData; + flockData.l_type = F_WRLCK; + flockData.l_whence = SEEK_SET; + flockData.l_start = 0; + flockData.l_len = 0; // 0 = entire file + flockData.l_pid = getpid(); + if (fcntl(fd, F_SETLK, &flockData) == -1) // for networked filesystems + return 0; + return 1; +} + +static QBasicAtomicInt fcntlOK = Q_BASIC_ATOMIC_INITIALIZER(-1); + +/*! + \internal + Checks that the OS isn't using POSIX locks to emulate flock(). + Mac OS X is one of those. +*/ +static bool fcntlWorksAfterFlock() +{ + int value = fcntlOK.load(); + if (Q_UNLIKELY(value == -1)) { + value = QLockFilePrivate::checkFcntlWorksAfterFlock(); + fcntlOK.store(value); + } + return value == 1; +} + +static bool setNativeLocks(int fd) +{ + if (flock(fd, LOCK_EX | LOCK_NB) == -1) // other threads, and other processes on a local fs + return false; + struct flock flockData; + flockData.l_type = F_WRLCK; + flockData.l_whence = SEEK_SET; + flockData.l_start = 0; + flockData.l_len = 0; // 0 = entire file + flockData.l_pid = getpid(); + if (fcntlWorksAfterFlock() && fcntl(fd, F_SETLK, &flockData) == -1) // for networked filesystems + return false; + return true; +} + +QLockFile::LockError QLockFilePrivate::tryLock_sys() +{ + const QByteArray lockFileName = QFile::encodeName(fileName); + const int fd = qt_safe_open(lockFileName.constData(), O_WRONLY | O_CREAT | O_EXCL, 0644); + if (fd < 0) { + switch (errno) { + case EEXIST: + return QLockFile::LockFailedError; + case EACCES: + case EROFS: + return QLockFile::PermissionError; + default: + return QLockFile::UnknownError; + } + } + // Ensure nobody else can delete the file while we have it + if (!setNativeLocks(fd)) + qWarning() << "setNativeLocks failed:" << strerror(errno); + + // We hold the lock, continue. + fileHandle = fd; + + // Assemble data, to write in a single call to write + // (otherwise we'd have to check every write call) + QByteArray fileData; + fileData += QByteArray::number(QCoreApplication::applicationPid()); + fileData += '\n'; + fileData += qAppName().toUtf8(); + fileData += '\n'; + fileData += localHostName().toUtf8(); + fileData += '\n'; + + QLockFile::LockError error = QLockFile::NoError; + if (qt_write_loop(fd, fileData.constData(), fileData.size()) < fileData.size()) + error = QLockFile::UnknownError; // partition full + return error; +} + +bool QLockFilePrivate::removeStaleLock() +{ + const QByteArray lockFileName = QFile::encodeName(fileName); + const int fd = qt_safe_open(lockFileName.constData(), O_WRONLY, 0644); + if (fd < 0) // gone already? + return false; + bool success = setNativeLocks(fd) && (::unlink(lockFileName) == 0); + close(fd); + return success; +} + +bool QLockFilePrivate::isApparentlyStale() const +{ + qint64 pid; + QString hostname, appname; + if (!getLockInfo(&pid, &hostname, &appname)) + return false; + if (hostname == localHostName()) { + if (::kill(pid, 0) == -1 && errno == ESRCH) + return true; // PID doesn't exist anymore + } + const qint64 age = QFileInfo(fileName).lastModified().msecsTo(QDateTime::currentDateTime()); + return staleLockTime > 0 && age > staleLockTime; +} + +void QLockFile::unlock() +{ + Q_D(QLockFile); + if (!d->isLocked) + return; + close(d->fileHandle); + d->fileHandle = -1; + QFile::remove(d->fileName); + d->lockError = QLockFile::NoError; + d->isLocked = false; +} + +QT_END_NAMESPACE diff --git a/src/corelib/io/qlockfile_win.cpp b/src/corelib/io/qlockfile_win.cpp new file mode 100644 index 0000000000..b5f6d9f3da --- /dev/null +++ b/src/corelib/io/qlockfile_win.cpp @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2013 David Faure +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "private/qlockfile_p.h" +#include "private/qfilesystementry_p.h" +#include + +#include "QtCore/qcoreapplication.h" +#include "QtCore/qfileinfo.h" +#include "QtCore/qdatetime.h" +#include "QtCore/qdebug.h" + +QT_BEGIN_NAMESPACE + +QLockFile::LockError QLockFilePrivate::tryLock_sys() +{ + SECURITY_ATTRIBUTES securityAtts = { sizeof(SECURITY_ATTRIBUTES), NULL, FALSE }; + const QFileSystemEntry fileEntry(fileName); + // When writing, allow others to read. + // When reading, QFile will allow others to read and write, all good. + // Adding FILE_SHARE_DELETE would allow forceful deletion of stale files, + // but Windows doesn't allow recreating it while this handle is open anyway, + // so this would only create confusion (can't lock, but no lock file to read from). + const DWORD dwShareMode = FILE_SHARE_READ; + HANDLE fh = CreateFile((const wchar_t*)fileEntry.nativeFilePath().utf16(), + GENERIC_WRITE, + dwShareMode, + &securityAtts, + CREATE_NEW, // error if already exists + FILE_ATTRIBUTE_NORMAL, + NULL); + if (fh == INVALID_HANDLE_VALUE) { + const DWORD lastError = GetLastError(); + switch (lastError) { + case ERROR_SHARING_VIOLATION: + case ERROR_ALREADY_EXISTS: + case ERROR_FILE_EXISTS: + case ERROR_ACCESS_DENIED: // readonly file, or file still in use by another process. Assume the latter, since we don't create it readonly. + return QLockFile::LockFailedError; + default: + qWarning() << "Got unexpected locking error" << lastError; + return QLockFile::UnknownError; + } + } + + // We hold the lock, continue. + fileHandle = fh; + // Assemble data, to write in a single call to write + // (otherwise we'd have to check every write call) + QByteArray fileData; + fileData += QByteArray::number(QCoreApplication::applicationPid()); + fileData += '\n'; + fileData += qAppName().toUtf8(); + fileData += '\n'; + //fileData += localHostname(); // gethostname requires winsock init, see QHostInfo... + fileData += '\n'; + DWORD bytesWritten = 0; + QLockFile::LockError error = QLockFile::NoError; + if (!WriteFile(fh, fileData.constData(), fileData.size(), &bytesWritten, NULL) || !FlushFileBuffers(fh)) + error = QLockFile::UnknownError; // partition full + return error; +} + +bool QLockFilePrivate::removeStaleLock() +{ + // QFile::remove fails on Windows if the other process is still using the file, so it's not stale. + return QFile::remove(fileName); +} + +bool QLockFilePrivate::isApparentlyStale() const +{ + qint64 pid; + QString hostname, appname; + if (!getLockInfo(&pid, &hostname, &appname)) + return false; + + HANDLE procHandle = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); + if (!procHandle) + return true; + // We got a handle but check if process is still alive + DWORD dwR = ::WaitForSingleObject(procHandle, 0); + ::CloseHandle(procHandle); + if (dwR == WAIT_TIMEOUT) + return true; + const qint64 age = QFileInfo(fileName).lastModified().msecsTo(QDateTime::currentDateTime()); + return staleLockTime > 0 && age > staleLockTime; +} + +void QLockFile::unlock() +{ + Q_D(QLockFile); + if (!d->isLocked) + return; + CloseHandle(d->fileHandle); + QFile::remove(d->fileName); + d->lockError = QLockFile::NoError; + d->isLocked = false; +} + +QT_END_NAMESPACE diff --git a/src/corelib/io/qtemporaryfile.h b/src/corelib/io/qtemporaryfile.h index 249892e704..09aa53c33b 100644 --- a/src/corelib/io/qtemporaryfile.h +++ b/src/corelib/io/qtemporaryfile.h @@ -55,6 +55,7 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_TEMPORARYFILE class QTemporaryFilePrivate; +class QLockFilePrivate; class Q_CORE_EXPORT QTemporaryFile : public QFile { @@ -96,6 +97,7 @@ protected: private: friend class QFile; + friend class QLockFilePrivate; Q_DISABLE_COPY(QTemporaryFile) }; diff --git a/src/corelib/io/qtemporaryfile_p.h b/src/corelib/io/qtemporaryfile_p.h index dd011f56c1..d274f60ecc 100644 --- a/src/corelib/io/qtemporaryfile_p.h +++ b/src/corelib/io/qtemporaryfile_p.h @@ -62,6 +62,8 @@ protected: QString templateName; static QString defaultTemplateName(); + + friend class QLockFilePrivate; }; class QTemporaryFileEngine : public QFSFileEngine -- cgit v1.2.3 From 97fcf3bc987a18f32233fea550eb4a5a22e2b822 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Mon, 4 Mar 2013 10:16:42 +0100 Subject: Introducing the Qt Android port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on the Necessitas project by Bogdan Vatra. Contributors to the Qt5 project: BogDan Vatra Eskil Abrahamsen Blomfeldt hjk Oswald Buddenhagen Paul Olav Tvete Robin Burchell Samuel Rødal Yoann Lopes The full history of the Qt5 port can be found in refs/old-heads/android, SHA-1 249ca9ca2c7d876b91b31df9434dde47f9065d0d Change-Id: Iff1a7b2dbb707c986f2639e65e39ed8f22430120 Reviewed-by: Oswald Buddenhagen Reviewed-by: Lars Knoll --- src/android/android.pro | 15 + src/android/jar/AndroidManifest.xml | 4 + src/android/jar/res/values/strings.xml | 4 + .../qtproject/qt5/android/QtActivityDelegate.java | 714 +++++++++ .../src/org/qtproject/qt5/android/QtEditText.java | 97 ++ .../qtproject/qt5/android/QtInputConnection.java | 244 +++ .../src/org/qtproject/qt5/android/QtLayout.java | 201 +++ .../src/org/qtproject/qt5/android/QtNative.java | 611 ++++++++ .../qt5/android/QtNativeLibrariesDir.java | 61 + .../src/org/qtproject/qt5/android/QtSurface.java | 206 +++ src/android/java/AndroidManifest.xml | 25 + src/android/java/res/layout/splash.xml | 13 + src/android/java/res/values-de/strings.xml | 6 + src/android/java/res/values-el/strings.xml | 6 + src/android/java/res/values-es/strings.xml | 6 + src/android/java/res/values-et/strings.xml | 6 + src/android/java/res/values-fa/strings.xml | 6 + src/android/java/res/values-fr/strings.xml | 6 + src/android/java/res/values-id/strings.xml | 6 + src/android/java/res/values-it/strings.xml | 6 + src/android/java/res/values-ja/strings.xml | 6 + src/android/java/res/values-ms/strings.xml | 6 + src/android/java/res/values-nb/strings.xml | 6 + src/android/java/res/values-nl/strings.xml | 6 + src/android/java/res/values-pl/strings.xml | 6 + src/android/java/res/values-pt-rBR/strings.xml | 6 + src/android/java/res/values-ro/strings.xml | 6 + src/android/java/res/values-rs/strings.xml | 6 + src/android/java/res/values-ru/strings.xml | 6 + src/android/java/res/values-zh-rCN/strings.xml | 6 + src/android/java/res/values-zh-rTW/strings.xml | 6 + src/android/java/res/values/libs.xml | 8 + src/android/java/res/values/strings.xml | 7 + .../src/org/kde/necessitas/ministro/IMinistro.aidl | 49 + .../kde/necessitas/ministro/IMinistroCallback.aidl | 53 + .../qtproject/qt5/android/bindings/QtActivity.java | 1278 ++++++++++++++++ .../qt5/android/bindings/QtApplication.java | 149 ++ src/android/java/version.xml | 8 + src/corelib/codecs/qtextcodec.cpp | 2 +- src/corelib/codecs/qtextcodec_p.h | 2 +- src/corelib/corelib.pro | 6 + src/corelib/global/qlogging.cpp | 24 + src/corelib/global/qsystemdetection.h | 4 + src/corelib/io/io.pri | 2 +- src/corelib/io/qfilesystemengine_unix.cpp | 2 +- src/corelib/io/qtemporarydir.cpp | 14 +- src/corelib/kernel/kernel.pri | 2 +- src/corelib/kernel/qsharedmemory_p.h | 2 +- src/corelib/thread/qthread_unix.cpp | 8 +- src/corelib/tools/qstring.h | 2 +- src/gui/kernel/qguiapplication.cpp | 28 +- src/network/access/qnetworkaccessfilebackend.cpp | 18 +- src/network/access/qnetworkaccessmanager.cpp | 6 +- src/network/access/qnetworkreplyfileimpl.cpp | 12 +- src/network/kernel/kernel.pri | 2 +- src/network/kernel/qhostinfo_unix.cpp | 2 +- src/network/kernel/qnetworkinterface_unix.cpp | 2 +- src/network/ssl/qsslsocket_openssl.cpp | 17 +- src/opengl/opengl.pro | 3 + .../devicediscovery/devicediscovery.pri | 2 +- src/plugins/platforms/android/android.pro | 3 + src/plugins/platforms/android/opengl/opengl.pro | 30 + src/plugins/platforms/android/raster/raster.pro | 19 + src/plugins/platforms/android/src/android.json | 3 + .../platforms/android/src/androidjniclipboard.cpp | 120 ++ .../platforms/android/src/androidjniclipboard.h | 61 + .../platforms/android/src/androidjniinput.cpp | 480 ++++++ .../platforms/android/src/androidjniinput.h | 59 + .../platforms/android/src/androidjnimain.cpp | 839 ++++++++++ src/plugins/platforms/android/src/androidjnimain.h | 120 ++ .../platforms/android/src/androidjnimenu.cpp | 405 +++++ src/plugins/platforms/android/src/androidjnimenu.h | 69 + .../android/src/androidplatformplugin.cpp | 66 + .../android/src/opengl/qandroidopenglcontext.cpp | 78 + .../android/src/opengl/qandroidopenglcontext.h | 68 + .../src/opengl/qandroidopenglplatformwindow.cpp | 72 + .../src/opengl/qandroidopenglplatformwindow.h | 73 + .../android/src/opengl/qeglfshooks_android.cpp | 132 ++ .../src/qandroidassetsfileenginehandler.cpp | 288 ++++ .../android/src/qandroidassetsfileenginehandler.h | 60 + .../platforms/android/src/qandroidinputcontext.cpp | 644 ++++++++ .../platforms/android/src/qandroidinputcontext.h | 130 ++ .../android/src/qandroidplatformclipboard.cpp | 79 + .../android/src/qandroidplatformclipboard.h | 63 + .../android/src/qandroidplatformfontdatabase.cpp | 79 + .../android/src/qandroidplatformfontdatabase.h | 58 + .../android/src/qandroidplatformintegration.cpp | 283 ++++ .../android/src/qandroidplatformintegration.h | 158 ++ .../platforms/android/src/qandroidplatformmenu.cpp | 167 ++ .../platforms/android/src/qandroidplatformmenu.h | 91 ++ .../android/src/qandroidplatformmenubar.cpp | 109 ++ .../android/src/qandroidplatformmenubar.h | 74 + .../android/src/qandroidplatformmenuitem.cpp | 180 +++ .../android/src/qandroidplatformmenuitem.h | 99 ++ .../android/src/qandroidplatformservices.cpp | 83 + .../android/src/qandroidplatformservices.h | 61 + .../android/src/qandroidplatformtheme.cpp | 78 + .../platforms/android/src/qandroidplatformtheme.h | 56 + .../android/src/raster/qandroidplatformscreen.cpp | 71 + .../android/src/raster/qandroidplatformscreen.h | 59 + .../android/src/raster/qandroidplatformwindow.cpp | 56 + .../android/src/raster/qandroidplatformwindow.h | 60 + .../platforms/android/src/raster/raster.pri | 7 + src/plugins/platforms/android/src/src.pri | 47 + src/plugins/platforms/eglfs/qeglfsintegration.cpp | 4 +- src/plugins/platforms/platforms.pro | 2 + src/src.pro | 4 + src/widgets/styles/qandroidstyle.cpp | 1601 ++++++++++++++++++++ src/widgets/styles/qandroidstyle_p.h | 382 +++++ src/widgets/styles/qcommonstyle.cpp | 4 + src/widgets/styles/qstylefactory.cpp | 12 + src/widgets/styles/styles.pri | 7 + src/widgets/widgets/qtextbrowser.cpp | 29 +- 113 files changed, 11858 insertions(+), 47 deletions(-) create mode 100644 src/android/android.pro create mode 100644 src/android/jar/AndroidManifest.xml create mode 100644 src/android/jar/res/values/strings.xml create mode 100644 src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java create mode 100644 src/android/jar/src/org/qtproject/qt5/android/QtEditText.java create mode 100644 src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java create mode 100644 src/android/jar/src/org/qtproject/qt5/android/QtLayout.java create mode 100644 src/android/jar/src/org/qtproject/qt5/android/QtNative.java create mode 100644 src/android/jar/src/org/qtproject/qt5/android/QtNativeLibrariesDir.java create mode 100644 src/android/jar/src/org/qtproject/qt5/android/QtSurface.java create mode 100644 src/android/java/AndroidManifest.xml create mode 100644 src/android/java/res/layout/splash.xml create mode 100644 src/android/java/res/values-de/strings.xml create mode 100644 src/android/java/res/values-el/strings.xml create mode 100644 src/android/java/res/values-es/strings.xml create mode 100644 src/android/java/res/values-et/strings.xml create mode 100644 src/android/java/res/values-fa/strings.xml create mode 100644 src/android/java/res/values-fr/strings.xml create mode 100644 src/android/java/res/values-id/strings.xml create mode 100644 src/android/java/res/values-it/strings.xml create mode 100644 src/android/java/res/values-ja/strings.xml create mode 100644 src/android/java/res/values-ms/strings.xml create mode 100644 src/android/java/res/values-nb/strings.xml create mode 100644 src/android/java/res/values-nl/strings.xml create mode 100644 src/android/java/res/values-pl/strings.xml create mode 100644 src/android/java/res/values-pt-rBR/strings.xml create mode 100644 src/android/java/res/values-ro/strings.xml create mode 100644 src/android/java/res/values-rs/strings.xml create mode 100644 src/android/java/res/values-ru/strings.xml create mode 100644 src/android/java/res/values-zh-rCN/strings.xml create mode 100644 src/android/java/res/values-zh-rTW/strings.xml create mode 100644 src/android/java/res/values/libs.xml create mode 100644 src/android/java/res/values/strings.xml create mode 100644 src/android/java/src/org/kde/necessitas/ministro/IMinistro.aidl create mode 100644 src/android/java/src/org/kde/necessitas/ministro/IMinistroCallback.aidl create mode 100644 src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java create mode 100644 src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java create mode 100644 src/android/java/version.xml create mode 100644 src/plugins/platforms/android/android.pro create mode 100644 src/plugins/platforms/android/opengl/opengl.pro create mode 100644 src/plugins/platforms/android/raster/raster.pro create mode 100644 src/plugins/platforms/android/src/android.json create mode 100644 src/plugins/platforms/android/src/androidjniclipboard.cpp create mode 100644 src/plugins/platforms/android/src/androidjniclipboard.h create mode 100644 src/plugins/platforms/android/src/androidjniinput.cpp create mode 100644 src/plugins/platforms/android/src/androidjniinput.h create mode 100644 src/plugins/platforms/android/src/androidjnimain.cpp create mode 100644 src/plugins/platforms/android/src/androidjnimain.h create mode 100644 src/plugins/platforms/android/src/androidjnimenu.cpp create mode 100644 src/plugins/platforms/android/src/androidjnimenu.h create mode 100644 src/plugins/platforms/android/src/androidplatformplugin.cpp create mode 100644 src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp create mode 100644 src/plugins/platforms/android/src/opengl/qandroidopenglcontext.h create mode 100644 src/plugins/platforms/android/src/opengl/qandroidopenglplatformwindow.cpp create mode 100644 src/plugins/platforms/android/src/opengl/qandroidopenglplatformwindow.h create mode 100644 src/plugins/platforms/android/src/opengl/qeglfshooks_android.cpp create mode 100644 src/plugins/platforms/android/src/qandroidassetsfileenginehandler.cpp create mode 100644 src/plugins/platforms/android/src/qandroidassetsfileenginehandler.h create mode 100644 src/plugins/platforms/android/src/qandroidinputcontext.cpp create mode 100644 src/plugins/platforms/android/src/qandroidinputcontext.h create mode 100644 src/plugins/platforms/android/src/qandroidplatformclipboard.cpp create mode 100644 src/plugins/platforms/android/src/qandroidplatformclipboard.h create mode 100644 src/plugins/platforms/android/src/qandroidplatformfontdatabase.cpp create mode 100644 src/plugins/platforms/android/src/qandroidplatformfontdatabase.h create mode 100644 src/plugins/platforms/android/src/qandroidplatformintegration.cpp create mode 100644 src/plugins/platforms/android/src/qandroidplatformintegration.h create mode 100644 src/plugins/platforms/android/src/qandroidplatformmenu.cpp create mode 100644 src/plugins/platforms/android/src/qandroidplatformmenu.h create mode 100644 src/plugins/platforms/android/src/qandroidplatformmenubar.cpp create mode 100644 src/plugins/platforms/android/src/qandroidplatformmenubar.h create mode 100644 src/plugins/platforms/android/src/qandroidplatformmenuitem.cpp create mode 100644 src/plugins/platforms/android/src/qandroidplatformmenuitem.h create mode 100644 src/plugins/platforms/android/src/qandroidplatformservices.cpp create mode 100644 src/plugins/platforms/android/src/qandroidplatformservices.h create mode 100644 src/plugins/platforms/android/src/qandroidplatformtheme.cpp create mode 100644 src/plugins/platforms/android/src/qandroidplatformtheme.h create mode 100644 src/plugins/platforms/android/src/raster/qandroidplatformscreen.cpp create mode 100644 src/plugins/platforms/android/src/raster/qandroidplatformscreen.h create mode 100644 src/plugins/platforms/android/src/raster/qandroidplatformwindow.cpp create mode 100644 src/plugins/platforms/android/src/raster/qandroidplatformwindow.h create mode 100644 src/plugins/platforms/android/src/raster/raster.pri create mode 100644 src/plugins/platforms/android/src/src.pri create mode 100644 src/widgets/styles/qandroidstyle.cpp create mode 100644 src/widgets/styles/qandroidstyle_p.h (limited to 'src') diff --git a/src/android/android.pro b/src/android/android.pro new file mode 100644 index 0000000000..049a51904c --- /dev/null +++ b/src/android/android.pro @@ -0,0 +1,15 @@ +CONFIG += java +TARGET = QtAndroid +DESTDIR = $$[QT_INSTALL_PREFIX/get]/jar + +PATHPREFIX = $$PWD/jar/src/org/qtproject/qt5/android/ + +JAVACLASSPATH += $$PWD/jar/src/ +JAVASOURCES += \ + $$PATHPREFIX/QtActivityDelegate.java \ + $$PATHPREFIX/QtEditText.java \ + $$PATHPREFIX/QtInputConnection.java \ + $$PATHPREFIX/QtLayout.java \ + $$PATHPREFIX/QtNative.java \ + $$PATHPREFIX/QtNativeLibrariesDir.java \ + $$PATHPREFIX/QtSurface.java diff --git a/src/android/jar/AndroidManifest.xml b/src/android/jar/AndroidManifest.xml new file mode 100644 index 0000000000..ebc6fcfea7 --- /dev/null +++ b/src/android/jar/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/android/jar/res/values/strings.xml b/src/android/jar/res/values/strings.xml new file mode 100644 index 0000000000..1021b5478a --- /dev/null +++ b/src/android/jar/res/values/strings.xml @@ -0,0 +1,4 @@ + + + QtJar + diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java new file mode 100644 index 0000000000..b6e6e3397e --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java @@ -0,0 +1,714 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Android port of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +package org.qtproject.qt5.android; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Iterator; + +import android.app.Activity; +import android.content.Context; +import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.Configuration; +import android.graphics.Rect; +import android.os.Build; +import android.os.Bundle; +import android.text.method.MetaKeyKeyListener; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; +import android.view.KeyCharacterMap; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.view.inputmethod.InputMethodManager; + +public class QtActivityDelegate +{ + private Activity m_activity = null; + private Method m_super_dispatchKeyEvent = null; + private Method m_super_onRestoreInstanceState = null; + private Method m_super_onRetainNonConfigurationInstance = null; + private Method m_super_onSaveInstanceState = null; + private Method m_super_onKeyDown = null; + private Method m_super_onKeyUp = null; + private Method m_super_onConfigurationChanged = null; + + private static final String NATIVE_LIBRARIES_KEY = "native.libraries"; + private static final String BUNDLED_LIBRARIES_KEY = "bundled.libraries"; + private static final String MAIN_LIBRARY_KEY = "main.library"; + private static final String ENVIRONMENT_VARIABLES_KEY = "environment.variables"; + private static final String APPLICATION_PARAMETERS_KEY = "application.parameters"; + private static final String STATIC_INIT_CLASSES_KEY = "static.init.classes"; + private static final String NECESSITAS_API_LEVEL_KEY = "necessitas.api.level"; + + private static String m_environmentVariables = null; + private static String m_applicationParameters = null; + + private int m_currentOrientation = Configuration.ORIENTATION_UNDEFINED; + + private String m_mainLib; + private long m_metaState; + private int m_lastChar = 0; + private boolean m_fullScreen = false; + private boolean m_started = false; + private QtSurface m_surface = null; + private QtLayout m_layout = null; + private QtEditText m_editText = null; + private InputMethodManager m_imm = null; + private boolean m_quitApp = true; + private Process m_debuggerProcess = null; // debugger process + + public boolean m_keyboardIsVisible = false; + public boolean m_keyboardIsHiding = false; + + public QtLayout getQtLayout() + { + return m_layout; + } + + public QtSurface getQtSurface() + { + return m_surface; + } + + public void redrawWindow(int left, int top, int right, int bottom) + { + m_surface.drawBitmap(new Rect(left, top, right, bottom)); + } + + public void setFullScreen(boolean enterFullScreen) + { + if (m_fullScreen == enterFullScreen) + return; + + if (m_fullScreen = enterFullScreen) { + m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + } else { + m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + } + + // case status + private final int ImhNoAutoUppercase = 0x2; + private final int ImhPreferUppercase = 0x8; + @SuppressWarnings("unused") + private final int ImhPreferLowercase = 0x10; + private final int ImhUppercaseOnly = 0x40000; + private final int ImhLowercaseOnly = 0x80000; + + // options + private final int ImhNoPredictiveText = 0x20; + + // layout + private final int ImhHiddenText = 0x1; + private final int ImhPreferNumbers = 0x4; + private final int ImhMultiLine = 0x400; + private final int ImhDigitsOnly = 0x10000; + private final int ImhFormattedNumbersOnly = 0x20000; + private final int ImhDialableCharactersOnly = 0x100000; + private final int ImhEmailCharactersOnly = 0x200000; + private final int ImhUrlCharactersOnly = 0x400000; + + public void resetSoftwareKeyboard() + { + if (m_imm == null) + return; + m_editText.postDelayed(new Runnable() { + @Override + public void run() { + m_imm.restartInput(m_editText); + } + }, 5); + } + + public void showSoftwareKeyboard(int x, int y, int width, int height, int inputHints) + { + if (m_imm == null) + return; + if (height > m_surface.getHeight()*2/3) + m_activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + else + m_activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + + int initialCapsMode = 0; + int imeOptions = android.view.inputmethod.EditorInfo.IME_ACTION_DONE; + int inputType = android.text.InputType.TYPE_CLASS_TEXT; + + if ((inputHints & ImhMultiLine) != 0) { + inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_FLAG_MULTI_LINE; + imeOptions = android.view.inputmethod.EditorInfo.IME_FLAG_NO_ENTER_ACTION; + } + + if (((inputHints & ImhNoAutoUppercase) != 0 || (inputHints & ImhPreferUppercase) != 0) + && (inputHints & ImhLowercaseOnly) == 0) { + initialCapsMode = android.text.TextUtils.CAP_MODE_SENTENCES; + } + + if ((inputHints & ImhUppercaseOnly) != 0) + initialCapsMode = android.text.TextUtils.CAP_MODE_CHARACTERS; + + if ((inputHints & ImhHiddenText) != 0) + inputType = android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD; + + if ((inputHints & ImhPreferNumbers) != 0) + inputType = android.text.InputType.TYPE_CLASS_NUMBER; + + if ((inputHints & ImhDigitsOnly) != 0) + inputType = android.text.InputType.TYPE_CLASS_NUMBER; + + if ((inputHints & ImhFormattedNumbersOnly) != 0) { + inputType = android.text.InputType.TYPE_CLASS_NUMBER + | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL + | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED; + } + + if ((inputHints & ImhDialableCharactersOnly) != 0) + inputType = android.text.InputType.TYPE_CLASS_PHONE; + + if ((inputHints & ImhEmailCharactersOnly) != 0) + inputType = android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS; + + if ((inputHints & ImhUrlCharactersOnly) != 0) { + inputType = android.text.InputType.TYPE_TEXT_VARIATION_URI; + imeOptions = android.view.inputmethod.EditorInfo.IME_ACTION_GO; + } + + if ((inputHints & ImhNoPredictiveText) != 0) { + //android.text.InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | android.text.InputType.TYPE_CLASS_TEXT; + inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD; + } + + m_editText.setInitialCapsMode(initialCapsMode); + m_editText.setImeOptions(imeOptions); + m_editText.setInputType(inputType); + + m_layout.removeView(m_editText); + m_layout.addView(m_editText, new QtLayout.LayoutParams(width, height, x, y)); + m_editText.bringToFront(); + m_editText.requestFocus(); + m_editText.postDelayed(new Runnable() { + @Override + public void run() { + m_imm.showSoftInput(m_editText, 0); + m_keyboardIsVisible = true; + m_keyboardIsHiding = false; + m_editText.postDelayed(new Runnable() { + @Override + public void run() { + m_imm.restartInput(m_editText); + } + }, 25); + } + }, 15); + } + + public void hideSoftwareKeyboard() + { + if (m_imm == null) + return; + m_imm.hideSoftInputFromWindow(m_editText.getWindowToken(), 0); + m_keyboardIsVisible = false; + m_keyboardIsHiding = false; + } + + public boolean isSoftwareKeyboardVisible() + { + return m_keyboardIsVisible; + } + + String getAppIconSize(Activity a) + { + int size = a.getResources().getDimensionPixelSize(android.R.dimen.app_icon_size); + if (size < 36 || size > 512) { // check size sanity + DisplayMetrics metrics = new DisplayMetrics(); + a.getWindowManager().getDefaultDisplay().getMetrics(metrics); + size = metrics.densityDpi/10*3; + if (size < 36) + size = 36; + + if (size > 512) + size = 512; + } + return "\tQT_ANDROID_APP_ICON_SIZE=" + size; + } + + public void updateSelection(int selStart, int selEnd, int candidatesStart, int candidatesEnd) + { + if (m_imm == null) + return; + + m_imm.updateSelection(m_editText, selStart, selEnd, candidatesStart, candidatesEnd); + } + + public boolean loadApplication(Activity activity, ClassLoader classLoader, Bundle loaderParams) + { + /// check parameters integrity + if (!loaderParams.containsKey(NATIVE_LIBRARIES_KEY) + || !loaderParams.containsKey(BUNDLED_LIBRARIES_KEY) + || !loaderParams.containsKey(ENVIRONMENT_VARIABLES_KEY)) { + return false; + } + + m_activity = activity; + QtNative.setActivity(m_activity, this); + QtNative.setClassLoader(classLoader); + if (loaderParams.containsKey(STATIC_INIT_CLASSES_KEY)) { + for (String className: loaderParams.getStringArray(STATIC_INIT_CLASSES_KEY)) { + if (className.length() == 0) + continue; + + try { + @SuppressWarnings("rawtypes") + Class initClass = classLoader.loadClass(className); + Object staticInitDataObject = initClass.newInstance(); // create an instance + Method m = initClass.getMethod("setActivity", Activity.class, Object.class); + m.invoke(staticInitDataObject, m_activity, this); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + QtNative.loadQtLibraries(loaderParams.getStringArrayList(NATIVE_LIBRARIES_KEY)); + ArrayList libraries = loaderParams.getStringArrayList(BUNDLED_LIBRARIES_KEY); + QtNative.loadBundledLibraries(libraries, QtNativeLibrariesDir.nativeLibrariesDir(m_activity)); + m_mainLib = loaderParams.getString(MAIN_LIBRARY_KEY); + // older apps provide the main library as the last bundled library; look for this if the main library isn't provided + if (null == m_mainLib && libraries.size() > 0) + m_mainLib = libraries.get(libraries.size() - 1); + + try { + m_super_dispatchKeyEvent = m_activity.getClass().getMethod("super_dispatchKeyEvent", KeyEvent.class); + m_super_onRestoreInstanceState = m_activity.getClass().getMethod("super_onRestoreInstanceState", Bundle.class); + m_super_onRetainNonConfigurationInstance = m_activity.getClass().getMethod("super_onRetainNonConfigurationInstance"); + m_super_onSaveInstanceState = m_activity.getClass().getMethod("super_onSaveInstanceState", Bundle.class); + m_super_onKeyDown = m_activity.getClass().getMethod("super_onKeyDown", Integer.TYPE, KeyEvent.class); + m_super_onKeyUp = m_activity.getClass().getMethod("super_onKeyUp", Integer.TYPE, KeyEvent.class); + m_super_onConfigurationChanged = m_activity.getClass().getMethod("super_onConfigurationChanged", Configuration.class); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + + int necessitasApiLevel = 1; + if (loaderParams.containsKey(NECESSITAS_API_LEVEL_KEY)) + necessitasApiLevel = loaderParams.getInt(NECESSITAS_API_LEVEL_KEY); + + m_environmentVariables = loaderParams.getString(ENVIRONMENT_VARIABLES_KEY); + String additionalEnvironmentVariables = "QT_ANDROID_FONTS_MONOSPACE=Droid Sans Mono;Droid Sans;Droid Sans Fallback" + + "\tNECESSITAS_API_LEVEL=" + necessitasApiLevel + + "\tHOME=" + m_activity.getFilesDir().getAbsolutePath() + + "\tTMPDIR=" + m_activity.getFilesDir().getAbsolutePath(); + if (android.os.Build.VERSION.SDK_INT < 14) + additionalEnvironmentVariables += "\tQT_ANDROID_FONTS=Droid Sans;Droid Sans Fallback"; + else + additionalEnvironmentVariables += "\tQT_ANDROID_FONTS=Roboto;Droid Sans;Droid Sans Fallback"; + + additionalEnvironmentVariables += getAppIconSize(activity); + + if (m_environmentVariables != null && m_environmentVariables.length() > 0) + m_environmentVariables = additionalEnvironmentVariables + "\t" + m_environmentVariables; + else + m_environmentVariables = additionalEnvironmentVariables; + + if (loaderParams.containsKey(APPLICATION_PARAMETERS_KEY)) + m_applicationParameters = loaderParams.getString(APPLICATION_PARAMETERS_KEY); + else + m_applicationParameters = ""; + + return true; + } + + public boolean startApplication() + { + // start application + try { + // FIXME turn on debuggable check + // if the applications is debuggable and it has a native debug request + Bundle extras = m_activity.getIntent().getExtras(); + if ( /*(ai.flags&ApplicationInfo.FLAG_DEBUGGABLE) != 0 + &&*/ extras != null + && extras.containsKey("native_debug") + && extras.getString("native_debug").equals("true")) { + try { + String packagePath = + m_activity.getPackageManager().getApplicationInfo(m_activity.getPackageName(), + PackageManager.GET_CONFIGURATIONS).dataDir + "/"; + String gdbserverPath = + extras.containsKey("gdbserver_path") + ? extras.getString("gdbserver_path") + : packagePath+"lib/gdbserver "; + + String socket = + extras.containsKey("gdbserver_socket") + ? extras.getString("gdbserver_socket") + : "+debug-socket"; + + // start debugger + m_debuggerProcess = Runtime.getRuntime().exec(gdbserverPath + + socket + + " --attach " + + android.os.Process.myPid(), + null, + new File(packagePath)); + } catch (IOException ioe) { + Log.e(QtNative.QtTAG,"Can't start debugger" + ioe.getMessage()); + } catch (SecurityException se) { + Log.e(QtNative.QtTAG,"Can't start debugger" + se.getMessage()); + } catch (NameNotFoundException e) { + Log.e(QtNative.QtTAG,"Can't start debugger" + e.getMessage()); + } + } + + + if ( /*(ai.flags&ApplicationInfo.FLAG_DEBUGGABLE) != 0 + &&*/ extras != null + && extras.containsKey("debug_ping") + && extras.getString("debug_ping").equals("true")) { + String packagePath = + m_activity.getPackageManager().getApplicationInfo(m_activity.getPackageName(), + PackageManager.GET_CONFIGURATIONS).dataDir + "/"; + String debugPing = packagePath + "debug_ping"; + int i = 0; + while (true) { + ++i; + Log.i(QtNative.QtTAG, "DEBUGGER: WAITING FOR PING AT " + debugPing + ", ATTEMPT " + i); + File file = new File(debugPing); + if (file.exists()) { + file.delete(); + break; + } + Thread.sleep(1000); + } + + Log.i(QtNative.QtTAG, "DEBUGGER: GOT PING " + debugPing); + } + + + if (/*(ai.flags&ApplicationInfo.FLAG_DEBUGGABLE) != 0 + &&*/ extras != null + && extras.containsKey("qml_debug") + && extras.getString("qml_debug").equals("true")) { + String qmljsdebugger; + if (extras.containsKey("qmljsdebugger")) { + qmljsdebugger = extras.getString("qmljsdebugger"); + qmljsdebugger.replaceAll("\\s", ""); // remove whitespace for security + } else { + qmljsdebugger = "port:3768"; + } + m_applicationParameters += "\t-qmljsdebugger=" + qmljsdebugger; + } + + if (null == m_surface) + onCreate(null); + String nativeLibraryDir = QtNativeLibrariesDir.nativeLibrariesDir(m_activity); + m_surface.applicationStarted( QtNative.startApplication(m_applicationParameters, + m_environmentVariables, + m_mainLib, + nativeLibraryDir)); + m_started = true; + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + public void onTerminate() + { + QtNative.terminateQt(); + } + + public void onCreate(Bundle savedInstanceState) + { + m_quitApp = true; + if (null == savedInstanceState) { + DisplayMetrics metrics = new DisplayMetrics(); + m_activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); + QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels, + metrics.widthPixels, metrics.heightPixels, + metrics.xdpi, metrics.ydpi); + } + m_layout = new QtLayout(m_activity); + m_surface = new QtSurface(m_activity, 0); + m_editText = new QtEditText(m_activity); + m_imm = (InputMethodManager)m_activity.getSystemService(Context.INPUT_METHOD_SERVICE); + m_layout.addView(m_surface,0); + m_activity.setContentView(m_layout, + new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, + ViewGroup.LayoutParams.FILL_PARENT)); + m_layout.bringChildToFront(m_surface); + m_activity.registerForContextMenu(m_layout); + + m_currentOrientation = m_activity.getResources().getConfiguration().orientation; + } + + public void onConfigurationChanged(Configuration configuration) + { + try { + m_super_onConfigurationChanged.invoke(m_activity, configuration); + } catch (Exception e) { + e.printStackTrace(); + } + + if (configuration.orientation != m_currentOrientation + && m_currentOrientation != Configuration.ORIENTATION_UNDEFINED) { + QtNative.handleOrientationChanged(configuration.orientation); + } + + m_currentOrientation = configuration.orientation; + } + + public void onDestroy() + { + if (m_quitApp) { + if (m_debuggerProcess != null) + m_debuggerProcess.destroy(); + System.exit(0);// FIXME remove it or find a better way + } + } + + public void onRestoreInstanceState(Bundle savedInstanceState) + { + try { + m_super_onRestoreInstanceState.invoke(m_activity, savedInstanceState); + } catch (Exception e) { + e.printStackTrace(); + } +// setFullScreen(savedInstanceState.getBoolean("FullScreen")); + m_started = savedInstanceState.getBoolean("Started"); + if (m_started) + m_surface.applicationStarted(true); + } + + public void onResume() + { + // fire all lostActions + synchronized (QtNative.m_mainActivityMutex) + { + Iterator itr = QtNative.getLostActions().iterator(); + while (itr.hasNext()) + m_activity.runOnUiThread(itr.next()); + + if (m_started) { + QtNative.clearLostActions(); + QtNative.updateWindow(); + } + } + } + + public Object onRetainNonConfigurationInstance() + { + try { + m_super_onRetainNonConfigurationInstance.invoke(m_activity); + } catch (Exception e) { + e.printStackTrace(); + } + m_quitApp = false; + return true; + } + + public void onSaveInstanceState(Bundle outState) { + try { + m_super_onSaveInstanceState.invoke(m_activity, outState); + } catch (Exception e) { + e.printStackTrace(); + } + outState.putBoolean("FullScreen", m_fullScreen); + outState.putBoolean("Started", m_started); + } + + public boolean onKeyDown(int keyCode, KeyEvent event) + { + if (!m_started) + return false; + + if (keyCode == KeyEvent.KEYCODE_MENU) { + try { + return (Boolean)m_super_onKeyDown.invoke(m_activity, keyCode, event); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + m_metaState = MetaKeyKeyListener.handleKeyDown(m_metaState, keyCode, event); + int c = event.getUnicodeChar(MetaKeyKeyListener.getMetaState(m_metaState)); + int lc = c; + m_metaState = MetaKeyKeyListener.adjustMetaAfterKeypress(m_metaState); + + if ((c & KeyCharacterMap.COMBINING_ACCENT) != 0) { + c = c & KeyCharacterMap.COMBINING_ACCENT_MASK; + int composed = KeyEvent.getDeadChar(m_lastChar, c); + c = composed; + } + + m_lastChar = lc; + if (keyCode != KeyEvent.KEYCODE_BACK) + QtNative.keyDown(keyCode, c, event.getMetaState()); + + return true; + } + + public boolean onKeyUp(int keyCode, KeyEvent event) + { + if (!m_started) + return false; + + if (keyCode == KeyEvent.KEYCODE_MENU) { + try { + return (Boolean)m_super_onKeyUp.invoke(m_activity, keyCode, event); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + if (keyCode == KeyEvent.KEYCODE_BACK && m_keyboardIsVisible) + { + if (!m_keyboardIsHiding) + hideSoftwareKeyboard(); + return true; + } + + m_metaState = MetaKeyKeyListener.handleKeyUp(m_metaState, keyCode, event); + QtNative.keyUp(keyCode, event.getUnicodeChar(), event.getMetaState()); + return true; + } + + public boolean dispatchKeyEvent(KeyEvent event) + { + if (m_started + && event.getAction() == KeyEvent.ACTION_MULTIPLE + && event.getCharacters() != null + && event.getCharacters().length() == 1 + && event.getKeyCode() == 0) { + QtNative.keyDown(0, event.getCharacters().charAt(0), event.getMetaState()); + QtNative.keyUp(0, event.getCharacters().charAt(0), event.getMetaState()); + } + + try { + return (Boolean) m_super_dispatchKeyEvent.invoke(m_activity, event); + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + private boolean m_opionsMenuIsVisible = false; + public boolean onCreateOptionsMenu(Menu menu) + { + menu.clear(); + return true; + } + public boolean onPrepareOptionsMenu(Menu menu) + { + m_opionsMenuIsVisible = true; + return QtNative.onPrepareOptionsMenu(menu); + } + + public boolean onOptionsItemSelected(MenuItem item) + { + return QtNative.onOptionsItemSelected(item.getItemId(), item.isChecked()); + } + + public void onOptionsMenuClosed(Menu menu) + { + m_opionsMenuIsVisible = false; + QtNative.onOptionsMenuClosed(menu); + } + + public void resetOptionsMenu() + { + if (m_opionsMenuIsVisible) + m_activity.closeOptionsMenu(); + } + private boolean m_contextMenuVisible = false; + public void onCreateContextMenu(ContextMenu menu, + View v, + ContextMenuInfo menuInfo) + { + menu.clearHeader(); + QtNative.onCreateContextMenu(menu); + m_contextMenuVisible = true; + } + + public void onContextMenuClosed(Menu menu) + { + if (!m_contextMenuVisible) { + Log.e(QtNative.QtTAG, "invalid onContextMenuClosed call"); + return; + } + m_contextMenuVisible = false; + QtNative.onContextMenuClosed(menu); + } + + public boolean onContextItemSelected(MenuItem item) + { + return QtNative.onContextItemSelected(item.getItemId(), item.isChecked()); + } + + public void openContextMenu() + { + m_layout.postDelayed(new Runnable() { + @Override + public void run() { + m_activity.openContextMenu(m_layout); + } + }, 10); + } + + public void closeContextMenu() + { + m_activity.closeContextMenu(); + } +} diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtEditText.java b/src/android/jar/src/org/qtproject/qt5/android/QtEditText.java new file mode 100644 index 0000000000..b95e0c070c --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt5/android/QtEditText.java @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Android port of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +package org.qtproject.qt5.android; + +import android.content.Context; +import android.text.InputType; +import android.view.View; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputConnection; + +public class QtEditText extends View +{ + QtInputConnection m_inputConnection; + int m_initialCapsMode = 0; + int m_imeOptions = 0; + int m_inputType = InputType.TYPE_CLASS_TEXT; + + public void setImeOptions(int m_imeOptions) + { + this.m_imeOptions = m_imeOptions; + } + + public void setInitialCapsMode(int m_initialCapsMode) + { + this.m_initialCapsMode = m_initialCapsMode; + } + + + public void setInputType(int m_inputType) + { + this.m_inputType = m_inputType; + } + + public QtEditText(Context context) + { + super(context); + setFocusable(true); + setFocusableInTouchMode(true); + m_inputConnection = new QtInputConnection(this); + } + + @Override + public InputConnection onCreateInputConnection(EditorInfo outAttrs) + { + outAttrs.inputType = m_inputType; + outAttrs.imeOptions = m_imeOptions; + outAttrs.initialCapsMode = m_initialCapsMode; + outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI; + return m_inputConnection; + } +// // DEBUG CODE +// @Override +// protected void onDraw(Canvas canvas) { +// canvas.drawARGB(127, 255, 0, 255); +// super.onDraw(canvas); +// } +} diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java b/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java new file mode 100644 index 0000000000..3bcec030b5 --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java @@ -0,0 +1,244 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Android port of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +package org.qtproject.qt5.android; + +import android.content.Context; +import android.os.Build; +import android.view.View; +import android.view.inputmethod.BaseInputConnection; +import android.view.inputmethod.CompletionInfo; +import android.view.inputmethod.ExtractedText; +import android.view.inputmethod.ExtractedTextRequest; +import android.view.inputmethod.InputMethodManager; + +class QtExtractedText +{ + public int partialEndOffset; + public int partialStartOffset; + public int selectionEnd; + public int selectionStart; + public int startOffset; + public String text; +} + +class QtNativeInputConnection +{ + static native boolean commitText(String text, int newCursorPosition); + static native boolean commitCompletion(String text, int position); + static native boolean deleteSurroundingText(int leftLength, int rightLength); + static native boolean finishComposingText(); + static native int getCursorCapsMode(int reqModes); + static native QtExtractedText getExtractedText(int hintMaxChars, int hintMaxLines, int flags); + static native String getSelectedText(int flags); + static native String getTextAfterCursor(int length, int flags); + static native String getTextBeforeCursor(int length, int flags); + static native boolean setComposingText(String text, int newCursorPosition); + static native boolean setSelection(int start, int end); + static native boolean selectAll(); + static native boolean cut(); + static native boolean copy(); + static native boolean copyURL(); + static native boolean paste(); +} + +public class QtInputConnection extends BaseInputConnection +{ + private static final int ID_SELECT_ALL = android.R.id.selectAll; + private static final int ID_CUT = android.R.id.cut; + private static final int ID_COPY = android.R.id.copy; + private static final int ID_PASTE = android.R.id.paste; + private static final int ID_COPY_URL = android.R.id.copyUrl; + private static final int ID_SWITCH_INPUT_METHOD = android.R.id.switchInputMethod; + private static final int ID_ADD_TO_DICTIONARY = android.R.id.addToDictionary; + + View m_view; + boolean m_closing; + public QtInputConnection(View targetView) + { + super(targetView, true); + m_view = targetView; + m_closing = false; + } + + @Override + public boolean beginBatchEdit() + { + m_closing = false; + return true; + } + + @Override + public boolean endBatchEdit() + { + m_closing = false; + return true; + } + + @Override + public boolean commitCompletion(CompletionInfo text) + { + m_closing = false; + return QtNativeInputConnection.commitCompletion(text.getText().toString(), text.getPosition()); + } + + @Override + public boolean commitText(CharSequence text, int newCursorPosition) + { + m_closing = false; + return QtNativeInputConnection.commitText(text.toString(), newCursorPosition); + } + + @Override + public boolean deleteSurroundingText(int leftLength, int rightLength) + { + m_closing = false; + return QtNativeInputConnection.deleteSurroundingText(leftLength, rightLength); + } + + @Override + public boolean finishComposingText() + { + if (m_closing) { + QtNative.activityDelegate().m_keyboardIsHiding = true; + m_view.postDelayed(new Runnable() { + @Override + public void run() { + if (QtNative.activityDelegate().m_keyboardIsHiding) + QtNative.activityDelegate().m_keyboardIsVisible=false; + } + }, 5000); // it seems finishComposingText comes musch faster than onKeyUp event, + // so we must delay hide notification + m_closing = false; + } else { + m_closing = true; + } + return QtNativeInputConnection.finishComposingText(); + } + + @Override + public int getCursorCapsMode(int reqModes) + { + return QtNativeInputConnection.getCursorCapsMode(reqModes); + } + + @Override + public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) + { + QtExtractedText qExtractedText = QtNativeInputConnection.getExtractedText(request.hintMaxChars, + request.hintMaxLines, + flags); + ExtractedText extractedText = new ExtractedText(); + extractedText.partialEndOffset = qExtractedText.partialEndOffset; + extractedText.partialStartOffset = qExtractedText.partialStartOffset; + extractedText.selectionEnd = qExtractedText.selectionEnd; + extractedText.selectionStart = qExtractedText.selectionStart; + extractedText.startOffset = qExtractedText.startOffset; + extractedText.text = qExtractedText.text; + return extractedText; + } + + public CharSequence getSelectedText(int flags) + { + return QtNativeInputConnection.getSelectedText(flags); + } + + @Override + public CharSequence getTextAfterCursor(int length, int flags) + { + return QtNativeInputConnection.getTextAfterCursor(length, flags); + } + + @Override + public CharSequence getTextBeforeCursor(int length, int flags) + { + return QtNativeInputConnection.getTextBeforeCursor(length, flags); + } + + @Override + public boolean performContextMenuAction(int id) + { + switch (id) { + case ID_SELECT_ALL: + return QtNativeInputConnection.selectAll(); + case ID_COPY: + return QtNativeInputConnection.copy(); + case ID_COPY_URL: + return QtNativeInputConnection.copyURL(); + case ID_CUT: + return QtNativeInputConnection.cut(); + case ID_PASTE: + return QtNativeInputConnection.paste(); + + case ID_SWITCH_INPUT_METHOD: + InputMethodManager imm = (InputMethodManager)m_view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm != null) + imm.showInputMethodPicker(); + + return true; + + case ID_ADD_TO_DICTIONARY: +// TODO +// String word = m_editable.subSequence(0, m_editable.length()).toString(); +// if (word != null) { +// Intent i = new Intent("com.android.settings.USER_DICTIONARY_INSERT"); +// i.putExtra("word", word); +// i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK); +// m_view.getContext().startActivity(i); +// } + return true; + } + return super.performContextMenuAction(id); + } + + @Override + public boolean setComposingText(CharSequence text, int newCursorPosition) + { + return QtNativeInputConnection.setComposingText(text.toString(), newCursorPosition); + } + + @Override + public boolean setSelection(int start, int end) + { + return QtNativeInputConnection.setSelection(start, end); + } +} diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java new file mode 100644 index 0000000000..043dab5ce8 --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java @@ -0,0 +1,201 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Android port of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +package org.qtproject.qt5.android; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.view.ViewGroup; + +public class QtLayout extends ViewGroup +{ + public QtLayout(Context context) + { + super(context); + } + + public QtLayout(Context context, AttributeSet attrs) + { + super(context, attrs); + } + + public QtLayout(Context context, AttributeSet attrs, int defStyle) + { + super(context, attrs, defStyle); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) + { + int count = getChildCount(); + + int maxHeight = 0; + int maxWidth = 0; + + // Find out how big everyone wants to be + measureChildren(widthMeasureSpec, heightMeasureSpec); + + // Find rightmost and bottom-most child + for (int i = 0; i < count; i++) { + View child = getChildAt(i); + if (child.getVisibility() != GONE) { + int childRight; + int childBottom; + + QtLayout.LayoutParams lp + = (QtLayout.LayoutParams) child.getLayoutParams(); + + childRight = lp.x + child.getMeasuredWidth(); + childBottom = lp.y + child.getMeasuredHeight(); + + maxWidth = Math.max(maxWidth, childRight); + maxHeight = Math.max(maxHeight, childBottom); + } + } + + // Check against minimum height and width + maxHeight = Math.max(maxHeight, getSuggestedMinimumHeight()); + maxWidth = Math.max(maxWidth, getSuggestedMinimumWidth()); + + setMeasuredDimension(resolveSize(maxWidth, widthMeasureSpec), + resolveSize(maxHeight, heightMeasureSpec)); + } + + /** + * Returns a set of layout parameters with a width of + * {@link android.view.ViewGroup.LayoutParams#WRAP_CONTENT}, + * a height of {@link android.view.ViewGroup.LayoutParams#WRAP_CONTENT} + * and with the coordinates (0, 0). + */ + @Override + protected ViewGroup.LayoutParams generateDefaultLayoutParams() + { + return new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, + android.view.ViewGroup.LayoutParams.WRAP_CONTENT, + 0, + 0); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) + { + int count = getChildCount(); + + for (int i = 0; i < count; i++) { + View child = getChildAt(i); + if (child.getVisibility() != GONE) { + QtLayout.LayoutParams lp = + (QtLayout.LayoutParams) child.getLayoutParams(); + + int childLeft = lp.x; + int childTop = lp.y; + child.layout(childLeft, childTop, + childLeft + child.getMeasuredWidth(), + childTop + child.getMeasuredHeight()); + + } + } + } + + // Override to allow type-checking of LayoutParams. + @Override + protected boolean checkLayoutParams(ViewGroup.LayoutParams p) + { + return p instanceof QtLayout.LayoutParams; + } + + @Override + protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) + { + return new LayoutParams(p); + } + + /** + * Per-child layout information associated with AbsoluteLayout. + * See + * {@link android.R.styleable#AbsoluteLayout_Layout Absolute Layout Attributes} + * for a list of all child view attributes that this class supports. + */ + public static class LayoutParams extends ViewGroup.LayoutParams + { + /** + * The horizontal, or X, location of the child within the view group. + */ + public int x; + /** + * The vertical, or Y, location of the child within the view group. + */ + public int y; + + /** + * Creates a new set of layout parameters with the specified width, + * height and location. + * + * @param width the width, either {@link #FILL_PARENT}, + {@link #WRAP_CONTENT} or a fixed size in pixels + * @param height the height, either {@link #FILL_PARENT}, + {@link #WRAP_CONTENT} or a fixed size in pixels + * @param x the X location of the child + * @param y the Y location of the child + */ + public LayoutParams(int width, int height, int x, int y) + { + super(width, height); + this.x = x; + this.y = y; + } + + /** + * {@inheritDoc} + */ + public LayoutParams(ViewGroup.LayoutParams source) + { + super(source); + } + } + + public void bringChildFront(int child) + { + bringChildToFront(getChildAt(child)); + } +} diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java new file mode 100644 index 0000000000..346bc1221a --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java @@ -0,0 +1,611 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Android port of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +package org.qtproject.qt5.android; + +import java.io.File; +import java.util.ArrayList; +import java.util.concurrent.Semaphore; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Build; +import android.text.ClipboardManager; +import android.util.Log; +import android.view.ContextMenu; +import android.view.Menu; +import android.view.MotionEvent; + +public class QtNative +{ + private static Activity m_activity = null; + private static QtActivityDelegate m_activityDelegate = null; + public static Object m_mainActivityMutex = new Object(); // mutex used to synchronize runnable operations + + public static final String QtTAG = "Qt JAVA"; // string used for Log.x + private static ArrayList m_lostActions = new ArrayList(); // a list containing all actions which could not be performed (e.g. the main activity is destroyed, etc.) + private static boolean m_started = false; + private static int m_displayMetricsScreenWidthPixels = 0; + private static int m_displayMetricsScreenHeightPixels = 0; + private static int m_displayMetricsDesktopWidthPixels = 0; + private static int m_displayMetricsDesktopHeightPixels = 0; + private static double m_displayMetricsXDpi = .0; + private static double m_displayMetricsYDpi = .0; + private static int m_oldx, m_oldy; + private static final int m_moveThreshold = 0; + private static ClipboardManager m_clipboardManager = null; + + private static ClassLoader m_classLoader = null; + public static ClassLoader classLoader() + { + return m_classLoader; + } + + public static void setClassLoader(ClassLoader classLoader) + { + m_classLoader = classLoader; + } + + public static Activity activity() + { + synchronized (m_mainActivityMutex) { + return m_activity; + } + } + + public static QtActivityDelegate activityDelegate() + { + synchronized (m_mainActivityMutex) { + return m_activityDelegate; + } + } + + public static void openURL(String url) + { + Uri uri = Uri.parse(url); + Intent intent = new Intent(Intent.ACTION_VIEW, uri); + activity().startActivity(intent); + } + + // this method loads full path libs + public static void loadQtLibraries(ArrayList libraries) + { + if (libraries == null) + return; + + for (String libName : libraries) { + try { + File f = new File(libName); + if (f.exists()) + System.load(libName); + } catch (SecurityException e) { + Log.i(QtTAG, "Can't load '" + libName + "'", e); + } catch (Exception e) { + Log.i(QtTAG, "Can't load '" + libName + "'", e); + } + } + } + + // this method loads bundled libs by name. + public static void loadBundledLibraries(ArrayList libraries, String nativeLibraryDir) + { + if (libraries == null) + return; + + for (String libName : libraries) { + try { + File f = new File(nativeLibraryDir+"lib"+libName+".so"); + if (f.exists()) + System.load(f.getAbsolutePath()); + else + Log.i(QtTAG, "Can't find '" + f.getAbsolutePath()); + } catch (Exception e) { + Log.i(QtTAG, "Can't load '" + libName + "'", e); + } + } + } + + public static void setActivity(Activity qtMainActivity, QtActivityDelegate qtActivityDelegate) + { + synchronized (m_mainActivityMutex) { + m_activity = qtMainActivity; + m_activityDelegate = qtActivityDelegate; + } + } + + static public ArrayList getLostActions() + { + return m_lostActions; + } + + static public void clearLostActions() + { + m_lostActions.clear(); + } + + private static boolean runAction(Runnable action) + { + synchronized (m_mainActivityMutex) { + if (m_activity == null) + m_lostActions.add(action); + else + m_activity.runOnUiThread(action); + return m_activity != null; + } + } + + public static boolean startApplication(String params, + String environment, + String mainLibrary, + String nativeLibraryDir) throws Exception + { + File f = new File(nativeLibraryDir + "lib" + mainLibrary + ".so"); + if (!f.exists()) + throw new Exception("Can't find main library '" + mainLibrary + "'"); + + if (params == null) + params = "-platform\tandroid"; + + boolean res = false; + synchronized (m_mainActivityMutex) { + res = startQtAndroidPlugin(); + setDisplayMetrics(m_displayMetricsScreenWidthPixels, + m_displayMetricsScreenHeightPixels, + m_displayMetricsDesktopWidthPixels, + m_displayMetricsDesktopHeightPixels, + m_displayMetricsXDpi, + m_displayMetricsYDpi); + if (params.length() > 0) + params = "\t" + params; + startQtApplication(f.getAbsolutePath() + "\t" + params, environment); + m_started = true; + } + return res; + } + + public static void setApplicationDisplayMetrics(int screenWidthPixels, + int screenHeightPixels, + int desktopWidthPixels, + int desktopHeightPixels, + double XDpi, + double YDpi) + { + /* Fix buggy dpi report */ + if (XDpi < android.util.DisplayMetrics.DENSITY_LOW) + XDpi = android.util.DisplayMetrics.DENSITY_LOW; + if (YDpi < android.util.DisplayMetrics.DENSITY_LOW) + YDpi = android.util.DisplayMetrics.DENSITY_LOW; + + synchronized (m_mainActivityMutex) { + if (m_started) { + setDisplayMetrics(screenWidthPixels, + screenHeightPixels, + desktopWidthPixels, + desktopHeightPixels, + XDpi, + YDpi); + } else { + m_displayMetricsScreenWidthPixels = screenWidthPixels; + m_displayMetricsScreenHeightPixels = screenHeightPixels; + m_displayMetricsDesktopWidthPixels = desktopWidthPixels; + m_displayMetricsDesktopHeightPixels = desktopHeightPixels; + m_displayMetricsXDpi = XDpi; + m_displayMetricsYDpi = YDpi; + } + } + } + + public static void pauseApplication() + { + synchronized (m_mainActivityMutex) { + if (m_started) + pauseQtApp(); + } + } + + public static void resumeApplication() + { + synchronized (m_mainActivityMutex) { + if (m_started) { + resumeQtApp(); + updateWindow(); + } + } + } + + // application methods + public static native void startQtApplication(String params, String env); + public static native void startQtApp(String params, String env); + public static native void pauseQtApp(); + public static native void resumeQtApp(); + public static native boolean startQtAndroidPlugin(); + public static native void quitQtAndroidPlugin(); + public static native void terminateQt(); + // application methods + + private static void quitApp() + { + m_activity.finish(); + } + + private static void redrawSurface(final int left, final int top, final int right, final int bottom ) + { + runAction(new Runnable() { + @Override + public void run() { + m_activityDelegate.redrawWindow(left, top, right, bottom); + } + }); + } + + //@ANDROID-5 + static private int getAction(int index, MotionEvent event) + { + int action = event.getAction(); + if (action == MotionEvent.ACTION_MOVE) { + int hsz = event.getHistorySize(); + if (hsz > 0) { + if (Math.abs(event.getX(index) - event.getHistoricalX(index, hsz-1)) > 1 + || Math.abs(event.getY(index) - event.getHistoricalY(index, hsz-1)) > 1) { + return 1; + } else { + return 2; + } + } + return 1; + } + + switch (index) { + case 0: + if (action == MotionEvent.ACTION_DOWN + || action == MotionEvent.ACTION_POINTER_1_DOWN) { + return 0; + } + + if (action == MotionEvent.ACTION_UP + || action == MotionEvent.ACTION_POINTER_1_UP) { + return 3; + } + break; + + case 1: + if (action == MotionEvent.ACTION_POINTER_2_DOWN + || action == MotionEvent.ACTION_POINTER_DOWN) { + return 0; + } + + if (action == MotionEvent.ACTION_POINTER_2_UP + || action == MotionEvent.ACTION_POINTER_UP) { + return 3; + } + break; + + case 2: + if (action == MotionEvent.ACTION_POINTER_3_DOWN + || action == MotionEvent.ACTION_POINTER_DOWN) { + return 0; + } + + if (action == MotionEvent.ACTION_POINTER_3_UP + || action == MotionEvent.ACTION_POINTER_UP) { + return 3; + } + + break; + } + return 2; + } + //@ANDROID-5 + + static public void sendTouchEvent(MotionEvent event, int id) + { + //@ANDROID-5 + touchBegin(id); + for (int i=0;i m_moveThreshold || Math.abs(dy) > m_moveThreshold) { + mouseMove(id, (int) event.getX(), (int) event.getY()); + m_oldx = (int) event.getX(); + m_oldy = (int) event.getY(); + } + break; + } + } + + static public void sendTrackballEvent(MotionEvent event, int id) + { + switch (event.getAction()) { + case MotionEvent.ACTION_UP: + mouseUp(id, (int) event.getX(), (int) event.getY()); + break; + + case MotionEvent.ACTION_DOWN: + mouseDown(id, (int) event.getX(), (int) event.getY()); + m_oldx = (int) event.getX(); + m_oldy = (int) event.getY(); + break; + + case MotionEvent.ACTION_MOVE: + int dx = (int) (event.getX() - m_oldx); + int dy = (int) (event.getY() - m_oldy); + if (Math.abs(dx) > 5 || Math.abs(dy) > 5) { + mouseMove(id, (int) event.getX(), (int) event.getY()); + m_oldx = (int) event.getX(); + m_oldy = (int) event.getY(); + } + break; + } + } + + private static void updateSelection(final int selStart, + final int selEnd, + final int candidatesStart, + final int candidatesEnd) + { + runAction(new Runnable() { + @Override + public void run() { + m_activityDelegate.updateSelection(selStart, selEnd, candidatesStart, candidatesEnd); + } + }); + } + + private static void showSoftwareKeyboard(final int x, + final int y, + final int width, + final int height, + final int inputHints ) + { + runAction(new Runnable() { + @Override + public void run() { + m_activityDelegate.showSoftwareKeyboard(x, y, width, height, inputHints); + } + }); + } + + private static void resetSoftwareKeyboard() + { + runAction(new Runnable() { + @Override + public void run() { + m_activityDelegate.resetSoftwareKeyboard(); + } + }); + } + + private static void hideSoftwareKeyboard() + { + runAction(new Runnable() { + @Override + public void run() { + m_activityDelegate.hideSoftwareKeyboard(); + } + }); + } + + private static boolean isSoftwareKeyboardVisible() + { + Semaphore semaphore = new Semaphore(1); + Boolean ret = false; + class RunnableRes implements Runnable { + @SuppressWarnings("unused") + Boolean returnValue = null; + Semaphore semaphore = null; + RunnableRes(Boolean ret, Semaphore sem) { + semaphore = sem; + returnValue = ret; + } + @Override + public void run() { + returnValue = m_activityDelegate.isSoftwareKeyboardVisible(); + semaphore.release(); + } + } + + runAction(new RunnableRes(ret, semaphore)); + try { + semaphore.acquire(); + } catch (Exception e) { + e.printStackTrace(); + } + return ret; + } + + private static void setFullScreen(final boolean fullScreen) + { + runAction(new Runnable() { + @Override + public void run() { + m_activityDelegate.setFullScreen(fullScreen); + updateWindow(); + } + }); + } + + private static void registerClipboardManager() + { + final Semaphore semaphore = new Semaphore(1); + runAction(new Runnable() { + @Override + public void run() { + m_clipboardManager = (android.text.ClipboardManager) m_activity.getSystemService(Context.CLIPBOARD_SERVICE); + semaphore.release(); + } + }); + try { + semaphore.acquire(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private static void setClipboardText(String text) + { + m_clipboardManager.setText(text); + } + + private static boolean hasClipboardText() + { + return m_clipboardManager.hasText(); + } + + private static String getClipboardText() + { + return m_clipboardManager.getText().toString(); + } + + private static void openContextMenu() + { + runAction(new Runnable() { + @Override + public void run() { + m_activityDelegate.openContextMenu(); + } + }); + } + + private static void closeContextMenu() + { + runAction(new Runnable() { + @Override + public void run() { + m_activityDelegate.closeContextMenu(); + } + }); + } + + private static void resetOptionsMenu() + { + runAction(new Runnable() { + @Override + public void run() { + m_activityDelegate.resetOptionsMenu(); + } + }); + } + + // screen methods + public static native void setDisplayMetrics(int screenWidthPixels, + int screenHeightPixels, + int desktopWidthPixels, + int desktopHeightPixels, + double XDpi, + double YDpi); + public static native void handleOrientationChanged(int newOrientation); + // screen methods + + // pointer methods + public static native void mouseDown(int winId, int x, int y); + public static native void mouseUp(int winId, int x, int y); + public static native void mouseMove(int winId, int x, int y); + public static native void touchBegin(int winId); + public static native void touchAdd(int winId, int pointerId, int action, boolean primary, int x, int y, float size, float pressure); + public static native void touchEnd(int winId, int action); + public static native void longPress(int winId, int x, int y); + // pointer methods + + // keyboard methods + public static native void keyDown(int key, int unicode, int modifier); + public static native void keyUp(int key, int unicode, int modifier); + // keyboard methods + + // surface methods + public static native void destroySurface(); + public static native void setSurface(Object surface); + public static native void lockSurface(); + public static native void unlockSurface(); + // surface methods + + // window methods + public static native void updateWindow(); + // window methods + + // menu methods + public static native boolean onPrepareOptionsMenu(Menu menu); + public static native boolean onOptionsItemSelected(int itemId, boolean checked); + public static native void onOptionsMenuClosed(Menu menu); + + public static native void onCreateContextMenu(ContextMenu menu); + public static native boolean onContextItemSelected(int itemId, boolean checked); + public static native void onContextMenuClosed(Menu menu); + // menu methods +} diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNativeLibrariesDir.java b/src/android/jar/src/org/qtproject/qt5/android/QtNativeLibrariesDir.java new file mode 100644 index 0000000000..219ea13f1a --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt5/android/QtNativeLibrariesDir.java @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Android port of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +package org.qtproject.qt5.android; + +import android.app.Activity; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager.NameNotFoundException; + +public class QtNativeLibrariesDir { + public static String nativeLibrariesDir(Activity activity) + { + String m_nativeLibraryDir = null; + try { + ApplicationInfo ai = activity.getPackageManager().getApplicationInfo(activity.getPackageName(), 0); + m_nativeLibraryDir = ai.nativeLibraryDir+"/"; + } catch (NameNotFoundException e) { + e.printStackTrace(); + } + return m_nativeLibraryDir; + } +} diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java new file mode 100644 index 0000000000..77126ec1c8 --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java @@ -0,0 +1,206 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Android port of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +package org.qtproject.qt5.android; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.PixelFormat; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.SurfaceHolder; +import android.view.SurfaceView; + +public class QtSurface extends SurfaceView implements SurfaceHolder.Callback +{ + private Bitmap m_bitmap = null; + private boolean m_started = false; + private boolean m_usesGL = false; + private GestureDetector m_gestureDetector; + + public QtSurface(Context context, int id) + { + super(context); + setFocusable(true); + getHolder().addCallback(this); + getHolder().setType(SurfaceHolder.SURFACE_TYPE_GPU); + setId(id); + m_gestureDetector = + new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { + public void onLongPress(MotionEvent event) { + if (!m_started) + return; + QtNative.longPress(getId(), (int) event.getX(), (int) event.getY()); + } + }); + m_gestureDetector.setIsLongpressEnabled(true); + } + + public void applicationStarted(boolean usesGL) + { + m_started = true; + m_usesGL = usesGL; + if (getWidth() < 1 || getHeight() < 1) + return; + if (m_usesGL) { + QtNative.setSurface(getHolder().getSurface()); + } else { + QtNative.lockSurface(); + QtNative.setSurface(null); + m_bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.RGB_565); + QtNative.setSurface(m_bitmap); + QtNative.unlockSurface(); + } + } + + @Override + public void surfaceCreated(SurfaceHolder holder) + { + DisplayMetrics metrics = new DisplayMetrics(); + ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics); + QtNative.setApplicationDisplayMetrics(metrics.widthPixels, + metrics.heightPixels, getWidth(), getHeight(), metrics.xdpi, metrics.ydpi); + + if (m_usesGL) + holder.setFormat(PixelFormat.RGBA_8888); + +// if (!m_started) +// return; +// +// if (m_usesGL) +// QtApplication.setSurface(holder.getSurface()); +// else +// { +// QtApplication.lockSurface(); +// QtApplication.setSurface(null); +// m_bitmap=Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.RGB_565); +// QtApplication.setSurface(m_bitmap); +// QtApplication.unlockSurface(); +// } + } + + @Override + public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) + { + if (width<1 || height<1) + return; + + DisplayMetrics metrics = new DisplayMetrics(); + ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics); + QtNative.setApplicationDisplayMetrics(metrics.widthPixels, + metrics.heightPixels, + width, + height, + metrics.xdpi, + metrics.ydpi); + + if (!m_started) + return; + + if (m_usesGL) { + QtNative.setSurface(holder.getSurface()); + } else { + QtNative.lockSurface(); + QtNative.setSurface(null); + m_bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); + QtNative.setSurface(m_bitmap); + QtNative.unlockSurface(); + QtNative.updateWindow(); + } + } + + @Override + public void surfaceDestroyed(SurfaceHolder holder) + { + if (m_usesGL) { + QtNative.destroySurface(); + } else { + if (!m_started) + return; + + QtNative.lockSurface(); + QtNative.setSurface(null); + QtNative.unlockSurface(); + } + } + + public void drawBitmap(Rect rect) + { + if (!m_started) + return; + QtNative.lockSurface(); + if (null != m_bitmap) { + try { + Canvas cv = getHolder().lockCanvas(rect); + cv.drawBitmap(m_bitmap, rect, rect, null); + getHolder().unlockCanvasAndPost(cv); + } catch (Exception e) { + Log.e(QtNative.QtTAG, "Can't create main activity", e); + } + } + QtNative.unlockSurface(); + } + + @Override + public boolean onTouchEvent(MotionEvent event) + { + if (!m_started) + return false; + QtNative.sendTouchEvent(event, getId()); + m_gestureDetector.onTouchEvent(event); + return true; + } + + @Override + public boolean onTrackballEvent(MotionEvent event) + { + if (!m_started) + return false; + QtNative.sendTrackballEvent(event, getId()); + return true; + } +} diff --git a/src/android/java/AndroidManifest.xml b/src/android/java/AndroidManifest.xml new file mode 100644 index 0000000000..7a77d6fd83 --- /dev/null +++ b/src/android/java/AndroidManifest.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/android/java/res/layout/splash.xml b/src/android/java/res/layout/splash.xml new file mode 100644 index 0000000000..6b0d492dd5 --- /dev/null +++ b/src/android/java/res/layout/splash.xml @@ -0,0 +1,13 @@ + + + + diff --git a/src/android/java/res/values-de/strings.xml b/src/android/java/res/values-de/strings.xml new file mode 100644 index 0000000000..320d9ec33f --- /dev/null +++ b/src/android/java/res/values-de/strings.xml @@ -0,0 +1,6 @@ + + + Ministro-Dienst wurde nicht gefunden.\nAnwendung kann nicht gestartet werden + Diese Anwendung benötigt den Ministro-Dienst. Möchten Sie ihn installieren? + In Ihrer Anwendung ist ein schwerwiegender Fehler aufgetreten, sie kann nicht fortgesetzt werden + diff --git a/src/android/java/res/values-el/strings.xml b/src/android/java/res/values-el/strings.xml new file mode 100644 index 0000000000..3cab212f2b --- /dev/null +++ b/src/android/java/res/values-el/strings.xml @@ -0,0 +1,6 @@ + + + Δεν ήταν δυνατή η εύρεση της υπηρεσίας Ministro. Δεν είναι δυνατή η εκκίνηση της εφαρμογής. + Η εφαρμογή απαιτεί την υπηρεσία Ministro. Να εγκατασταθεί η υπηρεσία? + Παρουσιάστηκε ένα κρίσιμο σφάλμα και η εφαρμογή δεν μπορεί να συνεχίσει. + diff --git a/src/android/java/res/values-es/strings.xml b/src/android/java/res/values-es/strings.xml new file mode 100644 index 0000000000..cf0b54d0b0 --- /dev/null +++ b/src/android/java/res/values-es/strings.xml @@ -0,0 +1,6 @@ + + + Servicio Ministro inesistente. Imposible ejecutar la aplicación. + Esta aplicación requiere el servicio Ministro. Instalarlo? + La aplicación ha causado un error grave y no es posible continuar. + diff --git a/src/android/java/res/values-et/strings.xml b/src/android/java/res/values-et/strings.xml new file mode 100644 index 0000000000..d55a3c1471 --- /dev/null +++ b/src/android/java/res/values-et/strings.xml @@ -0,0 +1,6 @@ + + + Ei suuda leida Ministro teenust.\nProgrammi ei saa käivitada. + See programm vajab Ministro teenust.\nKas soovite paigaldada? + Programmiga juhtus fataalne viga.\nKahjuks ei saa jätkata. + diff --git a/src/android/java/res/values-fa/strings.xml b/src/android/java/res/values-fa/strings.xml new file mode 100644 index 0000000000..a8d1b87444 --- /dev/null +++ b/src/android/java/res/values-fa/strings.xml @@ -0,0 +1,6 @@ + + + سرویس Ministro را پیدا نمی‌کند. برنامه نمی‌تواند آغاز شود. + این نرم‌افزار به سرویس Ministro احتیاج دارد. آیا دوست دارید آن را نصب کنید؟ + خطایی اساسی در برنامه‌تان رخ داد و اجرای برنامه نمی‌تواند ادامه یابد. + diff --git a/src/android/java/res/values-fr/strings.xml b/src/android/java/res/values-fr/strings.xml new file mode 100644 index 0000000000..efc0fb6e1e --- /dev/null +++ b/src/android/java/res/values-fr/strings.xml @@ -0,0 +1,6 @@ + + + Le service Ministro est introuvable.\nL\'application ne peut pas démarrer. + Cette application requiert le service Ministro. Voulez-vous l\'installer? + Votre application a rencontré une erreur fatale et ne peut pas continuer. + diff --git a/src/android/java/res/values-id/strings.xml b/src/android/java/res/values-id/strings.xml new file mode 100644 index 0000000000..aaa5bda0de --- /dev/null +++ b/src/android/java/res/values-id/strings.xml @@ -0,0 +1,6 @@ + + + Layanan Ministro tidak bisa ditemukan.\nAplikasi tidak bisa dimulai. + Aplikasi ini membutuhkan layanan Ministro. Apakah Anda ingin menginstalnya? + Aplikasi Anda mengalami kesalahan fatal dan tidak dapat melanjutkan. + diff --git a/src/android/java/res/values-it/strings.xml b/src/android/java/res/values-it/strings.xml new file mode 100644 index 0000000000..4773419c44 --- /dev/null +++ b/src/android/java/res/values-it/strings.xml @@ -0,0 +1,6 @@ + + + Servizio Ministro inesistente. Impossibile eseguire \nl\'applicazione. + Questa applicazione richiede il servizio Ministro.Installarlo? + L\'applicazione ha provocato un errore grave e non puo\' continuare. + diff --git a/src/android/java/res/values-ja/strings.xml b/src/android/java/res/values-ja/strings.xml new file mode 100644 index 0000000000..ba1cfda9ec --- /dev/null +++ b/src/android/java/res/values-ja/strings.xml @@ -0,0 +1,6 @@ + + + Ministroサービスが見つかりません。\nアプリケーションが起動できません。 + このアプリケーションにはMinistroサービスが必要です。 インストールしてもよろしいですか? + アプリケーションで致命的なエラーが発生したため続行できません。 + diff --git a/src/android/java/res/values-ms/strings.xml b/src/android/java/res/values-ms/strings.xml new file mode 100644 index 0000000000..6e3952eaec --- /dev/null +++ b/src/android/java/res/values-ms/strings.xml @@ -0,0 +1,6 @@ + + + Tidak jumpa servis Ministro.\nAplikasi tidak boleh dimulakan. + Aplikasi ini memerlukan servis Ministro. Adakah anda ingin pasang servis itu? + Aplikasi anda menemui ralat muat dan tidak boleh diteruskan. + diff --git a/src/android/java/res/values-nb/strings.xml b/src/android/java/res/values-nb/strings.xml new file mode 100644 index 0000000000..8a550e99a2 --- /dev/null +++ b/src/android/java/res/values-nb/strings.xml @@ -0,0 +1,6 @@ + + + Kan ikke finne tjenesten Ministro. Applikasjonen kan ikke starte. + Denne applikasjonen krever tjenesten Ministro. Vil du installere denne? + Applikasjonen fikk en kritisk feil og kan ikke fortsette + diff --git a/src/android/java/res/values-nl/strings.xml b/src/android/java/res/values-nl/strings.xml new file mode 100644 index 0000000000..8a45a724ff --- /dev/null +++ b/src/android/java/res/values-nl/strings.xml @@ -0,0 +1,6 @@ + + + De Ministro service is niet gevonden.\nDe applicatie kan niet starten. + Deze applicatie maakt gebruik van de Ministro service. Wilt u deze installeren? + Er is een fatale fout in de applicatie opgetreden. De applicatie kan niet verder gaan. + diff --git a/src/android/java/res/values-pl/strings.xml b/src/android/java/res/values-pl/strings.xml new file mode 100644 index 0000000000..9fefc92dcd --- /dev/null +++ b/src/android/java/res/values-pl/strings.xml @@ -0,0 +1,6 @@ + + + Usługa Ministro nie została znaleziona.\nAplikacja nie może zostać uruchomiona. + Aplikacja wymaga usługi Ministro. Czy chcesz ją zainstalować? + Wystąpił błąd krytyczny. Aplikacja zostanie zamknięta. + diff --git a/src/android/java/res/values-pt-rBR/strings.xml b/src/android/java/res/values-pt-rBR/strings.xml new file mode 100644 index 0000000000..67ac3f9f98 --- /dev/null +++ b/src/android/java/res/values-pt-rBR/strings.xml @@ -0,0 +1,6 @@ + + + Não foi possível encontrar o serviço Ministro.\nA aplicação não pode iniciar. + Essa aplicação requer o serviço Ministro. Gostaria de instalá-lo? + Sua aplicação encontrou um erro fatal e não pode continuar. + diff --git a/src/android/java/res/values-ro/strings.xml b/src/android/java/res/values-ro/strings.xml new file mode 100644 index 0000000000..f88a442b35 --- /dev/null +++ b/src/android/java/res/values-ro/strings.xml @@ -0,0 +1,6 @@ + + + Serviciul Ministro nu poate fi găsit.\nAplicaţia nu poate porni. + Această aplicaţie necesită serviciul Ministro.\nDoriţi să-l instalaţi? + Aplicaţia dumneavoastră a întâmpinat o eroare fatală şi nu poate continua. + diff --git a/src/android/java/res/values-rs/strings.xml b/src/android/java/res/values-rs/strings.xml new file mode 100644 index 0000000000..3194ce9022 --- /dev/null +++ b/src/android/java/res/values-rs/strings.xml @@ -0,0 +1,6 @@ + + + Ministro servise nije pronađen. Aplikacija ne može biti pokrenuta. + Ova aplikacija zahteva Ministro servis. Želite li da ga instalirate? + Vaša aplikacija je naišla na fatalnu grešku i ne može nastaviti sa radom. + diff --git a/src/android/java/res/values-ru/strings.xml b/src/android/java/res/values-ru/strings.xml new file mode 100644 index 0000000000..d3cee80f9d --- /dev/null +++ b/src/android/java/res/values-ru/strings.xml @@ -0,0 +1,6 @@ + + + Сервис Ministro не найден.\nПриложение нельзя запустить. + Этому приложению необходим сервис Ministro. Вы хотите его установить? + Ваше приложение столкнулось с фатальной ошибкой и не может более работать. + diff --git a/src/android/java/res/values-zh-rCN/strings.xml b/src/android/java/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000000..2eb1269880 --- /dev/null +++ b/src/android/java/res/values-zh-rCN/strings.xml @@ -0,0 +1,6 @@ + + + 无法找到Ministro服务。\n应用程序无法启动。 + 此应用程序需要Ministro服务。您想安装它吗? + 您的应用程序遇到一个致命错误导致它无法继续。 + diff --git a/src/android/java/res/values-zh-rTW/strings.xml b/src/android/java/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000000..f6e68efa52 --- /dev/null +++ b/src/android/java/res/values-zh-rTW/strings.xml @@ -0,0 +1,6 @@ + + + 無法找到Ministro服務。\n應用程序無法啟動。 + 此應用程序需要Ministro服務。您想安裝它嗎? + 您的應用程序遇到一個致命錯誤導致它無法繼續。 + diff --git a/src/android/java/res/values/libs.xml b/src/android/java/res/values/libs.xml new file mode 100644 index 0000000000..92ce09b7c0 --- /dev/null +++ b/src/android/java/res/values/libs.xml @@ -0,0 +1,8 @@ + + + + QtCore + QtGui + + + diff --git a/src/android/java/res/values/strings.xml b/src/android/java/res/values/strings.xml new file mode 100644 index 0000000000..bd6928fe59 --- /dev/null +++ b/src/android/java/res/values/strings.xml @@ -0,0 +1,7 @@ + + + + Can\'t find Ministro service.\nThe application can\'t start. + This application requires Ministro service. Would you like to install it? + Your application encountered a fatal error and cannot continue. + diff --git a/src/android/java/src/org/kde/necessitas/ministro/IMinistro.aidl b/src/android/java/src/org/kde/necessitas/ministro/IMinistro.aidl new file mode 100644 index 0000000000..1c33a77fdb --- /dev/null +++ b/src/android/java/src/org/kde/necessitas/ministro/IMinistro.aidl @@ -0,0 +1,49 @@ +/* + Copyright (c) 2012, BogDan Vatra + Contact: http://www.qt-project.org/legal + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.kde.necessitas.ministro; + +import org.kde.necessitas.ministro.IMinistroCallback; + +interface IMinistro +{ +/** +* Check/download required libs to run the application +* +* param callback - interface used by Minsitro service to notify the client when the loader is ready +* param parameters +* parameters fields: +* * Key Name Key type Explanations +* "required.modules" StringArray Required modules by your application +* "application.title" String Application name, used to show more informations to user +* "qt.provider" String Qt libs provider, currently only "necessitas" is supported. +* "minimum.ministro.api" Integer Minimum Ministro API level, used to check if Ministro service compatible with your application. Current API Level is 1 ! +* "minimum.qt.version" Integer Minimim Qt version (e.g. 0x040800, which means Qt 4.8.0, check http://doc.trolltech.com/4.8/qtglobal.html#QT_VERSION)! +* "3rd.party.repositories" StringArray 3rd party repositories, which should be downloaded by ministro, needs minimum.ministro.api >= 2 +* Check http://community.kde.org/Necessitas/Ministro for more details. +*/ + void requestLoader(in IMinistroCallback callback, in Bundle parameters); +} diff --git a/src/android/java/src/org/kde/necessitas/ministro/IMinistroCallback.aidl b/src/android/java/src/org/kde/necessitas/ministro/IMinistroCallback.aidl new file mode 100644 index 0000000000..eec270aec1 --- /dev/null +++ b/src/android/java/src/org/kde/necessitas/ministro/IMinistroCallback.aidl @@ -0,0 +1,53 @@ +/* + Copyright (c) 2012, BogDan Vatra + Contact: http://www.qt-project.org/legal + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.kde.necessitas.ministro; + +oneway interface IMinistroCallback { +/** +* This method is called by the Ministro service back into the application which +* implements this interface. +* +* param in - loaderParams +* loaderParams fields: +* * Key Name Key type Explanations +* * "error.code" Integer See below +* * "error.message" String Missing if no error, otherwise will contain the error message translated into phone language where available. +* * "dex.path" String The list of jar/apk files containing classes and resources, needed to be passed to application DexClassLoader +* * "lib.path" String The list of directories containing native libraries; may be missing, needed to be passed to application DexClassLoader +* * "loader.class.name" String Loader class name. +* +* "error.code" field possible errors: +* - 0 no error. +* - 1 incompatible Ministro version. Ministro needs to be upgraded. +* - 2 not all modules could be satisfy. +* - 3 invalid parameters +* +* This parameter will contain additional fields which are used by the loader to start your application, so it must be passed to loader. +*/ + + void loaderReady(in Bundle loaderParams); +} diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java new file mode 100644 index 0000000000..c3d82bca8d --- /dev/null +++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java @@ -0,0 +1,1278 @@ +/* + Copyright (c) 2012, BogDan Vatra + Contact: http://www.qt-project.org/legal + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.qtproject.qt5.android.bindings; + +import java.io.File; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Arrays; + +import org.kde.necessitas.ministro.IMinistro; +import org.kde.necessitas.ministro.IMinistroCallback; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.ComponentName; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.ServiceConnection; +import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.Configuration; +import android.content.res.Resources.Theme; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.net.Uri; +import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import android.util.AttributeSet; +import android.util.Log; +import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.view.Window; +import android.view.WindowManager.LayoutParams; +import android.view.accessibility.AccessibilityEvent; +import dalvik.system.DexClassLoader; + +//@ANDROID-11 +import android.app.Fragment; +import android.view.ActionMode; +import android.view.ActionMode.Callback; +//@ANDROID-11 + +public class QtActivity extends Activity +{ + private final static int MINISTRO_INSTALL_REQUEST_CODE = 0xf3ee; // request code used to know when Ministro instalation is finished + private static final int MINISTRO_API_LEVEL = 2; // Ministro api level (check IMinistro.aidl file) + private static final int NECESSITAS_API_LEVEL = 2; // Necessitas api level used by platform plugin + private static final String QT_PROVIDER = "necessitas"; + private static final int QT_VERSION = 0x050100; // This app requires at least Qt version 5.1.0 + + private static final String ERROR_CODE_KEY = "error.code"; + private static final String ERROR_MESSAGE_KEY = "error.message"; + private static final String DEX_PATH_KEY = "dex.path"; + private static final String LIB_PATH_KEY = "lib.path"; + private static final String LOADER_CLASS_NAME_KEY = "loader.class.name"; + private static final String NATIVE_LIBRARIES_KEY = "native.libraries"; + private static final String ENVIRONMENT_VARIABLES_KEY = "environment.variables"; + private static final String APPLICATION_PARAMETERS_KEY = "application.parameters"; + private static final String BUNDLED_LIBRARIES_KEY = "bundled.libraries"; + private static final String MAIN_LIBRARY_KEY = "main.library"; + private static final String STATIC_INIT_CLASSES_KEY = "static.init.classes"; + private static final String NECESSITAS_API_LEVEL_KEY = "necessitas.api.level"; + + /// Ministro server parameter keys + private static final String REQUIRED_MODULES_KEY = "required.modules"; + private static final String APPLICATION_TITLE_KEY = "application.title"; + private static final String QT_PROVIDER_KEY = "qt.provider"; + private static final String MINIMUM_MINISTRO_API_KEY = "minimum.ministro.api"; + private static final String MINIMUM_QT_VERSION_KEY = "minimum.qt.version"; +// private static final String REPOSITORIES="3rd.party.repositories"; // needs MINISTRO_API_LEVEL >=2 !!! + // Use this key to specify any 3rd party repositories urls + // Ministro will download these repositories into thier + // own folders, check http://community.kde.org/Necessitas/Ministro + // for more details. + + private static final String APPLICATION_PARAMETERS = null; // use this variable to pass any parameters to your application, + // the parameters must not contain any white spaces + // and must be separated with "\t" + // e.g "-param1\t-param2=value2\t-param3\tvalue3" + + private static final String ENVIRONMENT_VARIABLES = "QT_USE_ANDROID_NATIVE_STYLE=1\t"; + // use this variable to add any environment variables to your application. + // the env vars must be separated with "\t" + // e.g. "ENV_VAR1=1\tENV_VAR2=2\t" + // Currently the following vars are used by the android plugin: + // * QT_USE_ANDROID_NATIVE_STYLE - 0 if you don't want to use android style plugin, it will save a few ms at startup. + + private static final int INCOMPATIBLE_MINISTRO_VERSION = 1; // Incompatible Ministro version. Ministro needs to be upgraded. + private ActivityInfo m_activityInfo = null; // activity info object, used to access the libs and the strings + private DexClassLoader m_classLoader = null; // loader object + private String[] m_qtLibs = null; // required qt libs + + // this function is used to load and start the loader + private void loadApplication(Bundle loaderParams) + { + try { + final int errorCode = loaderParams.getInt(ERROR_CODE_KEY); + if (errorCode != 0) { + if (errorCode == INCOMPATIBLE_MINISTRO_VERSION) { + downloadUpgradeMinistro(loaderParams.getString(ERROR_MESSAGE_KEY)); + return; + } + + // fatal error, show the error and quit + AlertDialog errorDialog = new AlertDialog.Builder(QtActivity.this).create(); + errorDialog.setMessage(loaderParams.getString(ERROR_MESSAGE_KEY)); + errorDialog.setButton(getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + finish(); + } + }); + errorDialog.show(); + return; + } + + // add all bundled Qt libs to loader params + ArrayList libs = new ArrayList(); + if ( m_activityInfo.metaData.containsKey("android.app.bundled_libs_resource_id") ) + libs.addAll(Arrays.asList(getResources().getStringArray(m_activityInfo.metaData.getInt("android.app.bundled_libs_resource_id")))); + + String libName = null; + if ( m_activityInfo.metaData.containsKey("android.app.lib_name") ) { + libName = m_activityInfo.metaData.getString("android.app.lib_name"); + loaderParams.putString(MAIN_LIBRARY_KEY, libName); //main library contains main() function + } + + loaderParams.putStringArrayList(BUNDLED_LIBRARIES_KEY, libs); + loaderParams.putInt(NECESSITAS_API_LEVEL_KEY, NECESSITAS_API_LEVEL); + + // load and start QtLoader class + m_classLoader = new DexClassLoader(loaderParams.getString(DEX_PATH_KEY), // .jar/.apk files + getDir("outdex", Context.MODE_PRIVATE).getAbsolutePath(), // directory where optimized DEX files should be written. + loaderParams.containsKey(LIB_PATH_KEY) ? loaderParams.getString(LIB_PATH_KEY) : null, // libs folder (if exists) + getClassLoader()); // parent loader + + @SuppressWarnings("rawtypes") + Class loaderClass = m_classLoader.loadClass(loaderParams.getString(LOADER_CLASS_NAME_KEY)); // load QtLoader class + Object qtLoader = loaderClass.newInstance(); // create an instance + Method perpareAppMethod = qtLoader.getClass().getMethod("loadApplication", + Activity.class, + ClassLoader.class, + Bundle.class); + if (!(Boolean)perpareAppMethod.invoke(qtLoader, this, m_classLoader, loaderParams)) + throw new Exception(""); + + QtApplication.setQtActivityDelegate(qtLoader); + + // now load the application library so it's accessible from this class loader + if (libName != null) + System.loadLibrary(libName); + + Method startAppMethod=qtLoader.getClass().getMethod("startApplication"); + if (!(Boolean)startAppMethod.invoke(qtLoader)) + throw new Exception(""); + + } catch (Exception e) { + e.printStackTrace(); + AlertDialog errorDialog = new AlertDialog.Builder(QtActivity.this).create(); + if (m_activityInfo != null && m_activityInfo.metaData.containsKey("android.app.fatal_error_msg")) + errorDialog.setMessage(m_activityInfo.metaData.getString("android.app.fatal_error_msg")); + else + errorDialog.setMessage("Fatal error, your application can't be started."); + + errorDialog.setButton(getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + finish(); + } + }); + errorDialog.show(); + } + } + + private ServiceConnection m_ministroConnection=new ServiceConnection() { + private IMinistro m_service = null; + @Override + public void onServiceConnected(ComponentName name, IBinder service) + { + m_service = IMinistro.Stub.asInterface(service); + try { + if (m_service!=null) { + Bundle parameters= new Bundle(); + parameters.putStringArray(REQUIRED_MODULES_KEY, m_qtLibs); + parameters.putString(APPLICATION_TITLE_KEY, (String)QtActivity.this.getTitle()); + parameters.putInt(MINIMUM_MINISTRO_API_KEY, MINISTRO_API_LEVEL); + parameters.putString(QT_PROVIDER_KEY, QT_PROVIDER); + parameters.putInt(MINIMUM_QT_VERSION_KEY, QT_VERSION); + parameters.putString(ENVIRONMENT_VARIABLES_KEY, ENVIRONMENT_VARIABLES); + if (null!=APPLICATION_PARAMETERS) + parameters.putString(APPLICATION_PARAMETERS_KEY, APPLICATION_PARAMETERS); + // parameters.putStringArray(REPOSITORIES, null); + m_service.requestLoader(m_ministroCallback, parameters); + } + } catch (RemoteException e) { + e.printStackTrace(); + } + } + + private IMinistroCallback m_ministroCallback = new IMinistroCallback.Stub() { + // this function is called back by Ministro. + @Override + public void loaderReady(final Bundle loaderParams) throws RemoteException { + runOnUiThread(new Runnable() { + @Override + public void run() { + unbindService(m_ministroConnection); + loadApplication(loaderParams); + } + }); + } + }; + + @Override + public void onServiceDisconnected(ComponentName name) { + m_service = null; + } + }; + + private void downloadUpgradeMinistro(String msg) + { + AlertDialog.Builder downloadDialog = new AlertDialog.Builder(this); + downloadDialog.setMessage(msg); + downloadDialog.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + try { + Uri uri = Uri.parse("market://search?q=pname:org.kde.necessitas.ministro"); + Intent intent = new Intent(Intent.ACTION_VIEW, uri); + startActivityForResult(intent, MINISTRO_INSTALL_REQUEST_CODE); + } catch (Exception e) { + e.printStackTrace(); + ministroNotFound(); + } + } + }); + + downloadDialog.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + QtActivity.this.finish(); + } + }); + downloadDialog.show(); + } + + private void ministroNotFound() + { + AlertDialog errorDialog = new AlertDialog.Builder(QtActivity.this).create(); + + if (m_activityInfo != null && m_activityInfo.metaData.containsKey("android.app.ministro_not_found_msg")) + errorDialog.setMessage(m_activityInfo.metaData.getString("android.app.ministro_not_found_msg")); + else + errorDialog.setMessage("Can't find Ministro service.\nThe application can't start."); + + errorDialog.setButton(getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + finish(); + } + }); + errorDialog.show(); + } + + private void startApp(final boolean firstStart) + { + try { + ActivityInfo ai=getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA); + if (ai.metaData.containsKey("android.app.qt_libs_resource_id")) { + int resourceId = ai.metaData.getInt("android.app.qt_libs_resource_id"); + m_qtLibs = getResources().getStringArray(resourceId); + } + + if (getIntent().getExtras()!= null + && getIntent().getExtras().containsKey("use_local_qt_libs") + && getIntent().getExtras().getString("use_local_qt_libs").equals("true")) { + ArrayList libraryList= new ArrayList(); + + String localPrefix="/data/local/tmp/qt/"; + if (getIntent().getExtras().containsKey("libs_prefix")) + localPrefix=getIntent().getExtras().getString("libs_prefix"); + + if (m_qtLibs != null) { + for (int i=0;i 0) + libraryList.add(localPrefix + lib); + } + } + + String dexPaths = new String(); + String pathSeparator = System.getProperty("path.separator", ":"); + if (getIntent().getExtras().containsKey("load_local_jars")) { + String[] jarFiles = getIntent().getExtras().getString("load_local_jars").split(":"); + for (String jar:jarFiles) { + if (jar.length() > 0) { + if (dexPaths.length() > 0) + dexPaths += pathSeparator; + dexPaths += localPrefix + jar; + } + } + } + + Bundle loaderParams = new Bundle(); + loaderParams.putInt(ERROR_CODE_KEY, 0); + loaderParams.putString(DEX_PATH_KEY, dexPaths); + loaderParams.putString(LOADER_CLASS_NAME_KEY, getIntent().getExtras().containsKey("loader_class_name") + ? getIntent().getExtras().getString("loader_class_name") + : "org.qtproject.qt5.android.QtActivityDelegate"); + if (getIntent().getExtras().containsKey("static_init_classes")) { + loaderParams.putStringArray(STATIC_INIT_CLASSES_KEY, + getIntent().getExtras().getString("static_init_classes").split(":")); + } + loaderParams.putStringArrayList(NATIVE_LIBRARIES_KEY, libraryList); + loaderParams.putString(ENVIRONMENT_VARIABLES_KEY, ENVIRONMENT_VARIABLES + + "QT_QPA_EGLFS_HIDECURSOR=1" + + "\tQML2_IMPORT_PATH=" + localPrefix + "/qml" + + "\tQML_IMPORT_PATH=" + localPrefix + "/imports" + + "\tQT_PLUGIN_PATH=" + localPrefix + "/plugins"); + loadApplication(loaderParams); + return; + } + + try { + if (!bindService(new Intent(org.kde.necessitas.ministro.IMinistro.class.getCanonicalName()), + m_ministroConnection, + Context.BIND_AUTO_CREATE)) { + throw new SecurityException(""); + } + } catch (Exception e) { + if (firstStart) { + String msg = "This application requires Ministro service. Would you like to install it?"; + if (m_activityInfo != null && m_activityInfo.metaData.containsKey("android.app.ministro_needed_msg")) + msg = m_activityInfo.metaData.getString("android.app.ministro_needed_msg"); + downloadUpgradeMinistro(msg); + } else { + ministroNotFound(); + } + } + } catch (Exception e) { + Log.e(QtApplication.QtTAG, "Can't create main activity", e); + } + } + + + + /////////////////////////// forward all notifications //////////////////////////// + /////////////////////////// Super class calls //////////////////////////////////// + /////////////// PLEASE DO NOT CHANGE THE FOLLOWING CODE ////////////////////////// + ////////////////////////////////////////////////////////////////////////////////// + + @Override + public boolean dispatchKeyEvent(KeyEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.dispatchKeyEvent != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.dispatchKeyEvent, event); + else + return super.dispatchKeyEvent(event); + } + public boolean super_dispatchKeyEvent(KeyEvent event) + { + return super.dispatchKeyEvent(event); + } + //--------------------------------------------------------------------------- + + @Override + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.dispatchPopulateAccessibilityEvent != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.dispatchPopulateAccessibilityEvent, event); + else + return super.dispatchPopulateAccessibilityEvent(event); + } + public boolean super_dispatchPopulateAccessibilityEvent(AccessibilityEvent event) + { + return super_dispatchPopulateAccessibilityEvent(event); + } + //--------------------------------------------------------------------------- + + @Override + public boolean dispatchTouchEvent(MotionEvent ev) + { + if (QtApplication.m_delegateObject != null && QtApplication.dispatchTouchEvent != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.dispatchTouchEvent, ev); + else + return super.dispatchTouchEvent(ev); + } + public boolean super_dispatchTouchEvent(MotionEvent event) + { + return super.dispatchTouchEvent(event); + } + //--------------------------------------------------------------------------- + + @Override + public boolean dispatchTrackballEvent(MotionEvent ev) + { + if (QtApplication.m_delegateObject != null && QtApplication.dispatchTrackballEvent != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.dispatchTrackballEvent, ev); + else + return super.dispatchTrackballEvent(ev); + } + public boolean super_dispatchTrackballEvent(MotionEvent event) + { + return super.dispatchTrackballEvent(event); + } + //--------------------------------------------------------------------------- + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) + { + + if (QtApplication.m_delegateObject != null && QtApplication.onActivityResult != null) { + QtApplication.invokeDelegateMethod(QtApplication.onActivityResult, requestCode, resultCode, data); + return; + } + if (requestCode == MINISTRO_INSTALL_REQUEST_CODE) + startApp(false); + super.onActivityResult(requestCode, resultCode, data); + } + public void super_onActivityResult(int requestCode, int resultCode, Intent data) + { + super.onActivityResult(requestCode, resultCode, data); + } + //--------------------------------------------------------------------------- + + @Override + protected void onApplyThemeResource(Theme theme, int resid, boolean first) + { + if (!QtApplication.invokeDelegate(theme, resid, first).invoked) + super.onApplyThemeResource(theme, resid, first); + } + public void super_onApplyThemeResource(Theme theme, int resid, boolean first) + { + super.onApplyThemeResource(theme, resid, first); + } + //--------------------------------------------------------------------------- + + + @Override + protected void onChildTitleChanged(Activity childActivity, CharSequence title) + { + if (!QtApplication.invokeDelegate(childActivity, title).invoked) + super.onChildTitleChanged(childActivity, title); + } + public void super_onChildTitleChanged(Activity childActivity, CharSequence title) + { + super.onChildTitleChanged(childActivity, title); + } + //--------------------------------------------------------------------------- + + @Override + public void onConfigurationChanged(Configuration newConfig) + { + if (!QtApplication.invokeDelegate(newConfig).invoked) + super.onConfigurationChanged(newConfig); + } + public void super_onConfigurationChanged(Configuration newConfig) + { + super.onConfigurationChanged(newConfig); + } + //--------------------------------------------------------------------------- + + @Override + public void onContentChanged() + { + if (!QtApplication.invokeDelegate().invoked) + super.onContentChanged(); + } + public void super_onContentChanged() + { + super.onContentChanged(); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onContextItemSelected(MenuItem item) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(item); + if (res.invoked) + return (Boolean)res.methodReturns; + else + return super.onContextItemSelected(item); + } + public boolean super_onContextItemSelected(MenuItem item) + { + return super.onContextItemSelected(item); + } + //--------------------------------------------------------------------------- + + @Override + public void onContextMenuClosed(Menu menu) + { + if (!QtApplication.invokeDelegate(menu).invoked) + super.onContextMenuClosed(menu); + } + public void super_onContextMenuClosed(Menu menu) + { + super.onContextMenuClosed(menu); + } + //--------------------------------------------------------------------------- + + @Override + public void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + if (QtApplication.m_delegateObject != null && QtApplication.onCreate != null) { + QtApplication.invokeDelegateMethod(QtApplication.onCreate, savedInstanceState); + return; + } + + requestWindowFeature(Window.FEATURE_NO_TITLE); + try { + m_activityInfo = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA); + } catch (NameNotFoundException e) { + e.printStackTrace(); + finish(); + return; + } + + if (null == getLastNonConfigurationInstance()) { + // if splash screen is defined, then show it + if (m_activityInfo.metaData.containsKey("android.app.splash_screen") ) + setContentView(m_activityInfo.metaData.getInt("android.app.splash_screen")); + startApp(true); + } + } + //--------------------------------------------------------------------------- + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) + { + if (!QtApplication.invokeDelegate(menu, v, menuInfo).invoked) + super.onCreateContextMenu(menu, v, menuInfo); + } + public void super_onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) + { + super.onCreateContextMenu(menu, v, menuInfo); + } + //--------------------------------------------------------------------------- + + @Override + public CharSequence onCreateDescription() + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(); + if (res.invoked) + return (CharSequence)res.methodReturns; + else + return super.onCreateDescription(); + } + public CharSequence super_onCreateDescription() + { + return super.onCreateDescription(); + } + //--------------------------------------------------------------------------- + + @Override + protected Dialog onCreateDialog(int id) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(id); + if (res.invoked) + return (Dialog)res.methodReturns; + else + return super.onCreateDialog(id); + } + public Dialog super_onCreateDialog(int id) + { + return super.onCreateDialog(id); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onCreateOptionsMenu(Menu menu) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(menu); + if (res.invoked) + return (Boolean)res.methodReturns; + else + return super.onCreateOptionsMenu(menu); + } + public boolean super_onCreateOptionsMenu(Menu menu) + { + return super.onCreateOptionsMenu(menu); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onCreatePanelMenu(int featureId, Menu menu) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(featureId, menu); + if (res.invoked) + return (Boolean)res.methodReturns; + else + return super.onCreatePanelMenu(featureId, menu); + } + public boolean super_onCreatePanelMenu(int featureId, Menu menu) + { + return super.onCreatePanelMenu(featureId, menu); + } + //--------------------------------------------------------------------------- + + + @Override + public View onCreatePanelView(int featureId) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(featureId); + if (res.invoked) + return (View)res.methodReturns; + else + return super.onCreatePanelView(featureId); + } + public View super_onCreatePanelView(int featureId) + { + return super.onCreatePanelView(featureId); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onCreateThumbnail(Bitmap outBitmap, Canvas canvas) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(outBitmap, canvas); + if (res.invoked) + return (Boolean)res.methodReturns; + else + return super.onCreateThumbnail(outBitmap, canvas); + } + public boolean super_onCreateThumbnail(Bitmap outBitmap, Canvas canvas) + { + return super.onCreateThumbnail(outBitmap, canvas); + } + //--------------------------------------------------------------------------- + + @Override + public View onCreateView(String name, Context context, AttributeSet attrs) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(name, context, attrs); + if (res.invoked) + return (View)res.methodReturns; + else + return super.onCreateView(name, context, attrs); + } + public View super_onCreateView(String name, Context context, AttributeSet attrs) + { + return super.onCreateView(name, context, attrs); + } + //--------------------------------------------------------------------------- + + @Override + protected void onDestroy() + { + super.onDestroy(); + QtApplication.invokeDelegate(); + } + //--------------------------------------------------------------------------- + + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.onKeyDown != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.onKeyDown, keyCode, event); + else + return super.onKeyDown(keyCode, event); + } + public boolean super_onKeyDown(int keyCode, KeyEvent event) + { + return super.onKeyDown(keyCode, event); + } + //--------------------------------------------------------------------------- + + + @Override + public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.onKeyMultiple != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.onKeyMultiple, keyCode, repeatCount, event); + else + return super.onKeyMultiple(keyCode, repeatCount, event); + } + public boolean super_onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) + { + return super.onKeyMultiple(keyCode, repeatCount, event); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onKeyUp(int keyCode, KeyEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.onKeyDown != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.onKeyUp, keyCode, event); + else + return super.onKeyUp(keyCode, event); + } + public boolean super_onKeyUp(int keyCode, KeyEvent event) + { + return super.onKeyUp(keyCode, event); + } + //--------------------------------------------------------------------------- + + @Override + public void onLowMemory() + { + if (!QtApplication.invokeDelegate().invoked) + super.onLowMemory(); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onMenuItemSelected(int featureId, MenuItem item) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(featureId, item); + if (res.invoked) + return (Boolean)res.methodReturns; + else + return super.onMenuItemSelected(featureId, item); + } + public boolean super_onMenuItemSelected(int featureId, MenuItem item) + { + return super.onMenuItemSelected(featureId, item); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onMenuOpened(int featureId, Menu menu) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(featureId, menu); + if (res.invoked) + return (Boolean)res.methodReturns; + else + return super.onMenuOpened(featureId, menu); + } + public boolean super_onMenuOpened(int featureId, Menu menu) + { + return super.onMenuOpened(featureId, menu); + } + //--------------------------------------------------------------------------- + + @Override + protected void onNewIntent(Intent intent) + { + if (!QtApplication.invokeDelegate(intent).invoked) + super.onNewIntent(intent); + } + public void super_onNewIntent(Intent intent) + { + super.onNewIntent(intent); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onOptionsItemSelected(MenuItem item) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(item); + if (res.invoked) + return (Boolean)res.methodReturns; + else + return super.onOptionsItemSelected(item); + } + public boolean super_onOptionsItemSelected(MenuItem item) + { + return super.onOptionsItemSelected(item); + } + //--------------------------------------------------------------------------- + + @Override + public void onOptionsMenuClosed(Menu menu) + { + if (!QtApplication.invokeDelegate(menu).invoked) + super.onOptionsMenuClosed(menu); + } + public void super_onOptionsMenuClosed(Menu menu) + { + super.onOptionsMenuClosed(menu); + } + //--------------------------------------------------------------------------- + + @Override + public void onPanelClosed(int featureId, Menu menu) + { + if (!QtApplication.invokeDelegate(featureId, menu).invoked) + super.onPanelClosed(featureId, menu); + } + public void super_onPanelClosed(int featureId, Menu menu) + { + super.onPanelClosed(featureId, menu); + } + //--------------------------------------------------------------------------- + + @Override + protected void onPause() + { + super.onPause(); + QtApplication.invokeDelegate(); + } + //--------------------------------------------------------------------------- + + @Override + protected void onPostCreate(Bundle savedInstanceState) + { + super.onPostCreate(savedInstanceState); + QtApplication.invokeDelegate(savedInstanceState); + } + //--------------------------------------------------------------------------- + + @Override + protected void onPostResume() + { + super.onPostResume(); + QtApplication.invokeDelegate(); + } + //--------------------------------------------------------------------------- + + @Override + protected void onPrepareDialog(int id, Dialog dialog) + { + if (!QtApplication.invokeDelegate(id, dialog).invoked) + super.onPrepareDialog(id, dialog); + } + public void super_onPrepareDialog(int id, Dialog dialog) + { + super.onPrepareDialog(id, dialog); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onPrepareOptionsMenu(Menu menu) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(menu); + if (res.invoked) + return (Boolean)res.methodReturns; + else + return super.onPrepareOptionsMenu(menu); + } + public boolean super_onPrepareOptionsMenu(Menu menu) + { + return super.onPrepareOptionsMenu(menu); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onPreparePanel(int featureId, View view, Menu menu) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(featureId, view, menu); + if (res.invoked) + return (Boolean)res.methodReturns; + else + return super.onPreparePanel(featureId, view, menu); + } + public boolean super_onPreparePanel(int featureId, View view, Menu menu) + { + return super.onPreparePanel(featureId, view, menu); + } + //--------------------------------------------------------------------------- + + @Override + protected void onRestart() + { + super.onRestart(); + QtApplication.invokeDelegate(); + } + //--------------------------------------------------------------------------- + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) + { + if (!QtApplication.invokeDelegate(savedInstanceState).invoked) + super.onRestoreInstanceState(savedInstanceState); + } + public void super_onRestoreInstanceState(Bundle savedInstanceState) + { + super.onRestoreInstanceState(savedInstanceState); + } + //--------------------------------------------------------------------------- + + @Override + protected void onResume() + { + super.onResume(); + QtApplication.invokeDelegate(); + } + //--------------------------------------------------------------------------- + + @Override + public Object onRetainNonConfigurationInstance() + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(); + if (res.invoked) + return res.methodReturns; + else + return super.onRetainNonConfigurationInstance(); + } + public Object super_onRetainNonConfigurationInstance() + { + return super.onRetainNonConfigurationInstance(); + } + //--------------------------------------------------------------------------- + + @Override + protected void onSaveInstanceState(Bundle outState) + { + if (!QtApplication.invokeDelegate(outState).invoked) + super.onSaveInstanceState(outState); + } + public void super_onSaveInstanceState(Bundle outState) + { + super.onSaveInstanceState(outState); + + } + //--------------------------------------------------------------------------- + + @Override + public boolean onSearchRequested() + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(); + if (res.invoked) + return (Boolean)res.methodReturns; + else + return super.onSearchRequested(); + } + public boolean super_onSearchRequested() + { + return super.onSearchRequested(); + } + //--------------------------------------------------------------------------- + + @Override + protected void onStart() + { + super.onStart(); + QtApplication.invokeDelegate(); + } + //--------------------------------------------------------------------------- + + @Override + protected void onStop() + { + super.onStop(); + QtApplication.invokeDelegate(); + } + //--------------------------------------------------------------------------- + + @Override + protected void onTitleChanged(CharSequence title, int color) + { + if (!QtApplication.invokeDelegate(title, color).invoked) + super.onTitleChanged(title, color); + } + public void super_onTitleChanged(CharSequence title, int color) + { + super.onTitleChanged(title, color); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onTouchEvent(MotionEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.onTouchEvent != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.onTouchEvent, event); + else + return super.onTouchEvent(event); + } + public boolean super_onTouchEvent(MotionEvent event) + { + return super.onTouchEvent(event); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onTrackballEvent(MotionEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.onTrackballEvent != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.onTrackballEvent, event); + else + return super.onTrackballEvent(event); + } + public boolean super_onTrackballEvent(MotionEvent event) + { + return super.onTrackballEvent(event); + } + //--------------------------------------------------------------------------- + + @Override + public void onUserInteraction() + { + if (!QtApplication.invokeDelegate().invoked) + super.onUserInteraction(); + } + public void super_onUserInteraction() + { + super.onUserInteraction(); + } + //--------------------------------------------------------------------------- + + @Override + protected void onUserLeaveHint() + { + if (!QtApplication.invokeDelegate().invoked) + super.onUserLeaveHint(); + } + public void super_onUserLeaveHint() + { + super.onUserLeaveHint(); + } + //--------------------------------------------------------------------------- + + @Override + public void onWindowAttributesChanged(LayoutParams params) + { + if (!QtApplication.invokeDelegate(params).invoked) + super.onWindowAttributesChanged(params); + } + public void super_onWindowAttributesChanged(LayoutParams params) + { + super.onWindowAttributesChanged(params); + } + //--------------------------------------------------------------------------- + + @Override + public void onWindowFocusChanged(boolean hasFocus) + { + if (!QtApplication.invokeDelegate(hasFocus).invoked) + super.onWindowFocusChanged(hasFocus); + } + public void super_onWindowFocusChanged(boolean hasFocus) + { + super.onWindowFocusChanged(hasFocus); + } + //--------------------------------------------------------------------------- + + //////////////// Activity API 5 ///////////// +//@ANDROID-5 + @Override + public void onAttachedToWindow() + { + if (!QtApplication.invokeDelegate().invoked) + super.onAttachedToWindow(); + } + public void super_onAttachedToWindow() + { + super.onAttachedToWindow(); + } + //--------------------------------------------------------------------------- + + @Override + public void onBackPressed() + { + if (!QtApplication.invokeDelegate().invoked) + super.onBackPressed(); + } + public void super_onBackPressed() + { + super.onBackPressed(); + } + //--------------------------------------------------------------------------- + + @Override + public void onDetachedFromWindow() + { + if (!QtApplication.invokeDelegate().invoked) + super.onDetachedFromWindow(); + } + public void super_onDetachedFromWindow() + { + super.onDetachedFromWindow(); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onKeyLongPress(int keyCode, KeyEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.onKeyLongPress != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.onKeyLongPress, keyCode, event); + else + return super.onKeyLongPress(keyCode, event); + } + public boolean super_onKeyLongPress(int keyCode, KeyEvent event) + { + return super.onKeyLongPress(keyCode, event); + } + //--------------------------------------------------------------------------- +//@ANDROID-5 + +//////////////// Activity API 8 ///////////// +//@ANDROID-8 +@Override + protected Dialog onCreateDialog(int id, Bundle args) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(id, args); + if (res.invoked) + return (Dialog)res.methodReturns; + else + return super.onCreateDialog(id, args); + } + public Dialog super_onCreateDialog(int id, Bundle args) + { + return super.onCreateDialog(id, args); + } + //--------------------------------------------------------------------------- + + @Override + protected void onPrepareDialog(int id, Dialog dialog, Bundle args) + { + if (!QtApplication.invokeDelegate(id, dialog, args).invoked) + super.onPrepareDialog(id, dialog, args); + } + public void super_onPrepareDialog(int id, Dialog dialog, Bundle args) + { + super.onPrepareDialog(id, dialog, args); + } + //--------------------------------------------------------------------------- +//@ANDROID-8 + //////////////// Activity API 11 ///////////// + +//@ANDROID-11 + @Override + public boolean dispatchKeyShortcutEvent(KeyEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.dispatchKeyShortcutEvent != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.dispatchKeyShortcutEvent, event); + else + return super.dispatchKeyShortcutEvent(event); + } + public boolean super_dispatchKeyShortcutEvent(KeyEvent event) + { + return super.dispatchKeyShortcutEvent(event); + } + //--------------------------------------------------------------------------- + + @Override + public void onActionModeFinished(ActionMode mode) + { + if (!QtApplication.invokeDelegate(mode).invoked) + super.onActionModeFinished(mode); + } + public void super_onActionModeFinished(ActionMode mode) + { + super.onActionModeFinished(mode); + } + //--------------------------------------------------------------------------- + + @Override + public void onActionModeStarted(ActionMode mode) + { + if (!QtApplication.invokeDelegate(mode).invoked) + super.onActionModeStarted(mode); + } + public void super_onActionModeStarted(ActionMode mode) + { + super.onActionModeStarted(mode); + } + //--------------------------------------------------------------------------- + + @Override + public void onAttachFragment(Fragment fragment) + { + if (!QtApplication.invokeDelegate(fragment).invoked) + super.onAttachFragment(fragment); + } + public void super_onAttachFragment(Fragment fragment) + { + super.onAttachFragment(fragment); + } + //--------------------------------------------------------------------------- + + @Override + public View onCreateView(View parent, String name, Context context, AttributeSet attrs) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(parent, name, context, attrs); + if (res.invoked) + return (View)res.methodReturns; + else + return super.onCreateView(parent, name, context, attrs); + } + public View super_onCreateView(View parent, String name, Context context, + AttributeSet attrs) { + return super.onCreateView(parent, name, context, attrs); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onKeyShortcut(int keyCode, KeyEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.onKeyShortcut != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.onKeyShortcut, keyCode,event); + else + return super.onKeyShortcut(keyCode, event); + } + public boolean super_onKeyShortcut(int keyCode, KeyEvent event) + { + return super.onKeyShortcut(keyCode, event); + } + //--------------------------------------------------------------------------- + + @Override + public ActionMode onWindowStartingActionMode(Callback callback) + { + QtApplication.InvokeResult res = QtApplication.invokeDelegate(callback); + if (res.invoked) + return (ActionMode)res.methodReturns; + else + return super.onWindowStartingActionMode(callback); + } + public ActionMode super_onWindowStartingActionMode(Callback callback) + { + return super.onWindowStartingActionMode(callback); + } + //--------------------------------------------------------------------------- +//@ANDROID-11 + //////////////// Activity API 12 ///////////// + +//@ANDROID-12 + @Override + public boolean dispatchGenericMotionEvent(MotionEvent ev) + { + if (QtApplication.m_delegateObject != null && QtApplication.dispatchGenericMotionEvent != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.dispatchGenericMotionEvent, ev); + else + return super.dispatchGenericMotionEvent(ev); + } + public boolean super_dispatchGenericMotionEvent(MotionEvent event) + { + return super.dispatchGenericMotionEvent(event); + } + //--------------------------------------------------------------------------- + + @Override + public boolean onGenericMotionEvent(MotionEvent event) + { + if (QtApplication.m_delegateObject != null && QtApplication.onGenericMotionEvent != null) + return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.onGenericMotionEvent, event); + else + return super.onGenericMotionEvent(event); + } + public boolean super_onGenericMotionEvent(MotionEvent event) + { + return super.onGenericMotionEvent(event); + } + //--------------------------------------------------------------------------- +//@ANDROID-12 + +} diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java new file mode 100644 index 0000000000..a23c3afb4d --- /dev/null +++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java @@ -0,0 +1,149 @@ +/* + Copyright (c) 2012, BogDan Vatra + Contact: http://www.qt-project.org/legal + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +package org.qtproject.qt5.android.bindings; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; + +import android.app.Application; + +public class QtApplication extends Application +{ + public final static String QtTAG = "Qt"; + public static Object m_delegateObject = null; + public static HashMap> m_delegateMethods= new HashMap>(); + public static Method dispatchKeyEvent = null; + public static Method dispatchPopulateAccessibilityEvent = null; + public static Method dispatchTouchEvent = null; + public static Method dispatchTrackballEvent = null; + public static Method onKeyDown = null; + public static Method onKeyMultiple = null; + public static Method onKeyUp = null; + public static Method onTouchEvent = null; + public static Method onTrackballEvent = null; + public static Method onActivityResult = null; + public static Method onCreate = null; + public static Method onKeyLongPress = null; + public static Method dispatchKeyShortcutEvent = null; + public static Method onKeyShortcut = null; + public static Method dispatchGenericMotionEvent = null; + public static Method onGenericMotionEvent = null; + + public static void setQtActivityDelegate(Object listener) + { + QtApplication.m_delegateObject = listener; + + ArrayList delegateMethods = new ArrayList(); + for (Method m : listener.getClass().getMethods()) { + if (m.getDeclaringClass().getName().startsWith("org.qtproject.qt5.android")) + delegateMethods.add(m); + } + + ArrayList applicationFields = new ArrayList(); + for (Field f : QtApplication.class.getFields()) { + if (f.getDeclaringClass().getName().equals(QtApplication.class.getName())) + applicationFields.add(f); + } + + for (Method delegateMethod : delegateMethods) { + try { + QtActivity.class.getDeclaredMethod(delegateMethod.getName(), delegateMethod.getParameterTypes()); + if (QtApplication.m_delegateMethods.containsKey(delegateMethod.getName())) { + QtApplication.m_delegateMethods.get(delegateMethod.getName()).add(delegateMethod); + } else { + ArrayList delegateSet = new ArrayList(); + delegateSet.add(delegateMethod); + QtApplication.m_delegateMethods.put(delegateMethod.getName(), delegateSet); + } + for (Field applicationField:applicationFields) { + if (applicationField.getName().equals(delegateMethod.getName())) { + try { + applicationField.set(null, delegateMethod); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } catch (Exception e) { + } + } + } + + @Override + public void onTerminate() { + if (m_delegateObject != null && m_delegateMethods.containsKey("onTerminate")) + invokeDelegateMethod(m_delegateMethods.get("onTerminate").get(0)); + super.onTerminate(); + } + + public static class InvokeResult + { + public boolean invoked = false; + public Object methodReturns = null; + } + + private static int stackDeep=-1; + public static InvokeResult invokeDelegate(Object... args) + { + InvokeResult result = new InvokeResult(); + if (m_delegateObject == null) + return result; + StackTraceElement[] elements = Thread.currentThread().getStackTrace(); + if (-1 == stackDeep) { + String activityClassName = QtActivity.class.getCanonicalName(); + for (int it=0;it + + AndroidManifest.xml + libs.xml + logo.png + icon.png + + diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp index 511817677c..1a5c9f6766 100644 --- a/src/corelib/codecs/qtextcodec.cpp +++ b/src/corelib/codecs/qtextcodec.cpp @@ -89,7 +89,7 @@ #include #include #include -#if defined (_XOPEN_UNIX) && !defined(Q_OS_QNX) && !defined(Q_OS_OSF) && !defined(Q_OS_LINUX_ANDROID) +#if defined (_XOPEN_UNIX) && !defined(Q_OS_QNX) && !defined(Q_OS_OSF) && !defined(Q_OS_ANDROID) # include #endif diff --git a/src/corelib/codecs/qtextcodec_p.h b/src/corelib/codecs/qtextcodec_p.h index 18629f4bf3..0fec1e80c7 100644 --- a/src/corelib/codecs/qtextcodec_p.h +++ b/src/corelib/codecs/qtextcodec_p.h @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_TEXTCODEC -#if defined(Q_OS_MAC) || defined(Q_OS_IOS) || defined(Q_OS_LINUX_ANDROID) || defined(Q_OS_QNX) +#if defined(Q_OS_MAC) || defined(Q_OS_IOS) || defined(Q_OS_ANDROID) || defined(Q_OS_QNX) #define QT_LOCALE_IS_UTF8 #endif diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro index cbfb457212..b1f1a60b6c 100644 --- a/src/corelib/corelib.pro +++ b/src/corelib/corelib.pro @@ -16,6 +16,12 @@ win32-g++*:QMAKE_CXXFLAGS_CXX11 = -std=gnu++0x QMAKE_DOCS = $$PWD/doc/qtcore.qdocconf +ANDROID_JAR_DEPENDENCIES = \ + jar/QtAndroid.jar +ANDROID_LIB_DEPENDENCIES = \ + plugins/platforms/android/libqtforandroid.so \ + libs/libgnustl_shared.so + load(qt_module) include(animation/animation.pri) diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index 7204efc752..6a127e1786 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -57,6 +57,10 @@ #include #endif +#ifdef Q_OS_ANDROID +#include +#endif + #include QT_BEGIN_NAMESPACE @@ -835,6 +839,24 @@ Q_CORE_EXPORT QtMsgHandler qInstallMsgHandler(QtMsgHandler); static QtMsgHandler msgHandler = 0; // pointer to debug handler (without context) static QtMessageHandler messageHandler = 0; // pointer to debug handler (with context) +#ifdef Q_OS_ANDROID +static void android_default_message_handler(QtMsgType type, + const QMessageLogContext &context, + const QString &message) +{ + android_LogPriority priority; + switch (type) { + case QtDebugMsg: priority = ANDROID_LOG_DEBUG; break; + case QtWarningMsg: priority = ANDROID_LOG_WARN; break; + case QtCriticalMsg: priority = ANDROID_LOG_ERROR; break; + case QtFatalMsg: priority = ANDROID_LOG_FATAL; break; + }; + + __android_log_print(priority, "Qt", "%s:%d (%s): %s", qPrintable(context.file), context.line, + qPrintable(context.function), qPrintable(message)); +} +#endif //Q_OS_ANDROID + /*! \internal */ @@ -855,6 +877,8 @@ static void qDefaultMessageHandler(QtMsgType type, const QMessageLogContext &con #if defined(QT_USE_SLOG2) slog2_default_handler(type, logMessage.toLocal8Bit().constData()); +#elif defined(Q_OS_ANDROID) + android_default_message_handler(type, context, logMessage); #else fprintf(stderr, "%s", logMessage.toLocal8Bit().constData()); fflush(stderr); diff --git a/src/corelib/global/qsystemdetection.h b/src/corelib/global/qsystemdetection.h index 6062dc7b7b..0caac3d797 100644 --- a/src/corelib/global/qsystemdetection.h +++ b/src/corelib/global/qsystemdetection.h @@ -80,6 +80,7 @@ LYNX - LynxOS BSD4 - Any BSD 4.4 system UNIX - Any UNIX BSD/SYSV system + ANDROID - Android platform */ #if defined(__APPLE__) && (defined(__GNUC__) || defined(__xlC__) || defined(__xlc__)) @@ -90,6 +91,9 @@ # else # define Q_OS_DARWIN32 # endif +#elif defined(ANDROID) +# define Q_OS_ANDROID +# define Q_OS_LINUX #elif defined(__CYGWIN__) # define Q_OS_CYGWIN #elif !defined(SAG_COM) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__)) diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri index d4ed8e5362..a52386def1 100644 --- a/src/corelib/io/io.pri +++ b/src/corelib/io/io.pri @@ -133,7 +133,7 @@ win32 { SOURCES += io/qstandardpaths_unix.cpp } - linux-*|if(qnx:contains(QT_CONFIG, inotify)) { + linux|if(qnx:contains(QT_CONFIG, inotify)) { SOURCES += io/qfilesystemwatcher_inotify.cpp HEADERS += io/qfilesystemwatcher_inotify_p.h } diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index 9970530827..4bfb03a41e 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -169,7 +169,7 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry, if (entry.isEmpty() || entry.isRoot()) return entry; -#if !defined(Q_OS_MAC) && !defined(Q_OS_QNX) && _POSIX_VERSION < 200809L +#if !defined(Q_OS_MAC) && !defined(Q_OS_QNX) && !defined(Q_OS_ANDROID) && _POSIX_VERSION < 200809L // realpath(X,0) is not supported Q_UNUSED(data); return QFileSystemEntry(slowCanonicalized(absoluteName(entry).filePath())); diff --git a/src/corelib/io/qtemporarydir.cpp b/src/corelib/io/qtemporarydir.cpp index 6782fcb986..755c31f371 100644 --- a/src/corelib/io/qtemporarydir.cpp +++ b/src/corelib/io/qtemporarydir.cpp @@ -52,7 +52,7 @@ #endif #include // mkdtemp -#if defined(Q_OS_QNX) || defined(Q_OS_WIN) +#if defined(Q_OS_QNX) || defined(Q_OS_WIN) || defined(Q_OS_ANDROID) #include #endif @@ -94,9 +94,9 @@ static QString defaultTemplateName() return QDir::tempPath() + QLatin1Char('/') + baseName + QLatin1String("-XXXXXX"); } -#if defined(Q_OS_QNX ) || defined(Q_OS_WIN) -static char *mkdtemp(char *templateName) +static char *q_mkdtemp(char *templateName) { +#if defined(Q_OS_QNX ) || defined(Q_OS_WIN) || defined(Q_OS_ANDROID) static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; const size_t length = strlen(templateName); @@ -137,17 +137,17 @@ static char *mkdtemp(char *templateName) } } return 0; -} -#elif defined(Q_OS_LINUX_ANDROID) -extern char *mkdtemp(char *); +#else + return mkdtemp(templateName); #endif +} void QTemporaryDirPrivate::create(const QString &templateName) { QByteArray buffer = QFile::encodeName(templateName); if (!buffer.endsWith("XXXXXX")) buffer += "XXXXXX"; - if (mkdtemp(buffer.data())) { // modifies buffer + if (q_mkdtemp(buffer.data())) { // modifies buffer success = true; path = QFile::decodeName(buffer.constData()); } diff --git a/src/corelib/kernel/kernel.pri b/src/corelib/kernel/kernel.pri index d2de873cef..d5a6fa6122 100644 --- a/src/corelib/kernel/kernel.pri +++ b/src/corelib/kernel/kernel.pri @@ -129,7 +129,7 @@ unix|integrity { contains(QT_CONFIG, clock-gettime):include($$QT_SOURCE_TREE/config.tests/unix/clock-gettime/clock-gettime.pri) - !linux-android-* { + !android { SOURCES += kernel/qsharedmemory_unix.cpp \ kernel/qsystemsemaphore_unix.cpp } else { diff --git a/src/corelib/kernel/qsharedmemory_p.h b/src/corelib/kernel/qsharedmemory_p.h index dd9856adf5..9f1e6c8aa1 100644 --- a/src/corelib/kernel/qsharedmemory_p.h +++ b/src/corelib/kernel/qsharedmemory_p.h @@ -69,7 +69,7 @@ namespace QSharedMemoryPrivate #include "qsystemsemaphore.h" #include "private/qobject_p.h" -#if !defined(Q_OS_WIN) && !defined(Q_OS_LINUX_ANDROID) +#if !defined(Q_OS_WIN) && !defined(Q_OS_ANDROID) # include #endif diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp index f7397dd8d4..8104cc8938 100644 --- a/src/corelib/thread/qthread_unix.cpp +++ b/src/corelib/thread/qthread_unix.cpp @@ -287,7 +287,7 @@ static void setCurrentThreadName(pthread_t threadId, const char *name) void *QThreadPrivate::start(void *arg) { -#if !defined(Q_OS_LINUX_ANDROID) +#if !defined(Q_OS_ANDROID) pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL); #endif pthread_cleanup_push(QThreadPrivate::finish, arg); @@ -326,7 +326,7 @@ void *QThreadPrivate::start(void *arg) #endif emit thr->started(QThread::QPrivateSignal()); -#if !defined(Q_OS_LINUX_ANDROID) +#if !defined(Q_OS_ANDROID) pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); pthread_testcancel(); #endif @@ -631,7 +631,7 @@ void QThread::start(Priority priority) void QThread::terminate() { -#if !defined(Q_OS_LINUX_ANDROID) +#if !defined(Q_OS_ANDROID) Q_D(QThread); QMutexLocker locker(&d->mutex); @@ -673,7 +673,7 @@ void QThread::setTerminationEnabled(bool enabled) "Current thread was not started with QThread."); Q_UNUSED(thr) -#if defined(Q_OS_LINUX_ANDROID) +#if defined(Q_OS_ANDROID) Q_UNUSED(enabled); #else pthread_setcancelstate(enabled ? PTHREAD_CANCEL_ENABLE : PTHREAD_CANCEL_DISABLE, NULL); diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index d152e6795e..ac49bdcdf6 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -49,7 +49,7 @@ #include -#if defined(Q_OS_LINUX_ANDROID) +#if defined(Q_OS_ANDROID) // std::wstring is disabled on android's glibc, as bionic lacks certain features // that libstdc++ checks for (like mbcslen). namespace std diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 1763624b83..7155127f75 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1507,10 +1507,20 @@ void QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyE { QWindow *window = e->window.data(); modifier_buttons = e->modifiers; - if (e->nullWindow) + if (e->nullWindow +#ifdef Q_OS_ANDROID + || (e->keyType == QEvent::KeyRelease && e->key == Qt::Key_Back) || e->key == Qt::Key_Menu +#endif + ) { window = QGuiApplication::focusWindow(); - if (!window) + } + if (!window +#ifdef Q_OS_ANDROID + && e->keyType != QEvent::KeyRelease && e->key != Qt::Key_Back +#endif + ) { return; + } if (window->d_func()->blockedByModalWindow) { // a modal window is blocking this window, don't allow key events through return; @@ -1520,7 +1530,19 @@ void QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyE e->nativeScanCode, e->nativeVirtualKey, e->nativeModifiers, e->unicode, e->repeat, e->repeatCount); ev.setTimestamp(e->timestamp); - QGuiApplication::sendSpontaneousEvent(window, &ev); + +#ifdef Q_OS_ANDROID + if (e->keyType == QEvent::KeyRelease && e->key == Qt::Key_Back) { + if (!window) { + qApp->quit(); + } else { + QGuiApplication::sendEvent(window, &ev); + if (!ev.isAccepted() && e->key == Qt::Key_Back) + QWindowSystemInterface::handleCloseEvent(window); + } + } else +#endif + QGuiApplication::sendSpontaneousEvent(window, &ev); } void QGuiApplicationPrivate::processEnterEvent(QWindowSystemInterfacePrivate::EnterEvent *e) diff --git a/src/network/access/qnetworkaccessfilebackend.cpp b/src/network/access/qnetworkaccessfilebackend.cpp index a7f35815f9..13428cc802 100644 --- a/src/network/access/qnetworkaccessfilebackend.cpp +++ b/src/network/access/qnetworkaccessfilebackend.cpp @@ -65,7 +65,11 @@ QNetworkAccessFileBackendFactory::create(QNetworkAccessManager::Operation op, } QUrl url = request.url(); - if (url.scheme().compare(QLatin1String("qrc"), Qt::CaseInsensitive) == 0 || url.isLocalFile()) { + if (url.scheme().compare(QLatin1String("qrc"), Qt::CaseInsensitive) == 0 +#if defined(Q_OS_ANDROID) + || url.scheme().compare(QLatin1String("assets"), Qt::CaseInsensitive) == 0 +#endif + || url.isLocalFile()) { return new QNetworkAccessFileBackend; } else if (!url.scheme().isEmpty() && url.authority().isEmpty() && (url.scheme().length() > 1)) { // check if QFile could, in theory, open this URL via the file engines @@ -113,10 +117,16 @@ void QNetworkAccessFileBackend::open() QString fileName = url.toLocalFile(); if (fileName.isEmpty()) { - if (url.scheme() == QLatin1String("qrc")) + if (url.scheme() == QLatin1String("qrc")) { fileName = QLatin1Char(':') + url.path(); - else - fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery); + } else { +#if defined(Q_OS_ANDROID) + if (url.scheme() == QLatin1String("assets")) + fileName = QLatin1String("assets:") + url.path(); + else +#endif + fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery); + } } file.setFileName(fileName); diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index b83b437b2c..123b354131 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -1010,7 +1010,11 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera // fast path for GET on file:// URLs // The QNetworkAccessFileBackend will right now only be used for PUT if ((op == QNetworkAccessManager::GetOperation || op == QNetworkAccessManager::HeadOperation) - && (isLocalFile || scheme == QLatin1String("qrc"))) { + && (isLocalFile || scheme == QLatin1String("qrc") +#if defined(Q_OS_ANDROID) + || scheme == QLatin1String("assets") +#endif + )) { return new QNetworkReplyFileImpl(this, req, op); } diff --git a/src/network/access/qnetworkreplyfileimpl.cpp b/src/network/access/qnetworkreplyfileimpl.cpp index 8a8f73c24f..f7555f8fc3 100644 --- a/src/network/access/qnetworkreplyfileimpl.cpp +++ b/src/network/access/qnetworkreplyfileimpl.cpp @@ -91,10 +91,16 @@ QNetworkReplyFileImpl::QNetworkReplyFileImpl(QObject *parent, const QNetworkRequ QString fileName = url.toLocalFile(); if (fileName.isEmpty()) { - if (url.scheme() == QLatin1String("qrc")) + if (url.scheme() == QLatin1String("qrc")) { fileName = QLatin1Char(':') + url.path(); - else - fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery); + } else { +#if defined(Q_OS_ANDROID) + if (url.scheme() == QLatin1String("assets")) + fileName = QLatin1String("assets:") + url.path(); + else +#endif + fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery); + } } QFileInfo fi(fileName); diff --git a/src/network/kernel/kernel.pri b/src/network/kernel/kernel.pri index 580e0b31b3..a4a19988b3 100644 --- a/src/network/kernel/kernel.pri +++ b/src/network/kernel/kernel.pri @@ -27,7 +27,7 @@ SOURCES += kernel/qauthenticator.cpp \ unix:SOURCES += kernel/qdnslookup_unix.cpp kernel/qhostinfo_unix.cpp kernel/qnetworkinterface_unix.cpp -linux-android* { +android { SOURCES -= kernel/qdnslookup_unix.cpp SOURCES += kernel/qdnslookup_android.cpp } diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp index 0e147c4877..fac83b922b 100644 --- a/src/network/kernel/qhostinfo_unix.cpp +++ b/src/network/kernel/qhostinfo_unix.cpp @@ -323,7 +323,7 @@ QString QHostInfo::localHostName() QString QHostInfo::localDomainName() { -#if !defined(Q_OS_VXWORKS) && !defined(Q_OS_LINUX_ANDROID) +#if !defined(Q_OS_VXWORKS) && !defined(Q_OS_ANDROID) resolveLibrary(); if (local_res_ninit) { // using thread-safe version diff --git a/src/network/kernel/qnetworkinterface_unix.cpp b/src/network/kernel/qnetworkinterface_unix.cpp index 46eeb46f98..7885d122ea 100644 --- a/src/network/kernel/qnetworkinterface_unix.cpp +++ b/src/network/kernel/qnetworkinterface_unix.cpp @@ -61,7 +61,7 @@ # define QT_NO_GETIFADDRS #endif -#ifdef Q_OS_LINUX_ANDROID +#ifdef Q_OS_ANDROID // android lacks if_nameindex # define QT_NO_IPV6IFNAME #endif diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 6845752d8b..e8f8b294c9 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -681,10 +681,19 @@ QList QSslSocketPrivate::systemCaCertificates() } #elif defined(Q_OS_UNIX) QSet certFiles; +# ifdef Q_OS_ANDROID + QList directories; + directories << qgetenv("MINISTRO_SSL_CERTS_PATH"); // Set by Ministro +# else QList directories = unixRootCertDirectories(); +# endif QDir currentDir; QStringList nameFilters; +# ifdef Q_OS_ANDROID + nameFilters << QLatin1String("*.der"); +#else nameFilters << QLatin1String("*.pem") << QLatin1String("*.crt"); +# endif currentDir.setNameFilters(nameFilters); for (int a = 0; a < directories.count(); a++) { currentDir.setPath(QLatin1String(directories.at(a))); @@ -697,10 +706,16 @@ QList QSslSocketPrivate::systemCaCertificates() } QSetIterator it(certFiles); while(it.hasNext()) { - systemCerts.append(QSslCertificate::fromPath(it.next())); +# ifdef Q_OS_ANDROID + systemCerts.append(QSslCertificate::fromPath(it.next(), QSsl::Der)); +# else + systemCerts.append(QSslCertificate::fromPath(it.next(), QSsl::Pem)); +# endif } +# ifndef Q_OS_ANDROID systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt"), QSsl::Pem)); // Fedora, Mandriva systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/local/share/certs/ca-root-nss.crt"), QSsl::Pem)); // FreeBSD's ca_root_nss +# endif #endif #ifdef QSSLSOCKET_DEBUG qDebug() << "systemCaCertificates retrieval time " << timer.elapsed() << "ms"; diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro index 4d9208d983..b01ca80829 100644 --- a/src/opengl/opengl.pro +++ b/src/opengl/opengl.pro @@ -8,6 +8,9 @@ irix-cc*:QMAKE_CXXFLAGS += -no_prelink -ptused QMAKE_DOCS = $$PWD/doc/qtopengl.qdocconf +ANDROID_LIB_DEPENDENCY_REPLACEMENTS = \ + "plugins/platforms/android/libqtforandroid.so:plugins/platforms/android/libqtforandroidGL.so" + load(qt_module) contains(QT_CONFIG, opengl):CONFIG += opengl diff --git a/src/platformsupport/devicediscovery/devicediscovery.pri b/src/platformsupport/devicediscovery/devicediscovery.pri index 530ae3dbb2..9faf6f24dd 100644 --- a/src/platformsupport/devicediscovery/devicediscovery.pri +++ b/src/platformsupport/devicediscovery/devicediscovery.pri @@ -1,4 +1,4 @@ -linux-*:contains(QT_CONFIG, evdev) { +linux:contains(QT_CONFIG, evdev) { HEADERS += $$PWD/qdevicediscovery_p.h contains(QT_CONFIG, libudev) { diff --git a/src/plugins/platforms/android/android.pro b/src/plugins/platforms/android/android.pro new file mode 100644 index 0000000000..aa5ab4ddbd --- /dev/null +++ b/src/plugins/platforms/android/android.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs + +SUBDIRS += raster opengl diff --git a/src/plugins/platforms/android/opengl/opengl.pro b/src/plugins/platforms/android/opengl/opengl.pro new file mode 100644 index 0000000000..301c8e6e4c --- /dev/null +++ b/src/plugins/platforms/android/opengl/opengl.pro @@ -0,0 +1,30 @@ +TARGET = qtforandroidGL + +PLUGIN_TYPE = platforms +load(qt_plugin) + +# STATICPLUGIN needed because there's a Q_IMPORT_PLUGIN in androidjnimain.cpp +# Yes, the plugin imports itself statically +DEFINES += QT_STATICPLUGIN ANDROID_PLUGIN_OPENGL + +!equals(ANDROID_PLATFORM, android-9) { + INCLUDEPATH += $$NDK_ROOT/platforms/android-9/arch-$$ANDROID_ARCHITECTURE/usr/include + LIBS += -L$$NDK_ROOT/platforms/android-9/arch-$$ANDROID_ARCHITECTURE/usr/lib -ljnigraphics -landroid +} else { + LIBS += -ljnigraphics -landroid +} + +EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/../src/opengl/qeglfshooks_android.cpp + +INCLUDEPATH += $$PWD/../src/opengl/ + +HEADERS += \ + $$PWD/../src/opengl/qandroidopenglcontext.h \ + $$PWD/../src/opengl/qandroidopenglplatformwindow.h + +SOURCES += \ + $$PWD/../src/opengl/qandroidopenglcontext.cpp \ + $$PWD/../src/opengl/qandroidopenglplatformwindow.cpp + +include($$PWD/../../eglfs/eglfs.pri) +include($$PWD/../src/src.pri) diff --git a/src/plugins/platforms/android/raster/raster.pro b/src/plugins/platforms/android/raster/raster.pro new file mode 100644 index 0000000000..53d8ee7a2b --- /dev/null +++ b/src/plugins/platforms/android/raster/raster.pro @@ -0,0 +1,19 @@ +TARGET = qtforandroid + +PLUGIN_TYPE = platforms + +# STATICPLUGIN needed because there's a Q_IMPORT_PLUGIN in androidjnimain.cpp +# Yes, the plugin imports itself statically +DEFINES += QT_STATICPLUGIN + +load(qt_plugin) + +!contains(ANDROID_PLATFORM, android-9) { + INCLUDEPATH += $$NDK_ROOT/platforms/android-9/arch-$$ANDROID_ARCHITECTURE/usr/include + LIBS += -L$$NDK_ROOT/platforms/android-9/arch-$$ANDROID_ARCHITECTURE/usr/lib -ljnigraphics -landroid +} else { + LIBS += -ljnigraphics -landroid +} + +include($$PWD/../src/src.pri) +include($$PWD/../src/raster/raster.pri) diff --git a/src/plugins/platforms/android/src/android.json b/src/plugins/platforms/android/src/android.json new file mode 100644 index 0000000000..6843bd3301 --- /dev/null +++ b/src/plugins/platforms/android/src/android.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "android" ] +} diff --git a/src/plugins/platforms/android/src/androidjniclipboard.cpp b/src/plugins/platforms/android/src/androidjniclipboard.cpp new file mode 100644 index 0000000000..05270ac374 --- /dev/null +++ b/src/plugins/platforms/android/src/androidjniclipboard.cpp @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "androidjniclipboard.h" +#include "androidjnimain.h" + +using namespace QtAndroid; +namespace QtAndroidClipboard +{ + // Clipboard support + static jmethodID m_registerClipboardManagerMethodID = 0; + static jmethodID m_setClipboardTextMethodID = 0; + static jmethodID m_hasClipboardTextMethodID = 0; + static jmethodID m_getClipboardTextMethodID = 0; + // Clipboard support + + void setClipboardListener(QAndroidPlatformClipboard *listener) + { + Q_UNUSED(listener); + + AttachedJNIEnv env; + if (!env.jniEnv) + return; + + env.jniEnv->CallStaticVoidMethod(applicationClass(), m_registerClipboardManagerMethodID); + } + + void setClipboardText(const QString &text) + { + AttachedJNIEnv env; + if (!env.jniEnv) + return; + + jstring jtext = env.jniEnv->NewString(reinterpret_cast(text.data()), + text.length()); + env.jniEnv->CallStaticVoidMethod(applicationClass(), m_setClipboardTextMethodID, jtext); + env.jniEnv->DeleteLocalRef(jtext); + } + + bool hasClipboardText() + { + AttachedJNIEnv env; + if (!env.jniEnv) + return false; + + return env.jniEnv->CallStaticBooleanMethod(applicationClass(), m_hasClipboardTextMethodID); + } + + QString clipboardText() + { + AttachedJNIEnv env; + if (!env.jniEnv) + return QString(); + + jstring text = reinterpret_cast(env.jniEnv->CallStaticObjectMethod(applicationClass(), + m_getClipboardTextMethodID)); + const jchar *jstr = env.jniEnv->GetStringChars(text, 0); + QString str(reinterpret_cast(jstr), env.jniEnv->GetStringLength(text)); + env.jniEnv->ReleaseStringChars(text, jstr); + return str; + } + + +#define GET_AND_CHECK_STATIC_METHOD(VAR, CLASS, METHOD_NAME, METHOD_SIGNATURE) \ + VAR = env->GetStaticMethodID(CLASS, METHOD_NAME, METHOD_SIGNATURE); \ + if (!VAR) { \ + __android_log_print(ANDROID_LOG_FATAL, qtTagText(), methodErrorMsgFmt(), METHOD_NAME, METHOD_SIGNATURE); \ + return false; \ + } + + bool registerNatives(JNIEnv *env) + { + jclass appClass = QtAndroid::applicationClass(); + + GET_AND_CHECK_STATIC_METHOD(m_registerClipboardManagerMethodID, appClass, "registerClipboardManager", "()V"); + GET_AND_CHECK_STATIC_METHOD(m_setClipboardTextMethodID, appClass, "setClipboardText", "(Ljava/lang/String;)V"); + GET_AND_CHECK_STATIC_METHOD(m_hasClipboardTextMethodID, appClass, "hasClipboardText", "()Z"); + GET_AND_CHECK_STATIC_METHOD(m_getClipboardTextMethodID, appClass, "getClipboardText", "()Ljava/lang/String;"); + + return true; + } +} diff --git a/src/plugins/platforms/android/src/androidjniclipboard.h b/src/plugins/platforms/android/src/androidjniclipboard.h new file mode 100644 index 0000000000..15cd93202e --- /dev/null +++ b/src/plugins/platforms/android/src/androidjniclipboard.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ANDROIDJNICLIPBOARD_H +#define ANDROIDJNICLIPBOARD_H + +#include +#include + +class QAndroidPlatformClipboard; +namespace QtAndroidClipboard +{ + // Clipboard support + void setClipboardListener(QAndroidPlatformClipboard *listener); + void setClipboardText(const QString &text); + bool hasClipboardText(); + QString clipboardText(); + // Clipboard support + + bool registerNatives(JNIEnv *env); +} + +#endif // ANDROIDJNICLIPBOARD_H diff --git a/src/plugins/platforms/android/src/androidjniinput.cpp b/src/plugins/platforms/android/src/androidjniinput.cpp new file mode 100644 index 0000000000..6a3dd1f349 --- /dev/null +++ b/src/plugins/platforms/android/src/androidjniinput.cpp @@ -0,0 +1,480 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "androidjniinput.h" +#include "androidjnimain.h" + +#include +#include +#include + +using namespace QtAndroid; + +namespace QtAndroidInput +{ + static jmethodID m_showSoftwareKeyboardMethodID = 0; + static jmethodID m_resetSoftwareKeyboardMethodID = 0; + static jmethodID m_hideSoftwareKeyboardMethodID = 0; + static jmethodID m_isSoftwareKeyboardVisibleMethodID = 0; + static jmethodID m_updateSelectionMethodID = 0; + + static bool m_ignoreMouseEvents = false; + + static QList m_touchPoints; + + static QPointer m_mouseGrabber; + + void updateSelection(int selStart, int selEnd, int candidatesStart, int candidatesEnd) + { + AttachedJNIEnv env; + if (!env.jniEnv) + return; + + env.jniEnv->CallStaticVoidMethod(applicationClass(), m_updateSelectionMethodID, + selStart, selEnd, candidatesStart, candidatesEnd); + } + + void showSoftwareKeyboard(int left, int top, int width, int height, int inputHints) + { + AttachedJNIEnv env; + if (!env.jniEnv) + return; + + env.jniEnv->CallStaticVoidMethod(applicationClass(), + m_showSoftwareKeyboardMethodID, + left, + top, + width, + height, + inputHints); + } + + void resetSoftwareKeyboard() + { + AttachedJNIEnv env; + if (!env.jniEnv) + return; + + env.jniEnv->CallStaticVoidMethod(applicationClass(), m_resetSoftwareKeyboardMethodID); + } + + void hideSoftwareKeyboard() + { + AttachedJNIEnv env; + if (!env.jniEnv) + return; + + env.jniEnv->CallStaticVoidMethod(applicationClass(), m_hideSoftwareKeyboardMethodID); + } + + bool isSoftwareKeyboardVisible() + { + AttachedJNIEnv env; + if (!env.jniEnv) + return false; + + return env.jniEnv->CallStaticBooleanMethod(applicationClass(), m_isSoftwareKeyboardVisibleMethodID); + } + + + static void mouseDown(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y) + { + if (m_ignoreMouseEvents) + return; + + QPoint globalPos(x,y); + QWindow *tlw = topLevelWindowAt(globalPos); + m_mouseGrabber = tlw; + QPoint localPos = tlw ? (globalPos - tlw->position()) : globalPos; + QWindowSystemInterface::handleMouseEvent(tlw, + localPos, + globalPos, + Qt::MouseButtons(Qt::LeftButton)); + } + + static void mouseUp(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y) + { + QPoint globalPos(x,y); + QWindow *tlw = m_mouseGrabber.data(); + if (!tlw) + tlw = topLevelWindowAt(globalPos); + QPoint localPos = tlw ? (globalPos -tlw->position()) : globalPos; + QWindowSystemInterface::handleMouseEvent(tlw, localPos, globalPos + , Qt::MouseButtons(Qt::NoButton)); + m_ignoreMouseEvents = false; + m_mouseGrabber = 0; + } + + static void mouseMove(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y) + { + + if (m_ignoreMouseEvents) + return; + + QPoint globalPos(x,y); + QWindow *tlw = m_mouseGrabber.data(); + if (!tlw) + tlw = topLevelWindowAt(globalPos); + QPoint localPos = tlw ? (globalPos-tlw->position()) : globalPos; + QWindowSystemInterface::handleMouseEvent(tlw, + localPos, + globalPos, + Qt::MouseButtons(Qt::LeftButton)); + } + + static void longPress(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y) + { + m_ignoreMouseEvents = true; + QPoint globalPos(x,y); + QWindow *tlw = topLevelWindowAt(globalPos); + QPoint localPos = tlw ? (globalPos-tlw->position()) : globalPos; + + // Release left button + QWindowSystemInterface::handleMouseEvent(tlw, + localPos, + globalPos, + Qt::MouseButtons(Qt::NoButton)); + + // Press right button + QWindowSystemInterface::handleMouseEvent(tlw, + localPos, + globalPos, + Qt::MouseButtons(Qt::RightButton)); + } + + static void touchBegin(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/) + { + m_touchPoints.clear(); + } + + static void touchAdd(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint id, jint action, jboolean /*primary*/, jint x, jint y, jfloat size, jfloat pressure) + { + Qt::TouchPointState state = Qt::TouchPointStationary; + switch (action) { + case 0: + state = Qt::TouchPointPressed; + break; + case 1: + state = Qt::TouchPointMoved; + break; + case 2: + state = Qt::TouchPointStationary; + break; + case 3: + state = Qt::TouchPointReleased; + break; + } + + const int dw = desktopWidthPixels(); + const int dh = desktopHeightPixels(); + QWindowSystemInterface::TouchPoint touchPoint; + touchPoint.id = id; + touchPoint.pressure = pressure; + touchPoint.normalPosition = QPointF(double(x / dw), double(y / dh)); + touchPoint.state = state; + touchPoint.area = QRectF(x - double(dw*size) / 2.0, + y - double(dh*size) / 2.0, + double(dw*size), + double(dh*size)); + m_touchPoints.push_back(touchPoint); + } + + static void touchEnd(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint action) + { + QEvent::Type eventType = QEvent::None; + switch (action) { + case 0: + eventType = QEvent::TouchBegin; + break; + case 1: + eventType = QEvent::TouchUpdate; + break; + case 2: + eventType = QEvent::TouchEnd; + break; + } + + // FIXME + // QWindowSystemInterface::handleTouchEvent(0, 0, eventType, QTouchEvent::TouchScreen, m_touchPoints); + } + + static int mapAndroidKey(int key) + { + // 0--9 0x00000007 -- 0x00000010 + if (key >= 0x00000007 && key <= 0x00000010) + return Qt::Key_0 + key - 0x00000007; + + // A--Z 0x0000001d -- 0x00000036 + if (key >= 0x0000001d && key <= 0x00000036) + return Qt::Key_A + key - 0x0000001d; + + switch (key) { + case 0x00000039: + case 0x0000003a: + return Qt::Key_Alt; + + case 0x0000004b: + return Qt::Key_Apostrophe; + + case 0x00000004: // KEYCODE_BACK + return Qt::Key_Back; + + case 0x00000049: + return Qt::Key_Backslash; + + case 0x00000005: + return Qt::Key_Call; + + case 0x0000001b: + return Qt::Key_WebCam; + + case 0x0000001c: + return Qt::Key_Clear; + + case 0x00000037: + return Qt::Key_Comma; + + case 0x00000043: + return Qt::Key_Backspace; + + case 0x00000017: // KEYCODE_DPAD_CENTER + return Qt::Key_Enter; + + case 0x00000014: // KEYCODE_DPAD_DOWN + return Qt::Key_Down; + + case 0x00000015: //KEYCODE_DPAD_LEFT + return Qt::Key_Left; + + case 0x00000016: //KEYCODE_DPAD_RIGHT + return Qt::Key_Right; + + case 0x00000013: //KEYCODE_DPAD_UP + return Qt::Key_Up; + + case 0x00000006: //KEYCODE_ENDCALL + return Qt::Key_Hangup; + + case 0x00000042: + return Qt::Key_Return; + + case 0x00000041: //KEYCODE_ENVELOPE + return Qt::Key_LaunchMail; + + case 0x00000046: + return Qt::Key_Equal; + + case 0x00000040: + return Qt::Key_Explorer; + + case 0x00000003: + return Qt::Key_Home; + + case 0x00000047: + return Qt::Key_BracketLeft; + + case 0x0000005a: // KEYCODE_MEDIA_FAST_FORWARD + return Qt::Key_Forward; + + case 0x00000057: + return Qt::Key_MediaNext; + + case 0x00000055: + return Qt::Key_MediaPlay; + + case 0x00000058: + return Qt::Key_MediaPrevious; + + case 0x00000059: + return Qt::Key_AudioRewind; + + case 0x00000056: + return Qt::Key_MediaStop; + + case 0x00000052: //KEYCODE_MENU + return Qt::Key_Menu; + + case 0x00000045: + return Qt::Key_Minus; + + case 0x0000005b: + return Qt::Key_VolumeMute; + + case 0x0000004e: + return Qt::Key_NumLock; + + case 0x00000038: + return Qt::Key_Period; + + case 0x00000051: + return Qt::Key_Plus; + + case 0x0000001a: + return Qt::Key_PowerOff; + + case 0x00000048: + return Qt::Key_BracketRight; + + case 0x00000054: + return Qt::Key_Search; + + case 0x0000004a: + return Qt::Key_Semicolon; + + case 0x0000003b: + case 0x0000003c: + return Qt::Key_Shift; + + case 0x0000004c: + return Qt::Key_Slash; + + case 0x00000001: + return Qt::Key_Left; + + case 0x00000002: + return Qt::Key_Right; + + case 0x0000003e: + return Qt::Key_Space; + + case 0x0000003f: // KEYCODE_SYM + return Qt::Key_Meta; + + case 0x0000003d: + return Qt::Key_Tab; + + case 0x00000019: + return Qt::Key_VolumeDown; + + case 0x00000018: + return Qt::Key_VolumeUp; + + case 0x00000000: // KEYCODE_UNKNOWN + case 0x00000011: // KEYCODE_STAR ?!?!? + case 0x00000012: // KEYCODE_POUND ?!?!? + case 0x00000053: // KEYCODE_NOTIFICATION ?!?!? + case 0x0000004f: // KEYCODE_HEADSETHOOK ?!?!? + case 0x00000044: // KEYCODE_GRAVE ?!?!? + case 0x00000050: // KEYCODE_FOCUS ?!?!? + return Qt::Key_Any; + + default: + return 0; + } + } + + static void keyDown(JNIEnv */*env*/, jobject /*thiz*/, jint key, jint unicode, jint modifier) + { + Qt::KeyboardModifiers modifiers; + if (modifier & 1) + modifiers |= Qt::ShiftModifier; + + if (modifier & 2) + modifiers |= Qt::AltModifier; + + if (modifier & 4) + modifiers |= Qt::MetaModifier; + + QWindowSystemInterface::handleKeyEvent(0, + QEvent::KeyPress, + mapAndroidKey(key), + modifiers, + QChar(unicode), + true); + } + + static void keyUp(JNIEnv */*env*/, jobject /*thiz*/, jint key, jint unicode, jint modifier) + { + Qt::KeyboardModifiers modifiers; + if (modifier & 1) + modifiers |= Qt::ShiftModifier; + + if (modifier & 2) + modifiers |= Qt::AltModifier; + + if (modifier & 4) + modifiers |= Qt::MetaModifier; + + QWindowSystemInterface::handleKeyEvent(0, + QEvent::KeyRelease, + mapAndroidKey(key), + modifiers, + QChar(unicode), + true); + } + + + static JNINativeMethod methods[] = { + {"touchBegin","(I)V",(void*)touchBegin}, + {"touchAdd","(IIIZIIFF)V",(void*)touchAdd}, + {"touchEnd","(II)V",(void*)touchEnd}, + {"mouseDown", "(III)V", (void *)mouseDown}, + {"mouseUp", "(III)V", (void *)mouseUp}, + {"mouseMove", "(III)V", (void *)mouseMove}, + {"longPress", "(III)V", (void *)longPress}, + {"keyDown", "(III)V", (void *)keyDown}, + {"keyUp", "(III)V", (void *)keyUp} + }; + +#define GET_AND_CHECK_STATIC_METHOD(VAR, CLASS, METHOD_NAME, METHOD_SIGNATURE) \ + VAR = env->GetStaticMethodID(CLASS, METHOD_NAME, METHOD_SIGNATURE); \ + if (!VAR) { \ + __android_log_print(ANDROID_LOG_FATAL, qtTagText(), methodErrorMsgFmt(), METHOD_NAME, METHOD_SIGNATURE); \ + return false; \ + } + + bool registerNatives(JNIEnv *env) + { + jclass appClass = QtAndroid::applicationClass(); + + if (env->RegisterNatives(appClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) { + __android_log_print(ANDROID_LOG_FATAL,"Qt", "RegisterNatives failed"); + return false; + } + + GET_AND_CHECK_STATIC_METHOD(m_showSoftwareKeyboardMethodID, appClass, "showSoftwareKeyboard", "(IIIII)V"); + GET_AND_CHECK_STATIC_METHOD(m_resetSoftwareKeyboardMethodID, appClass, "resetSoftwareKeyboard", "()V"); + GET_AND_CHECK_STATIC_METHOD(m_hideSoftwareKeyboardMethodID, appClass, "hideSoftwareKeyboard", "()V"); + GET_AND_CHECK_STATIC_METHOD(m_isSoftwareKeyboardVisibleMethodID, appClass, "isSoftwareKeyboardVisible", "()Z"); + GET_AND_CHECK_STATIC_METHOD(m_updateSelectionMethodID, appClass, "updateSelection", "(IIII)V"); + return true; + } +} diff --git a/src/plugins/platforms/android/src/androidjniinput.h b/src/plugins/platforms/android/src/androidjniinput.h new file mode 100644 index 0000000000..a78c7519db --- /dev/null +++ b/src/plugins/platforms/android/src/androidjniinput.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ANDROIDJNIINPUT_H +#define ANDROIDJNIINPUT_H +#include + +namespace QtAndroidInput +{ + // Software keyboard support + void showSoftwareKeyboard(int top, int left, int width, int height, int inputHints); + void resetSoftwareKeyboard(); + void hideSoftwareKeyboard(); + bool isSoftwareKeyboardVisible(); + void updateSelection(int selStart, int selEnd, int candidatesStart, int candidatesEnd); + // Software keyboard support + + bool registerNatives(JNIEnv *env); +} + +#endif // ANDROIDJNIINPUT_H diff --git a/src/plugins/platforms/android/src/androidjnimain.cpp b/src/plugins/platforms/android/src/androidjnimain.cpp new file mode 100644 index 0000000000..2a4c48df3c --- /dev/null +++ b/src/plugins/platforms/android/src/androidjnimain.cpp @@ -0,0 +1,839 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "androidjnimain.h" +#include "androidjniinput.h" +#include "androidjniclipboard.h" +#include "androidjnimenu.h" +#include "qandroidplatformintegration.h" +#include + +#include + +#include +#include +#include "qandroidassetsfileenginehandler.h" +#include + +#include + +#ifdef ANDROID_PLUGIN_OPENGL +# include "qandroidopenglplatformwindow.h" +#endif + +#if __ANDROID_API__ > 8 +# include +#endif + +static jmethodID m_redrawSurfaceMethodID = 0; + +Q_IMPORT_PLUGIN(QAndroidPlatformIntegrationPlugin) + +static JavaVM *m_javaVM = NULL; +static jclass m_applicationClass = NULL; +static jobject m_classLoaderObject = NULL; +static jmethodID m_loadClassMethodID = NULL; +static AAssetManager *m_assetManager = NULL; +static jobject m_resourcesObj; +static jobject m_activityObject = NULL; + +static jclass m_bitmapClass = 0; +static jmethodID m_createBitmapMethodID = 0; +static jobject m_ARGB_8888_BitmapConfigValue = 0; +static jobject m_RGB_565_BitmapConfigValue = 0; + +static jclass m_bitmapDrawableClass = 0; +static jmethodID m_bitmapDrawableConstructorMethodID = 0; + +extern "C" typedef int (*Main)(int, char **); //use the standard main method to start the application +static Main m_main = NULL; +static void *m_mainLibraryHnd = NULL; +static QList m_applicationParams; + +#ifndef ANDROID_PLUGIN_OPENGL +static jobject m_surface = NULL; +#else +static EGLNativeWindowType m_nativeWindow = 0; +static QSemaphore m_waitForWindowSemaphore; +static bool m_waitForWindow = false; + +static jfieldID m_surfaceFieldID = 0; +#endif + + +static QSemaphore m_quitAppSemaphore; +static QMutex m_surfaceMutex(QMutex::Recursive); +static QSemaphore m_pauseApplicationSemaphore; +static QMutex m_pauseApplicationMutex; + +static QAndroidPlatformIntegration *m_androidPlatformIntegration = 0; + +static int m_desktopWidthPixels = 0; +static int m_desktopHeightPixels = 0; + +static volatile bool m_pauseApplication; + +static jmethodID m_setFullScreenMethodID = 0; + +static AndroidAssetsFileEngineHandler *m_androidAssetsFileEngineHandler = 0; + + + +static const char m_qtTag[] = "Qt"; +static const char m_classErrorMsg[] = "Can't find class \"%s\""; +static const char m_methodErrorMsg[] = "Can't find method \"%s%s\""; + +static inline void checkPauseApplication() +{ + m_pauseApplicationMutex.lock(); + if (m_pauseApplication) { + m_pauseApplicationMutex.unlock(); + m_pauseApplicationSemaphore.acquire(); // wait until surface is created + + m_pauseApplicationMutex.lock(); + m_pauseApplication = false; + m_pauseApplicationMutex.unlock(); + + //FIXME +// QWindowSystemInterface::handleScreenAvailableGeometryChange(0); +// QWindowSystemInterface::handleScreenGeometryChange(0); + } else { + m_pauseApplicationMutex.unlock(); + } +} + +namespace QtAndroid +{ +#ifndef ANDROID_PLUGIN_OPENGL + void flushImage(const QPoint &pos, const QImage &image, const QRect &destinationRect) + { + checkPauseApplication(); + QMutexLocker locker(&m_surfaceMutex); + if (!m_surface) + return; + AttachedJNIEnv env; + if (!env.jniEnv) + return; + + int bpp = 2; + AndroidBitmapInfo info; + int ret; + + if ((ret = AndroidBitmap_getInfo(env.jniEnv, m_surface, &info)) < 0) { + qWarning() << "AndroidBitmap_getInfo() failed ! error=" << ret; + m_javaVM->DetachCurrentThread(); + return; + } + + if (info.format != ANDROID_BITMAP_FORMAT_RGB_565) { + qWarning() << "Bitmap format is not RGB_565!"; + m_javaVM->DetachCurrentThread(); + return; + } + + void *pixels; + unsigned char *screenBits; + if ((ret = AndroidBitmap_lockPixels(env.jniEnv, m_surface, &pixels)) < 0) { + qWarning() << "AndroidBitmap_lockPixels() failed! error=" << ret; + m_javaVM->DetachCurrentThread(); + return; + } + + screenBits = static_cast(pixels); + int sbpl = info.stride; + int swidth = info.width; + int sheight = info.height; + + unsigned sposx = pos.x() + destinationRect.x(); + unsigned sposy = pos.y() + destinationRect.y(); + + screenBits += sposy * sbpl; + + unsigned ibpl = image.bytesPerLine(); + unsigned iposx = destinationRect.x(); + unsigned iposy = destinationRect.y(); + + const unsigned char *imageBits = static_cast(image.bits()); + imageBits += iposy * ibpl; + + unsigned width = swidth - sposx < unsigned(destinationRect.width()) + ? (swidth-sposx) + : destinationRect.width(); + unsigned height = sheight - sposy < unsigned(destinationRect.height()) + ? (sheight - sposy) + : destinationRect.height(); + + for (unsigned y = 0; y < height; y++) { + memcpy(screenBits + y*sbpl + sposx*bpp, + imageBits + y*ibpl + iposx*bpp, + width*bpp); + } + AndroidBitmap_unlockPixels(env.jniEnv, m_surface); + + env.jniEnv->CallStaticVoidMethod(m_applicationClass, + m_redrawSurfaceMethodID, + jint(destinationRect.left()), + jint(destinationRect.top()), + jint(destinationRect.right() + 1), + jint(destinationRect.bottom() + 1)); +#warning FIXME dirty hack, figure out why it needs to add 1 to right and bottom !!!! + } + +#else // for #ifndef ANDROID_PLUGIN_OPENGL + EGLNativeWindowType nativeWindow(bool waitForWindow) + { + m_surfaceMutex.lock(); + if (!m_nativeWindow && waitForWindow) { + m_waitForWindow = true; + m_surfaceMutex.unlock(); + m_waitForWindowSemaphore.acquire(); + m_waitForWindow = false; + return m_nativeWindow; + } + m_surfaceMutex.unlock(); + return m_nativeWindow; + } + + QSize nativeWindowSize() + { + if (m_nativeWindow == 0) + return QAndroidPlatformIntegration::defaultDesktopSize(); + + int width = ANativeWindow_getWidth(m_nativeWindow); + int height = ANativeWindow_getHeight(m_nativeWindow); + + return QSize(width, height); + } +#endif + + void setAndroidPlatformIntegration(QAndroidPlatformIntegration *androidPlatformIntegration) + { + m_surfaceMutex.lock(); + m_androidPlatformIntegration = androidPlatformIntegration; + m_surfaceMutex.unlock(); + } + + void setFullScreen(QWidget *widget) + { + AttachedJNIEnv env; + if (!env.jniEnv) + return; + + bool fullScreen = widget->isFullScreen(); + if (!fullScreen) { + foreach (QWidget *w, qApp->topLevelWidgets()) { + fullScreen |= w->isFullScreen(); + if (fullScreen) + break; + } + } + + env.jniEnv->CallStaticVoidMethod(m_applicationClass, m_setFullScreenMethodID, fullScreen); + } + + QWindow *topLevelWindowAt(const QPoint &globalPos) + { + return m_androidPlatformIntegration + ? m_androidPlatformIntegration->screen()->topLevelAt(globalPos) + : 0; + } + + int desktopWidthPixels() + { + return m_desktopWidthPixels; + } + + int desktopHeightPixels() + { + return m_desktopHeightPixels; + } + + JavaVM *javaVM() + { + return m_javaVM; + } + + jclass findClass(const QString &className, JNIEnv *env) + { + return static_cast(env->CallObjectMethod(m_classLoaderObject, + m_loadClassMethodID, + env->NewString(reinterpret_cast(className.constData()), + jsize(className.length())))); + } + + AAssetManager *assetManager() + { + return m_assetManager; + } + + jclass applicationClass() + { + return m_applicationClass; + } + + jobject activity() + { + return m_activityObject; + } + + jobject createBitmap(QImage img, JNIEnv *env) + { + if (img.format() != QImage::Format_ARGB32 && img.format() != QImage::Format_RGB16) + img = img.convertToFormat(QImage::Format_ARGB32); + + jobject bitmap = env->CallStaticObjectMethod(m_bitmapClass, + m_createBitmapMethodID, + img.width(), + img.height(), + img.format() == QImage::Format_ARGB32 + ? m_ARGB_8888_BitmapConfigValue + : m_RGB_565_BitmapConfigValue); + if (!bitmap) + return 0; + + AndroidBitmapInfo info; + if (AndroidBitmap_getInfo(env, bitmap, &info) < 0) { + env->DeleteLocalRef(bitmap); + return 0; + } + + void *pixels; + if (AndroidBitmap_lockPixels(env, bitmap, &pixels) < 0) { + env->DeleteLocalRef(bitmap); + return 0; + } + + if (info.stride == uint(img.bytesPerLine()) + && info.width == uint(img.width()) + && info.height == uint(img.height())) { + memcpy(pixels, img.constBits(), info.stride * info.height); + } else { + uchar *bmpPtr = static_cast(pixels); + const unsigned width = qMin(info.width, (uint)img.width()); //should be the same + const unsigned height = qMin(info.height, (uint)img.height()); //should be the same + for (unsigned y = 0; y < height; y++, bmpPtr += info.stride) + memcpy(bmpPtr, img.constScanLine(y), width); + } + AndroidBitmap_unlockPixels(env, bitmap); + return bitmap; + } + + jobject createBitmapDrawable(jobject bitmap, JNIEnv *env) + { + if (!bitmap) + return 0; + + return env->NewObject(m_bitmapDrawableClass, + m_bitmapDrawableConstructorMethodID, + m_resourcesObj, + bitmap); + } + + const char *classErrorMsgFmt() + { + return m_classErrorMsg; + } + + const char *methodErrorMsgFmt() + { + return m_methodErrorMsg; + } + + const char *qtTagText() + { + return m_qtTag; + } +} + +static jboolean startQtAndroidPlugin(JNIEnv* /*env*/, jobject /*object*//*, jobject applicationAssetManager*/) +{ +#ifndef ANDROID_PLUGIN_OPENGL + m_surface = 0; +#else + m_nativeWindow = 0; + m_waitForWindow = false; +#endif + + m_androidPlatformIntegration = 0; + m_androidAssetsFileEngineHandler = new AndroidAssetsFileEngineHandler(); + +#ifdef ANDROID_PLUGIN_OPENGL + return true; +#else + return false; +#endif +} + +static void *startMainMethod(void */*data*/) +{ + char const **params; + params = static_cast(malloc(m_applicationParams.length() * sizeof(char *))); + for (int i = 0; i < m_applicationParams.size(); i++) + params[i] = static_cast(m_applicationParams[i].constData()); + + int ret = m_main(m_applicationParams.length(), const_cast(params)); + + free(params); + Q_UNUSED(ret); + + if (m_mainLibraryHnd) { + int res = dlclose(m_mainLibraryHnd); + if (res < 0) + qWarning() << "dlclose failed:" << dlerror(); + } + + QtAndroid::AttachedJNIEnv env; + if (!env.jniEnv) + return 0; + + if (m_applicationClass) { + jmethodID quitApp = env.jniEnv->GetStaticMethodID(m_applicationClass, "quitApp", "()V"); + env.jniEnv->CallStaticVoidMethod(m_applicationClass, quitApp); + } + + return 0; +} + +static jboolean startQtApplication(JNIEnv *env, jobject /*object*/, jstring paramsString, jstring environmentString) +{ + m_mainLibraryHnd = NULL; + const char *nativeString = env->GetStringUTFChars(environmentString, 0); + QByteArray string = nativeString; + env->ReleaseStringUTFChars(environmentString, nativeString); + m_applicationParams=string.split('\t'); + foreach (string, m_applicationParams) { + if (putenv(string.constData())) + qWarning() << "Can't set environment" << string; + } + + nativeString = env->GetStringUTFChars(paramsString, 0); + string = nativeString; + env->ReleaseStringUTFChars(paramsString, nativeString); + + m_applicationParams=string.split('\t'); + + // Go home + QDir::setCurrent(QDir::homePath()); + + //look for main() + if (m_applicationParams.length()) { + // Obtain a handle to the main library (the library that contains the main() function). + // This library should already be loaded, and calling dlopen() will just return a reference to it. + m_mainLibraryHnd = dlopen(m_applicationParams.first().data(), 0); + if (m_mainLibraryHnd == NULL) { + qCritical() << "dlopen failed:" << dlerror(); + return false; + } + m_main = (Main)dlsym(m_mainLibraryHnd, "main"); + } else { + qWarning() << "No main library was specified; searching entire process (this is slow!)"; + m_main = (Main)dlsym(RTLD_DEFAULT, "main"); + } + + if (!m_main) { + qCritical() << "dlsym failed:" << dlerror(); + qCritical() << "Could not find main method"; + return false; + } + + pthread_t appThread; + return pthread_create(&appThread, NULL, startMainMethod, NULL) == 0; +} + +static void pauseQtApp(JNIEnv */*env*/, jobject /*thiz*/) +{ + m_surfaceMutex.lock(); + m_pauseApplicationMutex.lock(); + + if (m_androidPlatformIntegration) + m_androidPlatformIntegration->pauseApp(); + m_pauseApplication = true; + + m_pauseApplicationMutex.unlock(); + m_surfaceMutex.unlock(); +} + +static void resumeQtApp(JNIEnv */*env*/, jobject /*thiz*/) +{ + m_surfaceMutex.lock(); + m_pauseApplicationMutex.lock(); + if (m_androidPlatformIntegration) + m_androidPlatformIntegration->resumeApp(); + + if (m_pauseApplication) + m_pauseApplicationSemaphore.release(); + + m_pauseApplicationMutex.unlock(); + m_surfaceMutex.unlock(); +} + +static void quitQtAndroidPlugin(JNIEnv *env, jclass /*clazz*/) +{ +#ifndef ANDROID_PLUGIN_OPENGL + if (m_surface) { + env->DeleteGlobalRef(m_surface); + m_surface = 0; + } +#else + Q_UNUSED(env); +#endif + + m_androidPlatformIntegration = 0; + delete m_androidAssetsFileEngineHandler; +} + +static void terminateQt(JNIEnv *env, jclass /*clazz*/) +{ +#ifndef ANDROID_PLUGIN_OPENGL + if (m_surface) + env->DeleteGlobalRef(m_surface); +#endif + env->DeleteGlobalRef(m_applicationClass); + env->DeleteGlobalRef(m_classLoaderObject); + env->DeleteGlobalRef(m_resourcesObj); + env->DeleteGlobalRef(m_activityObject); + env->DeleteGlobalRef(m_bitmapClass); + env->DeleteGlobalRef(m_ARGB_8888_BitmapConfigValue); + env->DeleteGlobalRef(m_RGB_565_BitmapConfigValue); + env->DeleteGlobalRef(m_bitmapDrawableClass); +} + +#ifdef ANDROID_PLUGIN_OPENGL +#if __ANDROID_API__ < 9 +struct FakeNativeWindow +{ + long long dummyNativeWindow;// force 64 bits alignment +}; + +class FakeSurface: public FakeNativeWindow +{ +public: + virtual void FakeSurfaceMethod() + { + fakeSurface = 0; + } + + int fakeSurface; +}; + +EGLNativeWindowType ANativeWindow_fromSurface(JNIEnv *env, jobject jSurface) +{ + FakeSurface *surface = static_cast(env->GetIntField(jSurface, m_surfaceFieldID)); + return static_cast(static_cast(surface)); +} +#endif // __ANDROID_API__ < 9 +#endif // ANDROID_PLUGIN_OPENGL + +static void setSurface(JNIEnv *env, jobject /*thiz*/, jobject jSurface) +{ +#ifndef ANDROID_PLUGIN_OPENGL + if (m_surface) + env->DeleteGlobalRef(m_surface); + m_surface = env->NewGlobalRef(jSurface); +#else + m_surfaceMutex.lock(); + EGLNativeWindowType nativeWindow = ANativeWindow_fromSurface(env, jSurface); + bool sameNativeWindow = (nativeWindow != 0 && nativeWindow == m_nativeWindow); + + m_nativeWindow = nativeWindow; + if (m_waitForWindow) + m_waitForWindowSemaphore.release(); + if (m_androidPlatformIntegration && !sameNativeWindow) { + m_surfaceMutex.unlock(); + m_androidPlatformIntegration->surfaceChanged(); + } else if (m_androidPlatformIntegration && sameNativeWindow) { + QAndroidOpenGLPlatformWindow *window = m_androidPlatformIntegration->primaryWindow(); + QPlatformScreen *screen = m_androidPlatformIntegration->screen(); + QSize size = QtAndroid::nativeWindowSize(); + + QRect geometry(QPoint(0, 0), size); + QWindowSystemInterface::handleScreenAvailableGeometryChange(screen->screen(), geometry); + QWindowSystemInterface::handleScreenGeometryChange(screen->screen(), geometry); + + if (window != 0) { + window->lock(); + window->scheduleResize(size); + + QWindowSystemInterface::handleExposeEvent(window->window(), + QRegion(window->window()->geometry())); + window->unlock(); + } + + m_surfaceMutex.unlock(); + } else { + m_surfaceMutex.unlock(); + } +#endif // for #ifndef ANDROID_PLUGIN_OPENGL +} + +static void destroySurface(JNIEnv *env, jobject /*thiz*/) +{ +#ifndef ANDROID_PLUGIN_OPENGL + if (m_surface) { + env->DeleteGlobalRef(m_surface); + m_surface = 0; + } +#else + Q_UNUSED(env); + m_nativeWindow = 0; + if (m_androidPlatformIntegration != 0) + m_androidPlatformIntegration->invalidateNativeSurface(); +#endif +} + +static void setDisplayMetrics(JNIEnv */*env*/, jclass /*clazz*/, + jint /*widthPixels*/, jint /*heightPixels*/, + jint desktopWidthPixels, jint desktopHeightPixels, + jdouble xdpi, jdouble ydpi) +{ + m_desktopWidthPixels = desktopWidthPixels; + m_desktopHeightPixels = desktopHeightPixels; + + if (!m_androidPlatformIntegration) { + QAndroidPlatformIntegration::setDefaultDisplayMetrics(desktopWidthPixels,desktopHeightPixels, + qRound(double(desktopWidthPixels) / xdpi * 25.4), + qRound(double(desktopHeightPixels) / ydpi * 25.4)); + } else { + m_androidPlatformIntegration->setDisplayMetrics(qRound(double(desktopWidthPixels) / xdpi * 25.4), + qRound(double(desktopHeightPixels) / ydpi * 25.4)); + m_androidPlatformIntegration->setDesktopSize(desktopWidthPixels, desktopHeightPixels); + } +} + +static void lockSurface(JNIEnv */*env*/, jobject /*thiz*/) +{ + m_surfaceMutex.lock(); +} + +static void unlockSurface(JNIEnv */*env*/, jobject /*thiz*/) +{ + m_surfaceMutex.unlock(); +} + +static void updateWindow(JNIEnv */*env*/, jobject /*thiz*/) +{ + if (!m_androidPlatformIntegration) + return; + + if (qApp != 0) { + foreach (QWidget *w, qApp->topLevelWidgets()) + w->update(); + } + +#ifndef ANDROID_PLUGIN_OPENGL + QAndroidPlatformScreen *screen = static_cast(m_androidPlatformIntegration->screen()); + QMetaObject::invokeMethod(screen, "setDirty", Qt::QueuedConnection, Q_ARG(QRect,screen->geometry())); +#else + qWarning("updateWindow: Dirty screen not implemented yet on OpenGL"); +#endif +} + +static void handleOrientationChanged(JNIEnv */*env*/, jobject /*thiz*/, jint newOrientation) +{ + if (m_androidPlatformIntegration == 0) + return; + + Qt::ScreenOrientation screenOrientation = newOrientation == 1 + ? Qt::PortraitOrientation + : Qt::LandscapeOrientation; + QPlatformScreen *screen = m_androidPlatformIntegration->screen(); + QWindowSystemInterface::handleScreenOrientationChange(screen->screen(), + screenOrientation); +} + +static JNINativeMethod methods[] = { + {"startQtAndroidPlugin", "()Z", (void *)startQtAndroidPlugin}, + {"startQtApplication", "(Ljava/lang/String;Ljava/lang/String;)V", (void *)startQtApplication}, + {"pauseQtApp", "()V", (void *)pauseQtApp}, + {"resumeQtApp", "()V", (void *)resumeQtApp}, + {"quitQtAndroidPlugin", "()V", (void *)quitQtAndroidPlugin}, + {"terminateQt", "()V", (void *)terminateQt}, + {"setDisplayMetrics", "(IIIIDD)V", (void *)setDisplayMetrics}, + {"setSurface", "(Ljava/lang/Object;)V", (void *)setSurface}, + {"destroySurface", "()V", (void *)destroySurface}, + {"lockSurface", "()V", (void *)lockSurface}, + {"unlockSurface", "()V", (void *)unlockSurface}, + {"updateWindow", "()V", (void *)updateWindow}, + {"handleOrientationChanged", "(I)V", (void *)handleOrientationChanged} +}; + +#define FIND_AND_CHECK_CLASS(CLASS_NAME) \ +clazz = env->FindClass(CLASS_NAME); \ +if (!clazz) { \ + __android_log_print(ANDROID_LOG_FATAL, m_qtTag, m_classErrorMsg, CLASS_NAME); \ + return JNI_FALSE; \ +} + +#define GET_AND_CHECK_METHOD(VAR, CLASS, METHOD_NAME, METHOD_SIGNATURE) \ +VAR = env->GetMethodID(CLASS, METHOD_NAME, METHOD_SIGNATURE); \ +if (!VAR) { \ + __android_log_print(ANDROID_LOG_FATAL, m_qtTag, m_methodErrorMsg, METHOD_NAME, METHOD_SIGNATURE); \ + return JNI_FALSE; \ +} + +#define GET_AND_CHECK_STATIC_METHOD(VAR, CLASS, METHOD_NAME, METHOD_SIGNATURE) \ +VAR = env->GetStaticMethodID(CLASS, METHOD_NAME, METHOD_SIGNATURE); \ +if (!VAR) { \ + __android_log_print(ANDROID_LOG_FATAL, m_qtTag, m_methodErrorMsg, METHOD_NAME, METHOD_SIGNATURE); \ + return JNI_FALSE; \ +} + +#define GET_AND_CHECK_FIELD(VAR, CLASS, FIELD_NAME, FIELD_SIGNATURE) \ +VAR = env->GetFieldID(CLASS, FIELD_NAME, FIELD_SIGNATURE); \ +if (!VAR) { \ + __android_log_print(ANDROID_LOG_FATAL, m_qtTag, m_methodErrorMsg, FIELD_NAME, FIELD_SIGNATURE); \ + return JNI_FALSE; \ +} + +#define GET_AND_CHECK_STATIC_FIELD(VAR, CLASS, FIELD_NAME, FIELD_SIGNATURE) \ +VAR = env->GetStaticFieldID(CLASS, FIELD_NAME, FIELD_SIGNATURE); \ +if (!VAR) { \ + __android_log_print(ANDROID_LOG_FATAL, m_qtTag, m_methodErrorMsg, FIELD_NAME, FIELD_SIGNATURE); \ + return JNI_FALSE; \ +} + +static int registerNatives(JNIEnv *env) +{ + jclass clazz; + FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/QtNative"); + m_applicationClass = static_cast(env->NewGlobalRef(clazz)); + + if (env->RegisterNatives(m_applicationClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) { + __android_log_print(ANDROID_LOG_FATAL,"Qt", "RegisterNatives failed"); + return JNI_FALSE; + } + + GET_AND_CHECK_STATIC_METHOD(m_redrawSurfaceMethodID, m_applicationClass, "redrawSurface", "(IIII)V"); + GET_AND_CHECK_STATIC_METHOD(m_setFullScreenMethodID, m_applicationClass, "setFullScreen", "(Z)V"); + +#ifdef ANDROID_PLUGIN_OPENGL + FIND_AND_CHECK_CLASS("android/view/Surface"); +#if __ANDROID_API__ < 9 +# define ANDROID_VIEW_SURFACE_JNI_ID "mSurface" +#else +# define ANDROID_VIEW_SURFACE_JNI_ID "mNativeSurface" +#endif + GET_AND_CHECK_FIELD(m_surfaceFieldID, clazz, ANDROID_VIEW_SURFACE_JNI_ID, "I"); +#endif + + jmethodID methodID; + GET_AND_CHECK_STATIC_METHOD(methodID, m_applicationClass, "activity", "()Landroid/app/Activity;"); + jobject activityObject = env->CallStaticObjectMethod(m_applicationClass, methodID); + m_activityObject = env->NewGlobalRef(activityObject); + GET_AND_CHECK_STATIC_METHOD(methodID, m_applicationClass, "classLoader", "()Ljava/lang/ClassLoader;"); + m_classLoaderObject = env->NewGlobalRef(env->CallStaticObjectMethod(m_applicationClass, methodID)); + + clazz = env->GetObjectClass(m_classLoaderObject); + GET_AND_CHECK_METHOD(m_loadClassMethodID, clazz, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); + + FIND_AND_CHECK_CLASS("android/content/ContextWrapper"); + GET_AND_CHECK_METHOD(methodID, clazz, "getAssets", "()Landroid/content/res/AssetManager;"); + m_assetManager = AAssetManager_fromJava(env, env->CallObjectMethod(activityObject, methodID)); + + GET_AND_CHECK_METHOD(methodID, clazz, "getResources", "()Landroid/content/res/Resources;"); + m_resourcesObj = env->NewGlobalRef(env->CallObjectMethod(activityObject, methodID)); + + FIND_AND_CHECK_CLASS("android/graphics/Bitmap"); + m_bitmapClass = static_cast(env->NewGlobalRef(clazz)); + GET_AND_CHECK_STATIC_METHOD(m_createBitmapMethodID, m_bitmapClass + , "createBitmap", "(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;"); + + FIND_AND_CHECK_CLASS("android/graphics/Bitmap$Config"); + jfieldID fieldId; + GET_AND_CHECK_STATIC_FIELD(fieldId, clazz, "ARGB_8888", "Landroid/graphics/Bitmap$Config;"); + m_ARGB_8888_BitmapConfigValue = env->NewGlobalRef(env->GetStaticObjectField(clazz, fieldId)); + GET_AND_CHECK_STATIC_FIELD(fieldId, clazz, "RGB_565", "Landroid/graphics/Bitmap$Config;"); + m_RGB_565_BitmapConfigValue = env->NewGlobalRef(env->GetStaticObjectField(clazz, fieldId)); + + FIND_AND_CHECK_CLASS("android/graphics/drawable/BitmapDrawable"); + m_bitmapDrawableClass = static_cast(env->NewGlobalRef(clazz)); + GET_AND_CHECK_METHOD(m_bitmapDrawableConstructorMethodID, + m_bitmapDrawableClass, + "", + "(Landroid/content/res/Resources;Landroid/graphics/Bitmap;)V"); + + return JNI_TRUE; +} + +Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void */*reserved*/) +{ + typedef union { + JNIEnv *nativeEnvironment; + void *venv; + } UnionJNIEnvToVoid; + + __android_log_print(ANDROID_LOG_INFO, "Qt", "qt start"); + UnionJNIEnvToVoid uenv; + uenv.venv = NULL; + m_javaVM = 0; + + if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_4) != JNI_OK) { + __android_log_print(ANDROID_LOG_FATAL, "Qt", "GetEnv failed"); + return -1; + } + + JNIEnv *env = uenv.nativeEnvironment; + if (!registerNatives(env) + || !QtAndroidInput::registerNatives(env) + || !QtAndroidClipboard::registerNatives(env) + || !QtAndroidMenu::registerNatives(env)) { + __android_log_print(ANDROID_LOG_FATAL, "Qt", "registerNatives failed"); + return -1; + } + + m_javaVM = vm; + return JNI_VERSION_1_4; +} diff --git a/src/plugins/platforms/android/src/androidjnimain.h b/src/plugins/platforms/android/src/androidjnimain.h new file mode 100644 index 0000000000..36699f15b8 --- /dev/null +++ b/src/plugins/platforms/android/src/androidjnimain.h @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ANDROID_APP_H +#define ANDROID_APP_H + +#include + +#ifdef ANDROID_PLUGIN_OPENGL +# include +#endif + +#include + +#include +#include + +class QImage; +class QRect; +class QPoint; +class QThread; +class QAndroidPlatformIntegration; +class QWidget; +class QString; +class QWindow; + +namespace QtAndroid +{ + void setAndroidPlatformIntegration(QAndroidPlatformIntegration *androidPlatformIntegration); + void setQtThread(QThread *thread); + + void setFullScreen(QWidget *widget); + +#ifndef ANDROID_PLUGIN_OPENGL + void flushImage(const QPoint &pos, const QImage &image, const QRect &rect); +#else + EGLNativeWindowType nativeWindow(bool waitToCreate = true); + QSize nativeWindowSize(); +#endif + + QWindow *topLevelWindowAt(const QPoint &globalPos); + int desktopWidthPixels(); + int desktopHeightPixels(); + JavaVM *javaVM(); + jclass findClass(const QString &className, JNIEnv *env); + AAssetManager *assetManager(); + jclass applicationClass(); + jobject activity(); + + jobject createBitmap(QImage img, JNIEnv *env = 0); + jobject createBitmapDrawable(jobject bitmap, JNIEnv *env = 0); + + struct AttachedJNIEnv + { + AttachedJNIEnv() + { + attached = false; + if (QtAndroid::javaVM()->GetEnv((void**)&jniEnv, JNI_VERSION_1_6) < 0) { + if (QtAndroid::javaVM()->AttachCurrentThread(&jniEnv, NULL) < 0) { + __android_log_print(ANDROID_LOG_ERROR, "Qt", "AttachCurrentThread failed"); + jniEnv = 0; + return; + } + attached = true; + } + } + + ~AttachedJNIEnv() + { + if (attached) + QtAndroid::javaVM()->DetachCurrentThread(); + } + bool attached; + JNIEnv *jniEnv; + }; + const char *classErrorMsgFmt(); + const char *methodErrorMsgFmt(); + const char *qtTagText(); + +} +#endif // ANDROID_APP_H diff --git a/src/plugins/platforms/android/src/androidjnimenu.cpp b/src/plugins/platforms/android/src/androidjnimenu.cpp new file mode 100644 index 0000000000..e49af0fdac --- /dev/null +++ b/src/plugins/platforms/android/src/androidjnimenu.cpp @@ -0,0 +1,405 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "androidjnimenu.h" +#include "androidjnimain.h" +#include +#include +#include +#include +#include "qandroidplatformmenubar.h" +#include "qandroidplatformmenu.h" +#include + +using namespace QtAndroid; + +namespace QtAndroidMenu +{ + static QQueue pendingContextMenus; + static QAndroidPlatformMenu *visibleMenu = 0; + static QMutex visibleMenuMutex(QMutex::Recursive); + + static QSet menuBars; + static QAndroidPlatformMenuBar *visibleMenuBar = 0; + static QWindow *activeTopLevelWindow = 0; + static QMutex menuBarMutex(QMutex::Recursive); + + static jmethodID openContextMenuMethodID = 0; + static jmethodID closeContextMenuMethodID = 0; + static jmethodID resetOptionsMenuMethodID = 0; + + static jmethodID clearMenuMethodID = 0; + static jmethodID addMenuItemMethodID = 0; + static int menuNoneValue = 0; + static jmethodID setHeaderTitleContextMenuMethodID = 0; + + static jmethodID setCheckableMenuItemMethodID = 0; + static jmethodID setCheckedMenuItemMethodID = 0; + static jmethodID setEnabledMenuItemMethodID = 0; + static jmethodID setIconMenuItemMethodID = 0; + static jmethodID setVisibleMenuItemMethodID = 0; + + void resetMenuBar() + { + AttachedJNIEnv env; + if (env.jniEnv) + env.jniEnv->CallStaticVoidMethod(applicationClass(), resetOptionsMenuMethodID); + } + + void showContextMenu(QAndroidPlatformMenu *menu, JNIEnv *env) + { + QMutexLocker lock(&visibleMenuMutex); + if (visibleMenu) { + pendingContextMenus.enqueue(menu); + } else { + visibleMenu = menu; + menu->aboutToShow(); + if (env) { + env->CallStaticVoidMethod(applicationClass(), openContextMenuMethodID); + } else { + AttachedJNIEnv aenv; + if (aenv.jniEnv) + aenv.jniEnv->CallStaticVoidMethod(applicationClass(), openContextMenuMethodID); + } + } + } + + void hideContextMenu(QAndroidPlatformMenu *menu) + { + QMutexLocker lock(&visibleMenuMutex); + if (visibleMenu == menu) { + AttachedJNIEnv env; + if (env.jniEnv) + env.jniEnv->CallStaticVoidMethod(applicationClass(), openContextMenuMethodID); + } else { + pendingContextMenus.removeOne(menu); + } + } + + void syncMenu(QAndroidPlatformMenu */*menu*/) + { +// QMutexLocker lock(&visibleMenuMutex); +// if (visibleMenu == menu) +// { +// hideContextMenu(menu); +// showContextMenu(menu); +// } + } + + void androidPlatformMenuDestroyed(QAndroidPlatformMenu *menu) + { + QMutexLocker lock(&visibleMenuMutex); + if (visibleMenu == menu) + visibleMenu = 0; + } + + void setMenuBar(QAndroidPlatformMenuBar *menuBar, QWindow *window) + { + if (activeTopLevelWindow == window && visibleMenuBar != menuBar) { + visibleMenuBar = menuBar; + resetMenuBar(); + } + } + + void setActiveTopLevelWindow(QWindow *window) + { + QMutexLocker lock(&menuBarMutex); + if (activeTopLevelWindow == window) + return; + + visibleMenuBar = 0; + activeTopLevelWindow = window; +#ifdef ANDROID_PLUGIN_OPENGL + //only one toplevel window, so the menu bar always belongs to us + if (menuBars.size() == 1) { + visibleMenuBar = *menuBars.constBegin(); //since QSet doesn't have first() + } else +#endif + foreach (QAndroidPlatformMenuBar *menuBar, menuBars) { + if (menuBar->parentWindow() == window) { + visibleMenuBar = menuBar; + break; + } + } + + resetMenuBar(); + } + + void addMenuBar(QAndroidPlatformMenuBar *menuBar) + { + QMutexLocker lock(&menuBarMutex); + menuBars.insert(menuBar); + } + + void removeMenuBar(QAndroidPlatformMenuBar *menuBar) + { + QMutexLocker lock(&menuBarMutex); + menuBars.remove(menuBar); + if (visibleMenuBar == menuBar) + resetMenuBar(); + } + + static void fillMenuItem(JNIEnv *env, jobject menuItem, bool checkable, bool checked, bool enabled, bool visible, const QIcon &icon=QIcon()) + { + env->CallObjectMethod(menuItem, setCheckableMenuItemMethodID, checkable); + env->CallObjectMethod(menuItem, setCheckedMenuItemMethodID, checked); + env->CallObjectMethod(menuItem, setEnabledMenuItemMethodID, enabled); + + if (!icon.isNull()) { + int sz = qMax(36, qgetenv("QT_ANDROID_APP_ICON_SIZE").toInt()); + QImage img = icon.pixmap(QSize(sz,sz), + enabled + ? QIcon::Normal + : QIcon::Disabled, + QIcon::On).toImage(); + env->CallObjectMethod(menuItem, + setIconMenuItemMethodID, + createBitmapDrawable(createBitmap(img, env), env)); + } + + env->CallObjectMethod(menuItem, setVisibleMenuItemMethodID, visible); + } + + static int addAllMenuItemsToMenu(JNIEnv *env, jobject menu, QAndroidPlatformMenu *platformMenu) { + int order = 0; + QMutexLocker lock(platformMenu->menuItemsMutex()); + foreach (QAndroidPlatformMenuItem *item, platformMenu->menuItems()) { + if (item->isSeparator()) + continue; + jstring jtext = env->NewString(reinterpret_cast(item->text().data()), + item->text().length()); + jobject menuItem = env->CallObjectMethod(menu, + addMenuItemMethodID, + menuNoneValue, + int(item->tag()), + order++, + jtext); + env->DeleteLocalRef(jtext); + fillMenuItem(env, + menuItem, + item->isCheckable(), + item->isChecked(), + item->isEnabled(), + item->isVisible(), + item->icon()); + } + + return order; + } + + static jboolean onPrepareOptionsMenu(JNIEnv *env, jobject /*thiz*/, jobject menu) + { + env->CallVoidMethod(menu, clearMenuMethodID); + QMutexLocker lock(&menuBarMutex); + if (!visibleMenuBar) + return JNI_FALSE; + + const QAndroidPlatformMenuBar::PlatformMenusType &menus = visibleMenuBar->menus(); + int order = 0; + QMutexLocker lockMenuBarMutex(visibleMenuBar->menusListMutex()); + if (menus.size() == 1) { // Expand the menu + order = addAllMenuItemsToMenu(env, menu, static_cast(menus.front())); + } else { + foreach (QAndroidPlatformMenu *item, menus) { + jstring jtext = env->NewString(reinterpret_cast(item->text().data()), + item->text().length()); + jobject menuItem = env->CallObjectMethod(menu, + addMenuItemMethodID, + menuNoneValue, + int(item->tag()), + order++, + jtext); + env->DeleteLocalRef(jtext); + + fillMenuItem(env, + menuItem, + false, + false, + item->isEnabled(), + item->isVisible(), + item->icon()); + } + } + return order ? JNI_TRUE : JNI_FALSE; + } + + static jboolean onOptionsItemSelected(JNIEnv *env, jobject /*thiz*/, jint menuId, jboolean checked) + { + QMutexLocker lock(&menuBarMutex); + if (!visibleMenuBar) + return JNI_FALSE; + + const QAndroidPlatformMenuBar::PlatformMenusType &menus = visibleMenuBar->menus(); + if (menus.size() == 1) { // Expanded menu + QAndroidPlatformMenuItem *item = static_cast(menus.front()->menuItemForTag(menuId)); + if (item) { + if (item->menu()) { + showContextMenu(item->menu(), env); + } else { + if (item->isCheckable()) + item->setChecked(checked); + item->activated(); + } + } + } else { + QAndroidPlatformMenu *menu = static_cast(visibleMenuBar->menuForTag(menuId)); + if (menu) + showContextMenu(menu, env); + } + + return JNI_TRUE; + } + + static void onOptionsMenuClosed(JNIEnv */*env*/, jobject /*thiz*/, jobject /*menu*/) + { + } + + static void onCreateContextMenu(JNIEnv *env, jobject /*thiz*/, jobject menu) + { + env->CallVoidMethod(menu, clearMenuMethodID); + QMutexLocker lock(&visibleMenuMutex); + if (!visibleMenu) + return; + + jstring jtext = env->NewString(reinterpret_cast(visibleMenu->text().data()), + visibleMenu->text().length()); + env->CallObjectMethod(menu, setHeaderTitleContextMenuMethodID, jtext); + env->DeleteLocalRef(jtext); + addAllMenuItemsToMenu(env, menu, visibleMenu); + } + + static jboolean onContextItemSelected(JNIEnv *env, jobject /*thiz*/, jint menuId, jboolean checked) + { + QMutexLocker lock(&visibleMenuMutex); + QAndroidPlatformMenuItem * item = static_cast(visibleMenu->menuItemForTag(menuId)); + if (item) { + if (item->menu()) { + showContextMenu(item->menu(), env); + } else { + if (item->isCheckable()) + item->setChecked(checked); + item->activated(); + } + } + return JNI_TRUE; + } + + static void onContextMenuClosed(JNIEnv *env, jobject /*thiz*/, jobject /*menu*/) + { + QMutexLocker lock(&visibleMenuMutex); + if (!visibleMenu) + return; + visibleMenu->aboutToHide(); + visibleMenu = 0; + if (!pendingContextMenus.empty()) + showContextMenu(pendingContextMenus.dequeue(), env); + } + + static JNINativeMethod methods[] = { + {"onPrepareOptionsMenu", "(Landroid/view/Menu;)Z", (void *)onPrepareOptionsMenu}, + {"onOptionsItemSelected", "(IZ)Z", (void *)onOptionsItemSelected}, + {"onOptionsMenuClosed", "(Landroid/view/Menu;)V", (void*)onOptionsMenuClosed}, + {"onCreateContextMenu", "(Landroid/view/ContextMenu;)V", (void *)onCreateContextMenu}, + {"onContextItemSelected", "(IZ)Z", (void *)onContextItemSelected}, + {"onContextMenuClosed", "(Landroid/view/Menu;)V", (void*)onContextMenuClosed}, + }; + +#define FIND_AND_CHECK_CLASS(CLASS_NAME) \ + clazz = env->FindClass(CLASS_NAME); \ + if (!clazz) { \ + __android_log_print(ANDROID_LOG_FATAL, qtTagText(), classErrorMsgFmt(), CLASS_NAME); \ + return false; \ + } + +#define GET_AND_CHECK_METHOD(VAR, CLASS, METHOD_NAME, METHOD_SIGNATURE) \ + VAR = env->GetMethodID(CLASS, METHOD_NAME, METHOD_SIGNATURE); \ + if (!VAR) { \ + __android_log_print(ANDROID_LOG_FATAL, qtTagText(), methodErrorMsgFmt(), METHOD_NAME, METHOD_SIGNATURE); \ + return false; \ + } + +#define GET_AND_CHECK_STATIC_METHOD(VAR, CLASS, METHOD_NAME, METHOD_SIGNATURE) \ + VAR = env->GetStaticMethodID(CLASS, METHOD_NAME, METHOD_SIGNATURE); \ + if (!VAR) { \ + __android_log_print(ANDROID_LOG_FATAL, qtTagText(), methodErrorMsgFmt(), METHOD_NAME, METHOD_SIGNATURE); \ + return false; \ + } + +#define GET_AND_CHECK_STATIC_FIELD(VAR, CLASS, FIELD_NAME, FIELD_SIGNATURE) \ + VAR = env->GetStaticFieldID(CLASS, FIELD_NAME, FIELD_SIGNATURE); \ + if (!VAR) { \ + __android_log_print(ANDROID_LOG_FATAL, qtTagText(), methodErrorMsgFmt(), FIELD_NAME, FIELD_SIGNATURE); \ + return false; \ + } + + bool registerNatives(JNIEnv *env) + { + jclass appClass = applicationClass(); + + if (env->RegisterNatives(appClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) { + __android_log_print(ANDROID_LOG_FATAL,"Qt", "RegisterNatives failed"); + return false; + } + + GET_AND_CHECK_STATIC_METHOD(openContextMenuMethodID, appClass, "openContextMenu", "()V"); + GET_AND_CHECK_STATIC_METHOD(closeContextMenuMethodID, appClass, "closeContextMenu", "()V"); + GET_AND_CHECK_STATIC_METHOD(resetOptionsMenuMethodID, appClass, "resetOptionsMenu", "()V"); + + jclass clazz; + FIND_AND_CHECK_CLASS("android/view/Menu"); + GET_AND_CHECK_METHOD(clearMenuMethodID, clazz, "clear", "()V"); + GET_AND_CHECK_METHOD(addMenuItemMethodID, clazz, "add", "(IIILjava/lang/CharSequence;)Landroid/view/MenuItem;"); + jfieldID menuNoneFiledId; + GET_AND_CHECK_STATIC_FIELD(menuNoneFiledId, clazz, "NONE", "I"); + menuNoneValue = env->GetStaticIntField(clazz, menuNoneFiledId); + + FIND_AND_CHECK_CLASS("android/view/ContextMenu"); + GET_AND_CHECK_METHOD(setHeaderTitleContextMenuMethodID, clazz, "setHeaderTitle","(Ljava/lang/CharSequence;)Landroid/view/ContextMenu;"); + + FIND_AND_CHECK_CLASS("android/view/MenuItem"); + GET_AND_CHECK_METHOD(setCheckableMenuItemMethodID, clazz, "setCheckable", "(Z)Landroid/view/MenuItem;"); + GET_AND_CHECK_METHOD(setCheckedMenuItemMethodID, clazz, "setChecked", "(Z)Landroid/view/MenuItem;"); + GET_AND_CHECK_METHOD(setEnabledMenuItemMethodID, clazz, "setEnabled", "(Z)Landroid/view/MenuItem;"); + GET_AND_CHECK_METHOD(setIconMenuItemMethodID, clazz, "setIcon", "(Landroid/graphics/drawable/Drawable;)Landroid/view/MenuItem;"); + GET_AND_CHECK_METHOD(setVisibleMenuItemMethodID, clazz, "setVisible", "(Z)Landroid/view/MenuItem;"); + return true; + } +} diff --git a/src/plugins/platforms/android/src/androidjnimenu.h b/src/plugins/platforms/android/src/androidjnimenu.h new file mode 100644 index 0000000000..7c5422f67b --- /dev/null +++ b/src/plugins/platforms/android/src/androidjnimenu.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ANDROIDJNIMENU_H +#define ANDROIDJNIMENU_H + +#include + +class QAndroidPlatformMenuBar; +class QAndroidPlatformMenu; +class QAndroidPlatformMenuItem; +class QWindow; + +namespace QtAndroidMenu +{ + // Menu support + void showContextMenu(QAndroidPlatformMenu *menu, JNIEnv *env = 0); + void hideContextMenu(QAndroidPlatformMenu *menu); + void syncMenu(QAndroidPlatformMenu *menu); + void androidPlatformMenuDestroyed(QAndroidPlatformMenu *menu); + + void setMenuBar(QAndroidPlatformMenuBar *menuBar, QWindow *window); + void setActiveTopLevelWindow(QWindow *window); + void addMenuBar(QAndroidPlatformMenuBar *menuBar); + void removeMenuBar(QAndroidPlatformMenuBar *menuBar); + + // Menu support + bool registerNatives(JNIEnv *env); +} + +#endif // ANDROIDJNIMENU_H diff --git a/src/plugins/platforms/android/src/androidplatformplugin.cpp b/src/plugins/platforms/android/src/androidplatformplugin.cpp new file mode 100644 index 0000000000..71c5096e16 --- /dev/null +++ b/src/plugins/platforms/android/src/androidplatformplugin.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include "qandroidplatformintegration.h" + +QT_BEGIN_NAMESPACE + +class QAndroidPlatformIntegrationPlugin: public QPlatformIntegrationPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.1" FILE "android.json") +public: + QPlatformIntegration *create(const QString &key, const QStringList ¶mList); +}; + + +QPlatformIntegration *QAndroidPlatformIntegrationPlugin::create(const QString &key, const QStringList ¶mList) +{ + Q_UNUSED(paramList); + if (key.toLower() == "android") + return new QAndroidPlatformIntegration(paramList); + return 0; +} + +QT_END_NAMESPACE +#include "androidplatformplugin.moc" + diff --git a/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp b/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp new file mode 100644 index 0000000000..aa8ee57341 --- /dev/null +++ b/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidopenglcontext.h" +#include "qandroidopenglplatformwindow.h" +#include "qandroidplatformintegration.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +QAndroidOpenGLContext::QAndroidOpenGLContext(const QAndroidPlatformIntegration *integration, + const QSurfaceFormat &format, + QPlatformOpenGLContext *share, + EGLDisplay display, + EGLenum eglApi) + : QEglFSContext(format, share, display, eglApi) + , m_platformIntegration(integration) +{ +} + +void QAndroidOpenGLContext::swapBuffers(QPlatformSurface *surface) +{ + QEglFSContext::swapBuffers(surface); + + QAndroidOpenGLPlatformWindow *primaryWindow = m_platformIntegration->primaryWindow(); + if (primaryWindow == surface) { + primaryWindow->lock(); + QSize size = primaryWindow->scheduledResize(); + if (size.isValid()) { + QRect geometry(QPoint(0, 0), size); + primaryWindow->setGeometry(geometry); + primaryWindow->scheduleResize(QSize()); + } + primaryWindow->unlock(); + } +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.h b/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.h new file mode 100644 index 0000000000..c4c5a430ad --- /dev/null +++ b/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.h @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDOPENGLCONTEXT_H +#define QANDROIDOPENGLCONTEXT_H + +#include +#include "qeglfscontext.h" + +QT_BEGIN_NAMESPACE + +class QAndroidPlatformIntegration; +class QAndroidOpenGLContext : public QEglFSContext +{ +public: + QAndroidOpenGLContext(const QAndroidPlatformIntegration *integration, + const QSurfaceFormat &format, + QPlatformOpenGLContext *share, + EGLDisplay display, + EGLenum eglApi = EGL_OPENGL_ES_API); + + void swapBuffers(QPlatformSurface *surface); + +private: + const QAndroidPlatformIntegration *m_platformIntegration; +}; + +QT_END_NAMESPACE + +#endif // QANDROIDOPENGLCONTEXT_H diff --git a/src/plugins/platforms/android/src/opengl/qandroidopenglplatformwindow.cpp b/src/plugins/platforms/android/src/opengl/qandroidopenglplatformwindow.cpp new file mode 100644 index 0000000000..15c6559157 --- /dev/null +++ b/src/plugins/platforms/android/src/opengl/qandroidopenglplatformwindow.cpp @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidopenglplatformwindow.h" +#include "androidjnimain.h" +#include + +QT_BEGIN_NAMESPACE + +QAndroidOpenGLPlatformWindow::QAndroidOpenGLPlatformWindow(QWindow *window) + : QEglFSWindow(window) +{ +} + +bool QAndroidOpenGLPlatformWindow::isExposed() const +{ + return QtAndroid::nativeWindow(false) != 0 && QEglFSWindow::isExposed(); +} + +void QAndroidOpenGLPlatformWindow::invalidateSurface() +{ + QWindowSystemInterface::handleExposeEvent(window(), QRegion()); // Obscure event + QWindowSystemInterface::flushWindowSystemEvents(); + QEglFSWindow::invalidateSurface(); +} + +void QAndroidOpenGLPlatformWindow::resetSurface() +{ + QEglFSWindow::resetSurface(); + QWindowSystemInterface::handleExposeEvent(window(), QRegion(geometry())); // Expose event + QWindowSystemInterface::flushWindowSystemEvents(); +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/android/src/opengl/qandroidopenglplatformwindow.h b/src/plugins/platforms/android/src/opengl/qandroidopenglplatformwindow.h new file mode 100644 index 0000000000..b835cb3246 --- /dev/null +++ b/src/plugins/platforms/android/src/opengl/qandroidopenglplatformwindow.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDOPENGLPLATFORMWINDOW_H +#define QANDROIDOPENGLPLATFORMWINDOW_H + +#include "qeglfswindow.h" +#include + +QT_BEGIN_NAMESPACE + +class QAndroidOpenGLPlatformWindow : public QEglFSWindow +{ +public: + QAndroidOpenGLPlatformWindow(QWindow *window); + + QSize scheduledResize() const { return m_scheduledResize; } + void scheduleResize(const QSize &size) { m_scheduledResize = size; } + + void lock() { m_lock.lock(); } + void unlock() { m_lock.unlock(); } + + bool isExposed() const; + + void invalidateSurface(); + void resetSurface(); + +private: + QSize m_scheduledResize; + QMutex m_lock; +}; + +QT_END_NAMESPACE + +#endif // QANDROIDOPENGLPLATFORMWINDOW_H diff --git a/src/plugins/platforms/android/src/opengl/qeglfshooks_android.cpp b/src/plugins/platforms/android/src/opengl/qeglfshooks_android.cpp new file mode 100644 index 0000000000..cd415843a7 --- /dev/null +++ b/src/plugins/platforms/android/src/opengl/qeglfshooks_android.cpp @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qeglfshooks.h" +#include "androidjnimain.h" +#include "qandroidplatformintegration.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +class QEglFSAndroidHooks: public QEglFSHooks +{ +public: + void platformInit(); + void platformDestroy(); + EGLNativeDisplayType platformDisplay() const; + QSize screenSize() const; + QSizeF physicalScreenSize() const; + int screenDepth() const; + QSurfaceFormat surfaceFormatFor(const QSurfaceFormat &inputFormat) const; + EGLNativeWindowType createNativeWindow(const QSize &size, const QSurfaceFormat &format); + void destroyNativeWindow(EGLNativeWindowType window); + bool hasCapability(QPlatformIntegration::Capability cap) const; +}; + +void QEglFSAndroidHooks::platformInit() +{ +} + +void QEglFSAndroidHooks::platformDestroy() +{ +} + +EGLNativeDisplayType QEglFSAndroidHooks::platformDisplay() const +{ + return EGL_DEFAULT_DISPLAY; +} + +QSize QEglFSAndroidHooks::screenSize() const +{ + return QtAndroid::nativeWindowSize(); +} + +QSizeF QEglFSAndroidHooks::physicalScreenSize() const +{ + return QSizeF(QAndroidPlatformIntegration::m_defaultPhysicalSizeWidth, QAndroidPlatformIntegration::m_defaultPhysicalSizeHeight); +} + + +EGLNativeWindowType QEglFSAndroidHooks::createNativeWindow(const QSize &size, const QSurfaceFormat &format) +{ + ANativeWindow *window = QtAndroid::nativeWindow(); + if (window != 0) + ANativeWindow_acquire(window); + + return window; +} + +void QEglFSAndroidHooks::destroyNativeWindow(EGLNativeWindowType window) +{ + ANativeWindow_release(window); +} + +bool QEglFSAndroidHooks::hasCapability(QPlatformIntegration::Capability capability) const +{ + switch (capability) { + case QPlatformIntegration::OpenGL: return true; + case QPlatformIntegration::ThreadedOpenGL: return true; + default: return false; + }; +} + +int QEglFSAndroidHooks::screenDepth() const +{ + // ### Hardcoded + return 32; +} + +QSurfaceFormat QEglFSAndroidHooks::surfaceFormatFor(const QSurfaceFormat &inputFormat) const +{ + QSurfaceFormat ret(inputFormat); + ret.setAlphaBufferSize(8); + ret.setRedBufferSize(8); + ret.setGreenBufferSize(8); + ret.setBlueBufferSize(8); + return ret; +} + +static QEglFSAndroidHooks eglFSAndroidHooks; +QEglFSHooks *platformHooks = &eglFSAndroidHooks; + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/android/src/qandroidassetsfileenginehandler.cpp b/src/plugins/platforms/android/src/qandroidassetsfileenginehandler.cpp new file mode 100644 index 0000000000..f3cb2586cc --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidassetsfileenginehandler.cpp @@ -0,0 +1,288 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidassetsfileenginehandler.h" +#include "androidjnimain.h" + +#include + +class AndroidAbstractFileEngineIterator: public QAbstractFileEngineIterator +{ +public: + AndroidAbstractFileEngineIterator(QDir::Filters filters, + const QStringList &nameFilters, + AAssetDir *asset, + const QString &path) + : QAbstractFileEngineIterator(filters, nameFilters) + { + AAssetDir_rewind(asset); + const char *fileName; + while ((fileName = AAssetDir_getNextFileName(asset))) + m_items << fileName; + m_index = -1; + m_path = path; + } + + virtual QFileInfo currentFileInfo() const + { + return QFileInfo(currentFilePath()); + } + + virtual QString currentFileName() const + { + if (m_index < 0 || m_index >= m_items.size()) + return QString(); + return m_items[m_index]; + } + + virtual QString currentFilePath() const + { + return m_path + currentFileName(); + } + + virtual bool hasNext() const + { + return m_items.size() && (m_index < m_items.size() - 1); + } + + virtual QString next() + { + if (!hasNext()) + return QString(); + m_index++; + return currentFileName(); + } + +private: + QString m_path; + QStringList m_items; + int m_index; +}; + +class AndroidAbstractFileEngine: public QAbstractFileEngine +{ +public: + explicit AndroidAbstractFileEngine(AAsset *asset, const QString &fileName) + { + m_assetDir = 0; + m_assetFile = asset; + m_fileName = fileName; + } + + explicit AndroidAbstractFileEngine(AAssetDir *asset, const QString &fileName) + { + m_assetFile = 0; + m_assetDir = asset; + m_fileName = fileName; + if (!m_fileName.endsWith(QChar(QLatin1Char('/')))) + m_fileName += "/"; + } + + ~AndroidAbstractFileEngine() + { + close(); + if (m_assetDir) + AAssetDir_close(m_assetDir); + } + + virtual bool open(QIODevice::OpenMode openMode) + { + if (m_assetFile) + return openMode & QIODevice::ReadOnly; + return false; + } + + virtual bool close() + { + if (m_assetFile) { + AAsset_close(m_assetFile); + m_assetFile = 0; + return true; + } + return false; + } + + virtual qint64 size() const + { + if (m_assetFile) + return AAsset_getLength(m_assetFile); + return -1; + } + + virtual qint64 pos() const + { + if (m_assetFile) + return AAsset_seek(m_assetFile, 0, SEEK_CUR); + return -1; + } + + virtual bool seek(qint64 pos) + { + if (m_assetFile) + return pos == AAsset_seek(m_assetFile, pos, SEEK_SET); + return false; + } + + virtual qint64 read(char *data, qint64 maxlen) + { + if (m_assetFile) + return AAsset_read(m_assetFile, data, maxlen); + return -1; + } + + virtual bool isSequential() const + { + return false; + } + + virtual bool caseSensitive() const + { + return true; + } + + virtual bool isRelativePath() const + { + return false; + } + + virtual FileFlags fileFlags(FileFlags type = FileInfoAll) const + { + FileFlags flags(ReadOwnerPerm|ReadUserPerm|ReadGroupPerm|ReadOtherPerm|ExistsFlag); + if (m_assetFile) + flags |= FileType; + if (m_assetDir) + flags |= DirectoryType; + + return type & flags; + } + + virtual QString fileName(FileName file = DefaultName) const + { + int pos; + switch (file) { + case DefaultName: + case AbsoluteName: + case CanonicalName: + return m_fileName; + case BaseName: + if ((pos = m_fileName.lastIndexOf(QChar(QLatin1Char('/')))) != -1) + return m_fileName.mid(pos); + else + return m_fileName; + case PathName: + case AbsolutePathName: + case CanonicalPathName: + if ((pos = m_fileName.lastIndexOf(QChar(QLatin1Char('/')))) != -1) + return m_fileName.left(pos); + else + return m_fileName; + default: + return QString(); + } + } + + virtual void setFileName(const QString &file) + { + if (file == m_fileName) + return; + + m_fileName = file; + if (!m_fileName.endsWith(QChar(QLatin1Char('/')))) + m_fileName += "/"; + + close(); + } + + virtual Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) + { + if (m_assetDir) + return new AndroidAbstractFileEngineIterator(filters, filterNames, m_assetDir, m_fileName); + return 0; + } + +private: + AAsset *m_assetFile; + AAssetDir *m_assetDir; + QString m_fileName; +}; + + +AndroidAssetsFileEngineHandler::AndroidAssetsFileEngineHandler() +{ + m_assetManager = QtAndroid::assetManager(); +} + +AndroidAssetsFileEngineHandler::~AndroidAssetsFileEngineHandler() +{ +} + +QAbstractFileEngine * AndroidAssetsFileEngineHandler::create(const QString &fileName) const +{ + if (fileName.isEmpty()) + return 0; + + if (!fileName.startsWith(QLatin1String("assets:/"))) + return 0; + + int prefixSize=8; + + m_path.clear(); + if (!fileName.endsWith(QLatin1Char('/'))) { + m_path = fileName.toUtf8(); + AAsset *asset = AAssetManager_open(m_assetManager, + m_path.constData() + prefixSize, + AASSET_MODE_BUFFER); + if (asset) + return new AndroidAbstractFileEngine(asset, fileName); + } + + if (!m_path.size()) + m_path = fileName.left(fileName.length() - 1).toUtf8(); + + AAssetDir *assetDir = AAssetManager_openDir(m_assetManager, m_path.constData() + prefixSize); + if (assetDir) { + if (AAssetDir_getNextFileName(assetDir)) + return new AndroidAbstractFileEngine(assetDir, fileName); + else + AAssetDir_close(assetDir); + } + return 0; +} diff --git a/src/plugins/platforms/android/src/qandroidassetsfileenginehandler.h b/src/plugins/platforms/android/src/qandroidassetsfileenginehandler.h new file mode 100644 index 0000000000..9bff6a012e --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidassetsfileenginehandler.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDASSETSFILEENGINEHANDLER_H +#define QANDROIDASSETSFILEENGINEHANDLER_H + +#include +#include + +class AndroidAssetsFileEngineHandler: public QAbstractFileEngineHandler +{ +public: + AndroidAssetsFileEngineHandler(); + virtual ~AndroidAssetsFileEngineHandler(); + QAbstractFileEngine *create(const QString &fileName) const; + +private: + AAssetManager *m_assetManager; + mutable QByteArray m_path; +}; + +#endif // QANDROIDASSETSFILEENGINEHANDLER_H diff --git a/src/plugins/platforms/android/src/qandroidinputcontext.cpp b/src/plugins/platforms/android/src/qandroidinputcontext.cpp new file mode 100644 index 0000000000..37fb605ea8 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidinputcontext.cpp @@ -0,0 +1,644 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "qandroidinputcontext.h" +#include "androidjnimain.h" +#include "androidjniinput.h" +#include +#include +#include +#include +#include +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +static QAndroidInputContext *m_androidInputContext = 0; +static char const *const QtNativeInputConnectionClassName = "org/qtproject/qt5/android/QtNativeInputConnection"; +static char const *const QtExtractedTextClassName = "org/qtproject/qt5/android/QtExtractedText"; +static jclass m_extractedTextClass = 0; +static jmethodID m_classConstructorMethodID = 0; +static jfieldID m_partialEndOffsetFieldID = 0; +static jfieldID m_partialStartOffsetFieldID = 0; +static jfieldID m_selectionEndFieldID = 0; +static jfieldID m_selectionStartFieldID = 0; +static jfieldID m_startOffsetFieldID = 0; +static jfieldID m_textFieldID = 0; + +static jboolean commitText(JNIEnv *env, jobject /*thiz*/, jstring text, jint newCursorPosition) +{ + if (!m_androidInputContext) + return JNI_FALSE; + + jboolean isCopy; + const jchar *jstr = env->GetStringChars(text, &isCopy); + QString str(reinterpret_cast(jstr), env->GetStringLength(text)); + env->ReleaseStringChars(text, jstr); + + return m_androidInputContext->commitText(str, newCursorPosition); +} + +static jboolean deleteSurroundingText(JNIEnv */*env*/, jobject /*thiz*/, jint leftLength, jint rightLength) +{ + if (!m_androidInputContext) + return JNI_FALSE; + + return m_androidInputContext->deleteSurroundingText(leftLength, rightLength); +} + +static jboolean finishComposingText(JNIEnv */*env*/, jobject /*thiz*/) +{ + if (!m_androidInputContext) + return JNI_FALSE; + + return m_androidInputContext->finishComposingText(); +} + +static jint getCursorCapsMode(JNIEnv */*env*/, jobject /*thiz*/, jint reqModes) +{ + if (!m_androidInputContext) + return 0; + + return m_androidInputContext->getCursorCapsMode(reqModes); +} + +static jobject getExtractedText(JNIEnv *env, jobject /*thiz*/, int hintMaxChars, int hintMaxLines, jint flags) +{ + if (!m_androidInputContext) + return 0; + + const QAndroidInputContext::ExtractedText &extractedText = + m_androidInputContext->getExtractedText(hintMaxChars, hintMaxLines, flags); + + jobject object = env->NewObject(m_extractedTextClass, m_classConstructorMethodID); + env->SetIntField(object, m_partialStartOffsetFieldID, extractedText.partialStartOffset); + env->SetIntField(object, m_partialEndOffsetFieldID, extractedText.partialEndOffset); + env->SetIntField(object, m_selectionStartFieldID, extractedText.selectionStart); + env->SetIntField(object, m_selectionEndFieldID, extractedText.selectionEnd); + env->SetIntField(object, m_startOffsetFieldID, extractedText.startOffset); + env->SetObjectField(object, + m_textFieldID, + env->NewString(reinterpret_cast(extractedText.text.constData()), + jsize(extractedText.text.length()))); + + return object; +} + +static jstring getSelectedText(JNIEnv *env, jobject /*thiz*/, jint flags) +{ + if (!m_androidInputContext) + return 0; + + const QString &text = m_androidInputContext->getSelectedText(flags); + return env->NewString(reinterpret_cast(text.constData()), jsize(text.length())); +} + +static jstring getTextAfterCursor(JNIEnv *env, jobject /*thiz*/, jint length, jint flags) +{ + if (!m_androidInputContext) + return 0; + + const QString &text = m_androidInputContext->getTextAfterCursor(length, flags); + return env->NewString(reinterpret_cast(text.constData()), jsize(text.length())); +} + +static jstring getTextBeforeCursor(JNIEnv *env, jobject /*thiz*/, jint length, jint flags) +{ + if (!m_androidInputContext) + return 0; + + const QString &text = m_androidInputContext->getTextBeforeCursor(length, flags); + return env->NewString(reinterpret_cast(text.constData()), jsize(text.length())); +} + +static jboolean setComposingText(JNIEnv *env, jobject /*thiz*/, jstring text, jint newCursorPosition) +{ + if (!m_androidInputContext) + return JNI_FALSE; + + jboolean isCopy; + const jchar *jstr = env->GetStringChars(text, &isCopy); + QString str(reinterpret_cast(jstr), env->GetStringLength(text)); + env->ReleaseStringChars(text, jstr); + + return m_androidInputContext->setComposingText(str, newCursorPosition); +} + +static jboolean setSelection(JNIEnv */*env*/, jobject /*thiz*/, jint start, jint end) +{ + if (!m_androidInputContext) + return JNI_FALSE; + + return m_androidInputContext->setSelection(start, end); +} + +static jboolean selectAll(JNIEnv */*env*/, jobject /*thiz*/) +{ + if (!m_androidInputContext) + return JNI_FALSE; + + return m_androidInputContext->selectAll(); +} + +static jboolean cut(JNIEnv */*env*/, jobject /*thiz*/) +{ + if (!m_androidInputContext) + return JNI_FALSE; + + return m_androidInputContext->cut(); +} + +static jboolean copy(JNIEnv */*env*/, jobject /*thiz*/) +{ + if (!m_androidInputContext) + return JNI_FALSE; + + return m_androidInputContext->copy(); +} + +static jboolean copyURL(JNIEnv */*env*/, jobject /*thiz*/) +{ + if (!m_androidInputContext) + return JNI_FALSE; + + return m_androidInputContext->copyURL(); +} + +static jboolean paste(JNIEnv */*env*/, jobject /*thiz*/) +{ + if (!m_androidInputContext) + return JNI_FALSE; + + return m_androidInputContext->paste(); +} + + +static JNINativeMethod methods[] = { + {"commitText", "(Ljava/lang/String;I)Z", (void *)commitText}, + {"deleteSurroundingText", "(II)Z", (void *)deleteSurroundingText}, + {"finishComposingText", "()Z", (void *)finishComposingText}, + {"getCursorCapsMode", "(I)I", (void *)getCursorCapsMode}, + {"getExtractedText", "(III)Lorg/qtproject/qt5/android/QtExtractedText;", (void *)getExtractedText}, + {"getSelectedText", "(I)Ljava/lang/String;", (void *)getSelectedText}, + {"getTextAfterCursor", "(II)Ljava/lang/String;", (void *)getTextAfterCursor}, + {"getTextBeforeCursor", "(II)Ljava/lang/String;", (void *)getTextBeforeCursor}, + {"setComposingText", "(Ljava/lang/String;I)Z", (void *)setComposingText}, + {"setSelection", "(II)Z", (void *)setSelection}, + {"selectAll", "()Z", (void *)selectAll}, + {"cut", "()Z", (void *)cut}, + {"copy", "()Z", (void *)copy}, + {"copyURL", "()Z", (void *)copyURL}, + {"paste", "()Z", (void *)paste} +}; + + +QAndroidInputContext::QAndroidInputContext():QPlatformInputContext() +{ + JNIEnv *env = 0; + if (QtAndroid::javaVM()->AttachCurrentThread(&env, NULL) < 0) { + qCritical() << "AttachCurrentThread failed"; + return; + } + + jclass clazz = QtAndroid::findClass(QtNativeInputConnectionClassName, env); + if (clazz == NULL) { + qCritical() << "Native registration unable to find class '" + << QtNativeInputConnectionClassName + << "'"; + return; + } + + if (env->RegisterNatives(clazz, methods, sizeof(methods) / sizeof(methods[0])) < 0) { + qCritical() << "RegisterNatives failed for '" + << QtNativeInputConnectionClassName + << "'"; + return; + } + + clazz = QtAndroid::findClass(QtExtractedTextClassName, env); + if (clazz == NULL) { + qCritical() << "Native registration unable to find class '" + << QtExtractedTextClassName + << "'"; + return; + } + + m_extractedTextClass = static_cast(env->NewGlobalRef(clazz)); + m_classConstructorMethodID = env->GetMethodID(m_extractedTextClass, "", "()V"); + if (m_classConstructorMethodID == NULL) { + qCritical() << "GetMethodID failed"; + return; + } + + m_partialEndOffsetFieldID = env->GetFieldID(m_extractedTextClass, "partialEndOffset", "I"); + if (m_partialEndOffsetFieldID == NULL) { + qCritical() << "Can't find field partialEndOffset"; + return; + } + + m_partialStartOffsetFieldID = env->GetFieldID(m_extractedTextClass, "partialStartOffset", "I"); + if (m_partialStartOffsetFieldID == NULL) { + qCritical() << "Can't find field partialStartOffset"; + return; + } + + m_selectionEndFieldID = env->GetFieldID(m_extractedTextClass, "selectionEnd", "I"); + if (m_selectionEndFieldID == NULL) { + qCritical() << "Can't find field selectionEnd"; + return; + } + + m_selectionStartFieldID = env->GetFieldID(m_extractedTextClass, "selectionStart", "I"); + if (m_selectionStartFieldID == NULL) { + qCritical() << "Can't find field selectionStart"; + return; + } + + m_startOffsetFieldID = env->GetFieldID(m_extractedTextClass, "startOffset", "I"); + if (m_startOffsetFieldID == NULL) { + qCritical() << "Can't find field startOffset"; + return; + } + + m_textFieldID = env->GetFieldID(m_extractedTextClass, "text", "Ljava/lang/String;"); + if (m_textFieldID == NULL) { + qCritical() << "Can't find field text"; + return; + } + qRegisterMetaType("QInputMethodEvent*"); + qRegisterMetaType("QInputMethodQueryEvent*"); + m_androidInputContext = this; +} + +QAndroidInputContext::~QAndroidInputContext() +{ + m_androidInputContext = 0; + m_extractedTextClass = 0; + m_partialEndOffsetFieldID = 0; + m_partialStartOffsetFieldID = 0; + m_selectionEndFieldID = 0; + m_selectionStartFieldID = 0; + m_startOffsetFieldID = 0; + m_textFieldID = 0; +} + +void QAndroidInputContext::reset() +{ + clear(); + if (qGuiApp->focusObject()) + QtAndroidInput::resetSoftwareKeyboard(); + else + QtAndroidInput::hideSoftwareKeyboard(); +} + +void QAndroidInputContext::commit() +{ + finishComposingText(); + + QSharedPointer query = focusObjectInputMethodQuery(); + if (!query.isNull()) { + const int cursorPos = query->value(Qt::ImCursorPosition).toInt(); + QtAndroidInput::updateSelection(cursorPos, cursorPos, -1, -1); //selection empty and no pre-edit text + } +} + +void QAndroidInputContext::update(Qt::InputMethodQueries queries) +{ + QSharedPointer query = focusObjectInputMethodQuery(queries); + if (query.isNull()) + return; +#warning TODO extract the needed data from query +} + +void QAndroidInputContext::invokeAction(QInputMethod::Action action, int cursorPosition) +{ +#warning TODO Handle at least QInputMethod::ContextMenu action + Q_UNUSED(action) + Q_UNUSED(cursorPosition) + + if (action == QInputMethod::Click) + commit(); +} + +QRectF QAndroidInputContext::keyboardRect() const +{ + return QPlatformInputContext::keyboardRect(); +} + +bool QAndroidInputContext::isAnimating() const +{ + return false; +} + +void QAndroidInputContext::showInputPanel() +{ + QSharedPointer query = focusObjectInputMethodQuery(); + if (query.isNull()) + return; + QRectF itemRect = qGuiApp->inputMethod()->inputItemRectangle(); + QRect rect = qGuiApp->inputMethod()->inputItemTransform().mapRect(itemRect).toRect(); + QWindow *window = qGuiApp->focusWindow(); + if (window) + rect = QRect(window->mapToGlobal(rect.topLeft()), rect.size()); + + QtAndroidInput::showSoftwareKeyboard(rect.left(), + rect.top(), + rect.width(), + rect.height(), + query->value(Qt::ImHints).toUInt()); +} + +void QAndroidInputContext::hideInputPanel() +{ + QtAndroidInput::hideSoftwareKeyboard(); +} + +bool QAndroidInputContext::isInputPanelVisible() const +{ + return QtAndroidInput::isSoftwareKeyboardVisible(); +} + +bool QAndroidInputContext::isComposing() const +{ + return m_composingText.length(); +} + +void QAndroidInputContext::clear() +{ + m_composingText.clear(); + m_extractedText.clear(); +} + +void QAndroidInputContext::sendEvent(QObject *receiver, QInputMethodEvent *event) +{ + QCoreApplication::sendEvent(receiver, event); +} + +void QAndroidInputContext::sendEvent(QObject *receiver, QInputMethodQueryEvent *event) +{ + QCoreApplication::sendEvent(receiver, event); +} + +jboolean QAndroidInputContext::commitText(const QString &text, jint /*newCursorPosition*/) +{ + m_composingText = text; + return finishComposingText(); +} + +jboolean QAndroidInputContext::deleteSurroundingText(jint leftLength, jint rightLength) +{ + QSharedPointer query = focusObjectInputMethodQuery(); + if (query.isNull()) + return JNI_TRUE; + + m_composingText.clear(); + + QInputMethodEvent event; + event.setCommitString(QString(), -leftLength, leftLength+rightLength); + sendInputMethodEvent(&event); + clear(); + + return JNI_TRUE; +} + +jboolean QAndroidInputContext::finishComposingText() +{ + QInputMethodEvent event; + event.setCommitString(m_composingText); + sendInputMethodEvent(&event); + clear(); + + return JNI_TRUE; +} + +jint QAndroidInputContext::getCursorCapsMode(jint /*reqModes*/) +{ + jint res = 0; + QSharedPointer query = focusObjectInputMethodQuery(); + if (query.isNull()) + return res; + + const uint qtInputMethodHints = query->value(Qt::ImHints).toUInt(); + + if (qtInputMethodHints & Qt::ImhPreferUppercase) + res = CAP_MODE_SENTENCES; + + if (qtInputMethodHints & Qt::ImhUppercaseOnly) + res = CAP_MODE_CHARACTERS; + + return res; +} + +const QAndroidInputContext::ExtractedText &QAndroidInputContext::getExtractedText(jint hintMaxChars, jint /*hintMaxLines*/, jint /*flags*/) +{ + QSharedPointer query = focusObjectInputMethodQuery(); + if (query.isNull()) + return m_extractedText; + + if (hintMaxChars) + m_extractedText.text = query->value(Qt::ImSurroundingText).toString().right(hintMaxChars); + + m_extractedText.startOffset = query->value(Qt::ImCursorPosition).toInt(); + const QString &selection = query->value(Qt::ImCurrentSelection).toString(); + const int selLen = selection.length(); + if (selLen) { + m_extractedText.selectionStart = query->value(Qt::ImAnchorPosition).toInt(); + m_extractedText.selectionEnd = m_extractedText.startOffset; + } + + return m_extractedText; +} + +QString QAndroidInputContext::getSelectedText(jint /*flags*/) +{ + QSharedPointer query = focusObjectInputMethodQuery(); + if (query.isNull()) + return QString(); + + return query->value(Qt::ImCurrentSelection).toString(); +} + +QString QAndroidInputContext::getTextAfterCursor(jint length, jint /*flags*/) +{ + QSharedPointer query = focusObjectInputMethodQuery(); + if (query.isNull()) + return QString(); + + QString text = query->value(Qt::ImSurroundingText).toString(); + if (!text.length()) + return text; + + int cursorPos = query->value(Qt::ImCursorPosition).toInt(); + return text.mid(cursorPos, length); +} + +QString QAndroidInputContext::getTextBeforeCursor(jint length, jint /*flags*/) +{ + QSharedPointer query = focusObjectInputMethodQuery(); + if (query.isNull()) + return QString(); + + QString text = query->value(Qt::ImSurroundingText).toString(); + if (!text.length()) + return text; + + int cursorPos = query->value(Qt::ImCursorPosition).toInt(); + const int wordLeftPos = cursorPos - length; + return text.mid(wordLeftPos > 0 ? wordLeftPos : 0, cursorPos); +} + +jboolean QAndroidInputContext::setComposingText(const QString &text, jint newCursorPosition) +{ + if (newCursorPosition > 0) + newCursorPosition += text.length() - 1; + m_composingText = text; + QList attributes; + attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, + newCursorPosition, + 1, + QVariant())); + // Show compose text underlined + QTextCharFormat underlined; + underlined.setFontUnderline(true); + attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat,0, text.length(), + QVariant(underlined))); + + QInputMethodEvent event(m_composingText, attributes); + sendInputMethodEvent(&event); + + QSharedPointer query = focusObjectInputMethodQuery(); + if (!query.isNull()) { + int cursorPos = query->value(Qt::ImCursorPosition).toInt(); + int preeditLength = text.length(); + QtAndroidInput::updateSelection(cursorPos+preeditLength, cursorPos+preeditLength, cursorPos, cursorPos+preeditLength); + } + + return JNI_TRUE; +} + +jboolean QAndroidInputContext::setSelection(jint start, jint end) +{ + QList attributes; + attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Selection, + start, + end - start, + QVariant())); + + QInputMethodEvent event(QString(), attributes); + sendInputMethodEvent(&event); + return JNI_TRUE; +} + +jboolean QAndroidInputContext::selectAll() +{ +#warning TODO + return JNI_FALSE; +} + +jboolean QAndroidInputContext::cut() +{ +#warning TODO + return JNI_FALSE; +} + +jboolean QAndroidInputContext::copy() +{ +#warning TODO + return JNI_FALSE; +} + +jboolean QAndroidInputContext::copyURL() +{ +#warning TODO + return JNI_FALSE; +} + +jboolean QAndroidInputContext::paste() +{ +#warning TODO + return JNI_FALSE; +} + +QSharedPointer QAndroidInputContext::focusObjectInputMethodQuery(Qt::InputMethodQueries queries) +{ +#warning TODO make qGuiApp->focusObject() thread safe !!! + QObject *focusObject = qGuiApp->focusObject(); + if (!focusObject) + return QSharedPointer(); + + QSharedPointer ret = QSharedPointer(new QInputMethodQueryEvent(queries)); + if (qGuiApp->thread()==QThread::currentThread()) { + QCoreApplication::sendEvent(focusObject, ret.data()); + } else { + QMetaObject::invokeMethod(this, + "sendEvent", + Qt::BlockingQueuedConnection, + Q_ARG(QObject*, focusObject), + Q_ARG(QInputMethodQueryEvent*, ret.data())); + } + + return ret; +} + +void QAndroidInputContext::sendInputMethodEvent(QInputMethodEvent *event) +{ +#warning TODO make qGuiApp->focusObject() thread safe !!! + QObject *focusObject = qGuiApp->focusObject(); + if (!focusObject) + return; + + if (qGuiApp->thread() == QThread::currentThread()) { + QCoreApplication::sendEvent(focusObject, event); + } else { + QMetaObject::invokeMethod(this, + "sendEvent", + Qt::BlockingQueuedConnection, + Q_ARG(QObject*, focusObject), + Q_ARG(QInputMethodEvent*, event)); + } +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/android/src/qandroidinputcontext.h b/src/plugins/platforms/android/src/qandroidinputcontext.h new file mode 100644 index 0000000000..e2b8107044 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidinputcontext.h @@ -0,0 +1,130 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ANDROIDINPUTCONTEXT_H +#define ANDROIDINPUTCONTEXT_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QAndroidInputContext: public QPlatformInputContext +{ + Q_OBJECT + enum CapsMode + { + CAP_MODE_CHARACTERS = 0x00001000, + CAP_MODE_SENTENCES = 0x00004000, + CAP_MODE_WORDS = 0x00002000 + }; + +public: + struct ExtractedText + { + ExtractedText() { clear(); } + + void clear() + { + partialEndOffset = partialStartOffset = selectionEnd = selectionStart = startOffset = -1; + text.clear(); + } + + int partialEndOffset; + int partialStartOffset; + int selectionEnd; + int selectionStart; + int startOffset; + QString text; + }; + +public: + QAndroidInputContext(); + ~QAndroidInputContext(); + bool isValid() const { return true; } + + void reset(); + void commit(); + void update(Qt::InputMethodQueries queries); + void invokeAction(QInputMethod::Action action, int cursorPosition); + QRectF keyboardRect() const; + bool isAnimating() const; + void showInputPanel(); + void hideInputPanel(); + bool isInputPanelVisible() const; + + bool isComposing() const; + void clear(); + + //---------------// + jboolean commitText(const QString &text, jint newCursorPosition); + jboolean deleteSurroundingText(jint leftLength, jint rightLength); + jboolean finishComposingText(); + jint getCursorCapsMode(jint reqModes); + const ExtractedText &getExtractedText(jint hintMaxChars, jint hintMaxLines, jint flags); + QString getSelectedText(jint flags); + QString getTextAfterCursor(jint length, jint flags); + QString getTextBeforeCursor(jint length, jint flags); + jboolean setComposingText(const QString &text, jint newCursorPosition); + jboolean setSelection(jint start, jint end); + jboolean selectAll(); + jboolean cut(); + jboolean copy(); + jboolean copyURL(); + jboolean paste(); + +private: + QSharedPointer focusObjectInputMethodQuery(Qt::InputMethodQueries queries = Qt::ImQueryAll); + void sendInputMethodEvent(QInputMethodEvent *event); + +private slots: + virtual void sendEvent(QObject *receiver, QInputMethodEvent *event); + virtual void sendEvent(QObject *receiver, QInputMethodQueryEvent *event); + +private: + ExtractedText m_extractedText; + QString m_composingText; +}; + +QT_END_NAMESPACE + +#endif // ANDROIDINPUTCONTEXT_H diff --git a/src/plugins/platforms/android/src/qandroidplatformclipboard.cpp b/src/plugins/platforms/android/src/qandroidplatformclipboard.cpp new file mode 100644 index 0000000000..bc48b4935b --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformclipboard.cpp @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidplatformclipboard.h" +#include "androidjniclipboard.h" +#ifndef QT_NO_CLIPBOARD +#include + +QT_BEGIN_NAMESPACE + +QAndroidPlatformClipboard::QAndroidPlatformClipboard() +{ + QtAndroidClipboard::setClipboardListener(this); +} + +QMimeData *QAndroidPlatformClipboard::mimeData(QClipboard::Mode mode) +{ + if (QClipboard::Clipboard != mode || !QtAndroidClipboard::hasClipboardText()) + return 0; + + QMimeData *mimeData = new QMimeData(); + mimeData->setText(QtAndroidClipboard::clipboardText()); + return mimeData; +} + +void QAndroidPlatformClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode) +{ + if (!data || !data->hasText() || QClipboard::Clipboard != mode) + return; + + QtAndroidClipboard::setClipboardText(data->text()); +} + +bool QAndroidPlatformClipboard::supportsMode(QClipboard::Mode mode) const +{ + return QClipboard::Clipboard == mode; +} + +QT_END_NAMESPACE + +#endif // QT_NO_CLIPBOARD diff --git a/src/plugins/platforms/android/src/qandroidplatformclipboard.h b/src/plugins/platforms/android/src/qandroidplatformclipboard.h new file mode 100644 index 0000000000..644f326934 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformclipboard.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDPLATFORMCLIPBOARD_H +#define QANDROIDPLATFORMCLIPBOARD_H + +#include + +#ifndef QT_NO_CLIPBOARD +QT_BEGIN_NAMESPACE + +class QAndroidPlatformClipboard: public QPlatformClipboard +{ +public: + QAndroidPlatformClipboard(); + + virtual QMimeData *mimeData(QClipboard::Mode mode = QClipboard::Clipboard); + virtual void setMimeData(QMimeData *data, QClipboard::Mode mode = QClipboard::Clipboard); + virtual bool supportsMode(QClipboard::Mode mode) const; +}; + +QT_END_NAMESPACE +#endif // QT_NO_CLIPBOARD + +#endif // QANDROIDPLATFORMCLIPBOARD_H diff --git a/src/plugins/platforms/android/src/qandroidplatformfontdatabase.cpp b/src/plugins/platforms/android/src/qandroidplatformfontdatabase.cpp new file mode 100644 index 0000000000..7f68b44ed8 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformfontdatabase.cpp @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "qandroidplatformfontdatabase.h" + +QString QAndroidPlatformFontDatabase::fontDir() const +{ + return QLatin1String("/system/fonts"); +} + +void QAndroidPlatformFontDatabase::populateFontDatabase() +{ + QString fontpath = fontDir(); + + if (!QFile::exists(fontpath)) { + qFatal("QFontDatabase: Cannot find font directory %s - is Qt installed correctly?", + qPrintable(fontpath)); + } + + QDir dir(fontpath, QLatin1String("*.ttf")); + for (int i = 0; i < int(dir.count()); ++i) { + const QByteArray file = QFile::encodeName(dir.absoluteFilePath(dir[i])); + addTTFile(QByteArray(), file); + } +} + +QStringList QAndroidPlatformFontDatabase::fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QChar::Script script) const +{ + Q_UNUSED(family); + Q_UNUSED(style); + Q_UNUSED(script); + if (styleHint == QFont::Monospace) + return QString(qgetenv("QT_ANDROID_FONTS_MONOSPACE")).split(";"); + + return QString(qgetenv("QT_ANDROID_FONTS")).split(";"); +} diff --git a/src/plugins/platforms/android/src/qandroidplatformfontdatabase.h b/src/plugins/platforms/android/src/qandroidplatformfontdatabase.h new file mode 100644 index 0000000000..3cbfe95d36 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformfontdatabase.h @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDPLATFORMFONTDATABASE_H +#define QANDROIDPLATFORMFONTDATABASE_H + +#include + +class QAndroidPlatformFontDatabase: public QBasicFontDatabase +{ +public: + QString fontDir() const; + void populateFontDatabase(); + QStringList fallbacksForFamily(const QString &family, + QFont::Style style, + QFont::StyleHint styleHint, + QChar::Script script) const; +}; + +#endif // QANDROIDPLATFORMFONTDATABASE_H diff --git a/src/plugins/platforms/android/src/qandroidplatformintegration.cpp b/src/plugins/platforms/android/src/qandroidplatformintegration.cpp new file mode 100644 index 0000000000..1091416ccc --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformintegration.cpp @@ -0,0 +1,283 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidplatformintegration.h" +#include "qabstracteventdispatcher.h" +#include "androidjnimain.h" +#include +#include +#include +#include +#include "qandroidplatformservices.h" +#include "qandroidplatformfontdatabase.h" +#include "qandroidplatformclipboard.h" +#include + +#ifndef ANDROID_PLUGIN_OPENGL +# include "qandroidplatformscreen.h" +# include "qandroidplatformwindow.h" +# include +#else +# include "qeglfswindow.h" +# include "androidjnimenu.h" +# include "qandroidopenglcontext.h" +# include "qandroidopenglplatformwindow.h" +# include "qeglfshooks.h" +# include +#endif + +#include "qandroidplatformtheme.h" + +QT_BEGIN_NAMESPACE + +int QAndroidPlatformIntegration::m_defaultGeometryWidth = 320; +int QAndroidPlatformIntegration::m_defaultGeometryHeight = 455; +int QAndroidPlatformIntegration::m_defaultPhysicalSizeWidth = 50; +int QAndroidPlatformIntegration::m_defaultPhysicalSizeHeight = 71; + +void *QAndroidPlatformNativeInterface::nativeResourceForIntegration(const QByteArray &resource) +{ + if (resource=="JavaVM") + return QtAndroid::javaVM(); + if (resource == "QtActivity") + return QtAndroid::activity(); + + return 0; +} + +QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList ¶mList) +#ifdef ANDROID_PLUGIN_OPENGL + : m_primaryWindow(0) +#endif +{ + Q_UNUSED(paramList); + +#ifndef ANDROID_PLUGIN_OPENGL + m_eventDispatcher = createUnixEventDispatcher(); +#endif + + m_androidPlatformNativeInterface = new QAndroidPlatformNativeInterface(); + +#ifndef ANDROID_PLUGIN_OPENGL + m_primaryScreen = new QAndroidPlatformScreen(); + screenAdded(m_primaryScreen); + m_primaryScreen->setPhysicalSize(QSize(m_defaultPhysicalSizeWidth, m_defaultPhysicalSizeHeight)); + m_primaryScreen->setGeometry(QRect(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight)); +#endif + + m_mainThread = QThread::currentThread(); + QtAndroid::setAndroidPlatformIntegration(this); + + m_androidFDB = new QAndroidPlatformFontDatabase(); + m_androidPlatformServices = new QAndroidPlatformServices(); + m_androidPlatformClipboard = new QAndroidPlatformClipboard(); +} + +bool QAndroidPlatformIntegration::hasCapability(Capability cap) const +{ + switch (cap) { + case ThreadedPixmaps: return true; + default: +#ifndef ANDROID_PLUGIN_OPENGL + return QPlatformIntegration::hasCapability(cap); +#else + return QEglFSIntegration::hasCapability(cap); +#endif + } +} + +#ifndef ANDROID_PLUGIN_OPENGL +QPlatformBackingStore *QAndroidPlatformIntegration::createPlatformBackingStore(QWindow *window) const +{ + return new QFbBackingStore(window); +} + +QPlatformWindow *QAndroidPlatformIntegration::createPlatformWindow(QWindow *window) const +{ + return new QAndroidPlatformWindow(window); +} + +QAbstractEventDispatcher *QAndroidPlatformIntegration::guiThreadEventDispatcher() const +{ + return m_eventDispatcher; +} +#else // !ANDROID_PLUGIN_OPENGL +QPlatformWindow *QAndroidPlatformIntegration::createPlatformWindow(QWindow *window) const +{ + if (m_primaryWindow != 0) { + qWarning("QAndroidPlatformIntegration::createPlatformWindow: Unsupported case: More than " + "one top-level window created."); + } + + m_primaryWindow = new QAndroidOpenGLPlatformWindow(window); + m_primaryWindow->requestActivateWindow(); + QtAndroidMenu::setActiveTopLevelWindow(window); + + return m_primaryWindow; +} + +void QAndroidPlatformIntegration::invalidateNativeSurface() +{ + if (m_primaryWindow != 0) + m_primaryWindow->invalidateSurface(); +} + +void QAndroidPlatformIntegration::surfaceChanged() +{ + if (m_primaryWindow != 0) + m_primaryWindow->resetSurface(); +} + +QPlatformOpenGLContext *QAndroidPlatformIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const +{ + return new QAndroidOpenGLContext(this, + QEglFSHooks::hooks()->surfaceFormatFor(context->format()), + context->shareHandle(), + display()); +} +#endif // ANDROID_PLUGIN_OPENGL + +QAndroidPlatformIntegration::~QAndroidPlatformIntegration() +{ + delete m_androidPlatformNativeInterface; + delete m_androidFDB; + QtAndroid::setAndroidPlatformIntegration(NULL); +} +QPlatformFontDatabase *QAndroidPlatformIntegration::fontDatabase() const +{ + return m_androidFDB; +} + +#ifndef QT_NO_CLIPBOARD +QPlatformClipboard *QAndroidPlatformIntegration::clipboard() const +{ +static QAndroidPlatformClipboard *clipboard = 0; + if (!clipboard) + clipboard = new QAndroidPlatformClipboard; + + return clipboard; +} +#endif + +QPlatformInputContext *QAndroidPlatformIntegration::inputContext() const +{ + return &m_platformInputContext; +} + +QPlatformNativeInterface *QAndroidPlatformIntegration::nativeInterface() const +{ + return m_androidPlatformNativeInterface; +} + +QPlatformServices *QAndroidPlatformIntegration::services() const +{ + return m_androidPlatformServices; +} + +static const QLatin1String androidThemeName("android"); +QStringList QAndroidPlatformIntegration::themeNames() const +{ + return QStringList(QString(androidThemeName)); +} + +QPlatformTheme *QAndroidPlatformIntegration::createPlatformTheme(const QString &name) const +{ + if (androidThemeName == name) + return new QAndroidPlatformTheme; + + return 0; +} + +void QAndroidPlatformIntegration::setDefaultDisplayMetrics(int gw, int gh, int sw, int sh) +{ + m_defaultGeometryWidth = gw; + m_defaultGeometryHeight = gh; + m_defaultPhysicalSizeWidth = sw; + m_defaultPhysicalSizeHeight = sh; +} + +void QAndroidPlatformIntegration::setDefaultDesktopSize(int gw, int gh) +{ + m_defaultGeometryWidth = gw; + m_defaultGeometryHeight = gh; +} + + +#ifndef ANDROID_PLUGIN_OPENGL +void QAndroidPlatformIntegration::setDesktopSize(int width, int height) +{ + if (m_primaryScreen) + QMetaObject::invokeMethod(m_primaryScreen, "setGeometry", Qt::AutoConnection, Q_ARG(QRect, QRect(0,0,width, height))); +} + +void QAndroidPlatformIntegration::setDisplayMetrics(int width, int height) +{ + if (m_primaryScreen) + QMetaObject::invokeMethod(m_primaryScreen, "setPhysicalSize", Qt::AutoConnection, Q_ARG(QSize, QSize(width, height))); +} +#else +void QAndroidPlatformIntegration::setDesktopSize(int width, int height) +{ + m_defaultGeometryWidth = width; + m_defaultGeometryHeight = height; +} + +void QAndroidPlatformIntegration::setDisplayMetrics(int width, int height) +{ + m_defaultPhysicalSizeWidth = width; + m_defaultPhysicalSizeHeight = height; +} + +#endif + +void QAndroidPlatformIntegration::pauseApp() +{ + if (QAbstractEventDispatcher::instance(m_mainThread)) + QAbstractEventDispatcher::instance(m_mainThread)->interrupt(); +} + +void QAndroidPlatformIntegration::resumeApp() +{ + if (QAbstractEventDispatcher::instance(m_mainThread)) + QAbstractEventDispatcher::instance(m_mainThread)->wakeUp(); +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/android/src/qandroidplatformintegration.h b/src/plugins/platforms/android/src/qandroidplatformintegration.h new file mode 100644 index 0000000000..7dde277d25 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformintegration.h @@ -0,0 +1,158 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDPLATFORMINTERATION_H +#define QANDROIDPLATFORMINTERATION_H + +#include +#include +#include +#include + +#include +#include "qandroidinputcontext.h" + +#ifndef ANDROID_PLUGIN_OPENGL +# include "qandroidplatformscreen.h" +#else +# include "qeglfsintegration.h" +#endif + +QT_BEGIN_NAMESPACE + +class QDesktopWidget; +class QAndroidPlatformServices; + +#ifdef ANDROID_PLUGIN_OPENGL +class QAndroidOpenGLPlatformWindow; +#endif + +class QAndroidPlatformNativeInterface: public QPlatformNativeInterface +{ +public: + void *nativeResourceForIntegration(const QByteArray &resource); +}; + +class QAndroidPlatformIntegration +#ifndef ANDROID_PLUGIN_OPENGL + : public QPlatformIntegration +#else + : public QEglFSIntegration +#endif +{ + friend class QAndroidPlatformScreen; + +public: + QAndroidPlatformIntegration(const QStringList ¶mList); + ~QAndroidPlatformIntegration(); + + bool hasCapability(QPlatformIntegration::Capability cap) const; + +#ifndef ANDROID_PLUGIN_OPENGL + QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const; + QPlatformWindow *createPlatformWindow(QWindow *window) const; + QAbstractEventDispatcher *guiThreadEventDispatcher() const; + QAndroidPlatformScreen *screen() { return m_primaryScreen; } +#else + QPlatformWindow *createPlatformWindow(QWindow *window) const; + void invalidateNativeSurface(); + void surfaceChanged(); + QAndroidOpenGLPlatformWindow *primaryWindow() const { return m_primaryWindow; } + QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const; +#endif + + virtual void setDesktopSize(int width, int height); + virtual void setDisplayMetrics(int width, int height); + bool isVirtualDesktop() { return true; } + + QPlatformFontDatabase *fontDatabase() const; + +#ifndef QT_NO_CLIPBOARD + QPlatformClipboard *clipboard() const; +#endif + + QPlatformInputContext *inputContext() const; + QPlatformNativeInterface *nativeInterface() const; + QPlatformServices *services() const; + + QStringList themeNames() const; + QPlatformTheme *createPlatformTheme(const QString &name) const; + + void pauseApp(); + void resumeApp(); + static void setDefaultDisplayMetrics(int gw, int gh, int sw, int sh); + static void setDefaultDesktopSize(int gw, int gh); + + static QSize defaultDesktopSize() + { + return QSize(m_defaultGeometryWidth, m_defaultGeometryHeight); + } + +private: + + friend class QEglFSAndroidHooks; +#ifndef ANDROID_PLUGIN_OPENGL + QAbstractEventDispatcher *m_eventDispatcher; + QAndroidPlatformScreen *m_primaryScreen; +#else + mutable QAndroidOpenGLPlatformWindow *m_primaryWindow; +#endif + + QThread *m_mainThread; + + static int m_defaultGeometryWidth; + static int m_defaultGeometryHeight; + static int m_defaultPhysicalSizeWidth; + static int m_defaultPhysicalSizeHeight; + + QPlatformFontDatabase *m_androidFDB; + QImage *m_FbScreenImage; + QPainter *m_compositePainter; + QAndroidPlatformNativeInterface *m_androidPlatformNativeInterface; + QAndroidPlatformServices *m_androidPlatformServices; + QPlatformClipboard *m_androidPlatformClipboard; + + mutable QAndroidInputContext m_platformInputContext; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/platforms/android/src/qandroidplatformmenu.cpp b/src/plugins/platforms/android/src/qandroidplatformmenu.cpp new file mode 100644 index 0000000000..36247e86f9 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformmenu.cpp @@ -0,0 +1,167 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidplatformmenu.h" +#include "qandroidplatformmenuitem.h" +#include "androidjnimenu.h" + +QAndroidPlatformMenu::QAndroidPlatformMenu() +{ + m_tag = reinterpret_cast(this); // QMenu will overwrite this later, but we need a unique ID for QtQuick + m_enabled = true; + m_isVisible = true; +} + +QAndroidPlatformMenu::~QAndroidPlatformMenu() +{ + QtAndroidMenu::androidPlatformMenuDestroyed(this); +} + +void QAndroidPlatformMenu::insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before) +{ + QMutexLocker lock(&m_menuItemsMutex); + m_menuItems.insert(qFind(m_menuItems.begin(), + m_menuItems.end(), + static_cast(before)), + static_cast(menuItem)); +} + +void QAndroidPlatformMenu::removeMenuItem(QPlatformMenuItem *menuItem) +{ + QMutexLocker lock(&m_menuItemsMutex); + m_menuItems.erase(qFind(m_menuItems.begin(), + m_menuItems.end(), + static_cast(menuItem))); +} + +void QAndroidPlatformMenu::syncMenuItem(QPlatformMenuItem *menuItem) +{ + PlatformMenuItemsType::iterator it; + for (it = m_menuItems.begin(); it != m_menuItems.end(); ++it) { + if ((*it)->tag() == menuItem->tag()) + break; + } + + if (it != m_menuItems.end()) + QtAndroidMenu::syncMenu(this); +} + +void QAndroidPlatformMenu::syncSeparatorsCollapsible(bool enable) +{ + Q_UNUSED(enable) +} + +void QAndroidPlatformMenu::setTag(quintptr tag) +{ + m_tag = tag; +} + +quintptr QAndroidPlatformMenu::tag() const +{ + return m_tag; +} + +void QAndroidPlatformMenu::setText(const QString &text) +{ + m_text = text; +} + +QString QAndroidPlatformMenu::text() const +{ + return m_text; +} + +void QAndroidPlatformMenu::setIcon(const QIcon &icon) +{ + m_icon = icon; +} + +QIcon QAndroidPlatformMenu::icon() const +{ + return m_icon; +} + +void QAndroidPlatformMenu::setEnabled(bool enabled) +{ + m_enabled = enabled; +} + +bool QAndroidPlatformMenu::isEnabled() const +{ + return m_enabled; +} + +void QAndroidPlatformMenu::setVisible(bool visible) +{ + m_isVisible = visible; +} + +bool QAndroidPlatformMenu::isVisible() const +{ + return m_isVisible; +} + +QPlatformMenuItem *QAndroidPlatformMenu::menuItemAt(int position) const +{ + if (position < m_menuItems.size()) + return m_menuItems[position]; + return 0; +} + +QPlatformMenuItem *QAndroidPlatformMenu::menuItemForTag(quintptr tag) const +{ + foreach (QPlatformMenuItem *menuItem, m_menuItems) { + if (menuItem->tag() == tag) + return menuItem; + } + + return 0; +} + +QAndroidPlatformMenu::PlatformMenuItemsType QAndroidPlatformMenu::menuItems() const +{ + return m_menuItems; +} + +QMutex *QAndroidPlatformMenu::menuItemsMutex() +{ + return &m_menuItemsMutex; +} diff --git a/src/plugins/platforms/android/src/qandroidplatformmenu.h b/src/plugins/platforms/android/src/qandroidplatformmenu.h new file mode 100644 index 0000000000..20236cb636 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformmenu.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDPLATFORMMENU_H +#define QANDROIDPLATFORMMENU_H + +#include +#include +#include + +class QAndroidPlatformMenuItem; +class QAndroidPlatformMenu: public QPlatformMenu +{ +public: + typedef QVector PlatformMenuItemsType; + +public: + QAndroidPlatformMenu(); + ~QAndroidPlatformMenu(); + + void insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before); + void removeMenuItem(QPlatformMenuItem *menuItem); + void syncMenuItem(QPlatformMenuItem *menuItem); + void syncSeparatorsCollapsible(bool enable); + + void setTag(quintptr tag); + quintptr tag() const; + void setText(const QString &text); + QString text() const; + void setIcon(const QIcon &icon); + QIcon icon() const; + void setEnabled(bool enabled); + bool isEnabled() const; + void setVisible(bool visible); + bool isVisible() const; + + QPlatformMenuItem *menuItemAt(int position) const; + QPlatformMenuItem *menuItemForTag(quintptr tag) const; + + PlatformMenuItemsType menuItems() const; + QMutex *menuItemsMutex(); + +private: + PlatformMenuItemsType m_menuItems; + quintptr m_tag; + QString m_text; + QIcon m_icon; + bool m_enabled; + bool m_isVisible; + QMutex m_menuItemsMutex; +}; + +#endif // QANDROIDPLATFORMMENU_H diff --git a/src/plugins/platforms/android/src/qandroidplatformmenubar.cpp b/src/plugins/platforms/android/src/qandroidplatformmenubar.cpp new file mode 100644 index 0000000000..ef1ac61356 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformmenubar.cpp @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidplatformmenubar.h" +#include "qandroidplatformmenu.h" +#include "androidjnimenu.h" + + +QAndroidPlatformMenuBar::QAndroidPlatformMenuBar() +{ + m_parentWindow = 0; + QtAndroidMenu::addMenuBar(this); +} + +QAndroidPlatformMenuBar::~QAndroidPlatformMenuBar() +{ + QtAndroidMenu::removeMenuBar(this); +} + +void QAndroidPlatformMenuBar::insertMenu(QPlatformMenu *menu, QPlatformMenu *before) +{ + QMutexLocker lock(&m_menusListMutex); + m_menus.insert(qFind(m_menus.begin(), + m_menus.end(), + static_cast(before)), + static_cast(menu)); +} + +void QAndroidPlatformMenuBar::removeMenu(QPlatformMenu *menu) +{ + QMutexLocker lock(&m_menusListMutex); + m_menus.erase(qFind(m_menus.begin(), + m_menus.end(), + static_cast(menu))); +} + +void QAndroidPlatformMenuBar::syncMenu(QPlatformMenu *menu) +{ + QtAndroidMenu::syncMenu(static_cast(menu)); +} + +void QAndroidPlatformMenuBar::handleReparent(QWindow *newParentWindow) +{ + m_parentWindow = newParentWindow; + QtAndroidMenu::setMenuBar(this, newParentWindow); +} + +QPlatformMenu *QAndroidPlatformMenuBar::menuForTag(quintptr tag) const +{ + foreach (QPlatformMenu *menu, m_menus) { + if (menu->tag() == tag) + return menu; + } + + return 0; +} + +QWindow *QAndroidPlatformMenuBar::parentWindow() const +{ + return m_parentWindow; +} + +QAndroidPlatformMenuBar::PlatformMenusType QAndroidPlatformMenuBar::menus() const +{ + return m_menus; +} + +QMutex *QAndroidPlatformMenuBar::menusListMutex() +{ + return &m_menusListMutex; +} diff --git a/src/plugins/platforms/android/src/qandroidplatformmenubar.h b/src/plugins/platforms/android/src/qandroidplatformmenubar.h new file mode 100644 index 0000000000..56915335c2 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformmenubar.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDPLATFORMMENUBAR_H +#define QANDROIDPLATFORMMENUBAR_H + +#include +#include +#include + +class QAndroidPlatformMenu; +class QAndroidPlatformMenuBar: public QPlatformMenuBar +{ +public: + typedef QVector PlatformMenusType; +public: + QAndroidPlatformMenuBar(); + ~QAndroidPlatformMenuBar(); + + void insertMenu(QPlatformMenu *menu, QPlatformMenu *before); + void removeMenu(QPlatformMenu *menu); + void syncMenu(QPlatformMenu *menu); + void handleReparent(QWindow *newParentWindow); + QPlatformMenu *menuForTag(quintptr tag) const; + + QWindow *parentWindow() const; + PlatformMenusType menus() const; + QMutex *menusListMutex(); + +private: + PlatformMenusType m_menus; + QWindow *m_parentWindow; + QMutex m_menusListMutex; +}; + +#endif // QANDROIDPLATFORMMENUBAR_H diff --git a/src/plugins/platforms/android/src/qandroidplatformmenuitem.cpp b/src/plugins/platforms/android/src/qandroidplatformmenuitem.cpp new file mode 100644 index 0000000000..bd37834d2a --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformmenuitem.cpp @@ -0,0 +1,180 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidplatformmenuitem.h" +#include "qandroidplatformmenu.h" + +QAndroidPlatformMenuItem::QAndroidPlatformMenuItem() +{ + m_tag = reinterpret_cast(this); // QMenu will overwrite this later, but we need a unique ID for QtQuick + m_menu = 0; + m_isVisible = true; + m_isSeparator = false; + m_role = NoRole; + m_isCheckable = false; + m_isChecked = false; + m_isEnabled = true; +} + +void QAndroidPlatformMenuItem::setTag(quintptr tag) +{ + m_tag = tag; +} + +quintptr QAndroidPlatformMenuItem::tag() const +{ + return m_tag; +} + +void QAndroidPlatformMenuItem::setText(const QString &text) +{ + m_text = text; + if (m_menu) + m_menu->setText(m_text); +} + +QString QAndroidPlatformMenuItem::text() const +{ + return m_text; +} + +void QAndroidPlatformMenuItem::setIcon(const QIcon &icon) +{ + m_icon = icon; + if (m_menu) + m_menu->setIcon(m_icon); +} + +QIcon QAndroidPlatformMenuItem::icon() const +{ + return m_icon; +} + +void QAndroidPlatformMenuItem::setMenu(QPlatformMenu *menu) +{ + m_menu = static_cast(menu); + if (!m_menu) + return; + + m_menu->setText(m_text); + m_menu->setIcon(m_icon); + m_menu->setVisible(m_isVisible); + m_menu->setEnabled(m_isEnabled); +} + +QAndroidPlatformMenu *QAndroidPlatformMenuItem::menu() const +{ + return m_menu; +} + +void QAndroidPlatformMenuItem::setVisible(bool isVisible) +{ + m_isVisible = isVisible; + if (m_menu) + m_menu->setVisible(m_isVisible); +} + +bool QAndroidPlatformMenuItem::isVisible() const +{ + return m_isVisible; +} + +void QAndroidPlatformMenuItem::setIsSeparator(bool isSeparator) +{ + m_isSeparator = isSeparator; +} + +bool QAndroidPlatformMenuItem::isSeparator() const +{ + return m_isSeparator; +} + +void QAndroidPlatformMenuItem::setFont(const QFont &font) +{ + Q_UNUSED(font) +} + +void QAndroidPlatformMenuItem::setRole(QPlatformMenuItem::MenuRole role) +{ + m_role = role; +} + +QPlatformMenuItem::MenuRole QAndroidPlatformMenuItem::role() const +{ + return m_role; +} + +void QAndroidPlatformMenuItem::setCheckable(bool checkable) +{ + m_isCheckable = checkable; +} + +bool QAndroidPlatformMenuItem::isCheckable() const +{ + return m_isCheckable; +} + +void QAndroidPlatformMenuItem::setChecked(bool isChecked) +{ + m_isChecked = isChecked; +} + +bool QAndroidPlatformMenuItem::isChecked() const +{ + return m_isChecked; +} + +void QAndroidPlatformMenuItem::setShortcut(const QKeySequence &shortcut) +{ + Q_UNUSED(shortcut) +} + +void QAndroidPlatformMenuItem::setEnabled(bool enabled) +{ + m_isEnabled = enabled; + if (m_menu) + m_menu->setEnabled(m_isEnabled); +} + +bool QAndroidPlatformMenuItem::isEnabled() const +{ + return m_isEnabled; +} diff --git a/src/plugins/platforms/android/src/qandroidplatformmenuitem.h b/src/plugins/platforms/android/src/qandroidplatformmenuitem.h new file mode 100644 index 0000000000..5861e8e195 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformmenuitem.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDPLATFORMMENUITEM_H +#define QANDROIDPLATFORMMENUITEM_H +#include + +class QAndroidPlatformMenu; + +class QAndroidPlatformMenuItem: public QPlatformMenuItem +{ +public: + QAndroidPlatformMenuItem(); + void setTag(quintptr tag); + quintptr tag() const; + + void setText(const QString &text); + QString text() const; + + void setIcon(const QIcon &icon); + QIcon icon() const; + + void setMenu(QPlatformMenu *menu); + QAndroidPlatformMenu *menu() const; + + void setVisible(bool isVisible); + bool isVisible() const; + + void setIsSeparator(bool isSeparator); + bool isSeparator() const; + + void setFont(const QFont &font); + + void setRole(MenuRole role); + MenuRole role() const; + + void setCheckable(bool checkable); + bool isCheckable() const; + + void setChecked(bool isChecked); + bool isChecked() const; + + void setShortcut(const QKeySequence &shortcut); + + void setEnabled(bool enabled); + bool isEnabled() const; + +private: + quintptr m_tag; + QString m_text; + QIcon m_icon; + QAndroidPlatformMenu *m_menu; + bool m_isVisible; + bool m_isSeparator; + MenuRole m_role; + bool m_isCheckable; + bool m_isChecked; + bool m_isEnabled; +}; + +#endif // QANDROIDPLATFORMMENUITEM_H diff --git a/src/plugins/platforms/android/src/qandroidplatformservices.cpp b/src/plugins/platforms/android/src/qandroidplatformservices.cpp new file mode 100644 index 0000000000..841a9d4d51 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformservices.cpp @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidplatformservices.h" +#include +#include +#include + +QAndroidPlatformServices::QAndroidPlatformServices() +{ + JNIEnv *env; + if (QtAndroid::javaVM()->AttachCurrentThread(&env, NULL) < 0) { + qCritical() << "AttachCurrentThread failed"; + return; + } + + m_openURIMethodID = env->GetStaticMethodID(QtAndroid::applicationClass(), + "openURL", + "(Ljava/lang/String;)V"); +} + +bool QAndroidPlatformServices::openUrl(const QUrl &url) +{ + JNIEnv *env; + if (QtAndroid::javaVM()->AttachCurrentThread(&env, NULL) < 0) { + qCritical() << "AttachCurrentThread failed"; + return false; + } + + jstring string = env->NewString(reinterpret_cast(url.toString().constData()), + url.toString().length()); + env->CallStaticVoidMethod(QtAndroid::applicationClass(), m_openURIMethodID, string); + env->DeleteLocalRef(string); + return true; +} + +bool QAndroidPlatformServices::openDocument(const QUrl &url) +{ + return openUrl(url); +} + +QByteArray QAndroidPlatformServices::desktopEnvironment() const +{ + return QByteArray("Android"); +} diff --git a/src/plugins/platforms/android/src/qandroidplatformservices.h b/src/plugins/platforms/android/src/qandroidplatformservices.h new file mode 100644 index 0000000000..8368b19043 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformservices.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ANDROIDPLATFORMDESKTOPSERVICE_H +#define ANDROIDPLATFORMDESKTOPSERVICE_H + +#include +#include "androidjnimain.h" +#include + +class QAndroidPlatformServices: public QPlatformServices +{ +public: + QAndroidPlatformServices(); + bool openUrl(const QUrl &url); + bool openDocument(const QUrl &url); + QByteArray desktopEnvironment() const; +private: + jmethodID m_openURIMethodID; + +}; + +#endif // ANDROIDPLATFORMDESKTOPSERVICE_H diff --git a/src/plugins/platforms/android/src/qandroidplatformtheme.cpp b/src/plugins/platforms/android/src/qandroidplatformtheme.cpp new file mode 100644 index 0000000000..25f2ade11a --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformtheme.cpp @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidplatformtheme.h" +#include "qandroidplatformmenubar.h" +#include "qandroidplatformmenu.h" +#include "qandroidplatformmenuitem.h" +#include +#include + +QPlatformMenuBar *QAndroidPlatformTheme::createPlatformMenuBar() const +{ + return new QAndroidPlatformMenuBar; +} + +QPlatformMenu *QAndroidPlatformTheme::createPlatformMenu() const +{ + return new QAndroidPlatformMenu; +} + +QPlatformMenuItem *QAndroidPlatformTheme::createPlatformMenuItem() const +{ + return new QAndroidPlatformMenuItem; +} + +QVariant QAndroidPlatformTheme::themeHint(ThemeHint hint) const +{ + switch (hint) { + case StyleNames: + if (qgetenv("QT_USE_ANDROID_NATIVE_STYLE").toInt() + && (!qgetenv("MINISTRO_ANDROID_STYLE_PATH").isEmpty() + || QFileInfo("/data/data/org.kde.necessitas.ministro/files/qt/style/style.json").exists())) { + return QStringList("android"); + } + return QStringList("fusion"); + break; + default: + return QPlatformTheme::themeHint(hint); + } +} diff --git a/src/plugins/platforms/android/src/qandroidplatformtheme.h b/src/plugins/platforms/android/src/qandroidplatformtheme.h new file mode 100644 index 0000000000..263878ee16 --- /dev/null +++ b/src/plugins/platforms/android/src/qandroidplatformtheme.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDPLATFORMTHEME_H +#define QANDROIDPLATFORMTHEME_H + +#include + +class QAndroidPlatformTheme: public QPlatformTheme +{ +public: + virtual QPlatformMenuBar *createPlatformMenuBar() const; + virtual QPlatformMenu *createPlatformMenu() const; + virtual QPlatformMenuItem *createPlatformMenuItem() const; + virtual QVariant themeHint(ThemeHint hint) const; +}; + +#endif // QANDROIDPLATFORMTHEME_H diff --git a/src/plugins/platforms/android/src/raster/qandroidplatformscreen.cpp b/src/plugins/platforms/android/src/raster/qandroidplatformscreen.cpp new file mode 100644 index 0000000000..2779d7cffd --- /dev/null +++ b/src/plugins/platforms/android/src/raster/qandroidplatformscreen.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidplatformscreen.h" +#include "qandroidplatformintegration.h" +#include "androidjnimain.h" +#include "androidjnimenu.h" + +QAndroidPlatformScreen::QAndroidPlatformScreen():QFbScreen() +{ + mGeometry = QRect(0, 0, QAndroidPlatformIntegration::m_defaultGeometryWidth, QAndroidPlatformIntegration::m_defaultGeometryHeight); + mFormat = QImage::Format_RGB16; + mDepth = 16; + mPhysicalSize.setHeight(QAndroidPlatformIntegration::m_defaultPhysicalSizeHeight); + mPhysicalSize.setWidth(QAndroidPlatformIntegration::m_defaultPhysicalSizeWidth); + initializeCompositor(); +} + +void QAndroidPlatformScreen::topWindowChanged(QWindow *w) +{ + QtAndroidMenu::setActiveTopLevelWindow(w); +} + +QRegion QAndroidPlatformScreen::doRedraw() +{ + QRegion touched; + touched = QFbScreen::doRedraw(); + if (touched.isEmpty()) + return touched; + + QtAndroid::flushImage(mGeometry.topLeft(), *mScreenImage, touched.boundingRect()); + return touched; +} diff --git a/src/plugins/platforms/android/src/raster/qandroidplatformscreen.h b/src/plugins/platforms/android/src/raster/qandroidplatformscreen.h new file mode 100644 index 0000000000..df08e43af4 --- /dev/null +++ b/src/plugins/platforms/android/src/raster/qandroidplatformscreen.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDPLATFORMSCREEN_H +#define QANDROIDPLATFORMSCREEN_H + +#include + +class QAndroidPlatformScreen: public QFbScreen +{ + Q_OBJECT +public: + QAndroidPlatformScreen(); + void topWindowChanged(QWindow *w); + +public slots: + QRegion doRedraw(); + +}; + +#endif diff --git a/src/plugins/platforms/android/src/raster/qandroidplatformwindow.cpp b/src/plugins/platforms/android/src/raster/qandroidplatformwindow.cpp new file mode 100644 index 0000000000..94a69c10c7 --- /dev/null +++ b/src/plugins/platforms/android/src/raster/qandroidplatformwindow.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidplatformwindow.h" + +QAndroidPlatformWindow::QAndroidPlatformWindow(QWindow *window) : QFbWindow(window) +{ +} + +void QAndroidPlatformWindow::setGeometry(const QRect &rect) +{ + QFbWindow::setGeometry(rect); +} + +void QAndroidPlatformWindow::propagateSizeHints() +{ + //shut up warning from default implementation +} diff --git a/src/plugins/platforms/android/src/raster/qandroidplatformwindow.h b/src/plugins/platforms/android/src/raster/qandroidplatformwindow.h new file mode 100644 index 0000000000..3ee815fd69 --- /dev/null +++ b/src/plugins/platforms/android/src/raster/qandroidplatformwindow.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ANDROIDPLATFORMWINDOW_H +#define ANDROIDPLATFORMWINDOW_H +#include +#include + +class QAndroidPlatformWindow: public QObject, public QFbWindow +{ + Q_OBJECT +public: + explicit QAndroidPlatformWindow(QWindow *window); + + void propagateSizeHints(); + +public slots: + void setGeometry(const QRect &rect); + +}; + +#endif // ANDROIDPLATFORMWINDOW_H diff --git a/src/plugins/platforms/android/src/raster/raster.pri b/src/plugins/platforms/android/src/raster/raster.pri new file mode 100644 index 0000000000..86e5aa235f --- /dev/null +++ b/src/plugins/platforms/android/src/raster/raster.pri @@ -0,0 +1,7 @@ +INCLUDEPATH += $$PWD + +SOURCES += $$PWD/qandroidplatformscreen.cpp \ + $$PWD/qandroidplatformwindow.cpp + +HEADERS += $$PWD/qandroidplatformscreen.h \ + $$PWD/qandroidplatformwindow.h diff --git a/src/plugins/platforms/android/src/src.pri b/src/plugins/platforms/android/src/src.pri new file mode 100644 index 0000000000..9bf36b2337 --- /dev/null +++ b/src/plugins/platforms/android/src/src.pri @@ -0,0 +1,47 @@ +load(qt_plugin) + +QT += core-private gui-private widgets-private platformsupport-private + +CONFIG += qpa/genericunixfontdatabase + +OTHER_FILES += $$PWD/android.json + +INCLUDEPATH += $$PWD +INCLUDEPATH += $$PWD/../../../../3rdparty/android/src + +SOURCES += $$PWD/androidplatformplugin.cpp \ + $$PWD/androidjnimain.cpp \ + $$PWD/androidjniinput.cpp \ + $$PWD/androidjnimenu.cpp \ + $$PWD/androidjniclipboard.cpp \ + $$PWD/qandroidplatformintegration.cpp \ + $$PWD/qandroidplatformservices.cpp \ + $$PWD/qandroidassetsfileenginehandler.cpp \ + $$PWD/qandroidinputcontext.cpp \ + $$PWD/qandroidplatformfontdatabase.cpp \ + $$PWD/qandroidplatformclipboard.cpp \ + $$PWD/qandroidplatformtheme.cpp \ + $$PWD/qandroidplatformmenubar.cpp \ + $$PWD/qandroidplatformmenu.cpp \ + $$PWD/qandroidplatformmenuitem.cpp + + +HEADERS += $$PWD/qandroidplatformintegration.h \ + $$PWD/androidjnimain.h \ + $$PWD/androidjniinput.h \ + $$PWD/androidjnimenu.h \ + $$PWD/androidjniclipboard.h \ + $$PWD/qandroidplatformservices.h \ + $$PWD/qandroidassetsfileenginehandler.h \ + $$PWD/qandroidinputcontext.h \ + $$PWD/qandroidplatformfontdatabase.h \ + $$PWD/qandroidplatformclipboard.h \ + $$PWD/qandroidplatformtheme.h \ + $$PWD/qandroidplatformmenubar.h \ + $$PWD/qandroidplatformmenu.h \ + $$PWD/qandroidplatformmenuitem.h + + +#Non-standard install directory, QTBUG-29859 +DESTDIR = $$DESTDIR/android +target.path = $${target.path}/android diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp index 0fc4c44629..8cebe16775 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp @@ -53,7 +53,7 @@ #include #include -#if !defined(QT_NO_EVDEV) +#if !defined(QT_NO_EVDEV) && !defined(Q_OS_ANDROID) #include #include #include @@ -77,7 +77,7 @@ QEglFSIntegration::QEglFSIntegration() { QGuiApplicationPrivate::instance()->setEventDispatcher(mEventDispatcher); -#if !defined(QT_NO_EVDEV) +#if !defined(QT_NO_EVDEV) && !defined(Q_OS_ANDROID) new QEvdevKeyboardManager(QLatin1String("EvdevKeyboard"), QString() /* spec */, this); new QEvdevMouseManager(QLatin1String("EvdevMouse"), QString() /* spec */, this); new QEvdevTouchScreenHandlerThread(QString() /* spec */, this); diff --git a/src/plugins/platforms/platforms.pro b/src/plugins/platforms/platforms.pro index a60a3626fa..92664826ab 100644 --- a/src/plugins/platforms/platforms.pro +++ b/src/plugins/platforms/platforms.pro @@ -1,5 +1,7 @@ TEMPLATE = subdirs +android:!android-no-sdk: SUBDIRS += android + SUBDIRS += minimal offscreen contains(QT_CONFIG, xcb) { diff --git a/src/src.pro b/src/src.pro index 02d4852b60..90f0a35711 100644 --- a/src/src.pro +++ b/src/src.pro @@ -66,6 +66,8 @@ src_plugins.subdir = $$PWD/plugins src_plugins.target = sub-plugins src_plugins.depends = src_sql src_xml src_network +src_android.subdir = $$PWD/android + # this order is important SUBDIRS += src_tools src_corelib win32:SUBDIRS += src_winmain @@ -98,3 +100,5 @@ contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent SUBDIRS += src_plugins nacl: SUBDIRS -= src_network src_testlib + +android:!android-no-sdk: SUBDIRS += src_android diff --git a/src/widgets/styles/qandroidstyle.cpp b/src/widgets/styles/qandroidstyle.cpp new file mode 100644 index 0000000000..a3c1063b41 --- /dev/null +++ b/src/widgets/styles/qandroidstyle.cpp @@ -0,0 +1,1601 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWidgets module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qandroidstyle_p.h" + +#if !defined(QT_NO_STYLE_ANDROID) || defined(QT_PLUGIN) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +namespace { + const int textStyle_bold = 1; + const int textStyle_italic = 2; + + const int typeface_sans = 1; + const int typeface_serif = 2; + const int typeface_monospace = 3; + + const quint32 NO_COLOR = 1; + const quint32 TRANSPARENT_COLOR = 0; +} + + +QAndroidStyle::QAndroidStyle() + : QCommonStyle() +{ + QString stylePath(QLatin1String(qgetenv("MINISTRO_ANDROID_STYLE_PATH"))); + + if (stylePath.isEmpty()) + stylePath = QLatin1String("/data/data/org.kde.necessitas.ministro/files/qt/style/"); + Q_ASSERT(!stylePath.isEmpty()); + + QFile f(stylePath + QLatin1String("style.json")); + if (!f.open(QIODevice::ReadOnly)) + return; + + QJsonParseError error; + QJsonDocument document = QJsonDocument::fromJson(f.readAll(), &error); + if (document.isNull()) { + qCritical() << error.errorString(); + return; + } + + if (!document.isObject()) { + qCritical() << "Style.json does not contain a valid style."; + return; + } + + QJsonObject object = document.object(); + for (QJsonObject::const_iterator objectIterator = object.constBegin(); + objectIterator != object.constEnd(); + ++objectIterator) { + QString key = objectIterator.key(); + QJsonValue value = objectIterator.value(); + if (!value.isObject()) { + qWarning("Style.json structure is unrecognized."); + continue; + } + + QJsonObject item = value.toObject(); + QJsonObject::const_iterator attributeIterator = item.find(QLatin1String("qtClass")); + if (attributeIterator != item.constEnd()) { + // The item has palette and font information for a specific Qt Class (e.g. QWidget, QPushButton, etc.) + const QString qtClassName = attributeIterator.value().toString(); + + // Extract font information + QFont font; + + // Font size (in pixels) + attributeIterator = item.find(QLatin1String("TextAppearance_textSize")); + if (attributeIterator != item.constEnd()) + font.setPixelSize(int(attributeIterator.value().toDouble())); + + // Font style + attributeIterator = item.find(QLatin1String("TextAppearance_textStyle")); + if (attributeIterator != item.constEnd()) { + const int style = int(attributeIterator.value().toDouble()); + font.setBold(style & textStyle_bold); + font.setItalic(style & textStyle_italic); + } + + // Font typeface + attributeIterator = item.find(QLatin1String("TextAppearance_typeface")); + if (attributeIterator != item.constEnd()) { + QFont::StyleHint styleHint = QFont::AnyStyle; + switch (int(attributeIterator.value().toDouble())) { + case typeface_sans: + styleHint = QFont::SansSerif; + break; + case typeface_serif: + styleHint = QFont::Serif; + break; + case typeface_monospace: + styleHint = QFont::Monospace; + break; + } + font.setStyleHint(styleHint, QFont::PreferMatch); + } + QApplication::setFont(font, qtClassName.toUtf8()); + // Extract font information + + // Extract palette information + QPalette palette; + attributeIterator = item.find(QLatin1String("TextAppearance_textColor")); + if (attributeIterator != item.constEnd()) + setPaletteColor(attributeIterator.value().toObject().toVariantMap(), palette, QPalette::WindowText); + + attributeIterator = item.find(QLatin1String("TextAppearance_textColorLink")); + if (attributeIterator != item.constEnd()) + setPaletteColor(attributeIterator.value().toObject().toVariantMap(), palette, QPalette::Link); + + attributeIterator = item.find(QLatin1String("TextAppearance_textColorHighlight")); + if (attributeIterator != item.constEnd()) + palette.setColor(QPalette::Highlight, QRgb(int(attributeIterator.value().toDouble()))); + palette.setColor(QPalette::Window, Qt::black); + QApplication::setPalette(palette, qtClassName.toUtf8()); + if (QLatin1String("QWidget") == qtClassName) + m_standardPalette = palette; + // Extract palette information + } + QAndroidStyle::ItemType itemType = qtControl(key); + if (QC_UnknownType == itemType) + continue; + + switch (itemType) { + case QC_Checkbox: + case QC_RadioButton: + m_androidControlsHash[int(itemType)] = new AndroidCompoundButtonControl(item.toVariantMap(), + itemType); + break; + + case QC_ProgressBar: + m_androidControlsHash[int(itemType)] = new AndroidProgressBarControl(item.toVariantMap(), + itemType); + break; + + case QC_Slider: + m_androidControlsHash[int(itemType)] = new AndroidSeekBarControl(item.toVariantMap(), + itemType); + break; + + case QC_Combobox: + m_androidControlsHash[int(itemType)] = new AndroidSpinnerControl(item.toVariantMap(), + itemType); + break; + + default: + m_androidControlsHash[int(itemType)] = new AndroidControl(item.toVariantMap(), + itemType); + break; + } + } + QApplication::setPalette(QApplication::palette("simple_list_item"), "QListView"); + QApplication::setFont(QApplication::font("simple_list_item"), "QListView"); + QApplication::setPalette(QApplication::palette("simple_list_item"), "QAbstractItemView"); + QApplication::setFont(QApplication::font("simple_list_item"), "QAbstractItemView"); +} + +QAndroidStyle::~QAndroidStyle() +{ + qDeleteAll(m_androidControlsHash); +} + + +void QAndroidStyle::setPaletteColor(const QVariantMap &object, + QPalette &palette, + QPalette::ColorRole role) +{ + // QPalette::Active -> ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET + palette.setColor(QPalette::Active, + role, + QRgb(object.value(QLatin1String("ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET")).toInt())); + + // QPalette::Inactive -> ENABLED_STATE_SET + palette.setColor(QPalette::Inactive, + role, + QRgb(object.value(QLatin1String("ENABLED_STATE_SET")).toInt())); + + // QPalette::Disabled -> EMPTY_STATE_SET + palette.setColor(QPalette::Disabled, + role, + QRgb(object.value(QLatin1String("EMPTY_STATE_SET")).toInt())); + + palette.setColor(QPalette::Current, role, palette.color(QPalette::Active, role)); + + if (role == QPalette::WindowText) { + // QPalette::BrightText -> PRESSED + // QPalette::Active -> PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET + palette.setColor(QPalette::Active, + QPalette::BrightText, + QRgb(object.value(QLatin1String("PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET")).toInt())); + + // QPalette::Inactive -> PRESSED_ENABLED_STATE_SET + palette.setColor(QPalette::Inactive, + QPalette::BrightText, + QRgb(object.value(QLatin1String("PRESSED_ENABLED_STATE_SET")).toInt())); + + // QPalette::Disabled -> PRESSED_STATE_SET + palette.setColor(QPalette::Disabled, + QPalette::BrightText, + QRgb(object.value(QLatin1String("PRESSED_STATE_SET")).toInt())); + + palette.setColor(QPalette::Current, QPalette::BrightText, palette.color(QPalette::Active, QPalette::BrightText)); + + // QPalette::HighlightedText -> SELECTED + // QPalette::Active -> ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET + palette.setColor(QPalette::Active, + QPalette::HighlightedText, + QRgb(object.value(QLatin1String("ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET")).toInt())); + + // QPalette::Inactive -> ENABLED_SELECTED_STATE_SET + palette.setColor(QPalette::Inactive, + QPalette::HighlightedText, + QRgb(object.value(QLatin1String("ENABLED_SELECTED_STATE_SET")).toInt())); + + // QPalette::Disabled -> SELECTED_STATE_SET + palette.setColor(QPalette::Disabled, + QPalette::HighlightedText, + QRgb(object.value(QLatin1String("SELECTED_STATE_SET")).toInt())); + + palette.setColor(QPalette::Current, + QPalette::HighlightedText, + palette.color(QPalette::Active, QPalette::HighlightedText)); + + // Same colors for Text + palette.setColor(QPalette::Active, QPalette::Text, palette.color(QPalette::Active, role)); + palette.setColor(QPalette::Inactive, QPalette::Text, palette.color(QPalette::Inactive, role)); + palette.setColor(QPalette::Disabled, QPalette::Text, palette.color(QPalette::Disabled, role)); + palette.setColor(QPalette::Current, QPalette::Text, palette.color(QPalette::Current, role)); + + // And for ButtonText + palette.setColor(QPalette::Active, QPalette::ButtonText, palette.color(QPalette::Active, role)); + palette.setColor(QPalette::Inactive, QPalette::ButtonText, palette.color(QPalette::Inactive, role)); + palette.setColor(QPalette::Disabled, QPalette::ButtonText, palette.color(QPalette::Disabled, role)); + palette.setColor(QPalette::Current, QPalette::ButtonText, palette.color(QPalette::Current, role)); + } +} + +QAndroidStyle::ItemType QAndroidStyle::qtControl(const QString &android) +{ + if (android == QLatin1String("buttonStyle")) + return QC_Button; + if (android == QLatin1String("editTextStyle")) + return QC_EditText; + if (android == QLatin1String("radioButtonStyle")) + return QC_RadioButton; + if (android == QLatin1String("checkboxStyle")) + return QC_Checkbox; + if (android == QLatin1String("textViewStyle")) + return QC_View; + if (android == QLatin1String("buttonStyleToggle")) + return QC_Switch; + if (android == QLatin1String("spinnerStyle")) + return QC_Combobox; + if (android == QLatin1String("progressBarStyleHorizontal")) + return QC_ProgressBar; + if (android == QLatin1String("seekBarStyle")) + return QC_Slider; + + return QC_UnknownType; +} + +QAndroidStyle::ItemType QAndroidStyle::qtControl(QStyle::ComplexControl control) +{ + switch (control) { + case CC_ComboBox: + return QC_Combobox; + case CC_Slider: + return QC_Slider; + case CC_GroupBox: + return QC_View; + default: + return QC_UnknownType; + } +} + +QAndroidStyle::ItemType QAndroidStyle::qtControl(QStyle::ContentsType contentsType) +{ + switch (contentsType) { + case CT_PushButton: + return QC_Button; + case CT_CheckBox: + return QC_Checkbox; + case CT_RadioButton: + return QC_RadioButton; + case CT_ComboBox: + return QC_Combobox; + case CT_ProgressBar: + return QC_ProgressBar; + case CT_Slider: + return QC_Slider; + case CT_TabWidget: + return QC_Tab; + case CT_TabBarTab: + return QC_TabButton; + case CT_LineEdit: + return QC_EditText; + case CT_GroupBox: + return QC_GroupBox; + default: + return QC_UnknownType; + } +} + +QAndroidStyle::ItemType QAndroidStyle::qtControl(QStyle::ControlElement controlElement) +{ + switch (controlElement) { + case CE_PushButton: + case CE_PushButtonBevel: + case CE_PushButtonLabel: + return QC_Button; + + case CE_CheckBox: + case CE_CheckBoxLabel: + return QC_Checkbox; + + case CE_RadioButton: + case CE_RadioButtonLabel: + return QC_RadioButton; + + case CE_TabBarTab: + case CE_TabBarTabShape: + case CE_TabBarTabLabel: + return QC_Tab; + + case CE_ProgressBar: + case CE_ProgressBarGroove: + case CE_ProgressBarContents: + case CE_ProgressBarLabel: + return QC_ProgressBar; + + case CE_ComboBoxLabel: + return QC_Combobox; + + default: + return QC_UnknownType; + } +} + +QAndroidStyle::ItemType QAndroidStyle::qtControl(QStyle::PrimitiveElement primitiveElement) +{ + switch (primitiveElement) { + case QStyle::PE_PanelLineEdit: + case QStyle::PE_FrameLineEdit: + return QC_EditText; + + case QStyle::PE_FrameWindow: + case QStyle::PE_Widget: + case QStyle::PE_Frame: + case QStyle::PE_FrameFocusRect: + return QC_View; + default: + return QC_UnknownType; + } +} + +QAndroidStyle::ItemType QAndroidStyle::qtControl(QStyle::SubElement subElement) +{ + switch (subElement) { + case QStyle::SE_LineEditContents: + return QC_EditText; + + case QStyle::SE_PushButtonContents: + case QStyle::SE_PushButtonFocusRect: + return QC_Button; + + case SE_RadioButtonContents: + return QC_RadioButton; + + case SE_CheckBoxContents: + return QC_Checkbox; + + default: + return QC_UnknownType; + } +} + +void QAndroidStyle::drawPrimitive(PrimitiveElement pe, + const QStyleOption *opt, + QPainter *p, + const QWidget *w) const +{ + const ItemType itemType = qtControl(pe); + AndroidControlsHash::const_iterator it = itemType != QC_UnknownType + ? m_androidControlsHash.find(itemType) + : m_androidControlsHash.end(); + if (it != m_androidControlsHash.end()) + it.value()->drawControl(opt, p, w); + else + QCommonStyle::drawPrimitive(pe, opt, p, w); +} + + +void QAndroidStyle::drawControl(QStyle::ControlElement element, + const QStyleOption *opt, + QPainter *p, + const QWidget *w) const +{ + const ItemType itemType = qtControl(element); + AndroidControlsHash::const_iterator it = itemType != QC_UnknownType + ? m_androidControlsHash.find(itemType) + : m_androidControlsHash.end(); + if (it != m_androidControlsHash.end()) { + it.value()->drawControl(opt, p, w); + + switch (itemType) { + case QC_Button: + if (const QStyleOptionButton *buttonOption = + qstyleoption_cast(opt)) { + QMargins padding = it.value()->padding(); + QStyleOptionButton copy (*buttonOption); + copy.rect.adjust(padding.left(), padding.top(), -padding.right(), -padding.bottom()); + QCommonStyle::drawControl(CE_PushButtonLabel, ©, p, w); + } + break; + case QC_Checkbox: + case QC_RadioButton: + if (const QStyleOptionButton *btn = + qstyleoption_cast(opt)) { + const bool isRadio = (element == CE_RadioButton); + QStyleOptionButton subopt(*btn); + subopt.rect = subElementRect(isRadio ? SE_RadioButtonContents + : SE_CheckBoxContents, btn, w); + QCommonStyle::drawControl(isRadio ? CE_RadioButtonLabel : CE_CheckBoxLabel, &subopt, p, w); + } + break; + case QC_Combobox: + if (const QStyleOptionComboBox *comboboxOption = + qstyleoption_cast(opt)) { + QMargins padding = it.value()->padding(); + QStyleOptionComboBox copy (*comboboxOption); + copy.rect.adjust(padding.left(), padding.top(), -padding.right(), -padding.bottom()); + p->setFont(QApplication::font("simple_spinner_item")); + p->setPen(QApplication::palette("QPushButton").color(QPalette::Active, QPalette::Text)); + QCommonStyle::drawControl(CE_ComboBoxLabel, comboboxOption, p, w); + } + break; + default: + break; + } + } + else + QCommonStyle::drawControl(element, opt, p, w); +} + +QRect QAndroidStyle::subElementRect(SubElement subElement, + const QStyleOption *option, + const QWidget *widget) const +{ + const ItemType itemType = qtControl(subElement); + AndroidControlsHash::const_iterator it = itemType != QC_UnknownType + ? m_androidControlsHash.find(itemType) + : m_androidControlsHash.end(); + if (it != m_androidControlsHash.end()) + return it.value()->subElementRect(subElement, option, widget); + return QCommonStyle::subElementRect(subElement, option, widget); +} + +void QAndroidStyle::drawComplexControl(ComplexControl cc, + const QStyleOptionComplex *opt, + QPainter *p, + const QWidget *widget) const +{ + const ItemType itemType = qtControl(cc); + AndroidControlsHash::const_iterator it = itemType != QC_UnknownType + ? m_androidControlsHash.find(itemType) + : m_androidControlsHash.end(); + if (it != m_androidControlsHash.end()) + it.value()->drawControl(opt, p, widget); + else + QCommonStyle::drawComplexControl(cc, opt, p, widget); +} + +QStyle::SubControl QAndroidStyle::hitTestComplexControl(ComplexControl cc, + const QStyleOptionComplex *opt, + const QPoint &pt, + const QWidget *widget) const +{ + const ItemType itemType = qtControl(cc); + AndroidControlsHash::const_iterator it = itemType != QC_UnknownType + ? m_androidControlsHash.find(itemType) + : m_androidControlsHash.end(); + if (it != m_androidControlsHash.end()) { + switch (cc) { + case CC_Slider: + if (const QStyleOptionSlider *slider = qstyleoption_cast(opt)) { + QRect r = it.value()->subControlRect(slider, SC_SliderHandle, widget); + if (r.isValid() && r.contains(pt)) { + return SC_SliderHandle; + } else { + r = it.value()->subControlRect(slider, SC_SliderGroove, widget); + if (r.isValid() && r.contains(pt)) + return SC_SliderGroove; + } + } + break; + default: + break; + } + } + return QCommonStyle::hitTestComplexControl(cc, opt, pt, widget); +} + +QRect QAndroidStyle::subControlRect(ComplexControl cc, + const QStyleOptionComplex *opt, + SubControl sc, + const QWidget *widget) const +{ + const ItemType itemType = qtControl(cc); + AndroidControlsHash::const_iterator it = itemType != QC_UnknownType + ? m_androidControlsHash.find(itemType) + : m_androidControlsHash.end(); + if (it != m_androidControlsHash.end()) + return it.value()->subControlRect(opt, sc, widget); + return QCommonStyle::subControlRect(cc, opt, sc, widget); +} + +int QAndroidStyle::pixelMetric(PixelMetric metric, const QStyleOption *option, + const QWidget *widget) const +{ + switch (metric) { + case PM_ButtonMargin: + case PM_FocusFrameVMargin: + case PM_FocusFrameHMargin: + case PM_ComboBoxFrameWidth: + case PM_SpinBoxFrameWidth: + return 0; + default: + return QCommonStyle::pixelMetric(metric, option, widget); + } + +} + +QSize QAndroidStyle::sizeFromContents(ContentsType ct, + const QStyleOption *opt, + const QSize &contentsSize, + const QWidget *w) const +{ + QSize sz=QCommonStyle::sizeFromContents(ct, opt, contentsSize, w); + const ItemType itemType = qtControl(ct); + AndroidControlsHash::const_iterator it = itemType != QC_UnknownType + ? m_androidControlsHash.find(itemType) + : m_androidControlsHash.end(); + if (it != m_androidControlsHash.end()) + return it.value()->sizeFromContents(opt, sz, w); + return sz; +} + +QPixmap QAndroidStyle::standardPixmap(StandardPixmap standardPixmap, + const QStyleOption *opt, + const QWidget *widget) const +{ + return QCommonStyle::standardPixmap(standardPixmap, opt, widget); +} + +QPixmap QAndroidStyle::generatedIconPixmap(QIcon::Mode iconMode, + const QPixmap &pixmap, + const QStyleOption *opt) const +{ + return QCommonStyle::generatedIconPixmap(iconMode, pixmap, opt); +} + +QPalette QAndroidStyle::standardPalette() const +{ + return m_standardPalette; +} + +QAndroidStyle::AndroidDrawable::AndroidDrawable(const QVariantMap &drawable, + QAndroidStyle::ItemType itemType) +{ + initPadding(drawable); + m_itemType = itemType; +} + +QAndroidStyle::AndroidDrawable::~AndroidDrawable() +{ +} + +void QAndroidStyle::AndroidDrawable::initPadding(const QVariantMap &drawable) +{ + QVariantMap::const_iterator it = drawable.find(QLatin1String("padding")); + if (it != drawable.end()) + m_padding = extractMargins(it.value().toMap()); +} + +const QMargins &QAndroidStyle::AndroidDrawable::padding() const +{ + return m_padding; +} + +QSize QAndroidStyle::AndroidDrawable::size() const +{ + if (type() == Image || type() == NinePatch) + return static_cast(this)->size(); + + return QSize(); +} + +QAndroidStyle::AndroidDrawable * QAndroidStyle::AndroidDrawable::fromMap(const QVariantMap &drawable, + ItemType itemType) +{ + const QString type = drawable.value(QLatin1String("type")).toString(); + if (type == QLatin1String("image")) + return new QAndroidStyle::AndroidImageDrawable(drawable, itemType); + if (type == QLatin1String("9patch")) + return new QAndroidStyle::Android9PatchDrawable(drawable, itemType); + if (type == QLatin1String("stateslist")) + return new QAndroidStyle::AndroidStateDrawable(drawable, itemType); + if (type == QLatin1String("layer")) + return new QAndroidStyle::AndroidLayerDrawable(drawable, itemType); + if (type == QLatin1String("gradient")) + return new QAndroidStyle::AndroidGradientDrawable(drawable, itemType); + if (type == QLatin1String("clipDrawable")) + return new QAndroidStyle::AndroidClipDrawable(drawable, itemType); + if (type == QLatin1String("color")) + return new QAndroidStyle::AndroidColorDrawable(drawable, itemType); + return 0; +} + +QMargins QAndroidStyle::AndroidDrawable::extractMargins(const QVariantMap &value) +{ + QMargins m; + m.setLeft(value.value(QLatin1String("left")).toInt()); + m.setRight(value.value(QLatin1String("right")).toInt()); + m.setTop(value.value(QLatin1String("top")).toInt()); + m.setBottom(value.value(QLatin1String("bottom")).toInt()); + return m; +} + + +QAndroidStyle::AndroidImageDrawable::AndroidImageDrawable(const QVariantMap &drawable, + QAndroidStyle::ItemType itemType) + : AndroidDrawable(drawable, itemType) +{ + m_filePath = drawable.value(QLatin1String("path")).toString(); + m_size.setHeight(drawable.value(QLatin1String("height")).toInt()); + m_size.setWidth(drawable.value(QLatin1String("width")).toInt()); +} + +QAndroidStyle::AndroidDrawableType QAndroidStyle::AndroidImageDrawable::type() const +{ + return QAndroidStyle::Image; +} + +void QAndroidStyle::AndroidImageDrawable::draw(QPainter *painter, const QStyleOption *opt) const +{ + if (m_hashKey.isEmpty()) + m_hashKey = QFileInfo(m_filePath).fileName(); + + QPixmap pm; + if (!QPixmapCache::find(m_hashKey, &pm)) { + pm.load(m_filePath); + QPixmapCache::insert(m_hashKey, pm); + } + + painter->drawPixmap(opt->rect.x(), (opt->rect.height() - pm.height()) / 2, pm); +} + +QSize QAndroidStyle::AndroidImageDrawable::size() const +{ + return m_size; +} + +QAndroidStyle::AndroidColorDrawable::AndroidColorDrawable(const QVariantMap &drawable, + ItemType itemType) + : AndroidDrawable(drawable, itemType) +{ + m_color.setRgba(QRgb(drawable.value(QLatin1String("color")).toInt())); +} + +QAndroidStyle::AndroidDrawableType QAndroidStyle::AndroidColorDrawable::type() const +{ + return QAndroidStyle::Color; +} + +void QAndroidStyle::AndroidColorDrawable::draw(QPainter *painter, const QStyleOption *opt) const +{ + painter->fillRect(opt->rect, m_color); +} + +QAndroidStyle::Android9PatchDrawable::Android9PatchDrawable(const QVariantMap &drawable, + QAndroidStyle::ItemType itemType) + : AndroidImageDrawable(drawable.value(QLatin1String("drawable")).toMap(), itemType) +{ + initPadding(drawable); + QVariantMap chunk = drawable.value(QLatin1String("chunkInfo")).toMap(); + extractIntArray(chunk.value(QLatin1String("xdivs")).toList(), m_chunkData.xDivs); + extractIntArray(chunk.value(QLatin1String("ydivs")).toList(), m_chunkData.yDivs); + extractIntArray(chunk.value(QLatin1String("colors")).toList(), m_chunkData.colors); +} + +QAndroidStyle::AndroidDrawableType QAndroidStyle::Android9PatchDrawable::type() const +{ + return QAndroidStyle::NinePatch; +} + +int QAndroidStyle::Android9PatchDrawable::calculateStretch(int boundsLimit, + int startingPoint, + int srcSpace, + int numStrechyPixelsRemaining, + int numFixedPixelsRemaining) +{ + int spaceRemaining = boundsLimit - startingPoint; + int stretchySpaceRemaining = spaceRemaining - numFixedPixelsRemaining; + return (float(srcSpace) * stretchySpaceRemaining / numStrechyPixelsRemaining + .5); +} + +void QAndroidStyle::Android9PatchDrawable::extractIntArray(const QVariantList &values, + QVector & array) +{ + foreach (QVariant value, values) + array << value.toInt(); +} + + +void QAndroidStyle::Android9PatchDrawable::draw(QPainter * painter, const QStyleOption *opt) const +{ + if (m_hashKey.isEmpty()) + m_hashKey = QFileInfo(m_filePath).fileName(); + + QPixmap pixmap; + if (!QPixmapCache::find(m_hashKey, &pixmap)) { + pixmap.load(m_filePath); + QPixmapCache::insert(m_hashKey, pixmap); + } + + const QRect &bounds=opt->rect; + + // shamelessly stolen from Android's sources (NinepatchImpl.cpp) and adapted for Qt + const int pixmapWidth = pixmap.width(); + const int pixmapHeight = pixmap.height(); + + if (bounds.isNull() || !pixmapWidth || !pixmapHeight) + return; + + QPainter::RenderHints savedHints = painter->renderHints(); + + // The patchs doesn't need smooth transform ! + painter->setRenderHints(QPainter::SmoothPixmapTransform, false); + + QRectF dst; + QRectF src; + + const int32_t x0 = m_chunkData.xDivs[0]; + const int32_t y0 = m_chunkData.yDivs[0]; + const quint8 numXDivs = m_chunkData.xDivs.size(); + const quint8 numYDivs = m_chunkData.yDivs.size(); + int i; + int j; + int colorIndex = 0; + quint32 color; + bool xIsStretchable; + const bool initialXIsStretchable = (x0 == 0); + bool yIsStretchable = (y0 == 0); + const int bitmapWidth = pixmap.width(); + const int bitmapHeight = pixmap.height(); + + int *dstRights = static_cast(alloca((numXDivs + 1) * sizeof(int))); + bool dstRightsHaveBeenCached = false; + + int numStretchyXPixelsRemaining = 0; + for (i = 0; i < numXDivs; i += 2) + numStretchyXPixelsRemaining += m_chunkData.xDivs[i + 1] - m_chunkData.xDivs[i]; + + int numFixedXPixelsRemaining = bitmapWidth - numStretchyXPixelsRemaining; + int numStretchyYPixelsRemaining = 0; + for (i = 0; i < numYDivs; i += 2) + numStretchyYPixelsRemaining += m_chunkData.yDivs[i + 1] - m_chunkData.yDivs[i]; + + int numFixedYPixelsRemaining = bitmapHeight - numStretchyYPixelsRemaining; + src.setTop(0); + dst.setTop(bounds.top()); + // The first row always starts with the top being at y=0 and the bottom + // being either yDivs[1] (if yDivs[0]=0) of yDivs[0]. In the former case + // the first row is stretchable along the Y axis, otherwise it is fixed. + // The last row always ends with the bottom being bitmap.height and the top + // being either yDivs[numYDivs-2] (if yDivs[numYDivs-1]=bitmap.height) or + // yDivs[numYDivs-1]. In the former case the last row is stretchable along + // the Y axis, otherwise it is fixed. + // + // The first and last columns are similarly treated with respect to the X + // axis. + // + // The above is to help explain some of the special casing that goes on the + // code below. + + // The initial yDiv and whether the first row is considered stretchable or + // not depends on whether yDiv[0] was zero or not. + for (j = yIsStretchable ? 1 : 0; + j <= numYDivs && src.top() < bitmapHeight; + j++, yIsStretchable = !yIsStretchable) { + src.setLeft(0); + dst.setLeft(bounds.left()); + if (j == numYDivs) { + src.setBottom(bitmapHeight); + dst.setBottom(bounds.bottom()); + } else { + src.setBottom(m_chunkData.yDivs[j]); + const int srcYSize = src.bottom() - src.top(); + if (yIsStretchable) { + dst.setBottom(dst.top() + calculateStretch(bounds.bottom(), dst.top(), + srcYSize, + numStretchyYPixelsRemaining, + numFixedYPixelsRemaining)); + numStretchyYPixelsRemaining -= srcYSize; + } else { + dst.setBottom(dst.top() + srcYSize); + numFixedYPixelsRemaining -= srcYSize; + } + } + + xIsStretchable = initialXIsStretchable; + // The initial xDiv and whether the first column is considered + // stretchable or not depends on whether xDiv[0] was zero or not. + for (i = xIsStretchable ? 1 : 0; + i <= numXDivs && src.left() < bitmapWidth; + i++, xIsStretchable = !xIsStretchable) { + color = m_chunkData.colors[colorIndex++]; + if (i == numXDivs) { + src.setRight(bitmapWidth); + dst.setRight(bounds.right()); + } else { + src.setRight(m_chunkData.xDivs[i]); + if (dstRightsHaveBeenCached) { + dst.setRight(dstRights[i]); + } else { + const int srcXSize = src.right() - src.left(); + if (xIsStretchable) { + dst.setRight(dst.left() + calculateStretch(bounds.right(), dst.left(), + srcXSize, + numStretchyXPixelsRemaining, + numFixedXPixelsRemaining)); + numStretchyXPixelsRemaining -= srcXSize; + } else { + dst.setRight(dst.left() + srcXSize); + numFixedXPixelsRemaining -= srcXSize; + } + dstRights[i] = dst.right(); + } + } + // If this horizontal patch is too small to be displayed, leave + // the destination left edge where it is and go on to the next patch + // in the source. + if (src.left() >= src.right()) { + src.setLeft(src.right()); + continue; + } + // Make sure that we actually have room to draw any bits + if (dst.right() <= dst.left() || dst.bottom() <= dst.top()) { + goto nextDiv; + } + // If this patch is transparent, skip and don't draw. + if (color == TRANSPARENT_COLOR) + goto nextDiv; + if (color != NO_COLOR) + painter->fillRect(dst, (QRgb)color); + else + painter->drawPixmap(dst, pixmap, src); +nextDiv: + src.setLeft(src.right()); + dst.setLeft(dst.right()); + } + src.setTop(src.bottom()); + dst.setTop(dst.bottom()); + dstRightsHaveBeenCached = true; + } + painter->setRenderHints(savedHints); +} + +QAndroidStyle::AndroidGradientDrawable::AndroidGradientDrawable(const QVariantMap &drawable, + QAndroidStyle::ItemType itemType) + : AndroidDrawable(drawable, itemType), m_orientation(TOP_BOTTOM) +{ + m_radius = drawable.value(QLatin1String("radius")).toInt(); + if (m_radius < 0) + m_radius = 0; + + QVariantList colors = drawable.value(QLatin1String("colors")).toList(); + QVariantList positions = drawable.value(QLatin1String("positions")).toList(); + int min=colors.size() < positions.size() ? colors.size() : positions.size(); + for (int i = 0; i < min; i++) + m_gradient.setColorAt(positions.at(i).toDouble(), (QRgb)colors.at(i).toInt()); + + QByteArray orientation=drawable.value(QLatin1String("orientation")).toByteArray(); + if (orientation == "TOP_BOTTOM") // draw the gradient from the top to the bottom + m_orientation = TOP_BOTTOM; + else if (orientation == "TR_BL") // draw the gradient from the top-right to the bottom-left + m_orientation = TR_BL; + else if (orientation == "RIGHT_LEFT") // draw the gradient from the right to the left + m_orientation = RIGHT_LEFT; + else if (orientation == "BR_TL") // draw the gradient from the bottom-right to the top-left + m_orientation = BR_TL; + else if (orientation == "BOTTOM_TOP") // draw the gradient from the bottom to the top + m_orientation = BOTTOM_TOP; + else if (orientation == "BL_TR") // draw the gradient from the bottom-left to the top-right + m_orientation = BL_TR; + else if (orientation == "LEFT_RIGHT") // draw the gradient from the left to the right + m_orientation = LEFT_RIGHT; + else if (orientation == "TL_BR") // draw the gradient from the top-left to the bottom-right + m_orientation = TL_BR; + else + qWarning("AndroidGradientDrawable: unknown orientation"); +} + +QAndroidStyle::AndroidDrawableType QAndroidStyle::AndroidGradientDrawable::type() const +{ + return QAndroidStyle::Gradient; +} + +void QAndroidStyle::AndroidGradientDrawable::draw(QPainter *painter, const QStyleOption *opt) const +{ + const int width = opt->rect.width(); + const int height = opt->rect.height(); + switch (m_orientation) { + case TOP_BOTTOM: + // draw the gradient from the top to the bottom + m_gradient.setStart(width/2,0); + m_gradient.setFinalStop(width/2,height); + break; + case TR_BL: + // draw the gradient from the top-right to the bottom-left + m_gradient.setStart(width,0); + m_gradient.setFinalStop(0,height); + break; + case RIGHT_LEFT: + // draw the gradient from the right to the left + m_gradient.setStart(width,height/2); + m_gradient.setFinalStop(0,height/2); + break; + case BR_TL: + // draw the gradient from the bottom-right to the top-left + m_gradient.setStart(width,height); + m_gradient.setFinalStop(0,0); + break; + case BOTTOM_TOP: + // draw the gradient from the bottom to the top + m_gradient.setStart(width/2,height); + m_gradient.setFinalStop(width/2,0); + break; + case BL_TR: + // draw the gradient from the bottom-left to the top-right + m_gradient.setStart(0,height); + m_gradient.setFinalStop(width,0); + break; + case LEFT_RIGHT: + // draw the gradient from the left to the right + m_gradient.setStart(0,height/2); + m_gradient.setFinalStop(width,height/2); + break; + case TL_BR: + // draw the gradient from the top-left to the bottom-right + m_gradient.setStart(0,0); + m_gradient.setFinalStop(width,height); + break; + } + + const QBrush &oldBrush = painter->brush(); + const QPen oldPen = painter->pen(); + painter->setPen(Qt::NoPen); + painter->setBrush(m_gradient); + painter->drawRoundedRect(opt->rect, m_radius, m_radius); + painter->setBrush(oldBrush); + painter->setPen(oldPen); +} + +QSize QAndroidStyle::AndroidGradientDrawable::size() const +{ + return QSize(m_radius*2, m_radius*2); +} + +QAndroidStyle::AndroidClipDrawable::AndroidClipDrawable(const QVariantMap &drawable, + QAndroidStyle::ItemType itemType) + : AndroidDrawable(drawable, itemType) +{ + m_drawable = fromMap(drawable.value(QLatin1String("drawable")).toMap(), itemType); + m_factor = 0; + m_orientation = Qt::Horizontal; +} + +QAndroidStyle::AndroidClipDrawable::~AndroidClipDrawable() +{ + delete m_drawable; +} + +QAndroidStyle::AndroidDrawableType QAndroidStyle::AndroidClipDrawable::type() const +{ + return QAndroidStyle::Clip; +} + +void QAndroidStyle::AndroidClipDrawable::setFactor(double factor, Qt::Orientation orientation) +{ + m_factor = factor; + m_orientation = orientation; +} + +void QAndroidStyle::AndroidClipDrawable::draw(QPainter *painter, const QStyleOption *opt) const +{ + QStyleOption copy(*opt); + if (m_orientation == Qt::Horizontal) + copy.rect.setWidth(copy.rect.width()*m_factor); + else + copy.rect.setHeight(copy.rect.height()*m_factor); + + m_drawable->draw(painter, ©); +} + +QAndroidStyle::AndroidStateDrawable::AndroidStateDrawable(const QVariantMap &drawable, + QAndroidStyle::ItemType itemType) + : AndroidDrawable(drawable, itemType) +{ + QVariantList states = drawable.value(QLatin1String("stateslist")).toList(); + foreach (QVariant stateVariant, states) { + QVariantMap state = stateVariant.toMap(); + const int s = extractState(state.value(QLatin1String("states")).toMap()); + if (-1 == s) + continue; + const AndroidDrawable *ad = fromMap(state.value(QLatin1String("drawable")).toMap(), itemType); + if (!ad) + continue; + StateType item; + item.first = s; + item.second = ad; + m_states<draw(painter, opt); +} + +const QAndroidStyle::AndroidDrawable* QAndroidStyle::AndroidStateDrawable::bestAndroidStateMatch(const QStyleOption *opt) const +{ + const AndroidDrawable *bestMatch = 0; + if (!opt) { + if (m_states.size()) + return m_states[0].second; + return bestMatch; + } + + uint bestCost=0xffff; + foreach (const StateType & state, m_states) { + if (int(opt->state) == state.first) + return state.second; + uint cost = 0; + + int difference = int(opt->state^state.first); + + if (difference & QStyle::State_Active) + cost += 1000; + + if (difference & QStyle::State_Enabled) + cost += 1000; + + if ((m_itemType == QC_Button || m_itemType == QC_EditText) && (difference & QStyle::State_Raised)) + cost += 1000; + + if ((m_itemType == QC_Button || m_itemType == QC_EditText) && (difference & QStyle::State_Sunken)) + cost += 1000; + + if (difference & QStyle::State_Off) + cost += 1000; + + if (difference & QStyle::State_On) + cost += 1000; + + if (difference & QStyle::State_HasFocus) + cost += 1000; + + if (difference & QStyle::State_Selected) + cost += 1000; + + if (cost < bestCost) { + bestCost = cost; + bestMatch = state.second; + } + } + return bestMatch; +} + +int QAndroidStyle::AndroidStateDrawable::extractState(const QVariantMap &value) +{ + int state = QStyle::State_None; + foreach (const QString key, value.keys()) { + bool val = value.value(key).toString() == QLatin1String("true"); + if (key == QLatin1String("enabled") && val) { + state |= QStyle::State_Enabled; + continue; + } + + if (key == QLatin1String("window_focused") && val) { + state |= QStyle::State_Active; + continue; + } + + if (key == QLatin1String("focused") && val) { + state |= QStyle::State_HasFocus; + continue; + } + + if (key == QLatin1String("checked")) { + state |= val ? QStyle::State_On : QStyle::State_Off; + continue; + } + + if (key == QLatin1String("pressed")) { + state |= val ? QStyle::State_Raised : QStyle::State_Sunken; + state |= QStyle::State_Enabled | QStyle::State_HasFocus; + continue; + } + + if (key == QLatin1String("selected") && val) { + state |= QStyle::State_Selected; + state |= QStyle::State_Enabled | QStyle::State_HasFocus; + continue; + } + + if (key == QLatin1String("active") && val) { + state |= QStyle::State_Active; + continue; + } + + // Keep misspelling for compatibility + if (key == QLatin1String("backgroud") && val) + return -1; + } + return state; +} + +QAndroidStyle::AndroidLayerDrawable::AndroidLayerDrawable(const QVariantMap &drawable, + QAndroidStyle::ItemType itemType) + : AndroidDrawable(drawable, itemType) +{ + QVariantList layers = drawable.value(QLatin1String("layers")).toList(); + foreach (QVariant layer, layers) { + QVariantMap layerMap = layer.toMap(); + AndroidDrawable *ad = fromMap(layerMap, itemType); + if (ad) { + LayerType l; + l.second = ad; + l.first = layerMap.value(QLatin1String("id")).toInt(); + m_layers << l; + } + } +} + +QAndroidStyle::AndroidLayerDrawable::~AndroidLayerDrawable() +{ + foreach (const LayerType &layer, m_layers) + delete layer.second; +} + +QAndroidStyle::AndroidDrawableType QAndroidStyle::AndroidLayerDrawable::type() const +{ + return QAndroidStyle::Layer; +} + +void QAndroidStyle::AndroidLayerDrawable::draw(QPainter *painter, const QStyleOption *opt) const +{ + foreach (const LayerType &layer, m_layers) + layer.second->draw(painter, opt); +} + +QAndroidStyle::AndroidDrawable *QAndroidStyle::AndroidLayerDrawable::layer(int id) const +{ + foreach (const LayerType &layer, m_layers) + if (layer.first == id) + return layer.second; + return 0; +} + +QSize QAndroidStyle::AndroidLayerDrawable::size() const +{ + QSize sz; + foreach (const LayerType &layer, m_layers) + sz = sz.expandedTo(layer.second->size()); + return sz; +} + +QAndroidStyle::AndroidControl::AndroidControl(const QVariantMap &control, + QAndroidStyle::ItemType itemType) +{ + QVariantMap::const_iterator it = control.find(QLatin1String("View_background")); + if (it != control.end()) + m_background = AndroidDrawable::fromMap(it.value().toMap(), itemType); + else + m_background = 0; + + it = control.find(QLatin1String("View_minWidth")); + if (it!=control.end()) + m_minSize.setWidth(it.value().toInt()); + + it = control.find(QLatin1String("View_minHeight")); + if (it != control.end()) + m_minSize.setHeight(it.value().toInt()); + + it = control.find(QLatin1String("View_maxWidth")); + if (it != control.end()) + m_maxSize.setWidth(it.value().toInt()); + + it = control.find(QLatin1String("View_maxHeight")); + if (it != control.end()) + m_maxSize.setHeight(it.value().toInt()); +} + +QAndroidStyle::AndroidControl::~AndroidControl() +{ + delete m_background; +} + +void QAndroidStyle::AndroidControl::drawControl(const QStyleOption *opt, QPainter *p, const QWidget */*w*/) +{ + if (m_background) + m_background->draw(p, opt); +} + +QRect QAndroidStyle::AndroidControl::subElementRect(QStyle::SubElement /*subElement*/, + const QStyleOption *option, + const QWidget */*widget*/) const +{ + if (const AndroidDrawable *drawable=m_background) { + if (drawable->type() == State) + drawable = static_cast(m_background)->bestAndroidStateMatch(option); + + const QMargins &padding = drawable->padding(); + + QRect r = option->rect.adjusted(padding.left(), padding.top(), + -padding.right(), -padding.bottom()); + + if (r.width() < m_minSize.width()) + r.setWidth(m_minSize.width()); + + if (r.height() < m_minSize.height()) + r.setHeight(m_minSize.height()); + + return visualRect(option->direction, option->rect, r); + } + return option->rect; + +} + +QRect QAndroidStyle::AndroidControl::subControlRect(const QStyleOptionComplex *option, + QStyle::SubControl /*sc*/, + const QWidget *widget) const +{ + return subElementRect(QStyle::SE_CustomBase, option, widget); +} + +QSize QAndroidStyle::AndroidControl::sizeFromContents(const QStyleOption *opt, + const QSize &contentsSize, + const QWidget */*w*/) const +{ + QSize sz; + if (const AndroidDrawable *drawable=m_background) { + + if (drawable->type() == State) + drawable = static_cast(m_background)->bestAndroidStateMatch(opt); + const QMargins &padding = drawable->padding(); + sz.setWidth(padding.left() + padding.right()); + sz.setHeight(padding.top() + padding.bottom()); + if (sz.isEmpty()) + sz = drawable->size(); + } + sz += contentsSize; + if (contentsSize.height() < opt->fontMetrics.height()) + sz.setHeight(sz.height() + (opt->fontMetrics.height() - contentsSize.height())); + if (sz.height() < m_minSize.height()) + sz.setHeight(m_minSize.height()); + if (sz.width() < m_minSize.width()) + sz.setWidth(m_minSize.width()); + return sz; +} + +QMargins QAndroidStyle::AndroidControl::padding() +{ + if (const AndroidDrawable *drawable = m_background) + { + if (drawable->type() == State) + drawable=static_cast(m_background)->bestAndroidStateMatch(0); + return drawable->padding(); + } + return QMargins(); +} + +QAndroidStyle::AndroidCompoundButtonControl::AndroidCompoundButtonControl(const QVariantMap &control, + ItemType itemType) + : AndroidControl(control, itemType) +{ + QVariantMap::const_iterator it = control.find(QLatin1String("CompoundButton_button")); + if (it != control.end()) + m_button = AndroidDrawable::fromMap(it.value().toMap(), itemType); + else + m_button = 0; +} + +QAndroidStyle::AndroidCompoundButtonControl::~AndroidCompoundButtonControl() +{ + delete m_button; +} + +void QAndroidStyle::AndroidCompoundButtonControl::drawControl(const QStyleOption *opt, + QPainter *p, + const QWidget *w) +{ + AndroidControl::drawControl(opt, p, w); + if (m_button) + m_button->draw(p, opt); +} + +QAndroidStyle::AndroidProgressBarControl::AndroidProgressBarControl(const QVariantMap &control, + ItemType itemType) + : AndroidControl(control, itemType) +{ + QVariantMap::const_iterator it = control.find(QLatin1String("ProgressBar_indeterminateDrawable")); + if (it != control.end()) + m_indeterminateDrawable = AndroidDrawable::fromMap(it.value().toMap(), itemType); + else + m_indeterminateDrawable = 0; + + it = control.find(QLatin1String("ProgressBar_progressDrawable")); + if (it != control.end()) + m_progressDrawable = AndroidDrawable::fromMap(it.value().toMap(), itemType); + else + m_progressDrawable = 0; + + it = control.find(QLatin1String("ProgressBar_progress_id")); + if (it != control.end()) + m_progressId = it.value().toInt(); + + it = control.find(QLatin1String("ProgressBar_secondaryProgress_id")); + if (it != control.end()) + m_secondaryProgress_id = it.value().toInt(); + + it = control.find(QLatin1String("ProgressBar_minWidth")); + if (it != control.end()) + m_minSize.setWidth(it.value().toInt()); + + it = control.find(QLatin1String("ProgressBar_minHeight")); + if (it != control.end()) + m_minSize.setHeight(it.value().toInt()); + + it = control.find(QLatin1String("ProgressBar_maxWidth")); + if (it != control.end()) + m_maxSize.setWidth(it.value().toInt()); + + it = control.find(QLatin1String("ProgressBar_maxHeight")); + if (it != control.end()) + m_maxSize.setHeight(it.value().toInt()); +} + +QAndroidStyle::AndroidProgressBarControl::~AndroidProgressBarControl() +{ + delete m_progressDrawable; + delete m_indeterminateDrawable; +} + +void QAndroidStyle::AndroidProgressBarControl::drawControl(const QStyleOption *option, QPainter *p, const QWidget */*w*/) +{ + if (!m_progressDrawable) + return; + + if (const QStyleOptionProgressBar *progressBarOption = + qstyleoption_cast(option)) { + QStyleOptionProgressBarV2 progressBarV2(*progressBarOption); + if (m_progressDrawable->type() == QAndroidStyle::Layer) { + QAndroidStyle::AndroidDrawable *clipDrawable = static_cast(m_progressDrawable)->layer(m_progressId); + if (clipDrawable->type() == QAndroidStyle::Clip) + static_cast(clipDrawable)->setFactor(double(progressBarV2.progress/(progressBarV2.maximum-progressBarV2.minimum)), + progressBarV2.orientation); + } + m_progressDrawable->draw(p, option); + } +} + +QRect QAndroidStyle::AndroidProgressBarControl::subElementRect(QStyle::SubElement subElement, + const QStyleOption *option, + const QWidget *widget) const +{ + if (const QStyleOptionProgressBar *progressBarOption = + qstyleoption_cast(option)) { + QStyleOptionProgressBarV2 progressBarV2(*progressBarOption); + const bool horizontal = progressBarV2.orientation == Qt::Vertical; + if (!m_background) + return option->rect; + + QMargins padding = m_background->padding(); + QRect p(padding.left(), padding.top(), padding.right()-padding.left(), padding.bottom()-padding.top()); + padding = m_indeterminateDrawable->padding(); + p |= QRect(padding.left(), padding.top(), padding.right()-padding.left(), padding.bottom()-padding.top()); + padding = m_progressDrawable->padding(); + p |= QRect(padding.left(), padding.top(), padding.right()-padding.left(), padding.bottom()-padding.top()); + + QRect r = option->rect.adjusted(p.left(), p.top(), -p.right(), -p.bottom()); + + if (horizontal) { + if (r.height()m_maxSize.height()) + r.setHeight(m_maxSize.height()); + } else { + if (r.width()m_maxSize.width()) + r.setWidth(m_maxSize.width()); + } + return visualRect(option->direction, option->rect, r); + } + return AndroidControl::subElementRect(subElement, option, widget); +} + +QSize QAndroidStyle::AndroidProgressBarControl::sizeFromContents(const QStyleOption *opt, + const QSize &contentsSize, + const QWidget */*w*/) const +{ + QSize sz(contentsSize); + if (sz.height() < m_minSize.height()) + sz.setHeight(m_minSize.height()); + if (sz.width() < m_minSize.width()) + sz.setWidth(m_minSize.width()); + + if (const QStyleOptionProgressBar *progressBarOption = + qstyleoption_cast(opt)) { + QStyleOptionProgressBarV2 progressBarV2(*progressBarOption); + if (progressBarV2.orientation == Qt::Vertical) { + if (sz.height() > m_maxSize.height()) + sz.setHeight(m_maxSize.height()); + } else { + if (sz.width() > m_maxSize.width()) + sz.setWidth(m_maxSize.width()); + } + } + return contentsSize; +} + +QAndroidStyle::AndroidSeekBarControl::AndroidSeekBarControl(const QVariantMap &control, + ItemType itemType) + : AndroidProgressBarControl(control, itemType) +{ + QVariantMap::const_iterator it = control.find(QLatin1String("SeekBar_thumb")); + if (it != control.end()) + m_seekBarThumb = AndroidDrawable::fromMap(it.value().toMap(), itemType); + else + m_seekBarThumb = 0; +} + +QAndroidStyle::AndroidSeekBarControl::~AndroidSeekBarControl() +{ + delete m_seekBarThumb; +} + +void QAndroidStyle::AndroidSeekBarControl::drawControl(const QStyleOption *option, + QPainter *p, + const QWidget */*w*/) +{ + if (!m_seekBarThumb || !m_progressDrawable) + return; + + if (const QStyleOptionSlider *styleOption = + qstyleoption_cast(option)) { + double factor = double(styleOption->sliderPosition/(styleOption->maximum-styleOption->minimum)); + if (m_progressDrawable->type()==QAndroidStyle::Layer) { + QAndroidStyle::AndroidDrawable *clipDrawable = static_cast(m_progressDrawable)->layer(m_progressId); + if (clipDrawable->type() == QAndroidStyle::Clip) + static_cast(clipDrawable)->setFactor(factor, styleOption->orientation); + } + const AndroidDrawable *drawable=m_seekBarThumb; + if (drawable->type() == State) + drawable = static_cast(m_seekBarThumb)->bestAndroidStateMatch(option); + QStyleOption copy(*option); + copy.rect.setY((copy.rect.height()-m_minSize.height())/2); + copy.rect.setHeight(m_minSize.height()); + copy.rect.setWidth(copy.rect.width()-drawable->size().width()); + copy.rect.translate(drawable->size().width()/2,0); + m_progressDrawable->draw(p, ©); + if (styleOption->orientation == Qt::Vertical) + qCritical() << "Vertical slider are not supported"; + int pos = (double(copy.rect.width()*factor - drawable->size().width()) / 2); + copy.rect.translate(pos, 0); + copy.rect.setSize(drawable->size()); + m_seekBarThumb->draw(p, ©); + } +} + +QSize QAndroidStyle::AndroidSeekBarControl::sizeFromContents(const QStyleOption *opt, + const QSize &contentsSize, + const QWidget *w) const +{ + QSize sz = AndroidProgressBarControl::sizeFromContents(opt, contentsSize, w); + if (!m_seekBarThumb) + return sz; + const AndroidDrawable *drawable=m_seekBarThumb; + if (drawable->type() == State) + drawable = static_cast(m_seekBarThumb)->bestAndroidStateMatch(opt); + return sz.expandedTo(drawable->size()); +} + +QRect QAndroidStyle::AndroidSeekBarControl::subControlRect(const QStyleOptionComplex *option, + SubControl sc, + const QWidget */*widget*/) const +{ + const QStyleOptionSlider *styleOption = + qstyleoption_cast(option); + + if (m_seekBarThumb && sc == SC_SliderHandle && styleOption) { + const AndroidDrawable *drawable = m_seekBarThumb; + if (drawable->type() == State) + drawable = static_cast(m_seekBarThumb)->bestAndroidStateMatch(option); + + QRect r(option->rect); + double factor = double(styleOption->sliderPosition/(styleOption->maximum-styleOption->minimum)); + int pos=(double(option->rect.width()*factor - drawable->size().width()) / 2); + r.setX(r.x()+pos); + r.setSize(drawable->size()); + return r; + } + return option->rect; +} + +QAndroidStyle::AndroidSpinnerControl::AndroidSpinnerControl(const QVariantMap &control, + QAndroidStyle::ItemType itemType) + : AndroidControl(control, itemType) +{} + +QRect QAndroidStyle::AndroidSpinnerControl::subControlRect(const QStyleOptionComplex *option, + SubControl sc, + const QWidget *widget) const +{ + if (sc == QStyle::SC_ComboBoxListBoxPopup) + return option->rect; + return AndroidControl::subControlRect(option, sc, widget); +} + +QT_END_NAMESPACE + +#endif // !defined(QT_NO_STYLE_ANDROID) || defined(QT_PLUGIN) diff --git a/src/widgets/styles/qandroidstyle_p.h b/src/widgets/styles/qandroidstyle_p.h new file mode 100644 index 0000000000..35fa61983a --- /dev/null +++ b/src/widgets/styles/qandroidstyle_p.h @@ -0,0 +1,382 @@ +/**************************************************************************** +** +** Copyright (C) 2012 BogDan Vatra +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWidgets module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QANDROIDSTYLE_P_H +#define QANDROIDSTYLE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qstylefactory.cpp. This header may change from version to version +// without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#if !defined(QT_NO_STYLE_ANDROID) + +class Q_GUI_EXPORT QAndroidStyle : public QCommonStyle +{ + Q_OBJECT + +public: + enum ItemType + { + QC_UnknownType = -1, + QC_View, + QC_GroupBox, + QC_Button, + QC_Checkbox, + QC_RadioButton, + QC_Slider, + QC_Switch, + QC_EditText, + QC_Combobox, + QC_BusyIndicator, + QC_ProgressBar, + QC_Tab, + QC_TabButton, + QC_RatingIndicator, + QC_SearchBox, + QC_CustomCOntrol=0xf00, + QC_ControlMask=0xfff + }; + + struct Android9PatchChunk + { + QVector xDivs; + QVector yDivs; + QVector colors; + }; + + struct AndroidItemStateInfo + { + AndroidItemStateInfo():state(0){} + int state; + QByteArray filePath; + QByteArray hashKey; + Android9PatchChunk chunkData; + QSize size; + QMargins padding; + }; + + enum AndroidDrawableType + { + Color, + Image, + Clip, + NinePatch, + Gradient, + State, + Layer + }; + + class AndroidDrawable + { + public: + AndroidDrawable(const QVariantMap &drawable, ItemType itemType); + virtual ~AndroidDrawable(); + virtual void initPadding(const QVariantMap &drawable); + virtual AndroidDrawableType type() const = 0; + virtual void draw(QPainter *painter,const QStyleOption *opt) const = 0; + const QMargins &padding() const; + virtual QSize size() const; + static AndroidDrawable *fromMap(const QVariantMap &drawable, ItemType itemType); + static QMargins extractMargins(const QVariantMap &value); + protected: + ItemType m_itemType; + QMargins m_padding; + }; + + class AndroidColorDrawable: public AndroidDrawable + { + public: + AndroidColorDrawable(const QVariantMap &drawable, ItemType itemType); + virtual AndroidDrawableType type() const; + virtual void draw(QPainter *painter,const QStyleOption *opt) const; + + protected: + QColor m_color; + }; + + class AndroidImageDrawable: public AndroidDrawable + { + public: + AndroidImageDrawable(const QVariantMap &drawable, ItemType itemType); + virtual AndroidDrawableType type() const; + virtual void draw(QPainter *painter,const QStyleOption *opt) const; + virtual QSize size() const; + + protected: + QString m_filePath; + mutable QString m_hashKey; + QSize m_size; + }; + + class Android9PatchDrawable: public AndroidImageDrawable + { + public: + Android9PatchDrawable(const QVariantMap &drawable, ItemType itemType); + virtual AndroidDrawableType type() const; + virtual void draw(QPainter *painter, const QStyleOption *opt) const; + private: + static int calculateStretch(int boundsLimit, int startingPoint, + int srcSpace, int numStrechyPixelsRemaining, + int numFixedPixelsRemaining); + void extractIntArray(const QVariantList &values, QVector &array); + private: + Android9PatchChunk m_chunkData; + }; + + class AndroidGradientDrawable: public AndroidDrawable + { + public: + enum GradientOrientation + { + TOP_BOTTOM, + TR_BL, + RIGHT_LEFT, + BR_TL, + BOTTOM_TOP, + BL_TR, + LEFT_RIGHT, + TL_BR + }; + + public: + AndroidGradientDrawable(const QVariantMap &drawable, ItemType itemType); + virtual AndroidDrawableType type() const; + virtual void draw(QPainter *painter, const QStyleOption *opt) const; + QSize size() const; + private: + mutable QLinearGradient m_gradient; + GradientOrientation m_orientation; + int m_radius; + }; + + class AndroidClipDrawable: public AndroidDrawable + { + public: + AndroidClipDrawable(const QVariantMap &drawable, ItemType itemType); + ~AndroidClipDrawable(); + virtual AndroidDrawableType type() const; + virtual void setFactor(double factor, Qt::Orientation orientation); + virtual void draw(QPainter *painter, const QStyleOption *opt) const; + + private: + double m_factor; + Qt::Orientation m_orientation; + const AndroidDrawable *m_drawable; + }; + + class AndroidStateDrawable: public AndroidDrawable + { + public: + AndroidStateDrawable(const QVariantMap &drawable, ItemType itemType); + ~AndroidStateDrawable(); + virtual AndroidDrawableType type() const; + virtual void draw(QPainter *painter, const QStyleOption *opt) const; + inline const AndroidDrawable *bestAndroidStateMatch(const QStyleOption *opt) const; + static int extractState(const QVariantMap &value); + + private: + typedef QPair StateType; + QList m_states; + }; + + class AndroidLayerDrawable: public AndroidDrawable + { + public: + AndroidLayerDrawable(const QVariantMap &drawable, QAndroidStyle::ItemType itemType); + ~AndroidLayerDrawable(); + virtual AndroidDrawableType type() const; + virtual void draw(QPainter *painter, const QStyleOption *opt) const; + AndroidDrawable *layer(int id) const; + QSize size() const; + private: + typedef QPair LayerType; + QList m_layers; + }; + + class AndroidControl + { + public: + AndroidControl(const QVariantMap &control, ItemType itemType); + virtual ~AndroidControl(); + virtual void drawControl(const QStyleOption *opt, QPainter *p, const QWidget *w); + virtual QRect subElementRect(SubElement subElement, + const QStyleOption *option, + const QWidget *widget = 0) const; + virtual QRect subControlRect(const QStyleOptionComplex *option, + SubControl sc, + const QWidget *widget = 0) const; + virtual QSize sizeFromContents(const QStyleOption *opt, + const QSize &contentsSize, + const QWidget *w) const; + virtual QMargins padding(); + protected: + const AndroidDrawable *m_background; + QSize m_minSize; + QSize m_maxSize; + }; + + class AndroidCompoundButtonControl : public AndroidControl + { + public: + AndroidCompoundButtonControl(const QVariantMap &control, ItemType itemType); + virtual ~AndroidCompoundButtonControl(); + virtual void drawControl(const QStyleOption *opt, QPainter *p, const QWidget *w); + + protected: + const AndroidDrawable *m_button; + }; + + class AndroidProgressBarControl : public AndroidControl + { + public: + AndroidProgressBarControl(const QVariantMap &control, ItemType itemType); + virtual ~AndroidProgressBarControl(); + virtual void drawControl(const QStyleOption *option, QPainter *p, const QWidget *w); + virtual QRect subElementRect(SubElement subElement, + const QStyleOption *option, + const QWidget *widget = 0) const; + + QSize sizeFromContents(const QStyleOption *opt, + const QSize &contentsSize, + const QWidget *w) const; + protected: + AndroidDrawable *m_progressDrawable; + AndroidDrawable *m_indeterminateDrawable; + int m_secondaryProgress_id; + int m_progressId; + }; + + class AndroidSeekBarControl : public AndroidProgressBarControl + { + public: + AndroidSeekBarControl(const QVariantMap &control, ItemType itemType); + virtual ~AndroidSeekBarControl(); + virtual void drawControl(const QStyleOption *option, QPainter *p, const QWidget *w); + QSize sizeFromContents(const QStyleOption *opt, + const QSize &contentsSize, const QWidget *w) const; + QRect subControlRect(const QStyleOptionComplex *option, SubControl sc, + const QWidget *widget = 0) const; + private: + AndroidDrawable *m_seekBarThumb; + }; + + class AndroidSpinnerControl : public AndroidControl + { + public: + AndroidSpinnerControl(const QVariantMap &control, ItemType itemType); + virtual ~AndroidSpinnerControl(){} + virtual QRect subControlRect(const QStyleOptionComplex *option, + SubControl sc, + const QWidget *widget = 0) const; + }; + + typedef QList AndroidItemStateInfoList; + +public: + QAndroidStyle(); + ~QAndroidStyle(); + + virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, + const QWidget *w = 0) const; + + virtual void drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, + const QWidget *w = 0) const; + + virtual QRect subElementRect(SubElement subElement, const QStyleOption *option, + const QWidget *widget = 0) const; + virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, + const QWidget *widget = 0) const; + virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, + const QPoint &pt, const QWidget *widget = 0) const; + virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, + SubControl sc, const QWidget *widget = 0) const; + + virtual int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, + const QWidget *widget = 0) const; + + virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, + const QSize &contentsSize, const QWidget *w = 0) const; + + virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt = 0, + const QWidget *widget = 0) const; + + virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, + const QStyleOption *opt) const; + + virtual QPalette standardPalette() const; +private: + Q_DISABLE_COPY(QAndroidStyle) + static ItemType qtControl(QStyle::ComplexControl control); + static ItemType qtControl(QStyle::ContentsType contentsType); + static ItemType qtControl(QStyle::ControlElement controlElement); + static ItemType qtControl(QStyle::PrimitiveElement primitiveElement); + static ItemType qtControl(QStyle::SubElement subElement); + static ItemType qtControl(const QString &android); + + static void setPaletteColor(const QVariantMap &object, + QPalette &palette, + QPalette::ColorRole role); +private: + typedef QHash AndroidControlsHash; + AndroidControlsHash m_androidControlsHash; + QPalette m_standardPalette; +}; + +#endif // QT_NO_STYLE_ANDROID + +QT_END_NAMESPACE + +#endif // QANDROIDSTYLE_P_H diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 1a41b6dbaa..52c733b8ec 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -5100,7 +5100,11 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget ret = theme->themeHint(QPlatformTheme::ToolButtonStyle).toInt(); break; case SH_RequestSoftwareInputPanel: +#ifdef Q_OS_ANDROID + ret = RSIP_OnMouseClick; +#else ret = RSIP_OnMouseClickAndAlreadyFocused; +#endif break; case SH_ScrollBar_Transient: ret = false; diff --git a/src/widgets/styles/qstylefactory.cpp b/src/widgets/styles/qstylefactory.cpp index 471d3b748d..5028371e23 100644 --- a/src/widgets/styles/qstylefactory.cpp +++ b/src/widgets/styles/qstylefactory.cpp @@ -48,6 +48,9 @@ #include "qwindowsstyle_p.h" #ifndef QT_NO_STYLE_FUSION #include "qfusionstyle_p.h" +#ifndef QT_NO_STYLE_ANDROID +#include "qandroidstyle_p.h" +#endif #endif #ifndef QT_NO_STYLE_GTK #include "qgtkstyle_p.h" @@ -143,6 +146,11 @@ QStyle *QStyleFactory::create(const QString& key) ret = new QFusionStyle; else #endif +#ifndef QT_NO_STYLE_ANDROID + if (style == QLatin1String("android")) + ret = new QAndroidStyle; + else +#endif #ifndef QT_NO_STYLE_GTK if (style == QLatin1String("gtk") || style == QLatin1String("gtk+")) ret = new QGtkStyle; @@ -206,6 +214,10 @@ QStringList QStyleFactory::keys() (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) list << QLatin1String("WindowsVista"); #endif +#ifndef QT_NO_STYLE_ANDROID + if (!list.contains(QLatin1String("Android"))) + list << QLatin1String("Android"); +#endif #ifndef QT_NO_STYLE_GTK if (!list.contains(QLatin1String("GTK+"))) list << QLatin1String("GTK+"); diff --git a/src/widgets/styles/styles.pri b/src/widgets/styles/styles.pri index b15eb1fa48..9f23fb30cc 100644 --- a/src/widgets/styles/styles.pri +++ b/src/widgets/styles/styles.pri @@ -136,3 +136,10 @@ contains( styles, windowsmobile ) { } else { DEFINES += QT_NO_STYLE_WINDOWSMOBILE } + +contains( styles, android ) { + HEADERS += styles/qandroidstyle_p.h + SOURCES += styles/qandroidstyle.cpp +} else { + DEFINES += QT_NO_STYLE_ANDROID +} diff --git a/src/widgets/widgets/qtextbrowser.cpp b/src/widgets/widgets/qtextbrowser.cpp index 61e7a5fbfb..b4158e3b8d 100644 --- a/src/widgets/widgets/qtextbrowser.cpp +++ b/src/widgets/widgets/qtextbrowser.cpp @@ -151,12 +151,18 @@ public: QString QTextBrowserPrivate::findFile(const QUrl &name) const { QString fileName; - if (name.scheme() == QLatin1String("qrc")) + if (name.scheme() == QLatin1String("qrc")) { fileName = QLatin1String(":/") + name.path(); - else if (name.scheme().isEmpty()) + } else if (name.scheme().isEmpty()) { fileName = name.path(); - else - fileName = name.toLocalFile(); + } else { +#if defined(Q_OS_ANDROID) + if (name.scheme() == QLatin1String("assets")) + fileName = QLatin1String("assets:") + name.path(); + else +#endif + fileName = name.toLocalFile(); + } if (QFileInfo(fileName).isAbsolute()) return fileName; @@ -217,13 +223,14 @@ void QTextBrowserPrivate::_q_activateAnchor(const QString &href) textOrSourceChanged = false; #ifndef QT_NO_DESKTOPSERVICES - if ((openExternalLinks - && url.scheme() != QLatin1String("file") - && url.scheme() != QLatin1String("qrc") - && !url.isRelative()) - || (url.isRelative() && !currentURL.isRelative() - && currentURL.scheme() != QLatin1String("file") - && currentURL.scheme() != QLatin1String("qrc"))) { + bool isFileScheme = + url.scheme() == QLatin1String("file") +#if defined(Q_OS_ANDROID) + || url.scheme() == QLatin1String("assets") +#endif + || url.scheme() == QLatin1String("qrc"); + if ((openExternalLinks && !isFileScheme && !url.isRelative()) + || (url.isRelative() && !currentURL.isRelative() && !isFileScheme)) { QDesktopServices::openUrl(url); return; } -- cgit v1.2.3 From f4933eba546be71c97a36cfeed2b6d8d187a16c3 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 4 Mar 2013 09:52:37 +0100 Subject: Windows: Take custom margins into account for size constraints. Fix a warning unearthed by the task's code example. The minimum size of the window would be too big since it did not take the negative custom top margin into account. Task-number: QTBUG-29904 Change-Id: I8b71a39f0724bdd1b9359676ce1d86ef5384d685 Reviewed-by: Oliver Wolff Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/qwindowswindow.cpp | 15 ++++++++------- src/plugins/platforms/windows/qwindowswindow.h | 3 ++- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index d565420f4f..ed814336f0 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -575,9 +575,10 @@ void WindowCreationData::initialize(HWND hwnd, bool frameChange, qreal opacityLe #define QWINDOWSIZE_MAX ((1<<24)-1) -QWindowsGeometryHint::QWindowsGeometryHint(const QWindow *w) : +QWindowsGeometryHint::QWindowsGeometryHint(const QWindow *w, const QMargins &cm) : minimumSize(w->minimumSize()), - maximumSize(w->maximumSize()) + maximumSize(w->maximumSize()), + customMargins(cm) { } @@ -650,8 +651,8 @@ void QWindowsGeometryHint::applyToMinMaxInfo(DWORD style, DWORD exStyle, MINMAXI << " in " << *mmi; const QMargins margins = QWindowsGeometryHint::frame(style, exStyle); - const int frameWidth = margins.left() + margins.right(); - const int frameHeight = margins.top() + margins.bottom(); + const int frameWidth = margins.left() + margins.right() + customMargins.left() + customMargins.right(); + const int frameHeight = margins.top() + margins.bottom() + customMargins.top() + customMargins.bottom(); if (minimumSize.width() > 0) mmi->ptMinTrackSize.x = minimumSize.width() + frameWidth; if (minimumSize.height() > 0) @@ -702,7 +703,7 @@ QWindowCreationContext::QWindowCreationContext(const QWindow *w, const QRect &geometry, const QMargins &cm, DWORD style_, DWORD exStyle_) : - geometryHint(w), style(style_), exStyle(exStyle_), + geometryHint(w, cm), style(style_), exStyle(exStyle_), requestedGeometry(geometry), obtainedGeometry(geometry), margins(QWindowsGeometryHint::frame(style, exStyle)), customMargins(cm), frameX(CW_USEDEFAULT), frameY(CW_USEDEFAULT), @@ -1095,7 +1096,7 @@ void QWindowsWindow::setGeometry(const QRect &rectIn) const QSize newSize = rect.size(); // Check on hint. if (newSize != oldSize) { - const QWindowsGeometryHint hint(window()); + const QWindowsGeometryHint hint(window(), m_data.customMargins); if (!hint.validSize(newSize)) { qWarning("%s: Attempt to set a size (%dx%d) violating the constraints" "(%dx%d - %dx%d) on window '%s'.", __FUNCTION__, @@ -1683,7 +1684,7 @@ void QWindowsWindow::setFrameStrutEventsEnabled(bool enabled) #ifndef Q_OS_WINCE // maybe available on some SDKs revisit WM_GETMINMAXINFO void QWindowsWindow::getSizeHints(MINMAXINFO *mmi) const { - const QWindowsGeometryHint hint(window()); + const QWindowsGeometryHint hint(window(), m_data.customMargins); hint.applyToMinMaxInfo(m_data.hwnd, mmi); if (QWindowsContext::verboseWindows) qDebug() << __FUNCTION__ << window() << *mmi; diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h index 8fe5cbe17b..87397f1c1d 100644 --- a/src/plugins/platforms/windows/qwindowswindow.h +++ b/src/plugins/platforms/windows/qwindowswindow.h @@ -67,7 +67,7 @@ class QWindowsEGLStaticContext; struct QWindowsGeometryHint { QWindowsGeometryHint() {} - explicit QWindowsGeometryHint(const QWindow *w); + explicit QWindowsGeometryHint(const QWindow *w, const QMargins &customMargins); static QMargins frame(DWORD style, DWORD exStyle); static bool handleCalculateSize(const QMargins &customMargins, const MSG &msg, LRESULT *result); #ifndef Q_OS_WINCE //MinMax maybe define struct if not available @@ -85,6 +85,7 @@ struct QWindowsGeometryHint QSize minimumSize; QSize maximumSize; + QMargins customMargins; }; struct QWindowCreationContext -- cgit v1.2.3 From 9100a68221b2317a1858976583cd840978e3a98f Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 4 Mar 2013 09:37:41 +0100 Subject: Windows: Print size constraints in geometry warning. Change-Id: I0f8f82e975bfe7e9b00c48741b2a0317fac5f839 Reviewed-by: Oliver Wolff Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/qwindowswindow.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index ed814336f0..cecbd81214 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -1114,14 +1114,19 @@ void QWindowsWindow::setGeometry(const QRect &rectIn) if (m_data.geometry != rect) { qWarning("%s: Unable to set geometry %dx%d+%d+%d on '%s'." " Resulting geometry: %dx%d+%d+%d " - "(frame: %d, %d, %d, %d).", + "(frame: %d, %d, %d, %d, custom margin: %d, %d, %d, %d" + ", minimum size: %dx%d, maximum size: %dx%d).", __FUNCTION__, rect.width(), rect.height(), rect.x(), rect.y(), qPrintable(window()->objectName()), m_data.geometry.width(), m_data.geometry.height(), m_data.geometry.x(), m_data.geometry.y(), m_data.frame.left(), m_data.frame.top(), - m_data.frame.right(), m_data.frame.bottom()); + m_data.frame.right(), m_data.frame.bottom(), + m_data.customMargins.left(), m_data.customMargins.top(), + m_data.customMargins.right(), m_data.customMargins.bottom(), + window()->minimumWidth(), window()->minimumHeight(), + window()->maximumWidth(), window()->maximumHeight()); } } else { QPlatformWindow::setGeometry(rect); -- cgit v1.2.3 From 09fb084e3a16ea3cbca896e270ff7d9bd6b6c313 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 1 Mar 2013 15:15:03 +0100 Subject: Output window in warning about flush() for unexposed window. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1dd975926c2bea7bcc10a702739836b16b656213 Reviewed-by: Samuel Rødal --- src/gui/painting/qbackingstore.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp index 1bf0b33047..fb47e62d11 100644 --- a/src/gui/painting/qbackingstore.cpp +++ b/src/gui/painting/qbackingstore.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include @@ -97,8 +98,10 @@ void QBackingStore::flush(const QRegion ®ion, QWindow *win, const QPoint &off if (!win) win = window(); - if (win && !qt_window_private(win)->receivedExpose) - qWarning("QBackingStore::flush() called with non-exposed window, behavior is undefined"); + if (win && !qt_window_private(win)->receivedExpose) { + qWarning().nospace() << "QBackingStore::flush() called with non-exposed window " + << win << ", behavior is undefined"; + } d_ptr->platformBackingStore->flush(win, region, offset); } -- cgit v1.2.3 From 7a5fea113ec6088135b0b6a0fc4297e0ef362bc5 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 4 Mar 2013 21:25:39 +0100 Subject: Fix crash in flushWindowSystemEvents() in QGuiApplication-cleanup. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Check for existence of QGuiApplication, discard events if it is 0. Change-Id: I04b27679033fb13ef2fa38e39757d89465cba94b Reviewed-by: Shawn Rutledge Reviewed-by: Samuel Rødal --- src/gui/kernel/qwindowsysteminterface.cpp | 10 ++++++++++ src/gui/kernel/qwindowsysteminterface_p.h | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 8c5a3bc215..3609d5dce6 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -527,6 +527,16 @@ void QWindowSystemInterface::deferredFlushWindowSystemEvents() void QWindowSystemInterface::flushWindowSystemEvents() { + const int count = QWindowSystemInterfacePrivate::windowSystemEventQueue.count(); + if (!count) + return; + if (!QGuiApplication::instance()) { + qWarning().nospace() + << "QWindowSystemInterface::flushWindowSystemEvents() invoked after " + "QGuiApplication destruction, discarding " << count << " events."; + QWindowSystemInterfacePrivate::windowSystemEventQueue.clear(); + return; + } if (QThread::currentThread() != QGuiApplication::instance()->thread()) { QMutexLocker locker(&QWindowSystemInterfacePrivate::flushEventMutex); QWindowSystemInterfacePrivate::FlushEventsEvent *e = new QWindowSystemInterfacePrivate::FlushEventsEvent(); diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h index 431b2cbe1e..eca559abfa 100644 --- a/src/gui/kernel/qwindowsysteminterface_p.h +++ b/src/gui/kernel/qwindowsysteminterface_p.h @@ -387,9 +387,10 @@ public: mutable QMutex mutex; public: WindowSystemEventList() : impl(), mutex() {} - ~WindowSystemEventList() - { const QMutexLocker locker(&mutex); qDeleteAll(impl); impl.clear(); } + ~WindowSystemEventList() { clear(); } + void clear() + { const QMutexLocker locker(&mutex); qDeleteAll(impl); impl.clear(); } void prepend(WindowSystemEvent *e) { const QMutexLocker locker(&mutex); impl.prepend(e); } WindowSystemEvent *takeFirstOrReturnNull() -- cgit v1.2.3 From b1c3f71a7b1c31a1995d86a07f7113fad0468ac5 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Tue, 5 Mar 2013 01:12:23 +0200 Subject: QLocale: Add some more languages and scripts Change-Id: Iab23128c1567974154cdcce7412b2e1468bb8462 Reviewed-by: Lars Knoll --- src/corelib/tools/qlocale.h | 125 +++++- src/corelib/tools/qlocale.qdoc | 149 +++++++- src/corelib/tools/qlocale_data_p.h | 751 ++++++++++++++++++++++++++++++------- 3 files changed, 869 insertions(+), 156 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h index f7f30ea0d5..6199cdb19b 100644 --- a/src/corelib/tools/qlocale.h +++ b/src/corelib/tools/qlocale.h @@ -206,7 +206,7 @@ public: Turkish = 125, Turkmen = 126, Tahitian = 127, - Uigur = 128, + Uighur = 128, Ukrainian = 129, Urdu = 130, Uzbek = 131, @@ -339,6 +339,57 @@ public: Kako = 258, Meta = 259, Ngiemboon = 260, + Aragonese = 261, + Akkadian = 262, + AncientEgyptian = 263, + AncientGreek = 264, + Aramaic = 265, + Balinese = 266, + Bamun = 267, + BatakToba = 268, + Buginese = 269, + Buhid = 270, + Carian = 271, + Chakma = 272, + ClassicalMandaic = 273, + Coptic = 274, + Dogri = 275, + EasternCham = 276, + EasternKayah = 277, + Etruscan = 278, + Gothic = 279, + Hanunoo = 280, + Ingush = 281, + LargeFloweryMiao = 282, + Lepcha = 283, + Limbu = 284, + Lisu = 285, + Lu = 286, + Lycian = 287, + Lydian = 288, + Mandingo = 289, + Manipuri = 290, + Meroitic = 291, + NorthernThai = 292, + OldIrish = 293, + OldNorse = 294, + OldPersian = 295, + OldTurkish = 296, + Pahlavi = 297, + Parthian = 298, + Phoenician = 299, + PrakritLanguage = 300, + Rejang = 301, + Sabaean = 302, + Samaritan = 303, + Santali = 304, + Saurashtra = 305, + Sora = 306, + Sylheti = 307, + Tagbanwa = 308, + TaiDam = 309, + TaiNua = 310, + Ugaritic = 311, Norwegian = NorwegianBokmal, Moldavian = Romanian, SerboCroatian = Serbian, @@ -352,7 +403,8 @@ public: RhaetoRomance = Romansh, Chewa = Nyanja, Frisian = WesternFrisian, - LastLanguage = Ngiemboon + Uigur = Uighur, + LastLanguage = Ugaritic }; enum Script { @@ -392,9 +444,76 @@ public: SyriacScript = 33, YiScript = 34, VaiScript = 35, + AvestanScript = 36, + BalineseScript = 37, + BamumScript = 38, + BatakScript = 39, + BopomofoScript = 40, + BrahmiScript = 41, + BugineseScript = 42, + BuhidScript = 43, + CanadianAboriginalScript = 44, + CarianScript = 45, + ChakmaScript = 46, + ChamScript = 47, + CopticScript = 48, + CypriotScript = 49, + EgyptianHieroglyphsScript = 50, + FraserScript = 51, + GlagoliticScript = 52, + GothicScript = 53, + HanScript = 54, + HangulScript = 55, + HanunooScript = 56, + ImperialAramaicScript = 57, + InscriptionalPahlaviScript = 58, + InscriptionalParthianScript = 59, + JavaneseScript = 60, + KaithiScript = 61, + KatakanaScript = 62, + KayahLiScript = 63, + KharoshthiScript = 64, + LannaScript = 65, + LepchaScript = 66, + LimbuScript = 67, + LinearBScript = 68, + LycianScript = 69, + LydianScript = 70, + MandaeanScript = 71, + MeiteiMayekScript = 72, + MeroiticScript = 73, + MeroiticCursiveScript = 74, + NkoScript = 75, + NewTaiLueScript = 76, + OghamScript = 77, + OlChikiScript = 78, + OldItalicScript = 79, + OldPersianScript = 80, + OldSouthArabianScript = 81, + OrkhonScript = 82, + OsmanyaScript = 83, + PhagsPaScript = 84, + PhoenicianScript = 85, + PollardPhoneticScript = 86, + RejangScript = 87, + RunicScript = 88, + SamaritanScript = 89, + SaurashtraScript = 90, + SharadaScript = 91, + ShavianScript = 92, + SoraSompengScript = 93, + CuneiformScript = 94, + SundaneseScript = 95, + SylotiNagriScript = 96, + TagalogScript = 97, + TagbanwaScript = 98, + TaiLeScript = 99, + TaiVietScript = 100, + TakriScript = 101, + UgariticScript = 102, SimplifiedChineseScript = SimplifiedHanScript, TraditionalChineseScript = TraditionalHanScript, - LastScript = VaiScript + LastScript = UgariticScript }; enum Country { AnyCountry = 0, diff --git a/src/corelib/tools/qlocale.qdoc b/src/corelib/tools/qlocale.qdoc index 8c76833fc1..770c72e476 100644 --- a/src/corelib/tools/qlocale.qdoc +++ b/src/corelib/tools/qlocale.qdoc @@ -289,7 +289,8 @@ \value Turkish \value Turkmen \value Twi Obsolete, please use Akan - \value Uigur + \value Uighur + \value Uigur Obsolete, please use Uighur \value Ukrainian \value Urdu \value Uzbek @@ -401,6 +402,57 @@ \value Kako \value Meta \value Ngiemboon + \value Aragonese + \value Akkadian + \value AncientEgyptian + \value AncientGreek + \value Aramaic + \value Balinese + \value Bamun + \value BatakToba + \value Buginese + \value Buhid + \value Carian + \value Chakma + \value ClassicalMandaic + \value Coptic + \value Dogri + \value EasternCham + \value EasternKayah + \value Etruscan + \value Gothic + \value Hanunoo + \value Ingush + \value LargeFloweryMiao + \value Lepcha + \value Limbu + \value Lisu + \value Lu + \value Lycian + \value Lydian + \value Mandingo + \value Manipuri + \value Meroitic + \value NorthernThai + \value OldIrish + \value OldNorse + \value OldPersian + \value OldTurkish + \value Pahlavi + \value Parthian + \value Phoenician + \value PrakritLanguage + \value Rejang + \value Sabaean + \value Samaritan + \value Santali + \value Saurashtra + \value Sora + \value Sylheti + \value Tagbanwa + \value TaiDam + \value TaiNua + \value Ugaritic \omitvalue LastLanguage \sa language(), languageToString() @@ -686,42 +738,109 @@ \value AnyScript \value ArabicScript - \value CyrillicScript - \value DeseretScript - \value GurmukhiScript - \value SimplifiedHanScript same as SimplifiedChineseScript - \value SimplifiedChineseScript same as SimplifiedHanScript - \value TraditionalHanScript same as TraditionalChineseScript - \value TraditionalChineseScript same as TraditionalHanScript - \value LatinScript - \value MongolianScript - \value TifinaghScript \value ArmenianScript + \value AvestanScript + \value BalineseScript + \value BamumScript + \value BatakScript \value BengaliScript + \value BopomofoScript + \value BrahmiScript + \value BugineseScript + \value BuhidScript + \value CanadianAboriginalScript + \value CarianScript + \value ChakmaScript + \value ChamScript \value CherokeeScript + \value CopticScript + \value CypriotScript + \value CyrillicScript + \value DeseretScript \value DevanagariScript + \value EgyptianHieroglyphsScript \value EthiopicScript + \value FraserScript \value GeorgianScript + \value GlagoliticScript + \value GothicScript \value GreekScript \value GujaratiScript + \value GurmukhiScript + \value HanScript + \value HangulScript + \value HanunooScript \value HebrewScript + \value ImperialAramaicScript + \value InscriptionalPahlaviScript + \value InscriptionalParthianScript \value JapaneseScript - \value KhmerScript + \value JavaneseScript + \value KaithiScript \value KannadaScript + \value KatakanaScript + \value KayahLiScript + \value KharoshthiScript + \value KhmerScript \value KoreanScript + \value LannaScript \value LaoScript + \value LatinScript + \value LepchaScript + \value LimbuScript + \value LinearBScript + \value LycianScript + \value LydianScript \value MalayalamScript + \value MandaeanScript + \value MeiteiMayekScript + \value MeroiticScript + \value MeroiticCursiveScript + \value MongolianScript \value MyanmarScript + \value NkoScript + \value NewTaiLueScript + \value OghamScript + \value OlChikiScript + \value OldItalicScript + \value OldPersianScript + \value OldSouthArabianScript \value OriyaScript + \value OrkhonScript + \value OsmanyaScript + \value PhagsPaScript + \value PhoenicianScript + \value PollardPhoneticScript + \value RejangScript + \value RunicScript + \value SamaritanScript + \value SaurashtraScript + \value SharadaScript + \value ShavianScript + \value SimplifiedHanScript same as SimplifiedChineseScript + \value SimplifiedChineseScript same as SimplifiedHanScript + \value SinhalaScript + \value SoraSompengScript + \value CuneiformScript + \value SundaneseScript + \value SylotiNagriScript + \value SyriacScript + \value TagalogScript + \value TagbanwaScript + \value TaiLeScript + \value TaiVietScript + \value TakriScript \value TamilScript \value TeluguScript \value ThaanaScript \value ThaiScript \value TibetanScript - \value SinhalaScript - \value SyriacScript - \value YiScript + \value TifinaghScript + \value TraditionalHanScript same as TraditionalChineseScript + \value TraditionalChineseScript same as TraditionalHanScript + \value UgariticScript \value VaiScript + \value YiScript \omitvalue LastScript \sa script(), scriptToString(), languageToString() diff --git a/src/corelib/tools/qlocale_data_p.h b/src/corelib/tools/qlocale_data_p.h index c7e9e83dbd..1f1a6ef4c7 100644 --- a/src/corelib/tools/qlocale_data_p.h +++ b/src/corelib/tools/qlocale_data_p.h @@ -77,7 +77,7 @@ static const int ImperialMeasurementSystemsCount = // GENERATED PART STARTS HERE /* - This part of the file was generated on 2012-11-23 from the + This part of the file was generated on 2012-12-19 from the Common Locale Data Repository v22.1 http://www.unicode.org/cldr/ @@ -172,6 +172,7 @@ static const QLocaleId likely_subtags[] = { { 52, 0, 0 }, { 52, 7, 101 }, // id -> id_Latn_ID { 149, 0, 0 }, { 149, 7, 157 }, // ig -> ig_Latn_NG { 168, 0, 0 }, { 168, 34, 44 }, // ii -> ii_Yiii_CN + { 281, 0, 0 }, { 281, 2, 178 }, // inh -> inh_Cyrl_RU { 51, 0, 0 }, { 51, 7, 99 }, // is -> is_Latn_IS { 58, 0, 0 }, { 58, 7, 106 }, // it -> it_Latn_IT { 59, 0, 0 }, { 59, 19, 108 }, // ja -> ja_Jpan_JP @@ -273,6 +274,7 @@ static const QLocaleId likely_subtags[] = { { 99, 0, 0 }, { 99, 13, 100 }, // sa -> sa_Deva_IN { 248, 0, 0 }, { 248, 2, 178 }, // sah -> sah_Cyrl_RU { 179, 0, 0 }, { 179, 7, 111 }, // saq -> saq_Latn_KE + { 304, 0, 0 }, { 304, 7, 100 }, // sat -> sat_Latn_IN { 249, 0, 0 }, { 249, 7, 210 }, // sbp -> sbp_Latn_TZ { 105, 0, 0 }, { 105, 1, 100 }, // sd -> sd_Arab_IN { 173, 0, 0 }, { 173, 7, 161 }, // se -> se_Latn_NO @@ -334,7 +336,9 @@ static const QLocaleId likely_subtags[] = { { 0, 1, 100 }, { 130, 1, 100 }, // und_Arab_IN -> ur_Arab_IN { 0, 1, 157 }, { 47, 1, 157 }, // und_Arab_NG -> ha_Arab_NG { 0, 1, 163 }, { 130, 1, 163 }, // und_Arab_PK -> ur_Arab_PK + { 0, 57, 0 }, { 265, 57, 102 }, // und_Armi -> arc_Armi_IR { 0, 10, 0 }, { 9, 10, 11 }, // und_Armn -> hy_Armn_AM + { 0, 36, 0 }, { 255, 36, 102 }, // und_Avst -> ae_Avst_IR { 0, 0, 27 }, { 142, 7, 27 }, // und_BA -> bs_Latn_BA { 0, 0, 18 }, { 15, 11, 18 }, // und_BD -> bn_Beng_BD { 0, 0, 21 }, { 30, 7, 21 }, // und_BE -> nl_Latn_BE @@ -349,7 +353,14 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 30 }, { 91, 7, 30 }, // und_BR -> pt_Latn_BR { 0, 0, 25 }, { 16, 31, 25 }, // und_BT -> dz_Tibt_BT { 0, 0, 20 }, { 22, 2, 20 }, // und_BY -> be_Cyrl_BY + { 0, 37, 0 }, { 266, 37, 101 }, // und_Bali -> ban_Bali_ID + { 0, 38, 0 }, { 267, 38, 37 }, // und_Bamu -> bax_Bamu_CM + { 0, 39, 0 }, { 268, 39, 101 }, // und_Batk -> bbc_Batk_ID { 0, 11, 0 }, { 15, 11, 18 }, // und_Beng -> bn_Beng_BD + { 0, 40, 0 }, { 25, 40, 208 }, // und_Bopo -> zh_Bopo_TW + { 0, 41, 0 }, { 300, 41, 100 }, // und_Brah -> pra_Brah_IN + { 0, 42, 0 }, { 269, 42, 101 }, // und_Bugi -> bug_Bugi_ID + { 0, 43, 0 }, { 270, 43, 170 }, // und_Buhd -> bku_Buhd_PH { 0, 0, 49 }, { 113, 7, 49 }, // und_CD -> sw_Latn_CD { 0, 0, 41 }, { 37, 7, 41 }, // und_CF -> fr_Latn_CF { 0, 0, 50 }, { 37, 7, 50 }, // und_CG -> fr_Latn_CG @@ -365,7 +376,13 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 39 }, { 91, 7, 39 }, // und_CV -> pt_Latn_CV { 0, 0, 56 }, { 43, 16, 56 }, // und_CY -> el_Grek_CY { 0, 0, 57 }, { 28, 7, 57 }, // und_CZ -> cs_Latn_CZ + { 0, 46, 0 }, { 272, 46, 18 }, // und_Cakm -> ccp_Cakm_BD + { 0, 44, 0 }, { 221, 44, 38 }, // und_Cans -> cr_Cans_CA + { 0, 45, 0 }, { 271, 45, 217 }, // und_Cari -> xcr_Cari_TR + { 0, 47, 0 }, { 276, 47, 232 }, // und_Cham -> cjm_Cham_VN { 0, 12, 0 }, { 190, 12, 225 }, // und_Cher -> chr_Cher_US + { 0, 48, 0 }, { 274, 48, 64 }, // und_Copt -> cop_Copt_EG + { 0, 49, 0 }, { 264, 49, 56 }, // und_Cprt -> grc_Cprt_CY { 0, 2, 0 }, { 96, 2, 178 }, // und_Cyrl -> ru_Cyrl_RU { 0, 2, 27 }, { 100, 2, 27 }, // und_Cyrl_BA -> sr_Cyrl_BA { 0, 2, 81 }, { 2, 2, 81 }, // und_Cyrl_GE -> ab_Cyrl_GE @@ -382,6 +399,7 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 236 }, { 8, 1, 236 }, // und_EH -> ar_Arab_EH { 0, 0, 67 }, { 122, 14, 67 }, // und_ER -> ti_Ethi_ER { 0, 0, 197 }, { 111, 7, 197 }, // und_ES -> es_Latn_ES + { 0, 50, 0 }, { 263, 50, 64 }, // und_Egyp -> egy_Egyp_EG { 0, 14, 0 }, { 7, 14, 69 }, // und_Ethi -> am_Ethi_ET { 0, 0, 73 }, { 36, 7, 73 }, // und_FI -> fi_Latn_FI { 0, 0, 71 }, { 34, 7, 71 }, // und_FO -> fo_Latn_FO @@ -398,6 +416,8 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 90 }, { 111, 7, 90 }, // und_GT -> es_Latn_GT { 0, 0, 92 }, { 91, 7, 92 }, // und_GW -> pt_Latn_GW { 0, 15, 0 }, { 41, 15, 81 }, // und_Geor -> ka_Geor_GE + { 0, 52, 0 }, { 219, 52, 33 }, // und_Glag -> cu_Glag_BG + { 0, 53, 0 }, { 279, 53, 222 }, // und_Goth -> got_Goth_UA { 0, 16, 0 }, { 43, 16, 85 }, // und_Grek -> el_Grek_GR { 0, 17, 0 }, { 46, 17, 100 }, // und_Gujr -> gu_Gujr_IN { 0, 4, 0 }, { 92, 4, 100 }, // und_Guru -> pa_Guru_IN @@ -406,6 +426,9 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 54 }, { 27, 7, 54 }, // und_HR -> hr_Latn_HR { 0, 0, 94 }, { 222, 7, 94 }, // und_HT -> ht_Latn_HT { 0, 0, 98 }, { 50, 7, 98 }, // und_HU -> hu_Latn_HU + { 0, 55, 0 }, { 66, 55, 114 }, // und_Hang -> ko_Hang_KR + { 0, 54, 0 }, { 25, 5, 44 }, // und_Hani -> zh_Hans_CN + { 0, 56, 0 }, { 280, 56, 170 }, // und_Hano -> hnn_Hano_PH { 0, 5, 0 }, { 25, 5, 44 }, // und_Hans -> zh_Hans_CN { 0, 6, 0 }, { 25, 6, 208 }, // und_Hant -> zh_Hant_TW { 0, 18, 0 }, { 48, 18, 105 }, // und_Hebr -> he_Hebr_IL @@ -417,8 +440,10 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 102 }, { 89, 1, 102 }, // und_IR -> fa_Arab_IR { 0, 0, 99 }, { 51, 7, 99 }, // und_IS -> is_Latn_IS { 0, 0, 106 }, { 58, 7, 106 }, // und_IT -> it_Latn_IT + { 0, 79, 0 }, { 278, 79, 106 }, // und_Ital -> ett_Ital_IT { 0, 0, 109 }, { 8, 1, 109 }, // und_JO -> ar_Arab_JO { 0, 0, 108 }, { 59, 19, 108 }, // und_JP -> ja_Jpan_JP + { 0, 60, 0 }, { 60, 60, 101 }, // und_Java -> jv_Java_ID { 0, 19, 0 }, { 59, 19, 108 }, // und_Jpan -> ja_Jpan_JP { 0, 0, 116 }, { 65, 2, 116 }, // und_KG -> ky_Cyrl_KG { 0, 0, 36 }, { 23, 20, 36 }, // und_KH -> km_Khmr_KH @@ -427,9 +452,13 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 114 }, { 66, 22, 114 }, // und_KR -> ko_Kore_KR { 0, 0, 115 }, { 8, 1, 115 }, // und_KW -> ar_Arab_KW { 0, 0, 110 }, { 96, 2, 110 }, // und_KZ -> ru_Cyrl_KZ + { 0, 63, 0 }, { 277, 63, 147 }, // und_Kali -> eky_Kali_MM + { 0, 62, 0 }, { 59, 62, 108 }, // und_Kana -> ja_Kana_JP + { 0, 64, 0 }, { 300, 64, 163 }, // und_Khar -> pra_Khar_PK { 0, 20, 0 }, { 23, 20, 36 }, // und_Khmr -> km_Khmr_KH { 0, 21, 0 }, { 61, 21, 100 }, // und_Knda -> kn_Knda_IN { 0, 22, 0 }, { 66, 22, 114 }, // und_Kore -> ko_Kore_KR + { 0, 61, 0 }, { 17, 61, 100 }, // und_Kthi -> bh_Kthi_IN { 0, 0, 117 }, { 69, 23, 117 }, // und_LA -> lo_Laoo_LA { 0, 0, 119 }, { 8, 1, 119 }, // und_LB -> ar_Arab_LB { 0, 0, 123 }, { 42, 7, 123 }, // und_LI -> de_Latn_LI @@ -439,6 +468,7 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 125 }, { 37, 7, 125 }, // und_LU -> fr_Latn_LU { 0, 0, 118 }, { 71, 7, 118 }, // und_LV -> lv_Latn_LV { 0, 0, 122 }, { 8, 1, 122 }, // und_LY -> ar_Arab_LY + { 0, 65, 0 }, { 292, 65, 211 }, // und_Lana -> nod_Lana_TH { 0, 23, 0 }, { 69, 23, 117 }, // und_Laoo -> lo_Laoo_LA { 0, 7, 44 }, { 139, 7, 44 }, // und_Latn_CN -> za_Latn_CN { 0, 7, 56 }, { 125, 7, 56 }, // und_Latn_CY -> tr_Latn_CY @@ -450,6 +480,12 @@ static const QLocaleId likely_subtags[] = { { 0, 7, 136 }, { 37, 7, 136 }, // und_Latn_MR -> fr_Latn_MR { 0, 7, 207 }, { 37, 7, 207 }, // und_Latn_SY -> fr_Latn_SY { 0, 7, 216 }, { 37, 7, 216 }, // und_Latn_TN -> fr_Latn_TN + { 0, 66, 0 }, { 283, 66, 100 }, // und_Lepc -> lep_Lepc_IN + { 0, 67, 0 }, { 284, 67, 100 }, // und_Limb -> lif_Limb_IN + { 0, 68, 0 }, { 264, 68, 85 }, // und_Linb -> grc_Linb_GR + { 0, 51, 0 }, { 285, 51, 44 }, // und_Lisu -> lis_Lisu_CN + { 0, 69, 0 }, { 287, 69, 217 }, // und_Lyci -> xlc_Lyci_TR + { 0, 70, 0 }, { 288, 70, 217 }, // und_Lydi -> xld_Lydi_TR { 0, 0, 145 }, { 8, 1, 145 }, // und_MA -> ar_Arab_MA { 0, 0, 142 }, { 37, 7, 142 }, // und_MC -> fr_Latn_MC { 0, 0, 141 }, { 95, 7, 141 }, // und_MD -> ro_Latn_MD @@ -469,8 +505,12 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 139 }, { 111, 7, 139 }, // und_MX -> es_Latn_MX { 0, 0, 130 }, { 76, 7, 130 }, // und_MY -> ms_Latn_MY { 0, 0, 146 }, { 91, 7, 146 }, // und_MZ -> pt_Latn_MZ + { 0, 71, 0 }, { 273, 71, 102 }, // und_Mand -> myz_Mand_IR + { 0, 74, 0 }, { 291, 74, 201 }, // und_Merc -> xmr_Merc_SD + { 0, 73, 0 }, { 291, 73, 201 }, // und_Mero -> xmr_Mero_SD { 0, 24, 0 }, { 77, 24, 100 }, // und_Mlym -> ml_Mlym_IN { 0, 8, 0 }, { 82, 8, 44 }, // und_Mong -> mn_Mong_CN + { 0, 72, 0 }, { 290, 72, 100 }, // und_Mtei -> mni_Mtei_IN { 0, 25, 0 }, { 21, 25, 147 }, // und_Mymr -> my_Mymr_MM { 0, 0, 148 }, { 228, 7, 148 }, // und_NA -> kj_Latn_NA { 0, 0, 153 }, { 37, 7, 153 }, // und_NC -> fr_Latn_NC @@ -479,8 +519,13 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 151 }, { 30, 7, 151 }, // und_NL -> nl_Latn_NL { 0, 0, 161 }, { 85, 7, 161 }, // und_NO -> nb_Latn_NO { 0, 0, 150 }, { 84, 13, 150 }, // und_NP -> ne_Deva_NP + { 0, 75, 0 }, { 289, 75, 91 }, // und_Nkoo -> man_Nkoo_GN { 0, 0, 162 }, { 8, 1, 162 }, // und_OM -> ar_Arab_OM + { 0, 77, 0 }, { 293, 77, 104 }, // und_Ogam -> sga_Ogam_IE + { 0, 78, 0 }, { 304, 78, 100 }, // und_Olck -> sat_Olck_IN + { 0, 82, 0 }, { 296, 82, 143 }, // und_Orkh -> otk_Orkh_MN { 0, 26, 0 }, { 87, 26, 100 }, // und_Orya -> or_Orya_IN + { 0, 83, 0 }, { 110, 83, 194 }, // und_Osma -> so_Osma_SO { 0, 0, 166 }, { 111, 7, 166 }, // und_PA -> es_Latn_PA { 0, 0, 169 }, { 111, 7, 169 }, // und_PE -> es_Latn_PE { 0, 0, 77 }, { 37, 7, 77 }, // und_PF -> fr_Latn_PF @@ -492,12 +537,18 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 165 }, { 8, 1, 165 }, // und_PS -> ar_Arab_PS { 0, 0, 173 }, { 91, 7, 173 }, // und_PT -> pt_Latn_PT { 0, 0, 168 }, { 45, 7, 168 }, // und_PY -> gn_Latn_PY + { 0, 58, 0 }, { 297, 58, 102 }, // und_Phli -> pal_Phli_IR + { 0, 85, 0 }, { 299, 85, 119 }, // und_Phnx -> phn_Phnx_LB + { 0, 86, 0 }, { 282, 86, 44 }, // und_Plrd -> hmd_Plrd_CN + { 0, 59, 0 }, { 298, 59, 102 }, // und_Prti -> xpr_Prti_IR { 0, 0, 175 }, { 8, 1, 175 }, // und_QA -> ar_Arab_QA { 0, 0, 176 }, { 37, 7, 176 }, // und_RE -> fr_Latn_RE { 0, 0, 177 }, { 95, 7, 177 }, // und_RO -> ro_Latn_RO { 0, 0, 243 }, { 100, 2, 243 }, // und_RS -> sr_Cyrl_RS { 0, 0, 178 }, { 96, 2, 178 }, // und_RU -> ru_Cyrl_RU { 0, 0, 179 }, { 64, 7, 179 }, // und_RW -> rw_Latn_RW + { 0, 87, 0 }, { 301, 87, 101 }, // und_Rjng -> rej_Rjng_ID + { 0, 88, 0 }, { 294, 88, 205 }, // und_Runr -> non_Runr_SE { 0, 0, 186 }, { 8, 1, 186 }, // und_SA -> ar_Arab_SA { 0, 0, 188 }, { 37, 7, 188 }, // und_SC -> fr_Latn_SC { 0, 0, 201 }, { 8, 1, 201 }, // und_SD -> ar_Arab_SD @@ -512,7 +563,16 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 185 }, { 91, 7, 185 }, // und_ST -> pt_Latn_ST { 0, 0, 65 }, { 111, 7, 65 }, // und_SV -> es_Latn_SV { 0, 0, 207 }, { 8, 1, 207 }, // und_SY -> ar_Arab_SY + { 0, 89, 0 }, { 303, 89, 105 }, // und_Samr -> smp_Samr_IL + { 0, 81, 0 }, { 302, 81, 237 }, // und_Sarb -> xsa_Sarb_YE + { 0, 90, 0 }, { 305, 90, 100 }, // und_Saur -> saz_Saur_IN + { 0, 92, 0 }, { 31, 92, 224 }, // und_Shaw -> en_Shaw_GB + { 0, 91, 0 }, { 99, 91, 100 }, // und_Shrd -> sa_Shrd_IN { 0, 32, 0 }, { 106, 32, 198 }, // und_Sinh -> si_Sinh_LK + { 0, 93, 0 }, { 306, 93, 100 }, // und_Sora -> srb_Sora_IN + { 0, 95, 0 }, { 112, 95, 101 }, // und_Sund -> su_Sund_ID + { 0, 96, 0 }, { 307, 96, 18 }, // und_Sylo -> syl_Sylo_BD + { 0, 33, 0 }, { 151, 33, 207 }, // und_Syrc -> syr_Syrc_SY { 0, 0, 42 }, { 37, 7, 42 }, // und_TD -> fr_Latn_TD { 0, 0, 212 }, { 37, 7, 212 }, // und_TG -> fr_Latn_TG { 0, 0, 211 }, { 120, 30, 211 }, // und_TH -> th_Thai_TH @@ -524,9 +584,15 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 217 }, { 125, 7, 217 }, // und_TR -> tr_Latn_TR { 0, 0, 208 }, { 25, 6, 208 }, // und_TW -> zh_Hant_TW { 0, 0, 210 }, { 113, 7, 210 }, // und_TZ -> sw_Latn_TZ + { 0, 98, 0 }, { 308, 98, 170 }, // und_Tagb -> tbw_Tagb_PH + { 0, 101, 0 }, { 275, 101, 100 }, // und_Takr -> doi_Takr_IN + { 0, 99, 0 }, { 310, 99, 44 }, // und_Tale -> tdd_Tale_CN + { 0, 76, 0 }, { 286, 76, 44 }, // und_Talu -> khb_Talu_CN { 0, 27, 0 }, { 117, 27, 100 }, // und_Taml -> ta_Taml_IN + { 0, 100, 0 }, { 309, 100, 232 }, // und_Tavt -> blt_Tavt_VN { 0, 28, 0 }, { 119, 28, 100 }, // und_Telu -> te_Telu_IN { 0, 9, 0 }, { 183, 9, 216 }, // und_Tfng -> shi_Tfng_TN + { 0, 97, 0 }, { 166, 97, 170 }, // und_Tglg -> fil_Tglg_PH { 0, 29, 0 }, { 143, 29, 131 }, // und_Thaa -> dv_Thaa_MV { 0, 30, 0 }, { 120, 30, 211 }, // und_Thai -> th_Thai_TH { 0, 31, 0 }, { 121, 31, 44 }, // und_Tibt -> bo_Tibt_CN @@ -534,6 +600,7 @@ static const QLocaleId likely_subtags[] = { { 0, 0, 221 }, { 113, 7, 221 }, // und_UG -> sw_Latn_UG { 0, 0, 227 }, { 111, 7, 227 }, // und_UY -> es_Latn_UY { 0, 0, 228 }, { 131, 2, 228 }, // und_UZ -> uz_Cyrl_UZ + { 0, 102, 0 }, { 311, 102, 207 }, // und_Ugar -> uga_Ugar_SY { 0, 0, 230 }, { 70, 7, 230 }, // und_VA -> la_Latn_VA { 0, 0, 231 }, { 111, 7, 231 }, // und_VE -> es_Latn_VE { 0, 0, 232 }, { 132, 7, 232 }, // und_VN -> vi_Latn_VN @@ -541,6 +608,8 @@ static const QLocaleId likely_subtags[] = { { 0, 35, 0 }, { 252, 35, 121 }, // und_Vaii -> vai_Vaii_LR { 0, 0, 235 }, { 37, 7, 235 }, // und_WF -> fr_Latn_WF { 0, 0, 183 }, { 97, 7, 183 }, // und_WS -> sm_Latn_WS + { 0, 80, 0 }, { 295, 80, 102 }, // und_Xpeo -> peo_Xpeo_IR + { 0, 94, 0 }, { 262, 94, 103 }, // und_Xsux -> akk_Xsux_IQ { 0, 0, 237 }, { 8, 1, 237 }, // und_YE -> ar_Arab_YE { 0, 0, 138 }, { 37, 7, 138 }, // und_YT -> fr_Latn_YT { 0, 34, 0 }, { 168, 34, 44 }, // und_Yiii -> ii_Yiii_CN @@ -563,6 +632,7 @@ static const QLocaleId likely_subtags[] = { { 139, 0, 0 }, { 139, 7, 44 }, // za -> za_Latn_CN { 25, 0, 0 }, { 25, 5, 44 }, // zh -> zh_Hans_CN { 25, 0, 97 }, { 25, 6, 97 }, // zh_HK -> zh_Hant_HK + { 25, 54, 0 }, { 25, 5, 44 }, // zh_Hani -> zh_Hans_CN { 25, 6, 0 }, { 25, 6, 208 }, // zh_Hant -> zh_Hant_TW { 25, 0, 126 }, { 25, 6, 126 }, // zh_MO -> zh_Hant_MO { 25, 0, 208 }, { 25, 6, 208 }, // zh_TW -> zh_Hant_TW @@ -698,7 +768,7 @@ static const quint16 locale_index[] = { 332, // Turkish 0, // Turkmen 0, // Tahitian - 0, // Uigur + 0, // Uighur 334, // Ukrainian 335, // Urdu 337, // Uzbek @@ -831,6 +901,57 @@ static const quint16 locale_index[] = { 435, // Kako 436, // Meta 437, // Ngiemboon + 0, // Aragonese + 0, // Akkadian + 0, // AncientEgyptian + 0, // AncientGreek + 0, // Aramaic + 0, // Balinese + 0, // Bamun + 0, // BatakToba + 0, // Buginese + 0, // Buhid + 0, // Carian + 0, // Chakma + 0, // ClassicalMandaic + 0, // Coptic + 0, // Dogri + 0, // EasternCham + 0, // EasternKayah + 0, // Etruscan + 0, // Gothic + 0, // Hanunoo + 0, // Ingush + 0, // LargeFloweryMiao + 0, // Lepcha + 0, // Limbu + 0, // Lisu + 0, // Lu + 0, // Lycian + 0, // Lydian + 0, // Mandingo + 0, // Manipuri + 0, // Meroitic + 0, // NorthernThai + 0, // OldIrish + 0, // OldNorse + 0, // OldPersian + 0, // OldTurkish + 0, // Pahlavi + 0, // Parthian + 0, // Phoenician + 0, // PrakritLanguage + 0, // Rejang + 0, // Sabaean + 0, // Samaritan + 0, // Santali + 0, // Saurashtra + 0, // Sora + 0, // Sylheti + 0, // Tagbanwa + 0, // TaiDam + 0, // TaiNua + 0, // Ugaritic 0 // trailing 0 }; @@ -5275,7 +5396,7 @@ static const char language_name_list[] = "Turkish\0" "Turkmen\0" "Tahitian\0" -"Uigur\0" +"Uighur\0" "Ukrainian\0" "Urdu\0" "Uzbek\0" @@ -5408,6 +5529,57 @@ static const char language_name_list[] = "Kako\0" "Meta\0" "Ngiemboon\0" +"Aragonese\0" +"Akkadian\0" +"AncientEgyptian\0" +"AncientGreek\0" +"Aramaic\0" +"Balinese\0" +"Bamun\0" +"BatakToba\0" +"Buginese\0" +"Buhid\0" +"Carian\0" +"Chakma\0" +"ClassicalMandaic\0" +"Coptic\0" +"Dogri\0" +"EasternCham\0" +"EasternKayah\0" +"Etruscan\0" +"Gothic\0" +"Hanunoo\0" +"Ingush\0" +"LargeFloweryMiao\0" +"Lepcha\0" +"Limbu\0" +"Lisu\0" +"Lu\0" +"Lycian\0" +"Lydian\0" +"Mandingo\0" +"Manipuri\0" +"Meroitic\0" +"NorthernThai\0" +"OldIrish\0" +"OldNorse\0" +"OldPersian\0" +"OldTurkish\0" +"Pahlavi\0" +"Parthian\0" +"Phoenician\0" +"PrakritLanguage\0" +"Rejang\0" +"Sabaean\0" +"Samaritan\0" +"Santali\0" +"Saurashtra\0" +"Sora\0" +"Sylheti\0" +"Tagbanwa\0" +"TaiDam\0" +"TaiNua\0" +"Ugaritic\0" ; static const quint16 language_name_index[] = { @@ -5539,139 +5711,190 @@ static const quint16 language_name_index[] = { 1023, // Turkish 1031, // Turkmen 1039, // Tahitian - 1048, // Uigur - 1054, // Ukrainian - 1064, // Urdu - 1069, // Uzbek - 1075, // Vietnamese - 1086, // Volapuk - 1094, // Welsh - 1100, // Wolof - 1106, // Xhosa - 1112, // Yiddish - 1120, // Yoruba - 1127, // Zhuang - 1134, // Zulu - 1139, // NorwegianNynorsk - 1156, // Bosnian - 1164, // Divehi - 1171, // Manx - 1176, // Cornish - 1184, // Akan - 1189, // Konkani - 1197, // Ga - 1200, // Igbo - 1205, // Kamba - 1211, // Syriac - 1218, // Blin - 1223, // Geez - 1228, // Koro - 1233, // Sidamo - 1240, // Atsam - 1246, // Tigre - 1252, // Jju - 1256, // Friulian - 1265, // Venda - 1271, // Ewe - 1275, // Walamo - 1282, // Hawaiian - 1291, // Tyap - 1296, // Nyanja - 1303, // Filipino - 1312, // Swiss German - 1325, // Sichuan Yi - 1336, // Kpelle - 1343, // Low German - 1354, // South Ndebele - 1368, // Northern Sotho - 1383, // Northern Sami - 1397, // Taroko - 1404, // Gusii - 1410, // Taita - 1416, // Fulah - 1422, // Kikuyu - 1429, // Samburu - 1437, // Sena - 1442, // North Ndebele - 1456, // Rombo - 1462, // Tachelhit - 1472, // Kabyle - 1479, // Nyankole - 1488, // Bena - 1493, // Vunjo - 1499, // Bambara - 1507, // Embu - 1512, // Cherokee - 1521, // Morisyen - 1530, // Makonde - 1538, // Langi - 1544, // Ganda - 1550, // Bemba - 1556, // Kabuverdianu - 1569, // Meru - 1574, // Kalenjin - 1583, // Nama - 1588, // Machame - 1596, // Colognian - 1606, // Masai - 1612, // Soga - 1617, // Luyia - 1623, // Asu - 1627, // Teso - 1632, // Saho - 1637, // Koyra Chiini - 1650, // Rwa - 1654, // Luo - 1658, // Chiga - 1664, // Central Morocco Tamazight - 1690, // Koyraboro Senni - 1706, // Shambala - 1715, // Bodo - 1720, // Avaric - 1727, // Chamorro - 1736, // Chechen - 1744, // Church - 1751, // Chuvash - 1759, // Cree - 1764, // Haitian - 1772, // Herero - 1779, // Hiri Motu - 1789, // Kanuri - 1796, // Komi - 1801, // Kongo - 1807, // Kwanyama - 1816, // Limburgish - 1827, // LubaKatanga - 1839, // Luxembourgish - 1853, // Navaho - 1860, // Ndonga - 1867, // Ojibwa - 1874, // Pali - 1879, // Walloon - 1887, // Aghem - 1893, // Basaa - 1899, // Zarma - 1905, // Duala - 1911, // JolaFonyi - 1921, // Ewondo - 1928, // Bafia - 1934, // MakhuwaMeetto - 1948, // Mundang - 1956, // Kwasio - 1963, // Nuer - 1968, // Sakha - 1974, // Sangu - 1980, // Congo Swahili - 1994, // Tasawaq - 2002, // Vai - 2006, // Walser - 2013, // Yangben - 2021, // Avestan - 2029, // Asturian - 2038, // Ngomba - 2045, // Kako - 2050, // Meta - 2055, // Ngiemboon + 1048, // Uighur + 1055, // Ukrainian + 1065, // Urdu + 1070, // Uzbek + 1076, // Vietnamese + 1087, // Volapuk + 1095, // Welsh + 1101, // Wolof + 1107, // Xhosa + 1113, // Yiddish + 1121, // Yoruba + 1128, // Zhuang + 1135, // Zulu + 1140, // NorwegianNynorsk + 1157, // Bosnian + 1165, // Divehi + 1172, // Manx + 1177, // Cornish + 1185, // Akan + 1190, // Konkani + 1198, // Ga + 1201, // Igbo + 1206, // Kamba + 1212, // Syriac + 1219, // Blin + 1224, // Geez + 1229, // Koro + 1234, // Sidamo + 1241, // Atsam + 1247, // Tigre + 1253, // Jju + 1257, // Friulian + 1266, // Venda + 1272, // Ewe + 1276, // Walamo + 1283, // Hawaiian + 1292, // Tyap + 1297, // Nyanja + 1304, // Filipino + 1313, // Swiss German + 1326, // Sichuan Yi + 1337, // Kpelle + 1344, // Low German + 1355, // South Ndebele + 1369, // Northern Sotho + 1384, // Northern Sami + 1398, // Taroko + 1405, // Gusii + 1411, // Taita + 1417, // Fulah + 1423, // Kikuyu + 1430, // Samburu + 1438, // Sena + 1443, // North Ndebele + 1457, // Rombo + 1463, // Tachelhit + 1473, // Kabyle + 1480, // Nyankole + 1489, // Bena + 1494, // Vunjo + 1500, // Bambara + 1508, // Embu + 1513, // Cherokee + 1522, // Morisyen + 1531, // Makonde + 1539, // Langi + 1545, // Ganda + 1551, // Bemba + 1557, // Kabuverdianu + 1570, // Meru + 1575, // Kalenjin + 1584, // Nama + 1589, // Machame + 1597, // Colognian + 1607, // Masai + 1613, // Soga + 1618, // Luyia + 1624, // Asu + 1628, // Teso + 1633, // Saho + 1638, // Koyra Chiini + 1651, // Rwa + 1655, // Luo + 1659, // Chiga + 1665, // Central Morocco Tamazight + 1691, // Koyraboro Senni + 1707, // Shambala + 1716, // Bodo + 1721, // Avaric + 1728, // Chamorro + 1737, // Chechen + 1745, // Church + 1752, // Chuvash + 1760, // Cree + 1765, // Haitian + 1773, // Herero + 1780, // Hiri Motu + 1790, // Kanuri + 1797, // Komi + 1802, // Kongo + 1808, // Kwanyama + 1817, // Limburgish + 1828, // LubaKatanga + 1840, // Luxembourgish + 1854, // Navaho + 1861, // Ndonga + 1868, // Ojibwa + 1875, // Pali + 1880, // Walloon + 1888, // Aghem + 1894, // Basaa + 1900, // Zarma + 1906, // Duala + 1912, // JolaFonyi + 1922, // Ewondo + 1929, // Bafia + 1935, // MakhuwaMeetto + 1949, // Mundang + 1957, // Kwasio + 1964, // Nuer + 1969, // Sakha + 1975, // Sangu + 1981, // Congo Swahili + 1995, // Tasawaq + 2003, // Vai + 2007, // Walser + 2014, // Yangben + 2022, // Avestan + 2030, // Asturian + 2039, // Ngomba + 2046, // Kako + 2051, // Meta + 2056, // Ngiemboon + 2066, // Aragonese + 2076, // Akkadian + 2085, // AncientEgyptian + 2101, // AncientGreek + 2114, // Aramaic + 2122, // Balinese + 2131, // Bamun + 2137, // BatakToba + 2147, // Buginese + 2156, // Buhid + 2162, // Carian + 2169, // Chakma + 2176, // ClassicalMandaic + 2193, // Coptic + 2200, // Dogri + 2206, // EasternCham + 2218, // EasternKayah + 2231, // Etruscan + 2240, // Gothic + 2247, // Hanunoo + 2255, // Ingush + 2262, // LargeFloweryMiao + 2279, // Lepcha + 2286, // Limbu + 2292, // Lisu + 2297, // Lu + 2300, // Lycian + 2307, // Lydian + 2314, // Mandingo + 2323, // Manipuri + 2332, // Meroitic + 2341, // NorthernThai + 2354, // OldIrish + 2363, // OldNorse + 2372, // OldPersian + 2383, // OldTurkish + 2394, // Pahlavi + 2402, // Parthian + 2411, // Phoenician + 2422, // PrakritLanguage + 2438, // Rejang + 2445, // Sabaean + 2453, // Samaritan + 2463, // Santali + 2471, // Saurashtra + 2482, // Sora + 2487, // Sylheti + 2495, // Tagbanwa + 2504, // TaiDam + 2511, // TaiNua + 2518, // Ugaritic }; static const char script_name_list[] = @@ -5711,6 +5934,73 @@ static const char script_name_list[] = "Syriac\0" "Yi\0" "Vai\0" +"Avestan\0" +"Balinese\0" +"Bamum\0" +"Batak\0" +"Bopomofo\0" +"Brahmi\0" +"Buginese\0" +"Buhid\0" +"CanadianAboriginal\0" +"Carian\0" +"Chakma\0" +"Cham\0" +"Coptic\0" +"Cypriot\0" +"Egyptian Hieroglyphs\0" +"Fraser\0" +"Glagolitic\0" +"Gothic\0" +"Han\0" +"Hangul\0" +"Hanunoo\0" +"Imperial Aramaic\0" +"Inscriptional Pahlavi\0" +"Inscriptional Parthian\0" +"Javanese\0" +"Kaithi\0" +"Katakana\0" +"Kayah Li\0" +"Kharoshthi\0" +"Lanna\0" +"Lepcha\0" +"Limbu\0" +"Linear B\0" +"Lycian\0" +"Lydian\0" +"Mandaean\0" +"Meitei Mayek\0" +"Meroitic\0" +"Meroitic Cursive\0" +"Nko\0" +"New Tai Lue\0" +"Ogham\0" +"Ol Chiki\0" +"Old Italic\0" +"Old Persian\0" +"Old South Arabian\0" +"Orkhon\0" +"Osmanya\0" +"Phags Pa\0" +"Phoenician\0" +"Pollard Phonetic\0" +"Rejang\0" +"Runic\0" +"Samaritan\0" +"Saurashtra\0" +"Sharada\0" +"Shavian\0" +"Sora Sompeng\0" +"Cuneiform\0" +"Sundanese\0" +"Syloti Nagri\0" +"Tagalog\0" +"Tagbanwa\0" +"Tai Le\0" +"Tai Viet\0" +"Takri\0" +"Ugaritic\0" ; static const quint16 script_name_index[] = { @@ -5750,6 +6040,73 @@ static const quint16 script_name_index[] = { 273, // Syriac 280, // Yi 283, // Vai + 287, // Avestan + 295, // Balinese + 304, // Bamum + 310, // Batak + 316, // Bopomofo + 325, // Brahmi + 332, // Buginese + 341, // Buhid + 347, // CanadianAboriginal + 366, // Carian + 373, // Chakma + 380, // Cham + 385, // Coptic + 392, // Cypriot + 400, // Egyptian Hieroglyphs + 421, // Fraser + 428, // Glagolitic + 439, // Gothic + 446, // Han + 450, // Hangul + 457, // Hanunoo + 465, // Imperial Aramaic + 482, // Inscriptional Pahlavi + 504, // Inscriptional Parthian + 527, // Javanese + 536, // Kaithi + 543, // Katakana + 552, // Kayah Li + 561, // Kharoshthi + 572, // Lanna + 578, // Lepcha + 585, // Limbu + 591, // Linear B + 600, // Lycian + 607, // Lydian + 614, // Mandaean + 623, // Meitei Mayek + 636, // Meroitic + 645, // Meroitic Cursive + 662, // Nko + 666, // New Tai Lue + 678, // Ogham + 684, // Ol Chiki + 693, // Old Italic + 704, // Old Persian + 716, // Old South Arabian + 734, // Orkhon + 741, // Osmanya + 749, // Phags Pa + 758, // Phoenician + 769, // Pollard Phonetic + 786, // Rejang + 793, // Runic + 799, // Samaritan + 809, // Saurashtra + 820, // Sharada + 828, // Shavian + 836, // Sora Sompeng + 849, // Cuneiform + 859, // Sundanese + 869, // Syloti Nagri + 882, // Tagalog + 890, // Tagbanwa + 899, // Tai Le + 906, // Tai Viet + 915, // Takri + 921, // Ugaritic }; static const char country_name_list[] = @@ -6401,7 +6758,7 @@ static const unsigned char language_code_list[] = "tr\0" // Turkish "tk\0" // Turkmen "ty\0" // Tahitian -"ug\0" // Uigur +"ug\0" // Uighur "uk\0" // Ukrainian "ur\0" // Urdu "uz\0" // Uzbek @@ -6534,6 +6891,57 @@ static const unsigned char language_code_list[] = "kkj" // Kako "mgo" // Meta "nnh" // Ngiemboon +"an\0" // Aragonese +"akk" // Akkadian +"egy" // AncientEgyptian +"grc" // AncientGreek +"arc" // Aramaic +"ban" // Balinese +"bax" // Bamun +"bbc" // BatakToba +"bug" // Buginese +"bku" // Buhid +"xcr" // Carian +"ccp" // Chakma +"myz" // ClassicalMandaic +"cop" // Coptic +"doi" // Dogri +"cjm" // EasternCham +"eky" // EasternKayah +"ett" // Etruscan +"got" // Gothic +"hnn" // Hanunoo +"inh" // Ingush +"hmd" // LargeFloweryMiao +"lep" // Lepcha +"lif" // Limbu +"lis" // Lisu +"khb" // Lu +"xlc" // Lycian +"xld" // Lydian +"man" // Mandingo +"mni" // Manipuri +"xmr" // Meroitic +"nod" // NorthernThai +"sga" // OldIrish +"non" // OldNorse +"peo" // OldPersian +"otk" // OldTurkish +"pal" // Pahlavi +"xpr" // Parthian +"phn" // Phoenician +"pra" // PrakritLanguage +"rej" // Rejang +"xsa" // Sabaean +"smp" // Samaritan +"sat" // Santali +"saz" // Saurashtra +"srb" // Sora +"syl" // Sylheti +"tbw" // Tagbanwa +"blt" // TaiDam +"tdd" // TaiNua +"uga" // Ugaritic ; static const unsigned char script_code_list[] = @@ -6570,9 +6978,76 @@ static const unsigned char script_code_list[] = "Thai" // Thai "Tibt" // Tibetan "Sinh" // Sinhala -"Syri" // Syriac +"Syrc" // Syriac "Yiii" // Yi "Vaii" // Vai +"Avst" // Avestan +"Bali" // Balinese +"Bamu" // Bamum +"Batk" // Batak +"Bopo" // Bopomofo +"Brah" // Brahmi +"Bugi" // Buginese +"Buhd" // Buhid +"Cans" // CanadianAboriginal +"Cari" // Carian +"Cakm" // Chakma +"Cham" // Cham +"Copt" // Coptic +"Cprt" // Cypriot +"Egyp" // Egyptian Hieroglyphs +"Lisu" // Fraser +"Glag" // Glagolitic +"Goth" // Gothic +"Hani" // Han +"Hang" // Hangul +"Hano" // Hanunoo +"Armi" // Imperial Aramaic +"Phli" // Inscriptional Pahlavi +"Prti" // Inscriptional Parthian +"Java" // Javanese +"Kthi" // Kaithi +"Kana" // Katakana +"Kali" // Kayah Li +"Khar" // Kharoshthi +"Lana" // Lanna +"Lepc" // Lepcha +"Limb" // Limbu +"Linb" // Linear B +"Lyci" // Lycian +"Lydi" // Lydian +"Mand" // Mandaean +"Mtei" // Meitei Mayek +"Mero" // Meroitic +"Merc" // Meroitic Cursive +"Nkoo" // Nko +"Talu" // New Tai Lue +"Ogam" // Ogham +"Olck" // Ol Chiki +"Ital" // Old Italic +"Xpeo" // Old Persian +"Sarb" // Old South Arabian +"Orkh" // Orkhon +"Osma" // Osmanya +"Phag" // Phags Pa +"Phnx" // Phoenician +"Plrd" // Pollard Phonetic +"Rjng" // Rejang +"Runr" // Runic +"Samr" // Samaritan +"Saur" // Saurashtra +"Shrd" // Sharada +"Shaw" // Shavian +"Sora" // Sora Sompeng +"Xsux" // Cuneiform +"Sund" // Sundanese +"Sylo" // Syloti Nagri +"Tglg" // Tagalog +"Tagb" // Tagbanwa +"Tale" // Tai Le +"Tavt" // Tai Viet +"Takr" // Takri +"Ugar" // Ugaritic ; static const unsigned char country_code_list[] = "ZZ\0" // AnyCountry -- cgit v1.2.3 From 866a5d0c28f458d50ab9e4f011fc7a94822ce6eb Mon Sep 17 00:00:00 2001 From: Corentin Jabot Date: Sun, 17 Feb 2013 14:05:57 +0100 Subject: Make QProcess startable with open() Add setProgram() and setArguments() methods to the QProcess api. Add a convenient start(QIODevice::OpenMode) method. Move the implementation of QProcess::start() to QProcess::open() unifying the QProcess api with other QIODevice subclasses. Change-Id: Id1af57da05f750fe8d526d391589c05ee8037bca Reviewed-by: Thiago Macieira --- src/corelib/io/qprocess.cpp | 96 +++++++++++++++++++++++++++++++++++++++++++-- src/corelib/io/qprocess.h | 6 +++ 2 files changed, 99 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 8409e7e479..3993cf5002 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -458,6 +458,9 @@ void QProcessPrivate::Channel::clear() the program you want to run as arguments to start(). Arguments are supplied as individual strings in a QStringList. + Alternatively, you can set the program to run with setProgram() + and setArguments(), and then call start() or open(). + For example, the following code snippet runs the analog clock example in the Fusion style on X11 platforms by passing strings containing "-style" and "fusion" as two items in the list of @@ -1946,6 +1949,58 @@ void QProcess::start(const QString &program, const QStringList &arguments, OpenM return; } + d->program = program; + d->arguments = arguments; + + open(mode); +} + +/*! + \since 5.1 + \overload + + Starts the program set by setProgram() with arguments set by setArguments(). + The OpenMode is set to \a mode. + + This method is a convenient alias to open(). + + \sa open(), setProgram(), setArguments() + */ +void QProcess::start(OpenMode mode) +{ + open(mode); +} + +/*! + Starts the program set by setProgram() in a new process, if none is already + running, passing the command line arguments set by setArguments(). The OpenMode + is set to \a mode. + + The QProcess object will immediately enter the Starting state. If the + process starts successfully, QProcess will emit started(); otherwise, + error() will be emitted. If the QProcess object is already running a + process, a warning may be printed at the console, the function will return false, + and the existing process will continue running. + + \note Processes are started asynchronously, which means the started() + and error() signals may be delayed. Call waitForStarted() to make + sure the process has started (or has failed to start) and those signals + have been emitted. In this regard, a true return value merly means the process + was correcty initialized, not that the program was actually started. + +*/ +bool QProcess::open(OpenMode mode) +{ + Q_D(QProcess); + if (d->processState != NotRunning) { + qWarning("QProcess::start: Process is already running"); + return false; + } + if (d->program.isEmpty()) { + qWarning("QProcess::start: program not set"); + return false; + } + #if defined QPROCESS_DEBUG qDebug() << "QProcess::start(" << program << ',' << arguments << ',' << mode << ')'; #endif @@ -1967,14 +2022,13 @@ void QProcess::start(const QString &program, const QStringList &arguments, OpenM d->stdoutChannel.closed = false; d->stderrChannel.closed = false; - d->program = program; - d->arguments = arguments; - d->exitCode = 0; d->exitStatus = NormalExit; d->processError = QProcess::UnknownError; d->errorString.clear(); d->startProcess(); + + return true; } @@ -2073,6 +2127,24 @@ QString QProcess::program() const return d->program; } +/*! + \since 5.1 + + Set the \a program to use when starting the process. + That function must be call before open() + + \sa start(), setArguments(), program() +*/ +void QProcess::setProgram(const QString &program) +{ + Q_D(QProcess); + if (d->processState != NotRunning) { + qWarning("QProcess::setProgram: Process is already running"); + return; + } + d->program = program; +} + /*! Returns the command line arguments the process was last started with. @@ -2084,6 +2156,24 @@ QStringList QProcess::arguments() const return d->arguments; } +/*! + \since 5.1 + + Set the \a arguments to pass to the called program when starting the process. + That function must be call before open() + + \sa start(), setProgram(), arguments() +*/ +void QProcess::setArguments(const QStringList &arguments) +{ + Q_D(QProcess); + if (d->processState != NotRunning) { + qWarning("QProcess::setProgram: Process is already running"); + return; + } + d->arguments = arguments; +} + /*! Attempts to terminate the process. diff --git a/src/corelib/io/qprocess.h b/src/corelib/io/qprocess.h index e8ebadf101..29adf37f74 100644 --- a/src/corelib/io/qprocess.h +++ b/src/corelib/io/qprocess.h @@ -136,8 +136,14 @@ public: void start(const QString &program, const QStringList &arguments, OpenMode mode = ReadWrite); void start(const QString &command, OpenMode mode = ReadWrite); + void start(OpenMode mode = ReadWrite); + bool open(OpenMode mode = ReadWrite) Q_DECL_OVERRIDE; + QString program() const; + void setProgram(const QString &program); + QStringList arguments() const; + void setArguments(const QStringList & arguments); ProcessChannelMode readChannelMode() const; void setReadChannelMode(ProcessChannelMode mode); -- cgit v1.2.3 From 953255abab0f99afe7559da93ba18a876805d78d Mon Sep 17 00:00:00 2001 From: Corentin Jabot Date: Sun, 25 Nov 2012 17:30:15 +0100 Subject: Make QLocalSocket connectable with open() Add getter and setter for handling the server QLocalSocket connects to. Move the connectServer() implementation to QLocalSocket::open so the local socket can be handled transparently as a QIODevice Add a convenient connectToServer(OpenMode) method Change-Id: Ibc8dc33f79903f92daf2d1ca2e64ead2ce39f33e Reviewed-by: Thiago Macieira --- src/network/socket/qlocalsocket.cpp | 75 +++++++++++++++++++++++++++----- src/network/socket/qlocalsocket.h | 3 ++ src/network/socket/qlocalsocket_tcp.cpp | 20 ++++----- src/network/socket/qlocalsocket_unix.cpp | 15 ++++--- src/network/socket/qlocalsocket_win.cpp | 18 ++++---- 5 files changed, 94 insertions(+), 37 deletions(-) (limited to 'src') diff --git a/src/network/socket/qlocalsocket.cpp b/src/network/socket/qlocalsocket.cpp index bd2c4258b5..1ce6568364 100644 --- a/src/network/socket/qlocalsocket.cpp +++ b/src/network/socket/qlocalsocket.cpp @@ -71,18 +71,17 @@ QT_BEGIN_NAMESPACE */ /*! - \fn void QLocalSocket::connectToServer(const QString &name, OpenMode openMode) + \fn void QLocalSocket::open(OpenMode openMode) - Attempts to make a connection to \a name. + Equivalent to connectToServer(OpenMode mode). + The socket is opened in the given \a openMode to the server defined by setServerName(). - The socket is opened in the given \a openMode and first enters ConnectingState. - It then attempts to connect to the address or addresses returned by the lookup. - Finally, if a connection is established, QLocalSocket enters ConnectedState - and emits connected(). - - At any point, the socket can emit error() to signal that an error occurred. + Note that unlike in most other QIODevice subclasses, open() may not open the device directly. + The function return false if the socket was already connected or if the server to connect + to was not defined and true in any other case. The connected() or error() signals will be + emitted once the device is actualy open (or the connection failed). - See also state(), serverName(), and waitForConnected(). + See connectToServer() for more details. */ /*! @@ -354,8 +353,62 @@ QLocalSocket::~QLocalSocket() } /*! - Returns the name of the peer as specified by connectToServer(), or an - empty QString if connectToServer() has not been called or it failed. + \since 5.1 + + Attempts to make a connection to serverName(). + setServerName() must be called before you open the connection. + Alternatively you can use connectToServer(const QString &name, OpenMode openMode); + + The socket is opened in the given \a openMode and first enters ConnectingState. + If a connection is established, QLocalSocket enters ConnectedState and emits connected(). + + After calling this function, the socket can emit error() to signal that an error occurred. + + \sa state(), serverName(), waitForConnected() +*/ +void QLocalSocket::connectToServer(OpenMode openMode) +{ + open(openMode); +} + +/*! \overload + + Set the server \a name and attempts to make a connection to it. + + The socket is opened in the given \a openMode and first enters ConnectingState. + If a connection is established, QLocalSocket enters ConnectedState and emits connected(). + + After calling this function, the socket can emit error() to signal that an error occurred. + + \sa state(), serverName(), waitForConnected() +*/ +void QLocalSocket::connectToServer(const QString &name, OpenMode openMode) +{ + setServerName(name); + open(openMode); +} + +/*! + \since 5.1 + + Set the \a name of the peer to connect to. + On Windows name is the name of a named pipe; on Unix name is the name of a local domain socket. + + This function must be called when the socket is not connected. +*/ +void QLocalSocket::setServerName(const QString & name) +{ + Q_D(QLocalSocket); + if (d->state != UnconnectedState) { + qWarning("QLocalSocket::setServerName() called while not in unconnected state"); + return; + } + d->serverName = name; +} + +/*! + Returns the name of the peer as specified by setServerName(), or an + empty QString if setServerName() has not been called or connectToServer() failed. \sa connectToServer(), fullServerName() diff --git a/src/network/socket/qlocalsocket.h b/src/network/socket/qlocalsocket.h index 2ff4b2fc5b..427dab1def 100644 --- a/src/network/socket/qlocalsocket.h +++ b/src/network/socket/qlocalsocket.h @@ -84,9 +84,11 @@ public: QLocalSocket(QObject *parent = 0); ~QLocalSocket(); + void connectToServer(OpenMode openMode = ReadWrite); void connectToServer(const QString &name, OpenMode openMode = ReadWrite); void disconnectFromServer(); + void setServerName(const QString &name); QString serverName() const; QString fullServerName() const; @@ -95,6 +97,7 @@ public: virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; + virtual bool open(OpenMode openMode = ReadWrite) Q_DECL_OVERRIDE; virtual void close(); LocalSocketError error() const; bool flush(); diff --git a/src/network/socket/qlocalsocket_tcp.cpp b/src/network/socket/qlocalsocket_tcp.cpp index cbae8d58ff..cf109c2b2f 100644 --- a/src/network/socket/qlocalsocket_tcp.cpp +++ b/src/network/socket/qlocalsocket_tcp.cpp @@ -214,29 +214,28 @@ void QLocalSocketPrivate::errorOccurred(QLocalSocket::LocalSocketError error, co q->emit stateChanged(state); } -void QLocalSocket::connectToServer(const QString &name, OpenMode openMode) +bool QLocalSocket::open(OpenMode openMode) { Q_D(QLocalSocket); - if (state() == ConnectedState - || state() == ConnectingState) - return; + if (state() == ConnectedState || state() == ConnectingState) { + return false; + } d->errorString.clear(); d->state = ConnectingState; emit stateChanged(d->state); - if (name.isEmpty()) { + if (d->serverName.isEmpty()) { d->errorOccurred(ServerNotFoundError, QLatin1String("QLocalSocket::connectToServer")); - return; + return false; } - d->serverName = name; const QLatin1String prefix("QLocalServer/"); if (name.startsWith(prefix)) - d->fullServerName = name; + d->fullServerName = d->serverName; else - d->fullServerName = prefix + name; + d->fullServerName = prefix + d->serverName; QSettings settings(QLatin1String("QtProject"), QLatin1String("Qt")); bool ok; @@ -244,10 +243,11 @@ void QLocalSocket::connectToServer(const QString &name, OpenMode openMode) if (!ok) { d->errorOccurred(ServerNotFoundError, QLatin1String("QLocalSocket::connectToServer")); - return; + return false; } d->tcpSocket->connectToHost(QHostAddress::LocalHost, port, openMode); QIODevice::open(openMode); + return true; } bool QLocalSocket::setSocketDescriptor(qintptr socketDescriptor, diff --git a/src/network/socket/qlocalsocket_unix.cpp b/src/network/socket/qlocalsocket_unix.cpp index e846e43e73..67182e57b0 100644 --- a/src/network/socket/qlocalsocket_unix.cpp +++ b/src/network/socket/qlocalsocket_unix.cpp @@ -221,14 +221,14 @@ void QLocalSocketPrivate::errorOccurred(QLocalSocket::LocalSocketError error, co q->emit stateChanged(state); } -void QLocalSocket::connectToServer(const QString &name, OpenMode openMode) +bool QLocalSocket::open(OpenMode openMode) { Q_D(QLocalSocket); if (state() == ConnectedState || state() == ConnectingState) { QString errorString = d->generateErrorString(QLocalSocket::OperationError, QLatin1String("QLocalSocket::connectToserver")); setErrorString(errorString); emit error(QLocalSocket::OperationError); - return; + return false; } d->errorString.clear(); @@ -236,17 +236,17 @@ void QLocalSocket::connectToServer(const QString &name, OpenMode openMode) d->state = ConnectingState; emit stateChanged(d->state); - if (name.isEmpty()) { + if (d->serverName.isEmpty()) { d->errorOccurred(ServerNotFoundError, QLatin1String("QLocalSocket::connectToServer")); - return; + return false; } // create the socket if (-1 == (d->connectingSocket = qt_safe_socket(PF_UNIX, SOCK_STREAM, 0))) { d->errorOccurred(UnsupportedSocketOperationError, QLatin1String("QLocalSocket::connectToServer")); - return; + return false; } // set non blocking so we can try to connect and it won't wait int flags = fcntl(d->connectingSocket, F_GETFL, 0); @@ -254,13 +254,14 @@ void QLocalSocket::connectToServer(const QString &name, OpenMode openMode) || -1 == (fcntl(d->connectingSocket, F_SETFL, flags | O_NONBLOCK))) { d->errorOccurred(UnknownSocketError, QLatin1String("QLocalSocket::connectToServer")); - return; + return false; } // _q_connectToSocket does the actual connecting - d->connectingName = name; + d->connectingName = d->serverName; d->connectingOpenMode = openMode; d->_q_connectToSocket(); + return true; } /*! diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp index 660e0901f8..cdfa18377d 100644 --- a/src/network/socket/qlocalsocket_win.cpp +++ b/src/network/socket/qlocalsocket_win.cpp @@ -128,33 +128,33 @@ void QLocalSocketPrivate::destroyPipeHandles() } } -void QLocalSocket::connectToServer(const QString &name, OpenMode openMode) +bool QLocalSocket::open(OpenMode openMode) { Q_D(QLocalSocket); if (state() == ConnectedState || state() == ConnectingState) { setErrorString(tr("Trying to connect while connection is in progress")); emit error(QLocalSocket::OperationError); - return; + return false; } d->error = QLocalSocket::UnknownSocketError; d->errorString = QString(); d->state = ConnectingState; emit stateChanged(d->state); - if (name.isEmpty()) { + if (d->serverName.isEmpty()) { d->error = QLocalSocket::ServerNotFoundError; setErrorString(QLocalSocket::tr("%1: Invalid name").arg(QLatin1String("QLocalSocket::connectToServer"))); d->state = UnconnectedState; emit error(d->error); emit stateChanged(d->state); - return; + return false; } QString pipePath = QLatin1String("\\\\.\\pipe\\"); - if (name.startsWith(pipePath)) - d->fullServerName = name; + if (d->serverName.startsWith(pipePath)) + d->fullServerName = d->serverName; else - d->fullServerName = pipePath + name; + d->fullServerName = pipePath + d->serverName; // Try to open a named pipe HANDLE localSocket; forever { @@ -184,15 +184,15 @@ void QLocalSocket::connectToServer(const QString &name, OpenMode openMode) if (localSocket == INVALID_HANDLE_VALUE) { d->setErrorString(QLatin1String("QLocalSocket::connectToServer")); d->fullServerName = QString(); - return; + return false; } // we have a valid handle - d->serverName = name; if (setSocketDescriptor((qintptr)localSocket, ConnectedState, openMode)) { d->handle = localSocket; emit connected(); } + return true; } // This is reading from the buffer -- cgit v1.2.3 From 163dcf2b71f34a12137f200e4af5640e42e5f5e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 4 Mar 2013 14:27:35 +0100 Subject: Fix build with older Clang versions without __has_extension Change-Id: I505d3e4ad2fcd56ee229935d8543811a43923273 Reviewed-by: Thiago Macieira --- src/corelib/global/qcompilerdetection.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h index a4af8b8899..383d9c9c6e 100644 --- a/src/corelib/global/qcompilerdetection.h +++ b/src/corelib/global/qcompilerdetection.h @@ -157,6 +157,10 @@ # define Q_CC_CLANG # define Q_ASSUME_IMPL(expr) if (expr){} else __builtin_unreachable() # define Q_UNREACHABLE_IMPL() __builtin_unreachable() +# if !defined(__has_extension) +# /* Compatibility with older Clang versions */ +# define __has_extension __has_feature +# endif # else /* Plain GCC */ # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 -- cgit v1.2.3 From 0666975d6c276139788001cdd4cb686c7073f50c Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Fri, 1 Mar 2013 18:32:49 +0100 Subject: Added JNI convenience classes in QtPlatformSupport. This is used for Android. Change-Id: I049138c140a472b1721390cf4ec2bd88bbe9c471 Reviewed-by: Eskil Abrahamsen Blomfeldt Reviewed-by: Oswald Buddenhagen Reviewed-by: Paul Olav Tvete --- .../jniconvenience/jniconvenience.pri | 9 + src/platformsupport/jniconvenience/qjnihelpers.cpp | 115 + src/platformsupport/jniconvenience/qjnihelpers_p.h | 191 ++ src/platformsupport/jniconvenience/qjniobject.cpp | 3098 ++++++++++++++++++++ src/platformsupport/jniconvenience/qjniobject_p.h | 169 ++ src/platformsupport/platformsupport.pro | 1 + 6 files changed, 3583 insertions(+) create mode 100644 src/platformsupport/jniconvenience/jniconvenience.pri create mode 100644 src/platformsupport/jniconvenience/qjnihelpers.cpp create mode 100644 src/platformsupport/jniconvenience/qjnihelpers_p.h create mode 100644 src/platformsupport/jniconvenience/qjniobject.cpp create mode 100644 src/platformsupport/jniconvenience/qjniobject_p.h (limited to 'src') diff --git a/src/platformsupport/jniconvenience/jniconvenience.pri b/src/platformsupport/jniconvenience/jniconvenience.pri new file mode 100644 index 0000000000..991518e370 --- /dev/null +++ b/src/platformsupport/jniconvenience/jniconvenience.pri @@ -0,0 +1,9 @@ +android { + QT += gui-private + + HEADERS += $$PWD/qjnihelpers_p.h \ + $$PWD/qjniobject_p.h + + SOURCES += $$PWD/qjnihelpers.cpp \ + $$PWD/qjniobject.cpp +} diff --git a/src/platformsupport/jniconvenience/qjnihelpers.cpp b/src/platformsupport/jniconvenience/qjnihelpers.cpp new file mode 100644 index 0000000000..3f9b568368 --- /dev/null +++ b/src/platformsupport/jniconvenience/qjnihelpers.cpp @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qjnihelpers_p.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +QString qt_convertJString(jstring string) +{ + QAttachedJNIEnv env; + int strLength = env->GetStringLength(string); + QString res; + res.resize(strLength); + env->GetStringRegion(string, 0, strLength, (jchar*)res.utf16()); + return res; +} + +QJNILocalRef qt_toJString(const QString &string) +{ + QAttachedJNIEnv env; + return QJNILocalRef(env->NewString(reinterpret_cast(string.constData()), + string.length())); +} + + +static JavaVM *g_javaVM = 0; + +static JavaVM *getJavaVM() +{ + if (!g_javaVM){ + QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface(); + g_javaVM = static_cast(nativeInterface->nativeResourceForIntegration("JavaVM")); + } + return g_javaVM; +} + +QThreadStorage QAttachedJNIEnv::m_refCount; + +QAttachedJNIEnv::QAttachedJNIEnv() +{ + JavaVM *vm = javaVM(); + if (vm->GetEnv((void**)&jniEnv, JNI_VERSION_1_6) == JNI_EDETACHED) { + if (vm->AttachCurrentThread(&jniEnv, 0) < 0) { + jniEnv = 0; + return; + } + } + + if (!m_refCount.hasLocalData()) + m_refCount.setLocalData(1); + else + m_refCount.setLocalData(m_refCount.localData() + 1); +} + +QAttachedJNIEnv::~QAttachedJNIEnv() +{ + if (!jniEnv) + return; + + int newRef = m_refCount.localData() - 1; + m_refCount.setLocalData(newRef); + + if (newRef == 0) + javaVM()->DetachCurrentThread(); + + jniEnv = 0; +} + +JavaVM *QAttachedJNIEnv::javaVM() +{ + return getJavaVM(); +} + +QT_END_NAMESPACE diff --git a/src/platformsupport/jniconvenience/qjnihelpers_p.h b/src/platformsupport/jniconvenience/qjnihelpers_p.h new file mode 100644 index 0000000000..fb44d156bd --- /dev/null +++ b/src/platformsupport/jniconvenience/qjnihelpers_p.h @@ -0,0 +1,191 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QJNIHELPERS_H +#define QJNIHELPERS_H + +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +template +class QJNILocalRef; + +QString qt_convertJString(jstring string); +QJNILocalRef qt_toJString(const QString &string); + + +struct QAttachedJNIEnv +{ + QAttachedJNIEnv(); + ~QAttachedJNIEnv(); + + static JavaVM *javaVM(); + + JNIEnv *operator->() + { + return jniEnv; + } + + operator JNIEnv*() const + { + return jniEnv; + } + + JNIEnv *jniEnv; + +private: + static QThreadStorage m_refCount; +}; + + +template +class QJNILocalRef +{ +public: + inline QJNILocalRef() : m_obj(0) { } + inline explicit QJNILocalRef(T o) : m_obj(o) { } + inline QJNILocalRef(const QJNILocalRef &other) : m_obj(other.m_obj) + { + if (other.m_obj) + m_obj = static_cast(m_env->NewLocalRef(other.m_obj)); + } + + template + inline QJNILocalRef(const QJNILocalRef &other) : m_obj(other.m_obj) + { + if (other.m_obj) + m_obj = static_cast(m_env->NewLocalRef(other.m_obj)); + } + + inline ~QJNILocalRef() { release(); } + + inline QJNILocalRef &operator=(const QJNILocalRef &other) + { + release(); + m_obj = other.m_obj; // for type checking + if (other.m_obj) + m_obj = static_cast(m_env->NewLocalRef(other.m_obj)); + return *this; + } + + template + inline QJNILocalRef &operator=(const QJNILocalRef &other) + { + release(); + m_obj = other.m_obj; // for type checking + if (other.m_obj) + m_obj = static_cast(m_env->NewLocalRef(other.m_obj)); + return *this; + } + + inline QJNILocalRef &operator=(T o) + { + release(); + m_obj = o; + return *this; + } + + template + inline QJNILocalRef &operator=(X o) + { + release(); + m_obj = o; + return *this; + } + + inline bool operator !() const { return !m_obj; } + inline bool isNull() const { return !m_obj; } + inline T object() const { return m_obj; } + +private: + void release() + { + if (m_obj) { + m_env->DeleteLocalRef(m_obj); + m_obj = 0; + } + } + + QAttachedJNIEnv m_env; + T m_obj; + + template friend class QJNILocalRef; +}; + +template +bool operator==(const QJNILocalRef &ptr1, const QJNILocalRef &ptr2) +{ + return ptr1.m_obj == ptr2.m_obj; +} +template +bool operator!=(const QJNILocalRef &ptr1, const QJNILocalRef &ptr2) +{ + return ptr1.m_obj != ptr2.m_obj; +} + +template +bool operator==(const QJNILocalRef &ptr1, X ptr2) +{ + return ptr1.m_obj == ptr2; +} +template +bool operator==(T ptr1, const QJNILocalRef &ptr2) +{ + return ptr1 == ptr2.m_obj; +} +template +bool operator!=(const QJNILocalRef &ptr1, X ptr2) +{ + return !(ptr1 == ptr2); +} +template +bool operator!=(const T *ptr1, const QJNILocalRef &ptr2) +{ + return !(ptr2 == ptr1); +} + +QT_END_NAMESPACE + +#endif // QJNIHELPERS_H diff --git a/src/platformsupport/jniconvenience/qjniobject.cpp b/src/platformsupport/jniconvenience/qjniobject.cpp new file mode 100644 index 0000000000..515e82b2f0 --- /dev/null +++ b/src/platformsupport/jniconvenience/qjniobject.cpp @@ -0,0 +1,3098 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qjniobject_p.h" + +#include "qjnihelpers_p.h" +#include + +QT_BEGIN_NAMESPACE + +static QHash g_cachedClasses; + +static jclass getCachedClass(JNIEnv *env, const char *className) +{ + jclass clazz = 0; + QString key = QLatin1String(className); + QHash::iterator it = g_cachedClasses.find(key); + if (it == g_cachedClasses.end()) { + jclass c = env->FindClass(className); + if (env->ExceptionCheck()) { + c = 0; + env->ExceptionClear(); + } + if (c) + clazz = static_cast(env->NewGlobalRef(c)); + g_cachedClasses.insert(key, clazz); + } else { + clazz = it.value(); + } + return clazz; +} + +static QHash g_cachedMethodIDs; +static QString g_keyBase(QLatin1String("%1%2%3")); + +static jmethodID getCachedMethodID(JNIEnv *env, + jclass clazz, + const char *name, + const char *sig, + bool isStatic = false) +{ + jmethodID id = 0; + QString key = g_keyBase.arg(size_t(clazz)).arg(QLatin1String(name)).arg(QLatin1String(sig)); + QHash::iterator it = g_cachedMethodIDs.find(key); + if (it == g_cachedMethodIDs.end()) { + if (isStatic) + id = env->GetStaticMethodID(clazz, name, sig); + else + id = env->GetMethodID(clazz, name, sig); + + if (env->ExceptionCheck()) { + id = 0; + env->ExceptionClear(); + } + + g_cachedMethodIDs.insert(key, id); + } else { + id = it.value(); + } + return id; +} + +static QHash g_cachedFieldIDs; + +static jfieldID getCachedFieldID(JNIEnv *env, + jclass clazz, + const char *name, + const char *sig, + bool isStatic = false) +{ + jfieldID id = 0; + QString key = g_keyBase.arg(size_t(clazz)).arg(QLatin1String(name)).arg(QLatin1String(sig)); + QHash::iterator it = g_cachedFieldIDs.find(key); + if (it == g_cachedFieldIDs.end()) { + if (isStatic) + id = env->GetStaticFieldID(clazz, name, sig); + else + id = env->GetFieldID(clazz, name, sig); + + if (env->ExceptionCheck()) { + id = 0; + env->ExceptionClear(); + } + + g_cachedFieldIDs.insert(key, id); + } else { + id = it.value(); + } + return id; +} + +QJNIObject::QJNIObject(const char *className) + : m_jobject(0) + , m_jclass(0) + , m_own_jclass(false) +{ + QAttachedJNIEnv env; + m_jclass = getCachedClass(env, className); + if (m_jclass) { + // get default constructor + jmethodID constructorId = getCachedMethodID(env, m_jclass, "", "()V"); + if (constructorId) { + jobject obj = env->NewObject(m_jclass, constructorId); + if (obj) { + m_jobject = env->NewGlobalRef(obj); + env->DeleteLocalRef(obj); + } + } + } +} + +QJNIObject::QJNIObject(const char *className, const char *sig, ...) + : m_jobject(0) + , m_jclass(0) + , m_own_jclass(false) +{ + QAttachedJNIEnv env; + m_jclass = getCachedClass(env, className); + if (m_jclass) { + jmethodID constructorId = getCachedMethodID(env, m_jclass, "", sig); + if (constructorId) { + va_list args; + va_start(args, sig); + jobject obj = env->NewObjectV(m_jclass, constructorId, args); + va_end(args); + if (obj) { + m_jobject = env->NewGlobalRef(obj); + env->DeleteLocalRef(obj); + } + } + } +} + +QJNIObject::QJNIObject(jclass clazz) + : m_jobject(0) + , m_jclass(0) + , m_own_jclass(true) +{ + QAttachedJNIEnv env; + m_jclass = static_cast(env->NewGlobalRef(clazz)); + if (m_jclass) { + // get default constructor + jmethodID constructorId = getCachedMethodID(env, m_jclass, "", "()V"); + if (constructorId) { + jobject obj = env->NewObject(m_jclass, constructorId); + if (obj) { + m_jobject = env->NewGlobalRef(obj); + env->DeleteLocalRef(obj); + } + } + } +} + +QJNIObject::QJNIObject(jclass clazz, const char *sig, ...) + : m_jobject(0) + , m_jclass(0) + , m_own_jclass(true) +{ + QAttachedJNIEnv env; + if (clazz) { + m_jclass = static_cast(env->NewGlobalRef(clazz)); + if (m_jclass) { + jmethodID constructorId = getCachedMethodID(env, m_jclass, "", sig); + if (constructorId) { + va_list args; + va_start(args, sig); + jobject obj = env->NewObjectV(m_jclass, constructorId, args); + va_end(args); + if (obj) { + m_jobject = env->NewGlobalRef(obj); + env->DeleteLocalRef(obj); + } + } + } + } +} + +QJNIObject::QJNIObject(jobject obj) + : m_jobject(0) + , m_jclass(0) + , m_own_jclass(true) +{ + QAttachedJNIEnv env; + m_jobject = env->NewGlobalRef(obj); + m_jclass = static_cast(env->NewGlobalRef(env->GetObjectClass(m_jobject))); +} + +QJNIObject::~QJNIObject() +{ + QAttachedJNIEnv env; + if (m_jobject) + env->DeleteGlobalRef(m_jobject); + if (m_jclass && m_own_jclass) + env->DeleteGlobalRef(m_jclass); +} + +bool QJNIObject::isClassAvailable(const char *className) +{ + QAttachedJNIEnv env; + + if (!env.jniEnv) + return false; + + jclass clazz = getCachedClass(env, className); + + return (clazz != 0); +} + +template <> +void QJNIObject::callMethod(const char *methodName, const char *sig, ...) +{ + QAttachedJNIEnv env; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + env->CallVoidMethodV(m_jobject, id, args); + va_end(args); + } +} + +template <> +jboolean QJNIObject::callMethod(const char *methodName, const char *sig, ...) +{ + QAttachedJNIEnv env; + jboolean res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallBooleanMethodV(m_jobject, id, args); + va_end(args); + } + return res; +} + +template <> +jbyte QJNIObject::callMethod(const char *methodName, const char *sig, ...) +{ + QAttachedJNIEnv env; + jbyte res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallByteMethodV(m_jobject, id, args); + va_end(args); + } + return res; +} + +template <> +jchar QJNIObject::callMethod(const char *methodName, const char *sig, ...) +{ + QAttachedJNIEnv env; + jchar res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallCharMethodV(m_jobject, id, args); + va_end(args); + } + return res; +} + +template <> +jshort QJNIObject::callMethod(const char *methodName, const char *sig, ...) +{ + QAttachedJNIEnv env; + jshort res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallShortMethodV(m_jobject, id, args); + va_end(args); + } + return res; +} + +template <> +jint QJNIObject::callMethod(const char *methodName, const char *sig, ...) +{ + QAttachedJNIEnv env; + jint res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallIntMethodV(m_jobject, id, args); + va_end(args); + } + return res; +} + +template <> +jlong QJNIObject::callMethod(const char *methodName, const char *sig, ...) +{ + QAttachedJNIEnv env; + jlong res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallLongMethodV(m_jobject, id, args); + va_end(args); + } + return res; +} + +template <> +jfloat QJNIObject::callMethod(const char *methodName, const char *sig, ...) +{ + QAttachedJNIEnv env; + jfloat res = 0.f; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallFloatMethodV(m_jobject, id, args); + va_end(args); + } + return res; +} + +template <> +jdouble QJNIObject::callMethod(const char *methodName, const char *sig, ...) +{ + QAttachedJNIEnv env; + jdouble res = 0.; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallDoubleMethodV(m_jobject, id, args); + va_end(args); + } + return res; +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jobject res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallObjectMethodV(m_jobject, id, args); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jstring res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallObjectMethodV(m_jobject, id, args)); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jobjectArray res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallObjectMethodV(m_jobject, id, args)); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jbooleanArray res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallObjectMethodV(m_jobject, id, args)); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jbyteArray res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallObjectMethodV(m_jobject, id, args)); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jcharArray res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallObjectMethodV(m_jobject, id, args)); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jshortArray res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallObjectMethodV(m_jobject, id, args)); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jintArray res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallObjectMethodV(m_jobject, id, args)); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jlongArray res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallObjectMethodV(m_jobject, id, args)); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jfloatArray res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallObjectMethodV(m_jobject, id, args)); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jdoubleArray res = 0; + jmethodID id = getCachedMethodID(env, m_jclass, methodName, sig); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallObjectMethodV(m_jobject, id, args)); + va_end(args); + } + return QJNILocalRef(res); +} + +template <> +void QJNIObject::callMethod(const char *methodName) +{ + callMethod(methodName, "()V"); +} + +template <> +jboolean QJNIObject::callMethod(const char *methodName) +{ + return callMethod(methodName, "()Z"); +} + +template <> +jbyte QJNIObject::callMethod(const char *methodName) +{ + return callMethod(methodName, "()B"); +} + +template <> +jchar QJNIObject::callMethod(const char *methodName) +{ + return callMethod(methodName, "()C"); +} + +template <> +jshort QJNIObject::callMethod(const char *methodName) +{ + return callMethod(methodName, "()S"); +} + +template <> +jint QJNIObject::callMethod(const char *methodName) +{ + return callMethod(methodName, "()I"); +} + +template <> +jlong QJNIObject::callMethod(const char *methodName) +{ + return callMethod(methodName, "()J"); +} + +template <> +jfloat QJNIObject::callMethod(const char *methodName) +{ + return callMethod(methodName, "()F"); +} + +template <> +jdouble QJNIObject::callMethod(const char *methodName) +{ + return callMethod(methodName, "()D"); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName) +{ + return callObjectMethod(methodName, "()Ljava/lang/String;"); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName) +{ + return callObjectMethod(methodName, "()[Z"); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName) +{ + return callObjectMethod(methodName, "()[B"); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName) +{ + return callObjectMethod(methodName, "()[S"); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName) +{ + return callObjectMethod(methodName, "()[I"); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName) +{ + return callObjectMethod(methodName, "()[J"); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName) +{ + return callObjectMethod(methodName, "()[F"); +} + +template <> +QJNILocalRef QJNIObject::callObjectMethod(const char *methodName) +{ + return callObjectMethod(methodName, "()[D"); +} + +template <> +void QJNIObject::callStaticMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + env->CallStaticVoidMethodV(clazz, id, args); + va_end(args); + } + } +} + +template <> +void QJNIObject::callStaticMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + env->CallStaticVoidMethodV(clazz, id, args); + va_end(args); + } +} + +template <> +jboolean QJNIObject::callStaticMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jboolean res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticBooleanMethodV(clazz, id, args); + va_end(args); + } + } + + return res; +} + +template <> +jboolean QJNIObject::callStaticMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jboolean res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticBooleanMethodV(clazz, id, args); + va_end(args); + } + + return res; +} + +template <> +jbyte QJNIObject::callStaticMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jbyte res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticByteMethodV(clazz, id, args); + va_end(args); + } + } + + return res; +} + +template <> +jbyte QJNIObject::callStaticMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jbyte res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticByteMethodV(clazz, id, args); + va_end(args); + } + + return res; +} + +template <> +jchar QJNIObject::callStaticMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jchar res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticCharMethodV(clazz, id, args); + va_end(args); + } + } + + return res; +} + +template <> +jchar QJNIObject::callStaticMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jchar res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticCharMethodV(clazz, id, args); + va_end(args); + } + + return res; +} + + +template <> +jshort QJNIObject::callStaticMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jshort res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticShortMethodV(clazz, id, args); + va_end(args); + } + } + + return res; +} + +template <> +jshort QJNIObject::callStaticMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jshort res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticShortMethodV(clazz, id, args); + va_end(args); + } + + return res; +} + +template <> +jint QJNIObject::callStaticMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jint res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticIntMethodV(clazz, id, args); + va_end(args); + } + } + + return res; +} + +template <> +jint QJNIObject::callStaticMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jint res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticIntMethodV(clazz, id, args); + va_end(args); + } + + return res; +} + +template <> +jlong QJNIObject::callStaticMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jlong res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticLongMethodV(clazz, id, args); + va_end(args); + } + } + + return res; +} + +template <> +jlong QJNIObject::callStaticMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jlong res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticLongMethodV(clazz, id, args); + va_end(args); + } + + return res; +} + +template <> +jfloat QJNIObject::callStaticMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jfloat res = 0.f; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticFloatMethodV(clazz, id, args); + va_end(args); + } + } + + return res; +} + +template <> +jfloat QJNIObject::callStaticMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jfloat res = 0.f; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticFloatMethodV(clazz, id, args); + va_end(args); + } + + return res; +} + +template <> +jdouble QJNIObject::callStaticMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jdouble res = 0.; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticDoubleMethodV(clazz, id, args); + va_end(args); + } + } + + return res; +} + +template <> +jdouble QJNIObject::callStaticMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jdouble res = 0.; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticDoubleMethodV(clazz, id, args); + va_end(args); + } + + return res; +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jobject res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticObjectMethodV(clazz, id, args); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jobject res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = env->CallStaticObjectMethodV(clazz, id, args); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jstring res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jstring res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jobjectArray res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jobjectArray res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jbooleanArray res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jbooleanArray res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jbyteArray res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jbyteArray res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jcharArray res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jcharArray res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jshortArray res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jshortArray res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jintArray res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jintArray res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jlongArray res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jlongArray res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jfloatArray res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jfloatArray res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jdoubleArray res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) { + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + } + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, + ...) +{ + QAttachedJNIEnv env; + + jdoubleArray res = 0; + + jmethodID id = getCachedMethodID(env, clazz, methodName, sig, true); + if (id) { + va_list args; + va_start(args, sig); + res = static_cast(env->CallStaticObjectMethodV(clazz, id, args)); + va_end(args); + } + + return QJNILocalRef(res); +} + +template <> +void QJNIObject::callStaticMethod(const char *className, const char *methodName) +{ + callStaticMethod(className, methodName, "()V"); +} + +template <> +void QJNIObject::callStaticMethod(jclass clazz, const char *methodName) +{ + callStaticMethod(clazz, methodName, "()V"); +} + +template <> +jboolean QJNIObject::callStaticMethod(const char *className, const char *methodName) +{ + return callStaticMethod(className, methodName, "()Z"); +} + +template <> +jboolean QJNIObject::callStaticMethod(jclass clazz, const char *methodName) +{ + return callStaticMethod(clazz, methodName, "()Z"); +} + +template <> +jbyte QJNIObject::callStaticMethod(const char *className, const char *methodName) +{ + return callStaticMethod(className, methodName, "()B"); +} + +template <> +jbyte QJNIObject::callStaticMethod(jclass clazz, const char *methodName) +{ + return callStaticMethod(clazz, methodName, "()B"); +} + +template <> +jchar QJNIObject::callStaticMethod(const char *className, const char *methodName) +{ + return callStaticMethod(className, methodName, "()C"); +} + +template <> +jchar QJNIObject::callStaticMethod(jclass clazz, const char *methodName) +{ + return callStaticMethod(clazz, methodName, "()C"); +} + +template <> +jshort QJNIObject::callStaticMethod(const char *className, const char *methodName) +{ + return callStaticMethod(className, methodName, "()S"); +} + +template <> +jshort QJNIObject::callStaticMethod(jclass clazz, const char *methodName) +{ + return callStaticMethod(clazz, methodName, "()S"); +} + +template <> +jint QJNIObject::callStaticMethod(const char *className, const char *methodName) +{ + return callStaticMethod(className, methodName, "()I"); +} + +template <> +jint QJNIObject::callStaticMethod(jclass clazz, const char *methodName) +{ + return callStaticMethod(clazz, methodName, "()I"); +} + +template <> +jlong QJNIObject::callStaticMethod(const char *className, const char *methodName) +{ + return callStaticMethod(className, methodName, "()J"); +} + +template <> +jlong QJNIObject::callStaticMethod(jclass clazz, const char *methodName) +{ + return callStaticMethod(clazz, methodName, "()J"); +} + +template <> +jfloat QJNIObject::callStaticMethod(const char *className, const char *methodName) +{ + return callStaticMethod(className, methodName, "()F"); +} + +template <> +jfloat QJNIObject::callStaticMethod(jclass clazz, const char *methodName) +{ + return callStaticMethod(clazz, methodName, "()F"); +} + +template <> +jdouble QJNIObject::callStaticMethod(const char *className, const char *methodName) +{ + return callStaticMethod(className, methodName, "()D"); +} + +template <> +jdouble QJNIObject::callStaticMethod(jclass clazz, const char *methodName) +{ + return callStaticMethod(clazz, methodName, "()D"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName) +{ + return callStaticObjectMethod(className, methodName, "()Ljava/lang/String;"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName) +{ + return callStaticObjectMethod(clazz, methodName, "()Ljava/lang/String;"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName) +{ + return callStaticObjectMethod(className, methodName, "()[Z"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName) +{ + return callStaticObjectMethod(clazz, methodName, "()[Z"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName) +{ + return callStaticObjectMethod(className, methodName, "()[B"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName) +{ + return callStaticObjectMethod(clazz, methodName, "()[B"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName) +{ + return callStaticObjectMethod(className, methodName, "()[C"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName) +{ + return callStaticObjectMethod(clazz, methodName, "()[C"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName) +{ + return callStaticObjectMethod(className, methodName, "()[S"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName) +{ + return callStaticObjectMethod(clazz, methodName, "()[S"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName) +{ + return callStaticObjectMethod(className, methodName, "()[I"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName) +{ + return callStaticObjectMethod(clazz, methodName, "()[I"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName) +{ + return callStaticObjectMethod(className, methodName, "()[J"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName) +{ + return callStaticObjectMethod(clazz, methodName, "()[J"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName) +{ + return callStaticObjectMethod(className, methodName, "()[F"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName) +{ + return callStaticObjectMethod(clazz, methodName, "()[F"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(const char *className, + const char *methodName) +{ + return callStaticObjectMethod(className, methodName, "()[D"); +} + +template <> +QJNILocalRef QJNIObject::callStaticObjectMethod(jclass clazz, + const char *methodName) +{ + return callStaticObjectMethod(clazz, methodName, "()[D"); +} + +template <> +jboolean QJNIObject::getField(const char *fieldName) +{ + QAttachedJNIEnv env; + jboolean res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "Z"); + if (id) + res = env->GetBooleanField(m_jobject, id); + + return res; +} + +template <> +jbyte QJNIObject::getField(const char *fieldName) +{ + QAttachedJNIEnv env; + jbyte res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "B"); + if (id) + res = env->GetByteField(m_jobject, id); + + return res; +} + +template <> +jchar QJNIObject::getField(const char *fieldName) +{ + QAttachedJNIEnv env; + jchar res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "C"); + if (id) + res = env->GetCharField(m_jobject, id); + + return res; +} + +template <> +jshort QJNIObject::getField(const char *fieldName) +{ + QAttachedJNIEnv env; + jshort res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "S"); + if (id) + res = env->GetShortField(m_jobject, id); + + return res; +} + +template <> +jint QJNIObject::getField(const char *fieldName) +{ + QAttachedJNIEnv env; + jint res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "I"); + if (id) + res = env->GetIntField(m_jobject, id); + + return res; +} + +template <> +jlong QJNIObject::getField(const char *fieldName) +{ + QAttachedJNIEnv env; + jlong res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "J"); + if (id) + res = env->GetLongField(m_jobject, id); + + return res; +} + +template <> +jfloat QJNIObject::getField(const char *fieldName) +{ + QAttachedJNIEnv env; + jfloat res = 0.f; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "F"); + if (id) + res = env->GetFloatField(m_jobject, id); + + return res; +} + +template <> +jdouble QJNIObject::getField(const char *fieldName) +{ + QAttachedJNIEnv env; + jdouble res = 0.; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "D"); + if (id) + res = env->GetDoubleField(m_jobject, id); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName, const char *sig) +{ + QAttachedJNIEnv env; + jobject res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, sig); + if (id) + res = env->GetObjectField(m_jobject, id); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName) +{ + QAttachedJNIEnv env; + jbooleanArray res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[Z"); + if (id) + res = static_cast(env->GetObjectField(m_jobject, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName) +{ + QAttachedJNIEnv env; + jbyteArray res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[B"); + if (id) + res = static_cast(env->GetObjectField(m_jobject, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName) +{ + QAttachedJNIEnv env; + jcharArray res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[C"); + if (id) + res = static_cast(env->GetObjectField(m_jobject, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName) +{ + QAttachedJNIEnv env; + jshortArray res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[S"); + if (id) + res = static_cast(env->GetObjectField(m_jobject, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName) +{ + QAttachedJNIEnv env; + jintArray res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[I"); + if (id) + res = static_cast(env->GetObjectField(m_jobject, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName) +{ + QAttachedJNIEnv env; + jlongArray res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[J"); + if (id) + res = static_cast(env->GetObjectField(m_jobject, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName) +{ + QAttachedJNIEnv env; + jfloatArray res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[F"); + if (id) + res = static_cast(env->GetObjectField(m_jobject, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName) +{ + QAttachedJNIEnv env; + jdoubleArray res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[D"); + if (id) + res = static_cast(env->GetObjectField(m_jobject, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName) +{ + QAttachedJNIEnv env; + jstring res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "Ljava/lang/String;"); + if (id) + res = static_cast(env->GetObjectField(m_jobject, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getObjectField(const char *fieldName, + const char *sig) +{ + QAttachedJNIEnv env; + jobjectArray res = 0; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, sig); + if (id) + res = static_cast(env->GetObjectField(m_jobject, id)); + + return QJNILocalRef(res); +} + +template <> +void QJNIObject::setField(const char *fieldName, jboolean value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "Z"); + if (id) + env->SetBooleanField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jbyte value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "B"); + if (id) + env->SetByteField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jchar value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "C"); + if (id) + env->SetCharField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jshort value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "S"); + if (id) + env->SetShortField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jint value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "I"); + if (id) + env->SetIntField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jlong value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "J"); + if (id) + env->SetLongField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jfloat value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "F"); + if (id) + env->SetFloatField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jdouble value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "D"); + if (id) + env->SetDoubleField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jbooleanArray value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[Z"); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jbyteArray value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[B"); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jcharArray value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[C"); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jshortArray value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[S"); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jintArray value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[I"); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jlongArray value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[J"); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jfloatArray value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[F"); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jdoubleArray value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[D"); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, jstring value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "Ljava/lang/String;"); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, const char *sig, jobject value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, sig); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +void QJNIObject::setField(const char *fieldName, + const char *sig, + jobjectArray value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, m_jclass, fieldName, sig); + if (id) + env->SetObjectField(m_jobject, id, value); + +} + +template <> +jboolean QJNIObject::getStaticField(jclass clazz, const char *fieldName) +{ + QAttachedJNIEnv env; + + jboolean res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "Z", true); + if (id) + res = env->GetStaticBooleanField(clazz, id); + + return res; +} + +template <> +jboolean QJNIObject::getStaticField(const char *className, const char *fieldName) +{ + QAttachedJNIEnv env; + + jboolean res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticField(clazz, fieldName); + + return res; +} + +template <> +jbyte QJNIObject::getStaticField(jclass clazz, const char *fieldName) +{ + QAttachedJNIEnv env; + + jbyte res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "B", true); + if (id) + res = env->GetStaticByteField(clazz, id); + + return res; +} + +template <> +jbyte QJNIObject::getStaticField(const char *className, const char *fieldName) +{ + QAttachedJNIEnv env; + + jbyte res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticField(clazz, fieldName); + + return res; +} + +template <> +jchar QJNIObject::getStaticField(jclass clazz, const char *fieldName) +{ + QAttachedJNIEnv env; + + jchar res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "C", true); + if (id) + res = env->GetStaticCharField(clazz, id); + + return res; +} + +template <> +jchar QJNIObject::getStaticField(const char *className, const char *fieldName) +{ + QAttachedJNIEnv env; + + jchar res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticField(clazz, fieldName); + + return res; +} + +template <> +jshort QJNIObject::getStaticField(jclass clazz, const char *fieldName) +{ + QAttachedJNIEnv env; + + jshort res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "S", true); + if (id) + res = env->GetStaticShortField(clazz, id); + + return res; +} + +template <> +jshort QJNIObject::getStaticField(const char *className, const char *fieldName) +{ + QAttachedJNIEnv env; + + jshort res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticField(clazz, fieldName); + + return res; +} + +template <> +jint QJNIObject::getStaticField(jclass clazz, const char *fieldName) +{ + QAttachedJNIEnv env; + + jint res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "I", true); + if (id) + res = env->GetStaticIntField(clazz, id); + + return res; +} + +template <> +jint QJNIObject::getStaticField(const char *className, const char *fieldName) +{ + QAttachedJNIEnv env; + + jint res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticField(clazz, fieldName); + + return res; +} + +template <> +jlong QJNIObject::getStaticField(jclass clazz, const char *fieldName) +{ + QAttachedJNIEnv env; + + jlong res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "J", true); + if (id) + res = env->GetStaticLongField(clazz, id); + + return res; +} + +template <> +jlong QJNIObject::getStaticField(const char *className, const char *fieldName) +{ + QAttachedJNIEnv env; + + jlong res = 0; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticField(clazz, fieldName); + + return res; +} + +template <> +jfloat QJNIObject::getStaticField(jclass clazz, const char *fieldName) +{ + QAttachedJNIEnv env; + + jfloat res = 0.f; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "F", true); + if (id) + res = env->GetStaticFloatField(clazz, id); + + return res; +} + +template <> +jfloat QJNIObject::getStaticField(const char *className, const char *fieldName) +{ + QAttachedJNIEnv env; + + jfloat res = 0.f; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticField(clazz, fieldName); + + return res; +} + +template <> +jdouble QJNIObject::getStaticField(jclass clazz, const char *fieldName) +{ + QAttachedJNIEnv env; + + jdouble res = 0.; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "D", true); + if (id) + res = env->GetStaticDoubleField(clazz, id); + + return res; +} + +template <> +jdouble QJNIObject::getStaticField(const char *className, const char *fieldName) +{ + QAttachedJNIEnv env; + + jdouble res = 0.; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticField(clazz, fieldName); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName, + const char *sig) +{ + QAttachedJNIEnv env; + + jobject res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, sig, true); + if (id) + res = env->GetStaticObjectField(clazz, id); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName, + const char *sig) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName, sig); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName) +{ + QAttachedJNIEnv env; + + jstring res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "Ljava/lang/String;", true); + if (id) + res = static_cast(env->GetStaticObjectField(clazz, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName) +{ + QAttachedJNIEnv env; + + jbooleanArray res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "[Z", true); + if (id) + res = static_cast(env->GetStaticObjectField(clazz, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName) +{ + QAttachedJNIEnv env; + + jbyteArray res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "[B", true); + if (id) + res = static_cast(env->GetStaticObjectField(clazz, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName) +{ + QAttachedJNIEnv env; + + jcharArray res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "[C", true); + if (id) + res = static_cast(env->GetStaticObjectField(clazz, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName) +{ + QAttachedJNIEnv env; + + jshortArray res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "[S", true); + if (id) + res = static_cast(env->GetStaticObjectField(clazz, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName) +{ + QAttachedJNIEnv env; + + jintArray res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "[I", true); + if (id) + res = static_cast(env->GetStaticObjectField(clazz, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName) +{ + QAttachedJNIEnv env; + + jlongArray res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "[J", true); + if (id) + res = static_cast(env->GetStaticObjectField(clazz, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName) +{ + QAttachedJNIEnv env; + + jfloatArray res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "[F", true); + if (id) + res = static_cast(env->GetStaticObjectField(clazz, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName) +{ + QAttachedJNIEnv env; + + jdoubleArray res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, "[D", true); + if (id) + res = static_cast(env->GetStaticObjectField(clazz, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName); + + return res; +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(jclass clazz, + const char *fieldName, + const char *sig) +{ + QAttachedJNIEnv env; + + jobjectArray res = 0; + + jfieldID id = getCachedFieldID(env, clazz, fieldName, sig, true); + if (id) + res = static_cast(env->GetStaticObjectField(clazz, id)); + + return QJNILocalRef(res); +} + +template <> +QJNILocalRef QJNIObject::getStaticObjectField(const char *className, + const char *fieldName, + const char *sig) +{ + QAttachedJNIEnv env; + + QJNILocalRef res; + + jclass clazz = getCachedClass(env, className); + if (clazz) + res = getStaticObjectField(clazz, fieldName, sig); + + return res; +} + +template <> +void QJNIObject::setStaticField(jclass clazz, const char *fieldName, jboolean value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, clazz, fieldName, "Z", true); + if (id) + env->SetStaticBooleanField(clazz, id, value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jboolean value) +{ + QAttachedJNIEnv env; + jclass clazz = getCachedClass(env, className); + if (clazz) + setStaticField(clazz, fieldName, value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, const char *fieldName, jbyte value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, clazz, fieldName, "B", true); + if (id) + env->SetStaticByteField(clazz, id, value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jbyte value) +{ + QAttachedJNIEnv env; + jclass clazz = getCachedClass(env, className); + if (clazz) + setStaticField(clazz, fieldName, value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, const char *fieldName, jchar value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, clazz, fieldName, "C", true); + if (id) + env->SetStaticCharField(clazz, id, value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jchar value) +{ + QAttachedJNIEnv env; + jclass clazz = getCachedClass(env, className); + if (clazz) + setStaticField(clazz, fieldName, value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, const char *fieldName, jshort value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, clazz, fieldName, "S", true); + if (id) + env->SetStaticShortField(clazz, id, value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jshort value) +{ + QAttachedJNIEnv env; + jclass clazz = getCachedClass(env, className); + if (clazz) + setStaticField(clazz, fieldName, value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, const char *fieldName, jint value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, clazz, fieldName, "I", true); + if (id) + env->SetStaticIntField(clazz, id, value); +} + +template <> +void QJNIObject::setStaticField(const char *className, const char *fieldName, jint value) +{ + QAttachedJNIEnv env; + jclass clazz = getCachedClass(env, className); + if (clazz) + setStaticField(clazz, fieldName, value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, const char *fieldName, jlong value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, clazz, fieldName, "J", true); + if (id) + env->SetStaticLongField(clazz, id, value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jlong value) +{ + QAttachedJNIEnv env; + jclass clazz = getCachedClass(env, className); + if (clazz) + setStaticField(clazz, fieldName, value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, const char *fieldName, jfloat value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, clazz, fieldName, "F", true); + if (id) + env->SetStaticFloatField(clazz, id, value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jfloat value) +{ + QAttachedJNIEnv env; + jclass clazz = getCachedClass(env, className); + if (clazz) + setStaticField(clazz, fieldName, value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, const char *fieldName, jdouble value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, clazz, fieldName, "D", true); + if (id) + env->SetStaticDoubleField(clazz, id, value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jdouble value) +{ + QAttachedJNIEnv env; + jclass clazz = getCachedClass(env, className); + if (clazz) + setStaticField(clazz, fieldName, value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, + const char *fieldName, + const char *sig, + jobject value) +{ + QAttachedJNIEnv env; + jfieldID id = getCachedFieldID(env, clazz, fieldName, sig, true); + if (id) + env->SetStaticObjectField(clazz, id, value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + const char *sig, + jobject value) +{ + QAttachedJNIEnv env; + jclass clazz = getCachedClass(env, className); + if (clazz) + setStaticField(clazz, fieldName, sig, value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jstring value) +{ + setStaticField(className, fieldName, "Ljava/lang/String;", value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, const char *fieldName, jstring value) +{ + setStaticField(clazz, fieldName, "Ljava/lang/String;", value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jbooleanArray value) +{ + setStaticField(className, fieldName, "[Z", value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, + const char *fieldName, + jbooleanArray value) +{ + setStaticField(clazz, fieldName, "[Z", value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jbyteArray value) +{ + setStaticField(className, fieldName, "[B", value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, + const char *fieldName, + jbyteArray value) +{ + setStaticField(clazz, fieldName, "[B", value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jcharArray value) +{ + setStaticField(className, fieldName, "[C", value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, + const char *fieldName, + jcharArray value) +{ + setStaticField(clazz, fieldName, "[C", value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jshortArray value) +{ + setStaticField(className, fieldName, "[S", value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, + const char *fieldName, + jshortArray value) +{ + setStaticField(clazz, fieldName, "[S", value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jintArray value) +{ + setStaticField(className, fieldName, "[I", value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, + const char *fieldName, + jintArray value) +{ + setStaticField(clazz, fieldName, "[I", value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jlongArray value) +{ + setStaticField(className, fieldName, "[J", value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, + const char *fieldName, + jlongArray value) +{ + setStaticField(clazz, fieldName, "[J", value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jfloatArray value) +{ + setStaticField(className, fieldName, "[F", value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, + const char *fieldName, + jfloatArray value) +{ + setStaticField(clazz, fieldName, "[F", value); +} + +template <> +void QJNIObject::setStaticField(const char *className, + const char *fieldName, + jdoubleArray value) +{ + setStaticField(className, fieldName, "[D", value); +} + +template <> +void QJNIObject::setStaticField(jclass clazz, + const char *fieldName, + jdoubleArray value) +{ + setStaticField(clazz, fieldName, "[D", value); +} + + +QT_END_NAMESPACE diff --git a/src/platformsupport/jniconvenience/qjniobject_p.h b/src/platformsupport/jniconvenience/qjniobject_p.h new file mode 100644 index 0000000000..6874765f06 --- /dev/null +++ b/src/platformsupport/jniconvenience/qjniobject_p.h @@ -0,0 +1,169 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QJNIOBJECT_H +#define QJNIOBJECT_H + +#include +#include + +QT_BEGIN_NAMESPACE + +template +class QJNILocalRef; + +/** + * Allows to wrap any Java class and partially hide some of the jni calls. + * + * Usage example: + * + * QJNIObject javaString("java/lang/String"); + * jchar char = javaString.callMethod("charAt", "(I)C", 0); + * + * ---- + * + * jstring string = QJNIObject::callStaticMethod("java/lang/String", + * "valueOf", + * "(I)Ljava/lang/String;", 2); + * + * ---- + * + * // Constructor with argument + * jstring someString; + * QJNIObject someObject("java/some/Class", "(Ljava/lang/String;)V", someString); + * someObject.setField("fieldName", 10); + * someObject.callMethod("doStuff"); + */ +class QJNIObject +{ +public: + QJNIObject(const char *className); + QJNIObject(const char *className, const char *sig, ...); + QJNIObject(jclass clazz); + QJNIObject(jclass clazz, const char *sig, ...); + QJNIObject(jobject obj); + virtual ~QJNIObject(); + + static bool isClassAvailable(const char *className); + + bool isValid() const { return m_jobject != 0; } + jobject object() const { return m_jobject; } + + template + T callMethod(const char *methodName); + template + T callMethod(const char *methodName, const char *sig, ...); + template + QJNILocalRef callObjectMethod(const char *methodName); + template + QJNILocalRef callObjectMethod(const char *methodName, const char *sig, ...); + + template + static T callStaticMethod(const char *className, const char *methodName); + template + static T callStaticMethod(const char *className, const char *methodName, const char *sig, ...); + template + static QJNILocalRef callStaticObjectMethod(const char *className, const char *methodName); + template + static QJNILocalRef callStaticObjectMethod(const char *className, + const char *methodName, + const char *sig, ...); + template + static T callStaticMethod(jclass clazz, const char *methodName); + template + static T callStaticMethod(jclass clazz, const char *methodName, const char *sig, ...); + template + static QJNILocalRef callStaticObjectMethod(jclass clazz, const char *methodName); + template + static QJNILocalRef callStaticObjectMethod(jclass clazz, + const char *methodName, + const char *sig, ...); + + template + T getField(const char *fieldName); + template + T getField(const char *fieldName, const char *sig); + template + QJNILocalRef getObjectField(const char *fieldName); + template + QJNILocalRef getObjectField(const char *fieldName, const char *sig); + + template + void setField(const char *fieldName, T value); + template + void setField(const char *fieldName, const char *sig, T value); + + template + static QJNILocalRef getStaticObjectField(const char *className, const char *fieldName); + template + static QJNILocalRef getStaticObjectField(const char *className, + const char *fieldName, + const char *sig); + template + static T getStaticField(const char *className, const char *fieldName); + template + static QJNILocalRef getStaticObjectField(jclass clazz, const char *fieldName); + template + static QJNILocalRef getStaticObjectField(jclass clazz, const char *fieldName, const char *sig); + template + static T getStaticField(jclass clazz, const char *fieldName); + + template + static void setStaticField(const char *className, + const char *fieldName, + const char *sig, + T value); + template + static void setStaticField(const char *className, const char *fieldName, T value); + template + static void setStaticField(jclass clazz, const char *fieldName, const char *sig, T value); + template + static void setStaticField(jclass clazz, const char *fieldName, T value); + +protected: + jobject m_jobject; + jclass m_jclass; + bool m_own_jclass; +}; + +QT_END_NAMESPACE + +#endif // QJNIOBJECT_H diff --git a/src/platformsupport/platformsupport.pro b/src/platformsupport/platformsupport.pro index 8e0f396993..0566e9d3ec 100644 --- a/src/platformsupport/platformsupport.pro +++ b/src/platformsupport/platformsupport.pro @@ -22,3 +22,4 @@ include(devicediscovery/devicediscovery.pri) include(services/services.pri) include(themes/themes.pri) include(linuxaccessibility/linuxaccessibility.pri) +include(jniconvenience/jniconvenience.pri) -- cgit v1.2.3 From 950b35cf97ad398f97883efd2a18ee97994a8a9c Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 18 Jan 2013 14:39:00 +0800 Subject: Clear the current thread data for the main thread This avoids crashes accessing deleted memory when creating a QObject after the last QObject had been deleted, like a qDebug() in global destructors. ==41000== Invalid read of size 4 ==41000== at 0x5F01ED5: bool QBasicAtomicOps<4>::ref(int&) (qatomic_x86.h:208) ==41000== by 0x5F01309: QBasicAtomicInteger::ref() (qbasicatomic.h:147) ==41000== by 0x5F24051: QThreadData::ref() (qthread.cpp:100) ==41000== by 0x614A984: QObject::QObject(QObject*) (qobject.cpp:681) ==41000== Address 0x6ee73f0 is 0 bytes inside a block of size 152 free'd ==41000== at 0x4A0736C: operator delete(void*) (vg_replace_malloc.c:480) ==41000== by 0x5F240BF: QThreadData::deref() (qthread.cpp:109) ==41000== by 0x6113F6B: QCoreApplicationData::~QCoreApplicationData() (qcoreapplication.cpp:268) The comment right above the change in qthread.cpp looks eerily similar to the problem I'm trying to fix. However, the actual change that introduced the change is not in the Qt public history, so we can't know for sure what the problem was then. Change-Id: I0dba895b041fe6cf81e6f8939ca85035cd00aad1 Reviewed-by: Olivier Goffart --- src/corelib/kernel/qcoreapplication.cpp | 7 ------- src/corelib/thread/qthread.cpp | 1 + src/corelib/thread/qthread_p.h | 1 + src/corelib/thread/qthread_unix.cpp | 5 +++++ src/corelib/thread/qthread_win.cpp | 5 +++++ 5 files changed, 12 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 1696aeb77b..46de52ec9f 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -300,13 +300,6 @@ struct QCoreApplicationData { #ifndef QT_NO_LIBRARY delete app_libpaths; #endif - - // cleanup the QAdoptedThread created for the main() thread - if (QCoreApplicationPrivate::theMainThread) { - QThreadData *data = QThreadData::get2(QCoreApplicationPrivate::theMainThread); - QCoreApplicationPrivate::theMainThread = 0; - data->deref(); // deletes the data and the adopted thread - } } #ifdef Q_OS_BLACKBERRY diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp index bd8c6341c1..79199c97e0 100644 --- a/src/corelib/thread/qthread.cpp +++ b/src/corelib/thread/qthread.cpp @@ -76,6 +76,7 @@ QThreadData::~QThreadData() // the problem... if (this->thread == QCoreApplicationPrivate::theMainThread) { QCoreApplicationPrivate::theMainThread = 0; + QThreadData::clearCurrentThreadData(); } QThread *t = thread; diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h index 526633cafa..2cf988260f 100644 --- a/src/corelib/thread/qthread_p.h +++ b/src/corelib/thread/qthread_p.h @@ -223,6 +223,7 @@ public: ~QThreadData(); static QThreadData *current(); + static void clearCurrentThreadData(); static QThreadData *get2(QThread *thread) { Q_ASSERT_X(thread != 0, "QThread", "internal error"); return thread->d_func()->data; } diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp index 8104cc8938..44ad8d3ac2 100644 --- a/src/corelib/thread/qthread_unix.cpp +++ b/src/corelib/thread/qthread_unix.cpp @@ -204,6 +204,11 @@ static void clear_thread_data() pthread_setspecific(current_thread_data_key, 0); } +void QThreadData::clearCurrentThreadData() +{ + clear_thread_data(); +} + QThreadData *QThreadData::current() { QThreadData *data = get_thread_data(); diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp index 8614330d6f..0cf903bb3a 100644 --- a/src/corelib/thread/qthread_win.cpp +++ b/src/corelib/thread/qthread_win.cpp @@ -96,6 +96,11 @@ Q_DESTRUCTOR_FUNCTION(qt_free_tls) /* QThreadData */ +void QThreadData::clearCurrentThreadData() +{ + TlsSetValue(qt_current_thread_data_tls_index, 0); +} + QThreadData *QThreadData::current() { qt_create_tls(); -- cgit v1.2.3 From d28073d9eb0f35bae534470970e693a94463c549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sat, 2 Mar 2013 15:46:37 +0100 Subject: Distinguish between 'mac' and 'macx' qmake scopes The former applies both on Mac OS X and iOS, but 'macx' is specific to Mac OS X. ios.conf and macx.conf now share most of their settings in the common mac.conf. We set the default QMAKE_MAC_SDK before loading mac.conf, so that any overrides in the device config will apply afterwards. This means configure's mkspec parsing will be able to read the QMAKE_MAC_SDK. Change-Id: I0c7e26a6a0103e19b23ef152aa9e4ab461cee632 Reviewed-by: Oswald Buddenhagen Reviewed-by: Richard Moe Gustavsen --- src/corelib/io/io.pri | 8 ++++---- src/corelib/thread/thread.pri | 2 +- src/plugins/bearer/bearer.pro | 4 ++-- src/plugins/platforminputcontexts/platforminputcontexts.pro | 2 +- src/sql/drivers/oci/qsql_oci.pri | 2 +- src/tools/bootstrap/bootstrap.pro | 2 +- src/widgets/styles/styles.pri | 2 +- src/widgets/util/util.pri | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri index a52386def1..3f100593bb 100644 --- a/src/corelib/io/io.pri +++ b/src/corelib/io/io.pri @@ -117,12 +117,12 @@ win32 { io/qprocess_unix.cpp \ io/qfilesystemiterator_unix.cpp \ - !nacl:macx-*: { + !nacl:mac: { SOURCES += io/qfilesystemengine_mac.cpp SOURCES += io/qsettings_mac.cpp } - macx-*: { - !ios { + mac { + macx { SOURCES += io/qstandardpaths_mac.cpp } else { SOURCES += io/qstandardpaths_unix.cpp @@ -139,7 +139,7 @@ win32 { } !nacl { - freebsd-*|macx-*|darwin-*|openbsd-*:{ + freebsd-*|mac|darwin-*|openbsd-*:{ SOURCES += io/qfilesystemwatcher_kqueue.cpp HEADERS += io/qfilesystemwatcher_kqueue_p.h } diff --git a/src/corelib/thread/thread.pri b/src/corelib/thread/thread.pri index 7247f2984e..13f0502b62 100644 --- a/src/corelib/thread/thread.pri +++ b/src/corelib/thread/thread.pri @@ -56,7 +56,7 @@ integrity:SOURCES += thread/qmutex_unix.cpp \ thread/qwaitcondition_unix.cpp unix: { - macx-* { + mac { SOURCES += thread/qmutex_mac.cpp } else:linux-*:!linux-lsb-* { SOURCES += thread/qmutex_linux.cpp diff --git a/src/plugins/bearer/bearer.pro b/src/plugins/bearer/bearer.pro index 0375500306..42f039b19b 100644 --- a/src/plugins/bearer/bearer.pro +++ b/src/plugins/bearer/bearer.pro @@ -9,7 +9,7 @@ linux*:qtHaveModule(dbus) { win32:SUBDIRS += generic blackberry:SUBDIRS += blackberry win32:!wince*:SUBDIRS += nativewifi -macx:contains(QT_CONFIG, corewlan):SUBDIRS += corewlan -macx:SUBDIRS += generic +mac:contains(QT_CONFIG, corewlan):SUBDIRS += corewlan +mac:SUBDIRS += generic isEmpty(SUBDIRS):SUBDIRS = generic diff --git a/src/plugins/platforminputcontexts/platforminputcontexts.pro b/src/plugins/platforminputcontexts/platforminputcontexts.pro index c8449e7e44..7b3c6e9c36 100644 --- a/src/plugins/platforminputcontexts/platforminputcontexts.pro +++ b/src/plugins/platforminputcontexts/platforminputcontexts.pro @@ -1,4 +1,4 @@ TEMPLATE = subdirs qtHaveModule(dbus) { -!macx:!win32:SUBDIRS += ibus maliit +!mac:!win32:SUBDIRS += ibus maliit } diff --git a/src/sql/drivers/oci/qsql_oci.pri b/src/sql/drivers/oci/qsql_oci.pri index 9108dbaa3c..66ccdb1abb 100644 --- a/src/sql/drivers/oci/qsql_oci.pri +++ b/src/sql/drivers/oci/qsql_oci.pri @@ -6,4 +6,4 @@ unix { } else { LIBS *= -loci } -macx:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ +mac:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index 0d4b62fd16..cc7d40c43e 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -113,7 +113,7 @@ win32:SOURCES += ../../corelib/io/qfilesystemengine_win.cpp \ ../../corelib/io/qsettings_win.cpp \ ../../corelib/plugin/qsystemlibrary.cpp \ -macx: { +mac { SOURCES += ../../corelib/io/qfilesystemengine_mac.cpp \ ../../corelib/io/qsettings_mac.cpp \ ../../corelib/kernel/qcore_mac.cpp diff --git a/src/widgets/styles/styles.pri b/src/widgets/styles/styles.pri index 9f23fb30cc..a207cd2761 100644 --- a/src/widgets/styles/styles.pri +++ b/src/widgets/styles/styles.pri @@ -40,7 +40,7 @@ contains( styles, all ) { styles = fusion mac windows windowsxp windowsvista } -!macx-*|ios:styles -= mac +!mac:styles -= mac contains(QT_CONFIG, gtkstyle) { QMAKE_CXXFLAGS += $$QT_CFLAGS_QGTKSTYLE diff --git a/src/widgets/util/util.pri b/src/widgets/util/util.pri index 5847b12166..598a3082c0 100644 --- a/src/widgets/util/util.pri +++ b/src/widgets/util/util.pri @@ -36,6 +36,6 @@ win32:!wince* { SOURCES += util/qsystemtrayicon_qpa.cpp } -macx { +mac { OBJECTIVE_SOURCES += util/qscroller_mac.mm } -- cgit v1.2.3 From 8434b7ad4ab6032525693114444140e55d9e7013 Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Tue, 26 Feb 2013 16:40:51 +0100 Subject: prepare QSqlResultPrivate() to allow subclassing Allow the private class to be instantiated before the public class. Public subclasses will need to first instantiate the private subclass and pass the reference to QSqlResult. Add virtual constructor so QSqlResult can delete private class polymorphically. Change-Id: Ide7115dbb4150d6604677b542dbec16e6956a142 Reviewed-by: Andy Shaw --- src/sql/kernel/qsqlresult.cpp | 8 ++++---- src/sql/kernel/qsqlresult_p.h | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp index ea972abf50..fc850bf24e 100644 --- a/src/sql/kernel/qsqlresult.cpp +++ b/src/sql/kernel/qsqlresult.cpp @@ -218,11 +218,11 @@ QString QSqlResultPrivate::namedToPositionalBinding(const QString &query) QSqlResult::QSqlResult(const QSqlDriver *db) { - d = new QSqlResultPrivate(this); + d = new QSqlResultPrivate; + d->q = this; d->sqldriver = const_cast(db); - if(db) { - setNumericalPrecisionPolicy(db->numericalPrecisionPolicy()); - } + if (d->sqldriver) + setNumericalPrecisionPolicy(d->sqldriver->numericalPrecisionPolicy()); } /*! diff --git a/src/sql/kernel/qsqlresult_p.h b/src/sql/kernel/qsqlresult_p.h index 246b914ec7..c3a8dce739 100644 --- a/src/sql/kernel/qsqlresult_p.h +++ b/src/sql/kernel/qsqlresult_p.h @@ -71,8 +71,8 @@ struct QHolder { class Q_SQL_EXPORT QSqlResultPrivate { public: - QSqlResultPrivate(QSqlResult *d) - : q(d), + QSqlResultPrivate() + : q(0), idx(QSql::BeforeFirstRow), active(false), isSel(false), @@ -81,6 +81,7 @@ public: bindCount(0), binds(QSqlResult::PositionalBinding) { } + virtual ~QSqlResultPrivate() { } void clearValues() { -- cgit v1.2.3 From fd6821aa19bfa450c59b5928770bf3c1040d4afc Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Wed, 27 Feb 2013 03:50:10 +0100 Subject: QSqlResultPrivate: private q -> protected q_ptr This QObject-style convention will allow the usual private class macros to be used. Change-Id: Ib1cee0b3aca949b75511868ad4914e5b8530929b Reviewed-by: Andy Shaw --- src/sql/kernel/qsqlresult.cpp | 2 +- src/sql/kernel/qsqlresult_p.h | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp index fc850bf24e..9d33f38188 100644 --- a/src/sql/kernel/qsqlresult.cpp +++ b/src/sql/kernel/qsqlresult.cpp @@ -219,7 +219,7 @@ QString QSqlResultPrivate::namedToPositionalBinding(const QString &query) QSqlResult::QSqlResult(const QSqlDriver *db) { d = new QSqlResultPrivate; - d->q = this; + d->q_ptr = this; d->sqldriver = const_cast(db); if (d->sqldriver) setNumericalPrecisionPolicy(d->sqldriver->numericalPrecisionPolicy()); diff --git a/src/sql/kernel/qsqlresult_p.h b/src/sql/kernel/qsqlresult_p.h index c3a8dce739..46ee6ce195 100644 --- a/src/sql/kernel/qsqlresult_p.h +++ b/src/sql/kernel/qsqlresult_p.h @@ -70,9 +70,10 @@ struct QHolder { class Q_SQL_EXPORT QSqlResultPrivate { + public: QSqlResultPrivate() - : q(0), + : q_ptr(0), idx(QSql::BeforeFirstRow), active(false), isSel(false), @@ -117,7 +118,7 @@ public: QString namedToPositionalBinding(const QString &query); QString holderAt(int index) const; - QSqlResult *q; + QSqlResult *q_ptr; QPointer sqldriver; int idx; QString sql; -- cgit v1.2.3 From 2adeefc85f05565f4c1583e35dbed838aa5569cf Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Tue, 26 Feb 2013 18:18:39 +0100 Subject: add QSqlResult constructor suitable for inheritance The new constructor accepts reference to the private class provided by a subclass. Change-Id: I568e31727bb90de12ee8bb7bf0ed442737056470 Reviewed-by: Andy Shaw --- src/sql/kernel/qsqlresult.cpp | 11 +++++++++++ src/sql/kernel/qsqlresult.h | 1 + 2 files changed, 12 insertions(+) (limited to 'src') diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp index 9d33f38188..51faf7007f 100644 --- a/src/sql/kernel/qsqlresult.cpp +++ b/src/sql/kernel/qsqlresult.cpp @@ -225,6 +225,17 @@ QSqlResult::QSqlResult(const QSqlDriver *db) setNumericalPrecisionPolicy(d->sqldriver->numericalPrecisionPolicy()); } +/*! \internal +*/ +QSqlResult::QSqlResult(QSqlResultPrivate &dd, const QSqlDriver *db) +{ + d = ⅆ + d->q_ptr = this; + d->sqldriver = const_cast(db); + if (d->sqldriver) + setNumericalPrecisionPolicy(d->sqldriver->numericalPrecisionPolicy()); +} + /*! Destroys the object and frees any allocated resources. */ diff --git a/src/sql/kernel/qsqlresult.h b/src/sql/kernel/qsqlresult.h index 649e3587ab..7252d69460 100644 --- a/src/sql/kernel/qsqlresult.h +++ b/src/sql/kernel/qsqlresult.h @@ -74,6 +74,7 @@ protected: }; explicit QSqlResult(const QSqlDriver * db); + QSqlResult(QSqlResultPrivate &dd, const QSqlDriver *db); int at() const; QString lastQuery() const; QSqlError lastError() const; -- cgit v1.2.3 From 53de2934337d96ba80732e16ad907f98663bec91 Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Wed, 27 Feb 2013 03:21:56 +0100 Subject: QSqlResult: private d -> protected d_ptr This QObject-style convention will allow the usual private class macros to be used. Change-Id: I992ee2a2d2e7984d57feb4cbe785a267f2fd83ce Reviewed-by: Andy Shaw Reviewed-by: Thiago Macieira --- src/sql/kernel/qsqlresult.cpp | 44 ++++++++++++++++++++++++++++++++++++++++--- src/sql/kernel/qsqlresult.h | 5 ++--- 2 files changed, 43 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp index 51faf7007f..db55ad7813 100644 --- a/src/sql/kernel/qsqlresult.cpp +++ b/src/sql/kernel/qsqlresult.cpp @@ -218,7 +218,8 @@ QString QSqlResultPrivate::namedToPositionalBinding(const QString &query) QSqlResult::QSqlResult(const QSqlDriver *db) { - d = new QSqlResultPrivate; + d_ptr = new QSqlResultPrivate; + Q_D(QSqlResult); d->q_ptr = this; d->sqldriver = const_cast(db); if (d->sqldriver) @@ -229,7 +230,8 @@ QSqlResult::QSqlResult(const QSqlDriver *db) */ QSqlResult::QSqlResult(QSqlResultPrivate &dd, const QSqlDriver *db) { - d = ⅆ + d_ptr = ⅆ + Q_D(QSqlResult); d->q_ptr = this; d->sqldriver = const_cast(db); if (d->sqldriver) @@ -242,6 +244,7 @@ QSqlResult::QSqlResult(QSqlResultPrivate &dd, const QSqlDriver *db) QSqlResult::~QSqlResult() { + Q_D(QSqlResult); delete d; } @@ -254,6 +257,7 @@ QSqlResult::~QSqlResult() void QSqlResult::setQuery(const QString& query) { + Q_D(QSqlResult); d->sql = query; } @@ -266,6 +270,7 @@ void QSqlResult::setQuery(const QString& query) QString QSqlResult::lastQuery() const { + Q_D(const QSqlResult); return d->sql; } @@ -278,6 +283,7 @@ QString QSqlResult::lastQuery() const */ int QSqlResult::at() const { + Q_D(const QSqlResult); return d->idx; } @@ -292,6 +298,7 @@ int QSqlResult::at() const bool QSqlResult::isValid() const { + Q_D(const QSqlResult); return d->idx != QSql::BeforeFirstRow && d->idx != QSql::AfterLastRow; } @@ -309,6 +316,7 @@ bool QSqlResult::isValid() const bool QSqlResult::isActive() const { + Q_D(const QSqlResult); return d->active; } @@ -321,6 +329,7 @@ bool QSqlResult::isActive() const void QSqlResult::setAt(int index) { + Q_D(QSqlResult); d->idx = index; } @@ -336,6 +345,7 @@ void QSqlResult::setAt(int index) void QSqlResult::setSelect(bool select) { + Q_D(QSqlResult); d->isSel = select; } @@ -348,6 +358,7 @@ void QSqlResult::setSelect(bool select) bool QSqlResult::isSelect() const { + Q_D(const QSqlResult); return d->isSel; } @@ -358,6 +369,7 @@ bool QSqlResult::isSelect() const const QSqlDriver *QSqlResult::driver() const { + Q_D(const QSqlResult); return d->sqldriver; } @@ -371,6 +383,7 @@ const QSqlDriver *QSqlResult::driver() const void QSqlResult::setActive(bool active) { + Q_D(QSqlResult); if (active && d->executedQuery.isEmpty()) d->executedQuery = d->sql; @@ -386,6 +399,7 @@ void QSqlResult::setActive(bool active) void QSqlResult::setLastError(const QSqlError &error) { + Q_D(QSqlResult); d->error = error; } @@ -396,6 +410,7 @@ void QSqlResult::setLastError(const QSqlError &error) QSqlError QSqlResult::lastError() const { + Q_D(const QSqlResult); return d->error; } @@ -530,6 +545,7 @@ bool QSqlResult::fetchPrevious() */ bool QSqlResult::isForwardOnly() const { + Q_D(const QSqlResult); return d->forwardOnly; } @@ -551,6 +567,7 @@ bool QSqlResult::isForwardOnly() const */ void QSqlResult::setForwardOnly(bool forward) { + Q_D(QSqlResult); d->forwardOnly = forward; } @@ -565,6 +582,7 @@ void QSqlResult::setForwardOnly(bool forward) */ bool QSqlResult::savePrepare(const QString& query) { + Q_D(QSqlResult); if (!driver()) return false; d->clear(); @@ -590,6 +608,7 @@ bool QSqlResult::savePrepare(const QString& query) */ bool QSqlResult::prepare(const QString& query) { + Q_D(QSqlResult); d->sql = query; if (d->holders.isEmpty()) { // parse the query to memorize parameter location @@ -606,6 +625,7 @@ bool QSqlResult::prepare(const QString& query) */ bool QSqlResult::exec() { + Q_D(QSqlResult); bool ret; // fake preparation - just replace the placeholders.. QString query = lastQuery(); @@ -658,6 +678,7 @@ bool QSqlResult::exec() */ void QSqlResult::bindValue(int index, const QVariant& val, QSql::ParamType paramType) { + Q_D(QSqlResult); d->binds = PositionalBinding; d->indexes[QSqlResultPrivate::fieldSerial(index)].append(index); if (d->values.count() <= index) @@ -686,6 +707,7 @@ void QSqlResult::bindValue(int index, const QVariant& val, QSql::ParamType param void QSqlResult::bindValue(const QString& placeholder, const QVariant& val, QSql::ParamType paramType) { + Q_D(QSqlResult); d->binds = NamedBinding; // if the index has already been set when doing emulated named // bindings - don't reset it @@ -707,6 +729,7 @@ void QSqlResult::bindValue(const QString& placeholder, const QVariant& val, */ void QSqlResult::addBindValue(const QVariant& val, QSql::ParamType paramType) { + Q_D(QSqlResult); d->binds = PositionalBinding; bindValue(d->bindCount, val, paramType); ++d->bindCount; @@ -720,6 +743,7 @@ void QSqlResult::addBindValue(const QVariant& val, QSql::ParamType paramType) */ QVariant QSqlResult::boundValue(int index) const { + Q_D(const QSqlResult); return d->values.value(index); } @@ -733,6 +757,7 @@ QVariant QSqlResult::boundValue(int index) const */ QVariant QSqlResult::boundValue(const QString& placeholder) const { + Q_D(const QSqlResult); QList indexes = d->indexes.value(placeholder); return d->values.value(indexes.value(0,-1)); } @@ -744,6 +769,7 @@ QVariant QSqlResult::boundValue(const QString& placeholder) const */ QSql::ParamType QSqlResult::bindValueType(int index) const { + Q_D(const QSqlResult); return d->types.value(index, QSql::In); } @@ -755,6 +781,7 @@ QSql::ParamType QSqlResult::bindValueType(int index) const */ QSql::ParamType QSqlResult::bindValueType(const QString& placeholder) const { + Q_D(const QSqlResult); return d->types.value(d->indexes.value(placeholder).value(0,-1), QSql::In); } @@ -765,6 +792,7 @@ QSql::ParamType QSqlResult::bindValueType(const QString& placeholder) const */ int QSqlResult::boundValueCount() const { + Q_D(const QSqlResult); return d->values.count(); } @@ -776,7 +804,8 @@ int QSqlResult::boundValueCount() const */ QVector& QSqlResult::boundValues() const { - return d->values; + Q_D(const QSqlResult); + return const_cast(d)->values; } /*! @@ -784,6 +813,7 @@ QVector& QSqlResult::boundValues() const */ QSqlResult::BindingSyntax QSqlResult::bindingSyntax() const { + Q_D(const QSqlResult); return d->binds; } @@ -793,6 +823,7 @@ QSqlResult::BindingSyntax QSqlResult::bindingSyntax() const */ void QSqlResult::clear() { + Q_D(QSqlResult); d->clear(); } @@ -806,11 +837,13 @@ void QSqlResult::clear() */ QString QSqlResult::executedQuery() const { + Q_D(const QSqlResult); return d->executedQuery; } void QSqlResult::resetBindCount() { + Q_D(QSqlResult); d->resetBindCount(); } @@ -822,6 +855,7 @@ void QSqlResult::resetBindCount() */ QString QSqlResult::boundValueName(int index) const { + Q_D(const QSqlResult); return d->holderAt(index); } @@ -833,6 +867,7 @@ QString QSqlResult::boundValueName(int index) const */ bool QSqlResult::hasOutValues() const { + Q_D(const QSqlResult); if (d->types.isEmpty()) return false; QHash::ConstIterator it; @@ -912,6 +947,7 @@ void QSqlResult::virtual_hook(int, void *) bool QSqlResult::execBatch(bool arrayBind) { Q_UNUSED(arrayBind); + Q_D(QSqlResult); QVector values = d->values; if (values.count() == 0) @@ -935,6 +971,7 @@ void QSqlResult::detachFromResultSet() */ void QSqlResult::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy) { + Q_D(QSqlResult); d->precisionPolicy = policy; } @@ -942,6 +979,7 @@ void QSqlResult::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy poli */ QSql::NumericalPrecisionPolicy QSqlResult::numericalPrecisionPolicy() const { + Q_D(const QSqlResult); return d->precisionPolicy; } diff --git a/src/sql/kernel/qsqlresult.h b/src/sql/kernel/qsqlresult.h index 7252d69460..05f3d7ffec 100644 --- a/src/sql/kernel/qsqlresult.h +++ b/src/sql/kernel/qsqlresult.h @@ -59,9 +59,9 @@ class QSqlResultPrivate; class Q_SQL_EXPORT QSqlResult { + Q_DECLARE_PRIVATE(QSqlResult) friend class QSqlQuery; friend class QSqlTableModelPrivate; - friend class QSqlResultPrivate; public: virtual ~QSqlResult(); @@ -133,8 +133,7 @@ protected: virtual bool nextResult(); void resetBindCount(); // HACK -private: - QSqlResultPrivate* d; + QSqlResultPrivate *d_ptr; private: Q_DISABLE_COPY(QSqlResult) -- cgit v1.2.3 From 88918abddeb323340c4a49dda035898a740373da Mon Sep 17 00:00:00 2001 From: Corentin Jabot Date: Mon, 14 Jan 2013 19:25:31 +0100 Subject: Make QLocalSocket::open set an error when already connected When attempting to connect a tcp-based QLocalSocket while it was already connected, the open() (and connectToServer()) method failed silently. That behavior was not helpful and inconsistent with the windows and unix implementations. So an error is now set and error() is emitted Change-Id: I544e81f0a303dd6d5b1869287df860878a8a06c6 Reviewed-by: Thiago Macieira --- src/network/socket/qlocalsocket_tcp.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/network/socket/qlocalsocket_tcp.cpp b/src/network/socket/qlocalsocket_tcp.cpp index cf109c2b2f..edde5a4687 100644 --- a/src/network/socket/qlocalsocket_tcp.cpp +++ b/src/network/socket/qlocalsocket_tcp.cpp @@ -218,6 +218,8 @@ bool QLocalSocket::open(OpenMode openMode) { Q_D(QLocalSocket); if (state() == ConnectedState || state() == ConnectingState) { + setErrorString(tr("Trying to connect while connection is in progress")); + emit error(QLocalSocket::OperationError); return false; } -- cgit v1.2.3 From ca6a4258d0816b3608295eb40ac89cfd82bab5bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Fri, 5 Oct 2012 15:58:56 +0200 Subject: QMap - add insert overload that provide a hint This adds a fast insert on QMap when providing a correct hint. Change-Id: I256bba342932c1d4f24c6e65074e1bf47b519537 Reviewed-by: Thiago Macieira Reviewed-by: Lars Knoll --- src/corelib/tools/qmap.cpp | 26 ++++++++++++++++++ src/corelib/tools/qmap.h | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp index a4c28b5bd4..21ac059a01 100644 --- a/src/corelib/tools/qmap.cpp +++ b/src/corelib/tools/qmap.cpp @@ -981,6 +981,32 @@ void QMapDataBase::freeData(QMapDataBase *d) \sa insertMulti() */ +/*! \fn QMap::iterator QMap::insert(const_iterator pos, const Key &key, const T &value) + \overload + \since 5.1 + Inserts a new item with the key \a key and value \a value and with hint \a pos + suggesting where to do the insert. + + If constBegin() is used as hint it indicates that the \a key is less than any key in the map + while constEnd() suggests that the \a key is (strictly) larger than any key in the map. + Otherwise the hint should meet the condition (\a pos - 1).key() < \a key <= pos.key(). + If the hint \a pos is wrong it is ignored and a regular insert is done. + + If there is already an item with the key \a key, that item's value + is replaced with \a value. + + If there are multiple items with the key \a key, then exactly one of them + is replaced with \a value. + + When creating a map from sorted data inserting the largest key first with constBegin() + is faster than inserting in sorted order with constEnd() + + \b {Note:} Be careful with the hint. Providing an iterator from an older shared instance might + crash but there is also a risk that it will silently corrupt both the map and the \a pos map. + + \sa insertMulti() +*/ + /*! \fn QMap::iterator QMap::insertMulti(const Key &key, const T &value) Inserts a new item with the key \a key and a value of \a value. diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h index 280696c534..31a891b0c2 100644 --- a/src/corelib/tools/qmap.h +++ b/src/corelib/tools/qmap.h @@ -538,6 +538,7 @@ public: iterator upperBound(const Key &key); const_iterator upperBound(const Key &key) const; iterator insert(const Key &key, const T &value); + iterator insert(const_iterator pos, const Key &key, const T &value); iterator insertMulti(const Key &key, const T &value); QMap &unite(const QMap &other); @@ -662,6 +663,72 @@ Q_INLINE_TEMPLATE typename QMap::iterator QMap::insert(const Key return iterator(z); } +template +typename QMap::iterator QMap::insert(const_iterator pos, const Key &akey, const T &avalue) +{ + if (d->ref.isShared()) + return this->insert(akey, avalue); + + if (pos == constEnd()) { + // Hint is that the Node is larger than (or equal to) the largest value. + Node *n = static_cast(pos.i->left); + if (n) { + while (n->right) + n = static_cast(n->right); + + if (!qMapLessThanKey(n->key, akey)) + return this->insert(akey, avalue); // ignore hint + // This can be optimized by checking equal too. + // we can overwrite if previous node key is strictly smaller + // (or there is no previous node) + + Node *z = d->createNode(akey, avalue, n, false); // insert right most + return iterator(z); + } + return this->insert(akey, avalue); + } else { + // Hint indicates that the node should be less (or equal to) the hint given + // but larger than the previous value. + Node *next = const_cast(pos.i); + if (qMapLessThanKey(next->key, akey)) + return this->insert(akey, avalue); // ignore hint + + if (pos == constBegin()) { + // There is no previous value + // Maybe overwrite left most value + if (!qMapLessThanKey(akey, next->key)) { + next->value = avalue; // overwrite current iterator + return iterator(next); + } + // insert left most. + Node *z = d->createNode(akey, avalue, begin().i, true); + return iterator(z); + } else { + Node *prev = const_cast(pos.i->previousNode()); + if (!qMapLessThanKey(prev->key, akey)) { + return this->insert(akey, avalue); // ignore hint + } + // Hint is ok + if (!qMapLessThanKey(akey, next->key)) { + next->value = avalue; // overwrite current iterator + return iterator(next); + } + + // we need to insert (not overwrite) + if (prev->right == 0) { + Node *z = d->createNode(akey, avalue, prev, false); + return iterator(z); + } + if (next->left == 0) { + Node *z = d->createNode(akey, avalue, next, true); + return iterator(z); + } + Q_ASSERT(false); // We should have prev->right == 0 or next->left == 0. + return this->insert(akey, avalue); + } + } +} + template Q_INLINE_TEMPLATE typename QMap::iterator QMap::insertMulti(const Key &akey, const T &avalue) -- cgit v1.2.3 From f0533ba8c22d6366f9d4fb8e8ce18554cd0d01e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Tue, 15 Jan 2013 16:09:44 +0100 Subject: QMap - add multiInsert with hint This provides a fast multiInsert in QMap (and a fast insert in QMultiMap) when providing a correct hint. Change-Id: I3c864c3a7842765fe63f8ecb4b54d0e8c9fd22d7 Reviewed-by: Thiago Macieira --- src/corelib/tools/qmap.cpp | 37 +++++++++++++++++++++++++++++++ src/corelib/tools/qmap.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp index 21ac059a01..e5de4a1bfd 100644 --- a/src/corelib/tools/qmap.cpp +++ b/src/corelib/tools/qmap.cpp @@ -1019,6 +1019,26 @@ void QMapDataBase::freeData(QMapDataBase *d) \sa insert(), values() */ +/*! \fn QMap::iterator QMap::insertMulti(const_iterator pos, const Key &key, const T &value) + \overload + \since 5.1 + Inserts a new item with the key \a key and value \a value and with hint \a pos + suggesting where to do the insert. + + If constBegin() is used as hint it indicates that the \a key is less than any key in the map + while constEnd() suggests that the \a key is larger than any key in the map. + Otherwise the hint should meet the condition (\a pos - 1).key() < \a key <= pos.key(). + If the hint \a pos is wrong it is ignored and a regular insertMulti is done. + + If there is already an item with the same key in the map, this function will simply create a new one. + + \b {Note:} Be careful with the hint. Providing an iterator from an older shared instance might + crash but there is also a risk that it will silently corrupt both the map and the \a pos map. + + \sa insert() +*/ + + /*! \fn QMap &QMap::unite(const QMap &other) Inserts all the items in the \a other map into this map. If a @@ -1655,6 +1675,23 @@ void QMapDataBase::freeData(QMapDataBase *d) \sa replace() */ +/*! \fn QMultiMap::iterator QMultiMap::insert(QMap::const_iterator pos, const Key &key, const T &value) + + \since 5.1 + Inserts a new item with the key \a key and value \a value and with hint \a pos + suggesting where to do the insert. + + If constBegin() is used as hint it indicates that the \a key is less than any key in the map + while constEnd() suggests that the \a key is larger than any key in the map. + Otherwise the hint should meet the condition (\a pos - 1).key() < \a key <= pos.key(). + If the hint \a pos is wrong it is ignored and a regular insert is done. + + If there is already an item with the same key in the map, this function will simply create a new one. + + \b {Note:} Be careful with the hint. Providing an iterator from an older shared instance might + crash but there is also a risk that it will silently corrupt both the map and the \a pos map. +*/ + /*! \fn QMultiMap &QMultiMap::operator+=(const QMultiMap &other) Inserts all the items in the \a other map into this map and diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h index 31a891b0c2..449fcbca0a 100644 --- a/src/corelib/tools/qmap.h +++ b/src/corelib/tools/qmap.h @@ -540,6 +540,7 @@ public: iterator insert(const Key &key, const T &value); iterator insert(const_iterator pos, const Key &key, const T &value); iterator insertMulti(const Key &key, const T &value); + iterator insertMulti(const_iterator pos, const Key &akey, const T &avalue); QMap &unite(const QMap &other); // STL compatibility @@ -746,6 +747,57 @@ Q_INLINE_TEMPLATE typename QMap::iterator QMap::insertMulti(cons return iterator(z); } +template +typename QMap::iterator QMap::insertMulti(const_iterator pos, const Key &akey, const T &avalue) +{ + if (d->ref.isShared()) + return this->insertMulti(akey, avalue); + + if (pos == constEnd()) { + // Hint is that the Node is larger than (or equal to) the largest value. + Node *n = static_cast(pos.i->left); + if (n) { + while (n->right) + n = static_cast(n->right); + + if (!qMapLessThanKey(n->key, akey)) + return this->insertMulti(akey, avalue); // ignore hint + Node *z = d->createNode(akey, avalue, n, false); // insert right most + return iterator(z); + } + return this->insertMulti(akey, avalue); + } else { + // Hint indicates that the node should be less (or equal to) the hint given + // but larger than the previous value. + Node *next = const_cast(pos.i); + if (qMapLessThanKey(next->key, akey)) + return this->insertMulti(akey, avalue); // ignore hint + + if (pos == constBegin()) { + // There is no previous value (insert left most) + Node *z = d->createNode(akey, avalue, begin().i, true); + return iterator(z); + } else { + Node *prev = const_cast(pos.i->previousNode()); + if (!qMapLessThanKey(prev->key, akey)) + return this->insertMulti(akey, avalue); // ignore hint + + // Hint is ok - do insert + if (prev->right == 0) { + Node *z = d->createNode(akey, avalue, prev, false); + return iterator(z); + } + if (next->left == 0) { + Node *z = d->createNode(akey, avalue, next, true); + return iterator(z); + } + Q_ASSERT(false); // We should have prev->right == 0 or next->left == 0. + return this->insertMulti(akey, avalue); + } + } +} + + template Q_INLINE_TEMPLATE typename QMap::const_iterator QMap::constFind(const Key &akey) const { @@ -1051,6 +1103,8 @@ public: { return QMap::insert(key, value); } inline typename QMap::iterator insert(const Key &key, const T &value) { return QMap::insertMulti(key, value); } + inline typename QMap::iterator insert(typename QMap::const_iterator pos, const Key &key, const T &value) + { return QMap::insertMulti(pos, key, value); } inline QMultiMap &operator+=(const QMultiMap &other) { this->unite(other); return *this; } -- cgit v1.2.3 From b5bdd31de41cb5e6d6abedce79864fc01d8d4984 Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Wed, 12 Dec 2012 17:18:28 +0100 Subject: Implement XEmbed protocol Add a static QWindow::fromWinId(WId id) constructor which can be used to create a QWindow object representing windows created by other processes. Then, QWindow::setParent() can be used to embed a window into a foreign window socket and QWindow::setTransientParent() to stick the current window on top of a foreign window. The changes in the QtWidgets module ensure that the focus chain (TAB navigation) correctly works when a QtWidgets-based window is embedded into another application. As far as the platform implementation is concerned, this commit only implements the embedding functionality in the XCB plugin. So, this is roughly equivalent to the Qt4 QX11EmbedWidget functionality. Change-Id: Iff8f7b9ee974d33fb30f36056f7838b433a413c7 Reviewed-by: Gunnar Sletta --- src/corelib/global/qnamespace.h | 1 + src/corelib/global/qnamespace.qdoc | 4 + src/gui/kernel/qguiapplication.cpp | 2 +- src/gui/kernel/qplatformintegration.cpp | 4 + src/gui/kernel/qplatformintegration.h | 3 +- src/gui/kernel/qwindow.cpp | 37 +++- src/gui/kernel/qwindow.h | 2 + src/gui/kernel/qwindowsysteminterface.cpp | 5 +- src/gui/kernel/qwindowsysteminterface.h | 3 +- src/gui/kernel/qwindowsysteminterface_p.h | 5 +- src/plugins/platforms/xcb/qxcbconnection.cpp | 4 +- src/plugins/platforms/xcb/qxcbconnection.h | 2 +- src/plugins/platforms/xcb/qxcbintegration.cpp | 1 + src/plugins/platforms/xcb/qxcbwindow.cpp | 260 +++++++++++++++++++++++++- src/plugins/platforms/xcb/qxcbwindow.h | 9 + src/widgets/kernel/qapplication.cpp | 14 +- src/widgets/kernel/qapplication_p.h | 3 +- src/widgets/kernel/qwidget.cpp | 28 ++- src/widgets/kernel/qwidgetwindow.cpp | 40 ++++ src/widgets/kernel/qwidgetwindow_qpa_p.h | 7 + 20 files changed, 410 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index 41bca2a443..a33c50a041 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -284,6 +284,7 @@ public: SplashScreen = ToolTip | Dialog, Desktop = 0x00000010 | Window, SubWindow = 0x00000012, + ForeignWindow = 0x00000020 | Window, WindowType_Mask = 0x000000ff, MSWindowsFixedSizeDialogHint = 0x00000100, diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 8ec206a572..02d00c213b 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -1966,6 +1966,10 @@ \value SubWindow Indicates that this widget is a sub-window, such as a QMdiSubWindow widget. + \value ForeignWindow Indicates that this window object is a handle + representing a native platform window created by + another process or by manually using native code. + There are also a number of flags which you can use to customize the appearance of top-level windows. These have no effect on other windows: diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 7bfc9ccbec..32c52d2fe2 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1605,7 +1605,7 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate } if (QGuiApplicationPrivate::focus_window) { - QFocusEvent focusIn(QEvent::FocusIn); + QFocusEvent focusIn(QEvent::FocusIn, e->reason); QCoreApplication::sendSpontaneousEvent(QGuiApplicationPrivate::focus_window, &focusIn); QObject::connect(QGuiApplicationPrivate::focus_window, SIGNAL(focusObjectChanged(QObject*)), qApp, SLOT(_q_updateFocusObject(QObject*))); diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp index fbc7eeb76f..70de75072c 100644 --- a/src/gui/kernel/qplatformintegration.cpp +++ b/src/gui/kernel/qplatformintegration.cpp @@ -206,6 +206,10 @@ QPlatformServices *QPlatformIntegration::services() const state explicitly by using QWindowSystemInterface::handleApplicationStateChanged(). If not set, application state will follow window activation, which is the normal behavior for desktop platforms. + + \value ForeignWindows The platform allows creating QWindows which represent + native windows created by other processes or anyway created by using native + libraries. */ diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h index 55517cf600..ddee6f05c8 100644 --- a/src/gui/kernel/qplatformintegration.h +++ b/src/gui/kernel/qplatformintegration.h @@ -89,7 +89,8 @@ public: BufferQueueingOpenGL, WindowMasks, MultipleWindows, - ApplicationState + ApplicationState, + ForeignWindows }; virtual ~QPlatformIntegration() { } diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 99a54dc847..3d4383301e 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -474,6 +474,10 @@ void QWindow::create() WId QWindow::winId() const { Q_D(const QWindow); + + if (type() == Qt::ForeignWindow) + return WId(property("_q_foreignWinId").value()); + if(!d->platformWindow) const_cast(this)->create(); @@ -499,8 +503,11 @@ QWindow *QWindow::parent() const the clip of the window, so it will be clipped to the \a parent window. Setting \a parent to be 0 will make the window become a top level window. -*/ + If \a parent is a window created by fromWinId(), then the current window + will be embedded inside \a parent, if the platform supports it. Window + embedding is currently supported only by the X11 platform plugin. +*/ void QWindow::setParent(QWindow *parent) { Q_D(QWindow); @@ -2104,6 +2111,34 @@ void QWindowPrivate::maybeQuitOnLastWindowClosed() } +/*! + Creates a local representation of a window created by another process or by + using native libraries below Qt. + + Given the handle \a id to a native window, this method creates a QWindow + object which can be used to represent the window when invoking methods like + setParent() and setTransientParent(). + This can be used, on platforms which support it, to embed a window inside a + container or to make a window stick on top of a window created by another + process. + + \sa setParent() + \sa setTransientParent() +*/ +QWindow *QWindow::fromWinId(WId id) +{ + if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::ForeignWindows)) { + qWarning() << "QWindow::fromWinId(): platform plugin does not support foreign windows."; + return 0; + } + + QWindow *window = new QWindow; + window->setFlags(Qt::ForeignWindow); + window->setProperty("_q_foreignWinId", QVariant::fromValue(id)); + window->create(); + return window; +} + #ifndef QT_NO_CURSOR /*! \brief set the cursor shape for this window diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index 0842e9ceb6..ca3ffb0709 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -257,6 +257,8 @@ public: void unsetCursor(); #endif + static QWindow *fromWinId(WId id); + public Q_SLOTS: void setVisible(bool visible); diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 3609d5dce6..d2add91d66 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -112,9 +112,10 @@ void QWindowSystemInterface::handleEnterLeaveEvent(QWindow *enter, QWindow *leav } } -void QWindowSystemInterface::handleWindowActivated(QWindow *tlw) +void QWindowSystemInterface::handleWindowActivated(QWindow *tlw, Qt::FocusReason r) { - QWindowSystemInterfacePrivate::ActivatedWindowEvent *e = new QWindowSystemInterfacePrivate::ActivatedWindowEvent(tlw); + QWindowSystemInterfacePrivate::ActivatedWindowEvent *e = + new QWindowSystemInterfacePrivate::ActivatedWindowEvent(tlw, r); QWindowSystemInterfacePrivate::handleWindowSystemEvent(e); } diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h index 22e5983a07..212259c113 100644 --- a/src/gui/kernel/qwindowsysteminterface.h +++ b/src/gui/kernel/qwindowsysteminterface.h @@ -135,7 +135,8 @@ public: static void handleEnterEvent(QWindow *w, const QPointF &local = QPointF(), const QPointF& global = QPointF()); static void handleLeaveEvent(QWindow *w); static void handleEnterLeaveEvent(QWindow *enter, QWindow *leave, const QPointF &local = QPointF(), const QPointF& global = QPointF()); - static void handleWindowActivated(QWindow *w); + static void handleWindowActivated(QWindow *w, Qt::FocusReason r = Qt::OtherFocusReason); + static void handleWindowStateChanged(QWindow *w, Qt::WindowState newState); static void handleApplicationStateChanged(Qt::ApplicationState newState); diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h index eca559abfa..f1bc4667f7 100644 --- a/src/gui/kernel/qwindowsysteminterface_p.h +++ b/src/gui/kernel/qwindowsysteminterface_p.h @@ -139,10 +139,11 @@ public: class ActivatedWindowEvent : public WindowSystemEvent { public: - explicit ActivatedWindowEvent(QWindow *activatedWindow) - : WindowSystemEvent(ActivatedWindow), activated(activatedWindow) + explicit ActivatedWindowEvent(QWindow *activatedWindow, Qt::FocusReason r) + : WindowSystemEvent(ActivatedWindow), activated(activatedWindow), reason(r) { } QPointer activated; + Qt::FocusReason reason; }; class WindowStateChangedEvent : public WindowSystemEvent { diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index 2467eb6e7a..1504bd99d2 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -1066,7 +1066,7 @@ void QXcbConnection::processXcbEvents() while (it != m_peekFuncs.end()) { // These callbacks return true if the event is what they were // waiting for, remove them from the list in that case. - if ((*it)(event)) + if ((*it)(this, event)) it = m_peekFuncs.erase(it); else ++it; @@ -1086,7 +1086,7 @@ void QXcbConnection::processXcbEvents() // Indicate with a null event that the event the callbacks are waiting for // is not in the queue currently. Q_FOREACH (PeekFunc f, m_peekFuncs) - f(0); + f(this, 0); m_peekFuncs.clear(); xcb_flush(xcb_connection()); diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h index b499f75b78..f69a8a9f35 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.h +++ b/src/plugins/platforms/xcb/qxcbconnection.h @@ -364,7 +364,7 @@ public: template inline xcb_generic_event_t *checkEvent(T &checker); - typedef bool (*PeekFunc)(xcb_generic_event_t *); + typedef bool (*PeekFunc)(QXcbConnection *, xcb_generic_event_t *); void addPeekFunc(PeekFunc f); inline xcb_timestamp_t time() const { return m_time; } diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp index 0a02ea02af..f0cabea43d 100644 --- a/src/plugins/platforms/xcb/qxcbintegration.cpp +++ b/src/plugins/platforms/xcb/qxcbintegration.cpp @@ -228,6 +228,7 @@ bool QXcbIntegration::hasCapability(QPlatformIntegration::Capability cap) const case ThreadedOpenGL: return m_connections.at(0)->supportsThreadedRendering(); case WindowMasks: return true; case MultipleWindows: return true; + case ForeignWindows: return true; default: return QPlatformIntegration::hasCapability(cap); } } diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index abd2f7a147..27cd163c36 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -122,6 +122,36 @@ enum { QT_BEGIN_NAMESPACE +#undef FocusIn + +enum QX11EmbedFocusInDetail { + XEMBED_FOCUS_CURRENT = 0, + XEMBED_FOCUS_FIRST = 1, + XEMBED_FOCUS_LAST = 2 +}; + +enum QX11EmbedInfoFlags { + XEMBED_MAPPED = (1 << 0), +}; + +enum QX11EmbedMessageType { + XEMBED_EMBEDDED_NOTIFY = 0, + XEMBED_WINDOW_ACTIVATE = 1, + XEMBED_WINDOW_DEACTIVATE = 2, + XEMBED_REQUEST_FOCUS = 3, + XEMBED_FOCUS_IN = 4, + XEMBED_FOCUS_OUT = 5, + XEMBED_FOCUS_NEXT = 6, + XEMBED_FOCUS_PREV = 7, + XEMBED_MODALITY_ON = 10, + XEMBED_MODALITY_OFF = 11, + XEMBED_REGISTER_ACCELERATOR = 12, + XEMBED_UNREGISTER_ACCELERATOR = 13, + XEMBED_ACTIVATE_ACCELERATOR = 14 +}; + +static unsigned int XEMBED_VERSION = 0; + // Returns true if we should set WM_TRANSIENT_FOR on \a w static inline bool isTransient(const QWindow *w) { @@ -157,6 +187,7 @@ QXcbWindow::QXcbWindow(QWindow *window) , m_mapped(false) , m_transparent(false) , m_deferredActivation(false) + , m_embedded(false) , m_netWmUserTimeWindow(XCB_NONE) , m_dirtyFrameMargins(false) #if defined(XCB_USE_EGL) @@ -168,7 +199,10 @@ QXcbWindow::QXcbWindow(QWindow *window) setConnection(m_screen->connection()); - create(); + if (window->type() != Qt::ForeignWindow) + create(); + else + m_window = window->winId(); } void QXcbWindow::create() @@ -235,8 +269,10 @@ void QXcbWindow::create() } xcb_window_t xcb_parent_id = m_screen->root(); - if (parent()) + if (parent()) { xcb_parent_id = static_cast(parent())->xcb_window(); + m_embedded = parent()->window()->type() == Qt::ForeignWindow; + } m_format = window()->requestedFormat(); @@ -368,6 +404,14 @@ void QXcbWindow::create() atom(QXcbAtom::WM_CLIENT_LEADER), XCB_ATOM_WINDOW, 32, 1, &leader)); + /* Add XEMBED info; this operation doesn't initiate the embedding. */ + long data[] = { XEMBED_VERSION, XEMBED_MAPPED }; + Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window, + atom(QXcbAtom::_XEMBED_INFO), + atom(QXcbAtom::_XEMBED_INFO), + 32, 2, (void *)data)); + + #ifdef XCB_USE_XINPUT2_MAEMO if (connection()->isUsingXInput2Maemo()) { XIEventMask xieventmask; @@ -410,7 +454,8 @@ void QXcbWindow::create() QXcbWindow::~QXcbWindow() { - destroy(); + if (window()->type() != Qt::ForeignWindow) + destroy(); } void QXcbWindow::destroy() @@ -574,9 +619,10 @@ void QXcbWindow::show() propagateSizeHints(); // update WM_TRANSIENT_FOR - if (isTransient(window())) { + const QWindow *tp = window()->transientParent(); + if (isTransient(window()) || tp != 0) { xcb_window_t transientXcbParent = 0; - if (const QWindow *tp = window()->transientParent()) + if (tp) transientXcbParent = static_cast(tp->handle())->winId(); // Default to client leader if there is no transient parent, else modal dialogs can // be hidden by their parents. @@ -1140,7 +1186,15 @@ void QXcbWindow::setParent(const QPlatformWindow *parent) { QPoint topLeft = geometry().topLeft(); - xcb_window_t xcb_parent_id = parent ? static_cast(parent)->xcb_window() : m_screen->root(); + xcb_window_t xcb_parent_id; + if (parent) { + const QXcbWindow *qXcbParent = static_cast(parent); + xcb_parent_id = qXcbParent->xcb_window(); + m_embedded = qXcbParent->window()->type() == Qt::ForeignWindow; + } else { + xcb_parent_id = m_screen->root(); + m_embedded = false; + } Q_XCB_CALL(xcb_reparent_window(xcb_connection(), xcb_window(), xcb_parent_id, topLeft.x(), topLeft.y())); } @@ -1271,6 +1325,13 @@ void QXcbWindow::propagateSizeHints() void QXcbWindow::requestActivateWindow() { + /* Never activate embedded windows; doing that would prevent the container + * to re-gain the keyboard focus later. */ + if (m_embedded) { + QPlatformWindow::requestActivateWindow(); + return; + } + if (!m_mapped) { m_deferredActivation = true; return; @@ -1434,7 +1495,8 @@ void QXcbWindow::handleClientMessageEvent(const xcb_client_message_event_t *even } else if (event->type == atom(QXcbAtom::XdndDrop)) { connection()->drag()->handleDrop(window(), event); #endif - } else if (event->type == atom(QXcbAtom::_XEMBED)) { // QSystemTrayIcon + } else if (event->type == atom(QXcbAtom::_XEMBED)) { + handleXEmbedMessage(event); } else { qWarning() << "QXcbWindow: Unhandled client message:" << connection()->atomName(event->type); } @@ -1476,6 +1538,53 @@ bool QXcbWindow::isExposed() const return m_mapped; } +bool QXcbWindow::isEmbedded(const QPlatformWindow *parentWindow) const +{ + if (!m_embedded) + return false; + + return parentWindow ? (parentWindow == parent()) : true; +} + +QPoint QXcbWindow::mapToGlobal(const QPoint &pos) const +{ + if (!m_embedded) + return pos; + + QPoint ret; + xcb_translate_coordinates_cookie_t cookie = + xcb_translate_coordinates(xcb_connection(), xcb_window(), m_screen->root(), + pos.x(), pos.y()); + xcb_translate_coordinates_reply_t *reply = + xcb_translate_coordinates_reply(xcb_connection(), cookie, NULL); + if (reply) { + ret.setX(reply->dst_x); + ret.setY(reply->dst_y); + free(reply); + } + + return ret; +} + +QPoint QXcbWindow::mapFromGlobal(const QPoint &pos) const +{ + if (!m_embedded) + return pos; + QPoint ret; + xcb_translate_coordinates_cookie_t cookie = + xcb_translate_coordinates(xcb_connection(), m_screen->root(), xcb_window(), + pos.x(), pos.y()); + xcb_translate_coordinates_reply_t *reply = + xcb_translate_coordinates_reply(xcb_connection(), cookie, NULL); + if (reply) { + ret.setX(reply->dst_x); + ret.setY(reply->dst_y); + free(reply); + } + + return ret; +} + void QXcbWindow::handleMapNotifyEvent(const xcb_map_notify_event_t *event) { if (event->window == m_window) { @@ -1506,6 +1615,15 @@ void QXcbWindow::handleButtonPressEvent(const xcb_button_press_event_t *event) updateNetWmUserTime(event->time); + if (m_embedded) { + if (window() != QGuiApplication::focusWindow()) { + const QXcbWindow *container = static_cast(parent()); + Q_ASSERT(container != 0); + + sendXEmbedMessage(container->xcb_window(), XEMBED_REQUEST_FOCUS); + } + } + QPoint local(event->event_x, event->event_y); QPoint global(event->root_x, event->root_y); @@ -1661,6 +1779,25 @@ void QXcbWindow::handlePropertyNotifyEvent(const xcb_property_notify_event_t *ev QWindowSystemInterface::handleWindowStateChanged(window(), newState); m_lastWindowStateEvent = newState; } + return; + } + + const xcb_atom_t xEmbedInfoAtom = atom(QXcbAtom::_XEMBED_INFO); + if (event->atom == xEmbedInfoAtom) { + const xcb_get_property_cookie_t get_cookie = + xcb_get_property(xcb_connection(), 0, m_window, xEmbedInfoAtom, + XCB_ATOM_ANY, 0, 3); + + xcb_get_property_reply_t *reply = + xcb_get_property_reply(xcb_connection(), get_cookie, NULL); + if (reply && reply->length >= 2) { + const long *data = (const long *)xcb_get_property_value(reply); + if (data[1] & XEMBED_MAPPED) + Q_XCB_CALL(xcb_map_window(xcb_connection(), m_window)); + else + Q_XCB_CALL(xcb_unmap_window(xcb_connection(), m_window)); + } + free(reply); } } @@ -1672,7 +1809,7 @@ void QXcbWindow::handleFocusInEvent(const xcb_focus_in_event_t *) QWindowSystemInterface::handleWindowActivated(w); } -static bool focusInPeeker(xcb_generic_event_t *event) +static bool focusInPeeker(QXcbConnection *connection, xcb_generic_event_t *event) { if (!event) { // FocusIn event is not in the queue, proceed with FocusOut normally. @@ -1680,7 +1817,18 @@ static bool focusInPeeker(xcb_generic_event_t *event) return true; } uint response_type = event->response_type & ~0x80; - return response_type == XCB_FOCUS_IN; + if (response_type == XCB_FOCUS_IN) + return true; + + /* We are also interested in XEMBED_FOCUS_IN events */ + if (response_type == XCB_CLIENT_MESSAGE) { + xcb_client_message_event_t *cme = (xcb_client_message_event_t *)event; + if (cme->type == connection->atom(QXcbAtom::_XEMBED) + && cme->data.data32[1] == XEMBED_FOCUS_IN) + return true; + } + + return false; } void QXcbWindow::handleFocusOutEvent(const xcb_focus_out_event_t *) @@ -1744,6 +1892,35 @@ void QXcbWindow::setCursor(xcb_cursor_t cursor) xcb_flush(xcb_connection()); } +void QXcbWindow::windowEvent(QEvent *event) +{ + switch (event->type()) { + case QEvent::FocusIn: + if (m_embedded && !event->spontaneous()) { + QFocusEvent *focusEvent = static_cast(event); + switch (focusEvent->reason()) { + case Qt::TabFocusReason: + case Qt::BacktabFocusReason: + { + const QXcbWindow *container = + static_cast(parent()); + sendXEmbedMessage(container->xcb_window(), + focusEvent->reason() == Qt::TabFocusReason ? + XEMBED_FOCUS_NEXT : XEMBED_FOCUS_PREV); + event->accept(); + } + break; + default: + break; + } + } + break; + default: + break; + } + QPlatformWindow::windowEvent(event); +} + bool QXcbWindow::startSystemResize(const QPoint &pos, Qt::Corner corner) { const xcb_atom_t moveResize = connection()->atom(QXcbAtom::_NET_WM_MOVERESIZE); @@ -1772,6 +1949,71 @@ bool QXcbWindow::startSystemResize(const QPoint &pos, Qt::Corner corner) return true; } +// Sends an XEmbed message. +void QXcbWindow::sendXEmbedMessage(xcb_window_t window, long message, + long detail, long data1, long data2) +{ + xcb_client_message_event_t event; + + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = window; + event.type = atom(QXcbAtom::_XEMBED); + event.data.data32[0] = connection()->time(); + event.data.data32[1] = message; + event.data.data32[2] = detail; + event.data.data32[3] = data1; + event.data.data32[4] = data2; + Q_XCB_CALL(xcb_send_event(xcb_connection(), false, window, + XCB_EVENT_MASK_NO_EVENT, (const char *)&event)); +} + +static bool activeWindowChangeQueued(const QWindow *window) +{ + /* Check from window system event queue if the next queued activation + * targets a window other than @window. + */ + QWindowSystemInterfacePrivate::ActivatedWindowEvent *systemEvent = + static_cast + (QWindowSystemInterfacePrivate::peekWindowSystemEvent(QWindowSystemInterfacePrivate::ActivatedWindow)); + return systemEvent && systemEvent->activated != window; +} + +void QXcbWindow::handleXEmbedMessage(const xcb_client_message_event_t *event) +{ + connection()->setTime(event->data.data32[0]); + switch (event->data.data32[1]) { + case XEMBED_WINDOW_ACTIVATE: + case XEMBED_WINDOW_DEACTIVATE: + case XEMBED_EMBEDDED_NOTIFY: + break; + case XEMBED_FOCUS_IN: + Qt::FocusReason reason; + switch (event->data.data32[2]) { + case XEMBED_FOCUS_FIRST: + reason = Qt::TabFocusReason; + break; + case XEMBED_FOCUS_LAST: + reason = Qt::BacktabFocusReason; + break; + case XEMBED_FOCUS_CURRENT: + default: + reason = Qt::OtherFocusReason; + break; + } + connection()->setFocusWindow(static_cast(window()->handle())); + QWindowSystemInterface::handleWindowActivated(window(), reason); + break; + case XEMBED_FOCUS_OUT: + if (window() == QGuiApplication::focusWindow() + && !activeWindowChangeQueued(window())) { + connection()->setFocusWindow(0); + QWindowSystemInterface::handleWindowActivated(0); + } + break; + } +} + #if !defined(QT_NO_SHAPE) static inline xcb_rectangle_t qRectToXCBRectangle(const QRect &r) diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h index 3b5404684f..1810a58c7b 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.h +++ b/src/plugins/platforms/xcb/qxcbwindow.h @@ -87,6 +87,9 @@ public: void setParent(const QPlatformWindow *window); bool isExposed() const; + bool isEmbedded(const QPlatformWindow *parentWindow) const; + QPoint mapToGlobal(const QPoint &pos) const; + QPoint mapFromGlobal(const QPoint &pos) const; void setWindowTitle(const QString &title); void setWindowIcon(const QIcon &icon); @@ -107,6 +110,8 @@ public: QSurfaceFormat format() const; + void windowEvent(QEvent *event); + bool startSystemResize(const QPoint &pos, Qt::Corner corner); void setOpacity(qreal level); @@ -158,6 +163,9 @@ private: void updateDoesNotAcceptFocus(bool doesNotAcceptFocus); QRect windowToWmGeometry(QRect r) const; + void sendXEmbedMessage(xcb_window_t window, long message, + long detail = 0, long data1 = 0, long data2 = 0); + void handleXEmbedMessage(const xcb_client_message_event_t *event); void create(); void destroy(); @@ -184,6 +192,7 @@ private: bool m_deferredActivation; bool m_deferredExpose; bool m_configureNotifyPending; + bool m_embedded; xcb_window_t m_netWmUserTimeWindow; QSurfaceFormat m_format; diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index cff75f258e..1e493fe8c6 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -2010,7 +2010,8 @@ void QApplication::setActiveWindow(QWidget* act) * Returns 0 if a new focus widget could not be found. * Shared with QGraphicsProxyWidgetPrivate::findFocusChild() */ -QWidget *QApplicationPrivate::focusNextPrevChild_helper(QWidget *toplevel, bool next) +QWidget *QApplicationPrivate::focusNextPrevChild_helper(QWidget *toplevel, bool next, + bool *wrappingOccurred) { uint focus_flag = qt_tab_all_widgets() ? Qt::TabFocus : Qt::StrongFocus; @@ -2020,18 +2021,29 @@ QWidget *QApplicationPrivate::focusNextPrevChild_helper(QWidget *toplevel, bool QWidget *w = f; QWidget *test = f->d_func()->focus_next; + bool seenWindow = false; + bool focusWidgetAfterWindow = false; while (test && test != f) { + if (test->isWindow()) + seenWindow = true; + if ((test->focusPolicy() & focus_flag) == focus_flag && !(test->d_func()->extra && test->d_func()->extra->focus_proxy) && test->isVisibleTo(toplevel) && test->isEnabled() && !(w->windowType() == Qt::SubWindow && !w->isAncestorOf(test)) && (toplevel->windowType() != Qt::SubWindow || toplevel->isAncestorOf(test))) { w = test; + if (seenWindow) + focusWidgetAfterWindow = true; if (next) break; } test = test->d_func()->focus_next; } + + if (wrappingOccurred != 0) + *wrappingOccurred = next ? focusWidgetAfterWindow : !focusWidgetAfterWindow; + if (w == f) { if (qt_in_tab_key_event) { w->window()->setAttribute(Qt::WA_KeyboardFocusChange); diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h index fbd96366fb..85e26fdd49 100644 --- a/src/widgets/kernel/qapplication_p.h +++ b/src/widgets/kernel/qapplication_p.h @@ -165,7 +165,8 @@ public: void closePopup(QWidget *popup); void openPopup(QWidget *popup); static void setFocusWidget(QWidget *focus, Qt::FocusReason reason); - static QWidget *focusNextPrevChild_helper(QWidget *toplevel, bool next); + static QWidget *focusNextPrevChild_helper(QWidget *toplevel, bool next, + bool *wrappingOccurred = 0); #ifndef QT_NO_GRAPHICSVIEW // Maintain a list of all scenes to ensure font and palette propagation to diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index e5df25e972..7840cddd5d 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -6138,10 +6138,34 @@ bool QWidget::focusNextPrevChild(bool next) if (d->extra && d->extra->proxyWidget) return d->extra->proxyWidget->focusNextPrevChild(next); #endif - QWidget *w = QApplicationPrivate::focusNextPrevChild_helper(this, next); + + bool wrappingOccurred = false; + QWidget *w = QApplicationPrivate::focusNextPrevChild_helper(this, next, + &wrappingOccurred); if (!w) return false; - w->setFocus(next ? Qt::TabFocusReason : Qt::BacktabFocusReason); + Qt::FocusReason reason = next ? Qt::TabFocusReason : Qt::BacktabFocusReason; + + /* If we are about to wrap the focus chain, give the platform + * implementation a chance to alter the wrapping behavior. This is + * especially needed when the window is embedded in a window created by + * another process. + */ + if (wrappingOccurred) { + QWindow *window = windowHandle(); + if (window != 0) { + QWindowPrivate *winp = qt_window_private(window); + + if (winp->platformWindow != 0) { + QFocusEvent event(QEvent::FocusIn, reason); + event.ignore(); + winp->platformWindow->windowEvent(&event); + if (event.isAccepted()) return true; + } + } + } + + w->setFocus(reason); return true; } diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index c543303024..183787ccc3 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +Q_WIDGETS_EXPORT extern bool qt_tab_all_widgets(); + QWidget *qt_button_down = 0; // widget got last button-down static QWidget *qt_tablet_target = 0; @@ -123,6 +125,8 @@ bool QWidgetWindow::event(QEvent *event) // these should not be sent to QWidget, the corresponding events // are sent by QApplicationPrivate::notifyActiveWindowChange() case QEvent::FocusIn: + handleFocusInEvent(static_cast(event)); + // Fallthrough case QEvent::FocusOut: { #ifndef QT_NO_ACCESSIBILITY QAccessible::State state; @@ -284,6 +288,42 @@ void QWidgetWindow::handleEnterLeaveEvent(QEvent *event) } } +QWidget *QWidgetWindow::getFocusWidget(FocusWidgets fw) +{ + QWidget *tlw = m_widget; + QWidget *w = tlw->nextInFocusChain(); + + QWidget *last = tlw; + + uint focus_flag = qt_tab_all_widgets() ? Qt::TabFocus : Qt::StrongFocus; + + while (w != tlw) + { + if (((w->focusPolicy() & focus_flag) == focus_flag) + && w->isVisibleTo(m_widget) && w->isEnabled()) + { + last = w; + if (fw == FirstFocusWidget) + break; + } + w = w->nextInFocusChain(); + } + + return last; +} + +void QWidgetWindow::handleFocusInEvent(QFocusEvent *e) +{ + QWidget *focusWidget = 0; + if (e->reason() == Qt::BacktabFocusReason) + focusWidget = getFocusWidget(LastFocusWidget); + else if (e->reason() == Qt::TabFocusReason) + focusWidget = getFocusWidget(FirstFocusWidget); + + if (focusWidget != 0) + focusWidget->setFocus(); +} + void QWidgetWindow::handleNonClientAreaMouseEvent(QMouseEvent *e) { QApplication::sendSpontaneousEvent(m_widget, e); diff --git a/src/widgets/kernel/qwidgetwindow_qpa_p.h b/src/widgets/kernel/qwidgetwindow_qpa_p.h index 84c1b90826..77fdcbeb56 100644 --- a/src/widgets/kernel/qwidgetwindow_qpa_p.h +++ b/src/widgets/kernel/qwidgetwindow_qpa_p.h @@ -70,6 +70,7 @@ protected: void handleCloseEvent(QCloseEvent *); void handleEnterLeaveEvent(QEvent *); + void handleFocusInEvent(QFocusEvent *); void handleKeyEvent(QKeyEvent *); void handleMouseEvent(QMouseEvent *); void handleNonClientAreaMouseEvent(QMouseEvent *); @@ -100,6 +101,12 @@ private slots: private: void updateGeometry(); + enum FocusWidgets { + FirstFocusWidget, + LastFocusWidget + }; + QWidget *getFocusWidget(FocusWidgets fw); + QWidget *m_widget; QPointer m_implicit_mouse_grabber; #ifndef QT_NO_DRAGANDDROP -- cgit v1.2.3 From 6c55e553075816f6980cfa59d8e405650cebb3a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Wed, 6 Mar 2013 10:34:22 +0100 Subject: Compile. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit d28073d9 enables the Mac style on all "mac" platforms, including iOS where it does not compile. Disable the mac style on all platforms except "macx" (Mac OS X). Change-Id: I67685f745b1a0910b05794cddeaf27cdaa31cbfd Reviewed-by: Richard Moe Gustavsen Reviewed-by: Tor Arne Vestbø --- src/widgets/styles/styles.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/styles/styles.pri b/src/widgets/styles/styles.pri index a207cd2761..109621988e 100644 --- a/src/widgets/styles/styles.pri +++ b/src/widgets/styles/styles.pri @@ -40,7 +40,7 @@ contains( styles, all ) { styles = fusion mac windows windowsxp windowsvista } -!mac:styles -= mac +!macx:styles -= mac contains(QT_CONFIG, gtkstyle) { QMAKE_CXXFLAGS += $$QT_CFLAGS_QGTKSTYLE -- cgit v1.2.3 From 5f948eb62ddb9f429f46ade08f32072212cda493 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Tue, 5 Mar 2013 16:52:08 +0100 Subject: qtbase: Fix duplicate symbol errors in static build on Mac MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is some code duplication between QMacStyle anf the Cocoa QPA plugin regarding painting and bridging with Cocoa. Task-number: QTBUG-29725 Change-Id: I347407a9bca47b6fccd77fb924688bd35135d96b Reviewed-by: Friedemann Kleint Reviewed-by: Oswald Buddenhagen Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoahelpers.mm | 7 ++-- src/plugins/platforms/cocoa/qpaintengine_mac.mm | 2 +- src/widgets/styles/qmacstyle_mac.mm | 54 ++++++++++++++----------- 3 files changed, 34 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm index 29a8c49511..3f00893465 100644 --- a/src/plugins/platforms/cocoa/qcocoahelpers.mm +++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm @@ -466,10 +466,9 @@ QString qt_mac_removeMnemonics(const QString &original) return returnText; } - -CGColorSpaceRef m_genericColorSpace = 0; -QHash m_displayColorSpaceHash; -bool m_postRoutineRegistered = false; +static CGColorSpaceRef m_genericColorSpace = 0; +static QHash m_displayColorSpaceHash; +static bool m_postRoutineRegistered = false; CGColorSpaceRef qt_mac_genericColorSpace() { diff --git a/src/plugins/platforms/cocoa/qpaintengine_mac.mm b/src/plugins/platforms/cocoa/qpaintengine_mac.mm index 56ab732a32..301beb11c1 100644 --- a/src/plugins/platforms/cocoa/qpaintengine_mac.mm +++ b/src/plugins/platforms/cocoa/qpaintengine_mac.mm @@ -76,7 +76,7 @@ QT_BEGIN_NAMESPACE QCoreGraphicsPaintEngine utility functions *****************************************************************************/ -void qt_mac_clip_cg(CGContextRef hd, const QRegion &rgn, CGAffineTransform *orig_xform) +static void qt_mac_clip_cg(CGContextRef hd, const QRegion &rgn, CGAffineTransform *orig_xform) { CGAffineTransform old_xform = CGAffineTransformIdentity; if (orig_xform) { //setup xforms diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index de7bac93a0..a34b08bac4 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -458,6 +458,9 @@ static QString qt_mac_removeMnemonics(const QString &original) return returnText; } +static CGContextRef qt_mac_cg_context(const QPaintDevice *pdev); + +namespace { class QMacCGContext { CGContextRef context; @@ -465,7 +468,6 @@ public: QMacCGContext(QPainter *p); inline QMacCGContext() { context = 0; } inline QMacCGContext(const QPaintDevice *pdev) { - extern CGContextRef qt_mac_cg_context(const QPaintDevice *); context = qt_mac_cg_context(pdev); } inline QMacCGContext(CGContextRef cg, bool takeOwnership=false) { @@ -495,6 +497,7 @@ public: return *this; } }; +} // anonymous namespace static QColor qcolorFromCGColor(CGColorRef cgcolor) { @@ -578,11 +581,11 @@ QRegion qt_mac_fromHIShapeRef(HIShapeRef shape) } CGColorSpaceRef m_genericColorSpace = 0; -QHash m_displayColorSpaceHash; +static QHash m_displayColorSpaceHash; bool m_postRoutineRegistered = false; -CGColorSpaceRef qt_mac_displayColorSpace(const QWidget *widget); -CGColorSpaceRef qt_mac_genericColorSpace() +static CGColorSpaceRef qt_mac_displayColorSpace(const QWidget *widget); +static CGColorSpaceRef qt_mac_genericColorSpace() { #if 0 if (!m_genericColorSpace) { @@ -604,11 +607,26 @@ CGColorSpaceRef qt_mac_genericColorSpace() #endif } +static void qt_mac_cleanUpMacColorSpaces() +{ + if (m_genericColorSpace) { + CFRelease(m_genericColorSpace); + m_genericColorSpace = 0; + } + QHash::const_iterator it = m_displayColorSpaceHash.constBegin(); + while (it != m_displayColorSpaceHash.constEnd()) { + if (it.value()) + CFRelease(it.value()); + ++it; + } + m_displayColorSpaceHash.clear(); +} + /* Ideally, we should pass the widget in here, and use CGGetDisplaysWithRect() etc. to support multiple displays correctly. */ -CGColorSpaceRef qt_mac_displayColorSpace(const QWidget *widget) +static CGColorSpaceRef qt_mac_displayColorSpace(const QWidget *widget) { CGColorSpaceRef colorSpace; @@ -637,27 +655,11 @@ CGColorSpaceRef qt_mac_displayColorSpace(const QWidget *widget) m_displayColorSpaceHash.insert(displayID, colorSpace); if (!m_postRoutineRegistered) { m_postRoutineRegistered = true; - void qt_mac_cleanUpMacColorSpaces(); qAddPostRoutine(qt_mac_cleanUpMacColorSpaces); } return colorSpace; } -void qt_mac_cleanUpMacColorSpaces() -{ - if (m_genericColorSpace) { - CFRelease(m_genericColorSpace); - m_genericColorSpace = 0; - } - QHash::const_iterator it = m_displayColorSpaceHash.constBegin(); - while (it != m_displayColorSpaceHash.constEnd()) { - if (it.value()) - CFRelease(it.value()); - ++it; - } - m_displayColorSpaceHash.clear(); -} - bool qt_macWindowIsTextured(const QWidget *window) { NSWindow *nswindow = static_cast( @@ -6488,7 +6490,7 @@ int QMacStyle::layoutSpacing(QSizePolicy::ControlType control1, return_SIZE(10, 8, 6); // guess } -void qt_mac_clip_cg(CGContextRef hd, const QRegion &rgn, CGAffineTransform *orig_xform) +static void qt_mac_clip_cg(CGContextRef hd, const QRegion &rgn, CGAffineTransform *orig_xform) { CGAffineTransform old_xform = CGAffineTransformIdentity; if (orig_xform) { //setup xforms @@ -6529,6 +6531,9 @@ void qt_mac_scale_region(QRegion *region, qreal scaleFactor) region->setRects(&scaledRects[0], scaledRects.count()); } +static CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *paintDevice); + +namespace { QMacCGContext::QMacCGContext(QPainter *p) { QPaintEngine *pe = p->paintEngine(); @@ -6541,7 +6546,6 @@ QMacCGContext::QMacCGContext(QPainter *p) devType == QInternal::Pixmap || devType == QInternal::Image)) { - extern CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *paintDevice); CGColorSpaceRef colorspace = qt_mac_colorSpaceForDeviceType(pe->paintDevice()); uint flags = kCGImageAlphaPremultipliedFirst; flags |= kCGBitmapByteOrder32Host; @@ -6583,7 +6587,9 @@ QMacCGContext::QMacCGContext(QPainter *p) } } -CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *paintDevice) +} // anonymous namespace + +static CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *paintDevice) { bool isWidget = (paintDevice->devType() == QInternal::Widget); return qt_mac_displayColorSpace(isWidget ? static_cast(paintDevice) : 0); -- cgit v1.2.3 From aa2d10750ad8cdb6a86d519063664c2924b2a635 Mon Sep 17 00:00:00 2001 From: Jan Arve Saether Date: Tue, 5 Mar 2013 11:47:05 +0100 Subject: Fixed QTreeWidgetIterator to work with sorted QTreeWidget We cannot access children directly, since that won't ensure that the pending sort is executed. However, the functions we need are there already and actually makes the code nicer. Task-number: QTBUG-29903 Change-Id: I6899284275dd79b991896a5f08486b58d95f819d Reviewed-by: Gabriel de Dietrich --- src/widgets/itemviews/qtreewidgetitemiterator.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/widgets/itemviews/qtreewidgetitemiterator.cpp b/src/widgets/itemviews/qtreewidgetitemiterator.cpp index e8854d8197..6aa8f4b91e 100644 --- a/src/widgets/itemviews/qtreewidgetitemiterator.cpp +++ b/src/widgets/itemviews/qtreewidgetitemiterator.cpp @@ -101,7 +101,7 @@ QTreeWidgetItemIterator::QTreeWidgetItemIterator(QTreeWidget *widget, IteratorFl Q_ASSERT(model); d_ptr.reset(new QTreeWidgetItemIteratorPrivate(this, model)); model->iterators.append(this); - if (!model->rootItem->children.isEmpty()) current = model->rootItem->children.first(); + if (!model->rootItem->children.isEmpty()) current = model->rootItem->child(0); if (current && !matchesFlags(current)) ++(*this); } @@ -130,14 +130,13 @@ QTreeWidgetItemIterator::QTreeWidgetItemIterator(QTreeWidgetItem *item, Iterator // the beginning. QTreeWidgetItem *parent = item; parent = parent->parent(); - QList children = parent ? parent->children : d->m_model->rootItem->children; - d->m_currentIndex = children.indexOf(item); + QTreeWidgetItem *root = d->m_model->rootItem; + d->m_currentIndex = (parent ? parent : root)->indexOfChild(item); while (parent) { QTreeWidgetItem *itm = parent; parent = parent->parent(); - QList children = parent ? parent->children : d->m_model->rootItem->children; - int index = children.indexOf(itm); + const int index = (parent ? parent : root)->indexOfChild(itm); d->m_parentIndex.prepend(index); } -- cgit v1.2.3 From 507ee19e077da272c4e3562ad752f7fb1ee025bf Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 4 Mar 2013 20:51:04 +0100 Subject: moc: Remove VC6 workaround Change-Id: I9022eee72235309303ca384f2d52fc24256af6ec Reviewed-by: Simon Hausmann --- src/tools/moc/generator.cpp | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'src') diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 4957f7de67..e6ffbe157a 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -523,11 +523,6 @@ void Generator::generateCode() } if (!purestSuperClass.isEmpty() && !isQObject) { QByteArray superClass = purestSuperClass; - // workaround for VC6 - if (superClass.contains("::")) { - fprintf(out, " typedef %s QMocSuperClass;\n", superClass.constData()); - superClass = "QMocSuperClass"; - } fprintf(out, " return %s::qt_metacast(_clname);\n", superClass.constData()); } else { fprintf(out, " return 0;\n"); @@ -849,11 +844,6 @@ void Generator::generateMetacall() if (!purestSuperClass.isEmpty() && !isQObject) { QByteArray superClass = purestSuperClass; - // workaround for VC6 - if (superClass.contains("::")) { - fprintf(out, " typedef %s QMocSuperClass;\n", superClass.constData()); - superClass = "QMocSuperClass"; - } fprintf(out, " _id = %s::qt_metacall(_c, _id, _a);\n", superClass.constData()); } -- cgit v1.2.3 From bbbe9dcb724e8d6101d205b14100dead36f611a2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 6 Mar 2013 11:16:22 +0100 Subject: Fix export of QAndroidStyle. Change-Id: I779323403f6721ca904c517b7ffd78aff29d0a96 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/widgets/styles/qandroidstyle_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/styles/qandroidstyle_p.h b/src/widgets/styles/qandroidstyle_p.h index 35fa61983a..2d9abd65c5 100644 --- a/src/widgets/styles/qandroidstyle_p.h +++ b/src/widgets/styles/qandroidstyle_p.h @@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE #if !defined(QT_NO_STYLE_ANDROID) -class Q_GUI_EXPORT QAndroidStyle : public QCommonStyle +class Q_WIDGETS_EXPORT QAndroidStyle : public QCommonStyle { Q_OBJECT -- cgit v1.2.3 From 69e2739c9a514aa27748f625c2d9218028adda98 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 6 Mar 2013 11:16:45 +0100 Subject: QAndroidStyle: Fix warnings and compilation on Windows. Change-Id: I0ce4545bdc40a5e1a8297a225c2a656076df4580 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/widgets/styles/qandroidstyle.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qandroidstyle.cpp b/src/widgets/styles/qandroidstyle.cpp index a3c1063b41..d82a06987a 100644 --- a/src/widgets/styles/qandroidstyle.cpp +++ b/src/widgets/styles/qandroidstyle.cpp @@ -792,8 +792,8 @@ void QAndroidStyle::Android9PatchDrawable::draw(QPainter * painter, const QStyle QRectF dst; QRectF src; - const int32_t x0 = m_chunkData.xDivs[0]; - const int32_t y0 = m_chunkData.yDivs[0]; + const qint32 x0 = m_chunkData.xDivs[0]; + const qint32 y0 = m_chunkData.yDivs[0]; const quint8 numXDivs = m_chunkData.xDivs.size(); const quint8 numYDivs = m_chunkData.yDivs.size(); int i; @@ -1272,15 +1272,15 @@ QAndroidStyle::AndroidControl::~AndroidControl() delete m_background; } -void QAndroidStyle::AndroidControl::drawControl(const QStyleOption *opt, QPainter *p, const QWidget */*w*/) +void QAndroidStyle::AndroidControl::drawControl(const QStyleOption *opt, QPainter *p, const QWidget * /* w */) { if (m_background) m_background->draw(p, opt); } -QRect QAndroidStyle::AndroidControl::subElementRect(QStyle::SubElement /*subElement*/, +QRect QAndroidStyle::AndroidControl::subElementRect(QStyle::SubElement /* subElement */, const QStyleOption *option, - const QWidget */*widget*/) const + const QWidget * /* widget */) const { if (const AndroidDrawable *drawable=m_background) { if (drawable->type() == State) @@ -1312,7 +1312,7 @@ QRect QAndroidStyle::AndroidControl::subControlRect(const QStyleOptionComplex *o QSize QAndroidStyle::AndroidControl::sizeFromContents(const QStyleOption *opt, const QSize &contentsSize, - const QWidget */*w*/) const + const QWidget * /* w */) const { QSize sz; if (const AndroidDrawable *drawable=m_background) { @@ -1418,7 +1418,7 @@ QAndroidStyle::AndroidProgressBarControl::~AndroidProgressBarControl() delete m_indeterminateDrawable; } -void QAndroidStyle::AndroidProgressBarControl::drawControl(const QStyleOption *option, QPainter *p, const QWidget */*w*/) +void QAndroidStyle::AndroidProgressBarControl::drawControl(const QStyleOption *option, QPainter *p, const QWidget * /* w */) { if (!m_progressDrawable) return; @@ -1476,7 +1476,7 @@ QRect QAndroidStyle::AndroidProgressBarControl::subElementRect(QStyle::SubElemen QSize QAndroidStyle::AndroidProgressBarControl::sizeFromContents(const QStyleOption *opt, const QSize &contentsSize, - const QWidget */*w*/) const + const QWidget * /* w */) const { QSize sz(contentsSize); if (sz.height() < m_minSize.height()) @@ -1516,7 +1516,7 @@ QAndroidStyle::AndroidSeekBarControl::~AndroidSeekBarControl() void QAndroidStyle::AndroidSeekBarControl::drawControl(const QStyleOption *option, QPainter *p, - const QWidget */*w*/) + const QWidget * /* w */) { if (!m_seekBarThumb || !m_progressDrawable) return; @@ -1562,7 +1562,7 @@ QSize QAndroidStyle::AndroidSeekBarControl::sizeFromContents(const QStyleOption QRect QAndroidStyle::AndroidSeekBarControl::subControlRect(const QStyleOptionComplex *option, SubControl sc, - const QWidget */*widget*/) const + const QWidget * /* widget */) const { const QStyleOptionSlider *styleOption = qstyleoption_cast(option); -- cgit v1.2.3 From 3c329b09fab98087efa6f23905257cba5f665bcd Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 5 Mar 2013 16:26:03 +0100 Subject: Aero-Style-QWizard: Set custom margins only for Areo-Style. Task-number: QTBUG-29904 Change-Id: Ifaf4d5e692f97436535feb1af44dc29d3512c5ea Reviewed-by: Oliver Wolff --- src/widgets/dialogs/qwizard.cpp | 10 ++++------ src/widgets/dialogs/qwizard_win.cpp | 4 ++-- src/widgets/dialogs/qwizard_win_p.h | 2 +- 3 files changed, 7 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index aab6494d98..f7669ba1cc 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -1525,6 +1525,8 @@ void QWizardPrivate::handleAeroStyleChange() vistaHelper->disconnectBackButton(); q->removeEventFilter(vistaHelper); + bool vistaMargins = false; + if (isVistaThemeEnabled()) { if (isVistaThemeEnabled(QVistaHelper::VistaAero)) { vistaHelper->setDWMTitleBar(QVistaHelper::ExtendedTitleBar); @@ -1534,6 +1536,7 @@ void QWizardPrivate::handleAeroStyleChange() vistaHelper->backButton()->move( 0, vistaHelper->topOffset() // ### should ideally work without the '+ 1' - qMin(vistaHelper->topOffset(), vistaHelper->topPadding() + 1)); + vistaMargins = true; } else { vistaHelper->setDWMTitleBar(QVistaHelper::NormalTitleBar); q->setMouseTracking(true); @@ -1556,8 +1559,7 @@ void QWizardPrivate::handleAeroStyleChange() _q_updateButtonStates(); - if (q->isVisible()) - vistaHelper->updateCustomMargins(); + vistaHelper->updateCustomMargins(vistaMargins); inHandleAeroStyleChange = false; } @@ -2922,10 +2924,6 @@ QWidget *QWizard::sideWidget() const void QWizard::setVisible(bool visible) { Q_D(QWizard); -#if !defined(QT_NO_STYLE_WINDOWSVISTA) - if (visible) - d->vistaHelper->updateCustomMargins(); -#endif if (visible) { if (d->current == -1) restart(); diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp index ec04fed702..42bdb8369f 100644 --- a/src/widgets/dialogs/qwizard_win.cpp +++ b/src/widgets/dialogs/qwizard_win.cpp @@ -269,13 +269,13 @@ QVistaHelper::~QVistaHelper() --instanceCount; } -void QVistaHelper::updateCustomMargins() +void QVistaHelper::updateCustomMargins(bool vistaMargins) { if (QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS8) return; // Negative margins are not supported on Windows 8. if (QWindow *window = wizard->windowHandle()) { // Reduce top frame to zero since we paint it ourselves. - const QMargins customMargins = vistaState() == VistaAero ? + const QMargins customMargins = vistaMargins ? QMargins(0, -titleBarSize(), 0, 0) : QMargins(); const QVariant customMarginsV = qVariantFromValue(customMargins); // The dynamic property takes effect when creating the platform window. diff --git a/src/widgets/dialogs/qwizard_win_p.h b/src/widgets/dialogs/qwizard_win_p.h index 8b370d4e74..a568ef1eff 100644 --- a/src/widgets/dialogs/qwizard_win_p.h +++ b/src/widgets/dialogs/qwizard_win_p.h @@ -87,7 +87,7 @@ public: QVistaHelper(QWizard *wizard); ~QVistaHelper(); enum TitleBarChangeType { NormalTitleBar, ExtendedTitleBar }; - void updateCustomMargins(); + void updateCustomMargins(bool vistaMargins); bool setDWMTitleBar(TitleBarChangeType type); void setTitleBarIconAndCaptionVisible(bool visible); void mouseEvent(QEvent *event); -- cgit v1.2.3 From 872a84c2e66d151074caa602b0cab25358043621 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 5 Mar 2013 16:31:35 +0100 Subject: Aero-Style-QWizard: Do not use parent window handle. If no window exists at the time QWizard::setWizardStyle() is set, further delay initialization of the Aero style until show(). If the wizard is a child window, just adapt the geometry. Task-number: QTBUG-29904 Change-Id: I3805331ae726a0aa2020815d5bff571ca407efbc Reviewed-by: Joerg Bornemann Reviewed-by: Oliver Wolff --- src/widgets/dialogs/qwizard.cpp | 35 +++++++++++++++++++++++++---------- src/widgets/dialogs/qwizard_win.cpp | 33 ++++++++++++++++++++++----------- src/widgets/dialogs/qwizard_win_p.h | 1 + 3 files changed, 48 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index f7669ba1cc..641c81b4cf 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -54,6 +54,7 @@ #include "qlabel.h" #include "qlineedit.h" #include "qpainter.h" +#include "qwindow.h" #include "qpushbutton.h" #include "qset.h" #include "qstyle.h" @@ -592,7 +593,7 @@ public: #if !defined(QT_NO_STYLE_WINDOWSVISTA) bool vistaDisabled() const; bool isVistaThemeEnabled(QVistaHelper::VistaState state) const; - void handleAeroStyleChange(); + bool handleAeroStyleChange(); #endif bool isVistaThemeEnabled() const; void disableUpdates(); @@ -1514,12 +1515,19 @@ bool QWizardPrivate::isVistaThemeEnabled(QVistaHelper::VistaState state) const && !vistaDisabled(); } -void QWizardPrivate::handleAeroStyleChange() +bool QWizardPrivate::handleAeroStyleChange() { Q_Q(QWizard); if (inHandleAeroStyleChange) - return; // prevent recursion + return false; // prevent recursion + // For top-level wizards, we need the platform window handle for the + // DWM changes. Delay aero initialization to the show event handling if + // it does not exist. If we are a child, skip DWM and just make room by + // moving the antiFlickerWidget. + const bool isWindow = q->isWindow(); + if (isWindow && (!q->windowHandle() || !q->windowHandle()->handle())) + return false; inHandleAeroStyleChange = true; vistaHelper->disconnectBackButton(); @@ -1529,8 +1537,10 @@ void QWizardPrivate::handleAeroStyleChange() if (isVistaThemeEnabled()) { if (isVistaThemeEnabled(QVistaHelper::VistaAero)) { - vistaHelper->setDWMTitleBar(QVistaHelper::ExtendedTitleBar); - q->installEventFilter(vistaHelper); + if (isWindow) { + vistaHelper->setDWMTitleBar(QVistaHelper::ExtendedTitleBar); + q->installEventFilter(vistaHelper); + } q->setMouseTracking(true); antiFlickerWidget->move(0, vistaHelper->titleBarSize() + vistaHelper->topOffset()); vistaHelper->backButton()->move( @@ -1538,12 +1548,14 @@ void QWizardPrivate::handleAeroStyleChange() - qMin(vistaHelper->topOffset(), vistaHelper->topPadding() + 1)); vistaMargins = true; } else { - vistaHelper->setDWMTitleBar(QVistaHelper::NormalTitleBar); + if (isWindow) + vistaHelper->setDWMTitleBar(QVistaHelper::NormalTitleBar); q->setMouseTracking(true); antiFlickerWidget->move(0, vistaHelper->topOffset()); vistaHelper->backButton()->move(0, -1); // ### should ideally work with (0, 0) } - vistaHelper->setTitleBarIconAndCaptionVisible(false); + if (isWindow) + vistaHelper->setTitleBarIconAndCaptionVisible(false); QObject::connect( vistaHelper->backButton(), SIGNAL(clicked()), q, buttonSlots[QWizard::BackButton]); vistaHelper->backButton()->show(); @@ -1554,7 +1566,8 @@ void QWizardPrivate::handleAeroStyleChange() #endif antiFlickerWidget->move(0, 0); vistaHelper->hideBackButton(); - vistaHelper->setTitleBarIconAndCaptionVisible(true); + if (isWindow) + vistaHelper->setTitleBarIconAndCaptionVisible(true); } _q_updateButtonStates(); @@ -1562,6 +1575,7 @@ void QWizardPrivate::handleAeroStyleChange() vistaHelper->updateCustomMargins(vistaMargins); inHandleAeroStyleChange = false; + return true; } #endif @@ -2509,8 +2523,9 @@ void QWizard::setWizardStyle(WizardStyle style) updateGeometry(); d->enableUpdates(); #if !defined(QT_NO_STYLE_WINDOWSVISTA) - if (aeroStyleChange) - d->handleAeroStyleChange(); + // Delay initialization when activating Aero style fails due to missing native window. + if (aeroStyleChange && !d->handleAeroStyleChange() && d->wizStyle == AeroStyle) + d->vistaInitPending = true; #endif } } diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp index 42bdb8369f..2586ced60f 100644 --- a/src/widgets/dialogs/qwizard_win.cpp +++ b/src/widgets/dialogs/qwizard_win.cpp @@ -50,6 +50,7 @@ #include "qpaintengine.h" #include "qapplication.h" #include +#include #include #include #include @@ -345,9 +346,9 @@ bool QVistaHelper::setDWMTitleBar(TitleBarChangeType type) mar.cyTopHeight = 0; else mar.cyTopHeight = titleBarSize() + topOffset(); - HWND wizardHandle = QApplicationPrivate::getHWNDForWidget(wizard); - HRESULT hr = pDwmExtendFrameIntoClientArea(wizardHandle, &mar); - value = SUCCEEDED(hr); + if (const HWND wizardHandle = wizardHWND()) + if (SUCCEEDED(pDwmExtendFrameIntoClientArea(wizardHandle, &mar))) + value = true; } return value; } @@ -405,8 +406,8 @@ void QVistaHelper::setTitleBarIconAndCaptionVisible(bool visible) opt.dwMask = 0; else opt.dwMask = WIZ_WTNCA_NODRAWICON | WIZ_WTNCA_NODRAWCAPTION; - HWND handle = QApplicationPrivate::getHWNDForWidget(wizard); - pSetWindowThemeAttribute(handle, WIZ_WTA_NONCLIENT, &opt, sizeof(WIZ_WTA_OPTIONS)); + if (const HWND handle = wizardHWND()) + pSetWindowThemeAttribute(handle, WIZ_WTA_NONCLIENT, &opt, sizeof(WIZ_WTA_OPTIONS)); } } @@ -585,8 +586,7 @@ bool QVistaHelper::eventFilter(QObject *obj, QEvent *event) msg.message = WM_NCHITTEST; msg.wParam = 0; msg.lParam = MAKELPARAM(mouseEvent->globalX(), mouseEvent->globalY()); - HWND handle = QApplicationPrivate::getHWNDForWidget(wizard); - msg.hwnd = handle; + msg.hwnd = wizardHWND(); winEvent(&msg, &result); msg.wParam = result; msg.message = WM_NCMOUSEMOVE; @@ -600,8 +600,7 @@ bool QVistaHelper::eventFilter(QObject *obj, QEvent *event) msg.message = WM_NCHITTEST; msg.wParam = 0; msg.lParam = MAKELPARAM(mouseEvent->globalX(), mouseEvent->globalY()); - HWND handle = QApplicationPrivate::getHWNDForWidget(wizard); - msg.hwnd = handle; + msg.hwnd = wizardHWND(); winEvent(&msg, &result); msg.wParam = result; msg.message = WM_NCLBUTTONDOWN; @@ -616,8 +615,7 @@ bool QVistaHelper::eventFilter(QObject *obj, QEvent *event) msg.message = WM_NCHITTEST; msg.wParam = 0; msg.lParam = MAKELPARAM(mouseEvent->globalX(), mouseEvent->globalY()); - HWND handle = QApplicationPrivate::getHWNDForWidget(wizard); - msg.hwnd = handle; + msg.hwnd = wizardHWND(); winEvent(&msg, &result); msg.wParam = result; msg.message = WM_NCLBUTTONUP; @@ -644,6 +642,19 @@ HFONT QVistaHelper::getCaptionFont(HANDLE hTheme) return CreateFontIndirect(&lf); } +HWND QVistaHelper::wizardHWND() const +{ + // Obtain the HWND if the wizard is a top-level window. + // Do not use winId() as this enforces native children of the parent + // widget when called before show() as happens when calling setWizardStyle(). + if (QWindow *window = wizard->windowHandle()) + if (window->handle()) + if (void *vHwnd = QGuiApplication::platformNativeInterface()->nativeResourceForWindow(QByteArrayLiteral("handle"), window)) + return static_cast(vHwnd); + qWarning().nospace() << "Failed to obtain HWND for wizard."; + return 0; +} + bool QVistaHelper::drawTitleText(QPainter *painter, const QString &text, const QRect &rect, HDC hdc) { bool value = false; diff --git a/src/widgets/dialogs/qwizard_win_p.h b/src/widgets/dialogs/qwizard_win_p.h index a568ef1eff..80d437bc23 100644 --- a/src/widgets/dialogs/qwizard_win_p.h +++ b/src/widgets/dialogs/qwizard_win_p.h @@ -109,6 +109,7 @@ public: private: static HFONT getCaptionFont(HANDLE hTheme); + HWND wizardHWND() const; bool drawTitleText(QPainter *painter, const QString &text, const QRect &rect, HDC hdc); static bool drawBlackRect(const QRect &rect, HDC hdc); -- cgit v1.2.3 From 3fa77de5c97ed120ee519240481f57cc308d077b Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 1 Mar 2013 17:08:03 +0100 Subject: Aero-Style-QWizard: Fix drawing when used as a child widget. Introduce function to retrieve HDC with transformation. Paint Vista-style items at correct location when used as a child widget (for example, in Qt Designer). Disable special drawing that works only for top-levels. Task-number: QTBUG-29904 Change-Id: Ic902fd30e8050317b24ab7f7e2757ef1e16407f9 Reviewed-by: Joerg Bornemann Reviewed-by: Oliver Wolff --- src/widgets/dialogs/qwizard_win.cpp | 44 ++++++++++++++++++++++++++----------- src/widgets/dialogs/qwizard_win_p.h | 2 ++ 2 files changed, 33 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp index 2586ced60f..30ee0e32a9 100644 --- a/src/widgets/dialogs/qwizard_win.cpp +++ b/src/widgets/dialogs/qwizard_win.cpp @@ -221,9 +221,11 @@ void QVistaBackButton::paintEvent(QPaintEvent *) QRect r = rect(); HANDLE theme = pOpenThemeData(0, L"Navigation"); //RECT rect; + QPoint origin; + const HDC hdc = QVistaHelper::backingStoreDC(parentWidget(), &origin); RECT clipRect; - int xoffset = QWidget::mapToParent(r.topLeft()).x() - 1; - int yoffset = QWidget::mapToParent(r.topLeft()).y() - 1; + int xoffset = origin.x() + QWidget::mapToParent(r.topLeft()).x() - 1; + int yoffset = origin.y() + QWidget::mapToParent(r.topLeft()).y() - 1; clipRect.top = r.top() + yoffset; clipRect.bottom = r.bottom() + yoffset; @@ -238,8 +240,6 @@ void QVistaBackButton::paintEvent(QPaintEvent *) else if (underMouse()) state = WIZ_NAV_BB_HOT; - QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface(); - HDC hdc = static_cast(nativeInterface->nativeResourceForBackingStore("getDC", backingStore())); pDrawThemeBackground(theme, hdc, WIZ_NAV_BACKBUTTON, state, &clipRect, &clipRect); } @@ -358,11 +358,11 @@ Q_GUI_EXPORT HICON qt_pixmapToWinHICON(const QPixmap &); void QVistaHelper::drawTitleBar(QPainter *painter) { Q_ASSERT(backButton_); - QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface(); - QBackingStore *backingStore = backButton_->backingStore(); - HDC hdc = static_cast(nativeInterface->nativeResourceForBackingStore("getDC", backingStore)); + QPoint origin; + const bool isWindow = wizard->isWindow(); + const HDC hdc = QVistaHelper::backingStoreDC(wizard, &origin); - if (vistaState() == VistaAero) + if (vistaState() == VistaAero && isWindow) drawBlackRect(QRect(0, 0, wizard->width(), titleBarSize() + topOffset()), hdc); const int btnTop = backButton_->mapToParent(QPoint()).y(); @@ -383,14 +383,20 @@ void QVistaHelper::drawTitleBar(QPainter *painter) glowOffset = glowSize(); } - drawTitleText( - painter, text, - QRect(titleOffset() - glowOffset, verticalCenter - textHeight / 2, textWidth, textHeight), - hdc); + const QRect textRectangle(titleOffset() - glowOffset, verticalCenter - textHeight / 2, textWidth, textHeight); + if (isWindow) { + drawTitleText(painter, text, textRectangle, hdc); + } else { + painter->save(); + painter->setFont(font); + painter->drawText(textRectangle, Qt::AlignVCenter | Qt::AlignHCenter, text); + painter->restore(); + } const QIcon windowIcon = wizard->windowIcon(); if (!windowIcon.isNull()) { - QRect rect(leftMargin(), verticalCenter - iconSize() / 2, iconSize(), iconSize()); + const QRect rect(origin.x() + leftMargin(), + origin.y() + verticalCenter - iconSize() / 2, iconSize(), iconSize()); const HICON hIcon = qt_pixmapToWinHICON(windowIcon.pixmap(iconSize())); DrawIconEx(hdc, rect.left(), rect.top(), hIcon, 0, 0, 0, NULL, DI_NORMAL | DI_COMPAT); DestroyIcon(hIcon); @@ -642,6 +648,18 @@ HFONT QVistaHelper::getCaptionFont(HANDLE hTheme) return CreateFontIndirect(&lf); } +// Return a HDC for the wizard along with the transformation if the +// wizard is a child window. +HDC QVistaHelper::backingStoreDC(const QWidget *wizard, QPoint *offset) +{ + HDC hdc = static_cast(QGuiApplication::platformNativeInterface()->nativeResourceForBackingStore(QByteArrayLiteral("getDC"), wizard->backingStore())); + *offset = QPoint(0, 0); + if (!wizard->windowHandle()) + if (QWidget *nativeParent = wizard->nativeParentWidget()) + *offset = wizard->mapTo(nativeParent, *offset); + return hdc; +} + HWND QVistaHelper::wizardHWND() const { // Obtain the HWND if the wizard is a top-level window. diff --git a/src/widgets/dialogs/qwizard_win_p.h b/src/widgets/dialogs/qwizard_win_p.h index 80d437bc23..badaab52d9 100644 --- a/src/widgets/dialogs/qwizard_win_p.h +++ b/src/widgets/dialogs/qwizard_win_p.h @@ -107,6 +107,8 @@ public: } static int topOffset(); + static HDC backingStoreDC(const QWidget *wizard, QPoint *offset); + private: static HFONT getCaptionFont(HANDLE hTheme); HWND wizardHWND() const; -- cgit v1.2.3 From c4a07f039ddf025751803ed80ececd8da3989eb4 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 5 Mar 2013 16:53:30 +0100 Subject: Aero-Style-QWizard: Hide/Show back-button correctly. Task-number: QTBUG-29904 Change-Id: Id832594be4bc15c868f11bd762390803c8f9c158 Reviewed-by: Oliver Wolff --- src/widgets/dialogs/qwizard.cpp | 1 + src/widgets/dialogs/qwizard_win.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index 641c81b4cf..f590dbc6cb 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -1547,6 +1547,7 @@ bool QWizardPrivate::handleAeroStyleChange() 0, vistaHelper->topOffset() // ### should ideally work without the '+ 1' - qMin(vistaHelper->topOffset(), vistaHelper->topPadding() + 1)); vistaMargins = true; + vistaHelper->backButton()->show(); } else { if (isWindow) vistaHelper->setDWMTitleBar(QVistaHelper::NormalTitleBar); diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp index 30ee0e32a9..c90cf732d0 100644 --- a/src/widgets/dialogs/qwizard_win.cpp +++ b/src/widgets/dialogs/qwizard_win.cpp @@ -256,8 +256,10 @@ QVistaHelper::QVistaHelper(QWizard *wizard) is_vista = resolveSymbols(); if (instanceCount++ == 0) cachedVistaState = Dirty; - if (is_vista) + if (is_vista) { backButton_ = new QVistaBackButton(wizard); + backButton_->hide(); + } // Handle diff between Windows 7 and Vista iconSpacing = QStyleHelper::dpiScaled(7); -- cgit v1.2.3 From 2d1f3d7c514ab1c9f725a0a5e940656278d53f34 Mon Sep 17 00:00:00 2001 From: Kevin Ottens Date: Thu, 21 Feb 2013 23:50:02 +0100 Subject: Add methods to convert lists of QKeySequence to/from strings QKeySequence provides conversion to and from strings. But a similar convenience was missing for QList. It would come in handy when you want for instance to save/restore the shortcuts of a QAction. Change-Id: I9e4f2001c58a595392a5019a57c564992c39bf88 Reviewed-by: Olivier Goffart Reviewed-by: Friedemann Kleint Reviewed-by: David Faure (KDE) --- src/gui/kernel/qkeysequence.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ src/gui/kernel/qkeysequence.h | 3 +++ 2 files changed, 44 insertions(+) (limited to 'src') diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp index 07ec658818..cc0ecdf388 100644 --- a/src/gui/kernel/qkeysequence.cpp +++ b/src/gui/kernel/qkeysequence.cpp @@ -1681,6 +1681,47 @@ QKeySequence QKeySequence::fromString(const QString &str, SequenceFormat format) return QKeySequence(str, format); } +/*! + \since 5.1 + + Return a list of QKeySequence from the string \a str based on \a format. + + \sa fromString() + \sa listToString() +*/ +QList QKeySequence::listFromString(const QString &str, SequenceFormat format) +{ + QList result; + + QStringList strings = str.split(QLatin1String("; ")); + foreach (const QString &string, strings) { + result << fromString(string, format); + } + + return result; +} + +/*! + \since 5.1 + + Return a string representation of \a list based on \a format. + + \sa toString() + \sa listFromString() +*/ +QString QKeySequence::listToString(const QList &list, SequenceFormat format) +{ + QString result; + + foreach (const QKeySequence &sequence, list) { + result += sequence.toString(format); + result += QLatin1String("; "); + } + result.truncate(result.length() - 2); + + return result; +} + /***************************************************************************** QKeySequence stream functions *****************************************************************************/ diff --git a/src/gui/kernel/qkeysequence.h b/src/gui/kernel/qkeysequence.h index 6324e203f0..423fc279a3 100644 --- a/src/gui/kernel/qkeysequence.h +++ b/src/gui/kernel/qkeysequence.h @@ -163,6 +163,9 @@ public: QString toString(SequenceFormat format = PortableText) const; static QKeySequence fromString(const QString &str, SequenceFormat format = PortableText); + static QList listFromString(const QString &str, SequenceFormat format = PortableText); + static QString listToString(const QList &list, SequenceFormat format = PortableText); + SequenceMatch matches(const QKeySequence &seq) const; static QKeySequence mnemonic(const QString &text); static QList keyBindings(StandardKey key); -- cgit v1.2.3 From 24f059eed0be5b901bbb81ce921a942ca785fe1d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 25 Feb 2013 17:26:40 -0800 Subject: Import the Linux header linux/perf_event.h Imported from linux's own git, at v3.7:include/uapi/linux/perf_event.h (blob SHA-1 is 4f63c05d27c91d04569971ea4a2c4849203c36a9). We cannot rely on the file being shipped by distributions. Older versions did not have all fields in the perf_event_attr structure. If those bits are enabled at runtime, the kernel will simply reject the perf_open call (-EINVAL). Currently, this can only happen with the non-default options exclude_guest and exclude_host. Change-Id: Ib329e52c21d6969406da0cf33de823d721d94206 Reviewed-by: Lars Knoll --- src/testlib/3rdparty/linux_perf_event_p.h | 615 ++++++++++++++++++++++++++++++ 1 file changed, 615 insertions(+) create mode 100644 src/testlib/3rdparty/linux_perf_event_p.h (limited to 'src') diff --git a/src/testlib/3rdparty/linux_perf_event_p.h b/src/testlib/3rdparty/linux_perf_event_p.h new file mode 100644 index 0000000000..4f63c05d27 --- /dev/null +++ b/src/testlib/3rdparty/linux_perf_event_p.h @@ -0,0 +1,615 @@ +/* + * Performance events: + * + * Copyright (C) 2008-2009, Thomas Gleixner + * Copyright (C) 2008-2011, Red Hat, Inc., Ingo Molnar + * Copyright (C) 2008-2011, Red Hat, Inc., Peter Zijlstra + * + * Data type definitions, declarations, prototypes. + * + * Started by: Thomas Gleixner and Ingo Molnar + * + * For licencing details see kernel-base/COPYING + */ +#ifndef _UAPI_LINUX_PERF_EVENT_H +#define _UAPI_LINUX_PERF_EVENT_H + +#include +#include +#include + +/* + * User-space ABI bits: + */ + +/* + * attr.type + */ +enum perf_type_id { + PERF_TYPE_HARDWARE = 0, + PERF_TYPE_SOFTWARE = 1, + PERF_TYPE_TRACEPOINT = 2, + PERF_TYPE_HW_CACHE = 3, + PERF_TYPE_RAW = 4, + PERF_TYPE_BREAKPOINT = 5, + + PERF_TYPE_MAX, /* non-ABI */ +}; + +/* + * Generalized performance event event_id types, used by the + * attr.event_id parameter of the sys_perf_event_open() + * syscall: + */ +enum perf_hw_id { + /* + * Common hardware events, generalized by the kernel: + */ + PERF_COUNT_HW_CPU_CYCLES = 0, + PERF_COUNT_HW_INSTRUCTIONS = 1, + PERF_COUNT_HW_CACHE_REFERENCES = 2, + PERF_COUNT_HW_CACHE_MISSES = 3, + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4, + PERF_COUNT_HW_BRANCH_MISSES = 5, + PERF_COUNT_HW_BUS_CYCLES = 6, + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7, + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8, + PERF_COUNT_HW_REF_CPU_CYCLES = 9, + + PERF_COUNT_HW_MAX, /* non-ABI */ +}; + +/* + * Generalized hardware cache events: + * + * { L1-D, L1-I, LLC, ITLB, DTLB, BPU, NODE } x + * { read, write, prefetch } x + * { accesses, misses } + */ +enum perf_hw_cache_id { + PERF_COUNT_HW_CACHE_L1D = 0, + PERF_COUNT_HW_CACHE_L1I = 1, + PERF_COUNT_HW_CACHE_LL = 2, + PERF_COUNT_HW_CACHE_DTLB = 3, + PERF_COUNT_HW_CACHE_ITLB = 4, + PERF_COUNT_HW_CACHE_BPU = 5, + PERF_COUNT_HW_CACHE_NODE = 6, + + PERF_COUNT_HW_CACHE_MAX, /* non-ABI */ +}; + +enum perf_hw_cache_op_id { + PERF_COUNT_HW_CACHE_OP_READ = 0, + PERF_COUNT_HW_CACHE_OP_WRITE = 1, + PERF_COUNT_HW_CACHE_OP_PREFETCH = 2, + + PERF_COUNT_HW_CACHE_OP_MAX, /* non-ABI */ +}; + +enum perf_hw_cache_op_result_id { + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0, + PERF_COUNT_HW_CACHE_RESULT_MISS = 1, + + PERF_COUNT_HW_CACHE_RESULT_MAX, /* non-ABI */ +}; + +/* + * Special "software" events provided by the kernel, even if the hardware + * does not support performance events. These events measure various + * physical and sw events of the kernel (and allow the profiling of them as + * well): + */ +enum perf_sw_ids { + PERF_COUNT_SW_CPU_CLOCK = 0, + PERF_COUNT_SW_TASK_CLOCK = 1, + PERF_COUNT_SW_PAGE_FAULTS = 2, + PERF_COUNT_SW_CONTEXT_SWITCHES = 3, + PERF_COUNT_SW_CPU_MIGRATIONS = 4, + PERF_COUNT_SW_PAGE_FAULTS_MIN = 5, + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6, + PERF_COUNT_SW_ALIGNMENT_FAULTS = 7, + PERF_COUNT_SW_EMULATION_FAULTS = 8, + + PERF_COUNT_SW_MAX, /* non-ABI */ +}; + +/* + * Bits that can be set in attr.sample_type to request information + * in the overflow packets. + */ +enum perf_event_sample_format { + PERF_SAMPLE_IP = 1U << 0, + PERF_SAMPLE_TID = 1U << 1, + PERF_SAMPLE_TIME = 1U << 2, + PERF_SAMPLE_ADDR = 1U << 3, + PERF_SAMPLE_READ = 1U << 4, + PERF_SAMPLE_CALLCHAIN = 1U << 5, + PERF_SAMPLE_ID = 1U << 6, + PERF_SAMPLE_CPU = 1U << 7, + PERF_SAMPLE_PERIOD = 1U << 8, + PERF_SAMPLE_STREAM_ID = 1U << 9, + PERF_SAMPLE_RAW = 1U << 10, + PERF_SAMPLE_BRANCH_STACK = 1U << 11, + PERF_SAMPLE_REGS_USER = 1U << 12, + PERF_SAMPLE_STACK_USER = 1U << 13, + + PERF_SAMPLE_MAX = 1U << 14, /* non-ABI */ +}; + +/* + * values to program into branch_sample_type when PERF_SAMPLE_BRANCH is set + * + * If the user does not pass priv level information via branch_sample_type, + * the kernel uses the event's priv level. Branch and event priv levels do + * not have to match. Branch priv level is checked for permissions. + * + * The branch types can be combined, however BRANCH_ANY covers all types + * of branches and therefore it supersedes all the other types. + */ +enum perf_branch_sample_type { + PERF_SAMPLE_BRANCH_USER = 1U << 0, /* user branches */ + PERF_SAMPLE_BRANCH_KERNEL = 1U << 1, /* kernel branches */ + PERF_SAMPLE_BRANCH_HV = 1U << 2, /* hypervisor branches */ + + PERF_SAMPLE_BRANCH_ANY = 1U << 3, /* any branch types */ + PERF_SAMPLE_BRANCH_ANY_CALL = 1U << 4, /* any call branch */ + PERF_SAMPLE_BRANCH_ANY_RETURN = 1U << 5, /* any return branch */ + PERF_SAMPLE_BRANCH_IND_CALL = 1U << 6, /* indirect calls */ + + PERF_SAMPLE_BRANCH_MAX = 1U << 7, /* non-ABI */ +}; + +#define PERF_SAMPLE_BRANCH_PLM_ALL \ + (PERF_SAMPLE_BRANCH_USER|\ + PERF_SAMPLE_BRANCH_KERNEL|\ + PERF_SAMPLE_BRANCH_HV) + +/* + * Values to determine ABI of the registers dump. + */ +enum perf_sample_regs_abi { + PERF_SAMPLE_REGS_ABI_NONE = 0, + PERF_SAMPLE_REGS_ABI_32 = 1, + PERF_SAMPLE_REGS_ABI_64 = 2, +}; + +/* + * The format of the data returned by read() on a perf event fd, + * as specified by attr.read_format: + * + * struct read_format { + * { u64 value; + * { u64 time_enabled; } && PERF_FORMAT_TOTAL_TIME_ENABLED + * { u64 time_running; } && PERF_FORMAT_TOTAL_TIME_RUNNING + * { u64 id; } && PERF_FORMAT_ID + * } && !PERF_FORMAT_GROUP + * + * { u64 nr; + * { u64 time_enabled; } && PERF_FORMAT_TOTAL_TIME_ENABLED + * { u64 time_running; } && PERF_FORMAT_TOTAL_TIME_RUNNING + * { u64 value; + * { u64 id; } && PERF_FORMAT_ID + * } cntr[nr]; + * } && PERF_FORMAT_GROUP + * }; + */ +enum perf_event_read_format { + PERF_FORMAT_TOTAL_TIME_ENABLED = 1U << 0, + PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1, + PERF_FORMAT_ID = 1U << 2, + PERF_FORMAT_GROUP = 1U << 3, + + PERF_FORMAT_MAX = 1U << 4, /* non-ABI */ +}; + +#define PERF_ATTR_SIZE_VER0 64 /* sizeof first published struct */ +#define PERF_ATTR_SIZE_VER1 72 /* add: config2 */ +#define PERF_ATTR_SIZE_VER2 80 /* add: branch_sample_type */ +#define PERF_ATTR_SIZE_VER3 96 /* add: sample_regs_user */ + /* add: sample_stack_user */ + +/* + * Hardware event_id to monitor via a performance monitoring event: + */ +struct perf_event_attr { + + /* + * Major type: hardware/software/tracepoint/etc. + */ + __u32 type; + + /* + * Size of the attr structure, for fwd/bwd compat. + */ + __u32 size; + + /* + * Type specific configuration information. + */ + __u64 config; + + union { + __u64 sample_period; + __u64 sample_freq; + }; + + __u64 sample_type; + __u64 read_format; + + __u64 disabled : 1, /* off by default */ + inherit : 1, /* children inherit it */ + pinned : 1, /* must always be on PMU */ + exclusive : 1, /* only group on PMU */ + exclude_user : 1, /* don't count user */ + exclude_kernel : 1, /* ditto kernel */ + exclude_hv : 1, /* ditto hypervisor */ + exclude_idle : 1, /* don't count when idle */ + mmap : 1, /* include mmap data */ + comm : 1, /* include comm data */ + freq : 1, /* use freq, not period */ + inherit_stat : 1, /* per task counts */ + enable_on_exec : 1, /* next exec enables */ + task : 1, /* trace fork/exit */ + watermark : 1, /* wakeup_watermark */ + /* + * precise_ip: + * + * 0 - SAMPLE_IP can have arbitrary skid + * 1 - SAMPLE_IP must have constant skid + * 2 - SAMPLE_IP requested to have 0 skid + * 3 - SAMPLE_IP must have 0 skid + * + * See also PERF_RECORD_MISC_EXACT_IP + */ + precise_ip : 2, /* skid constraint */ + mmap_data : 1, /* non-exec mmap data */ + sample_id_all : 1, /* sample_type all events */ + + exclude_host : 1, /* don't count in host */ + exclude_guest : 1, /* don't count in guest */ + + exclude_callchain_kernel : 1, /* exclude kernel callchains */ + exclude_callchain_user : 1, /* exclude user callchains */ + + __reserved_1 : 41; + + union { + __u32 wakeup_events; /* wakeup every n events */ + __u32 wakeup_watermark; /* bytes before wakeup */ + }; + + __u32 bp_type; + union { + __u64 bp_addr; + __u64 config1; /* extension of config */ + }; + union { + __u64 bp_len; + __u64 config2; /* extension of config1 */ + }; + __u64 branch_sample_type; /* enum perf_branch_sample_type */ + + /* + * Defines set of user regs to dump on samples. + * See asm/perf_regs.h for details. + */ + __u64 sample_regs_user; + + /* + * Defines size of the user stack to dump on samples. + */ + __u32 sample_stack_user; + + /* Align to u64. */ + __u32 __reserved_2; +}; + +#define perf_flags(attr) (*(&(attr)->read_format + 1)) + +/* + * Ioctls that can be done on a perf event fd: + */ +#define PERF_EVENT_IOC_ENABLE _IO ('$', 0) +#define PERF_EVENT_IOC_DISABLE _IO ('$', 1) +#define PERF_EVENT_IOC_REFRESH _IO ('$', 2) +#define PERF_EVENT_IOC_RESET _IO ('$', 3) +#define PERF_EVENT_IOC_PERIOD _IOW('$', 4, __u64) +#define PERF_EVENT_IOC_SET_OUTPUT _IO ('$', 5) +#define PERF_EVENT_IOC_SET_FILTER _IOW('$', 6, char *) + +enum perf_event_ioc_flags { + PERF_IOC_FLAG_GROUP = 1U << 0, +}; + +/* + * Structure of the page that can be mapped via mmap + */ +struct perf_event_mmap_page { + __u32 version; /* version number of this structure */ + __u32 compat_version; /* lowest version this is compat with */ + + /* + * Bits needed to read the hw events in user-space. + * + * u32 seq, time_mult, time_shift, idx, width; + * u64 count, enabled, running; + * u64 cyc, time_offset; + * s64 pmc = 0; + * + * do { + * seq = pc->lock; + * barrier() + * + * enabled = pc->time_enabled; + * running = pc->time_running; + * + * if (pc->cap_usr_time && enabled != running) { + * cyc = rdtsc(); + * time_offset = pc->time_offset; + * time_mult = pc->time_mult; + * time_shift = pc->time_shift; + * } + * + * idx = pc->index; + * count = pc->offset; + * if (pc->cap_usr_rdpmc && idx) { + * width = pc->pmc_width; + * pmc = rdpmc(idx - 1); + * } + * + * barrier(); + * } while (pc->lock != seq); + * + * NOTE: for obvious reason this only works on self-monitoring + * processes. + */ + __u32 lock; /* seqlock for synchronization */ + __u32 index; /* hardware event identifier */ + __s64 offset; /* add to hardware event value */ + __u64 time_enabled; /* time event active */ + __u64 time_running; /* time event on cpu */ + union { + __u64 capabilities; + __u64 cap_usr_time : 1, + cap_usr_rdpmc : 1, + cap_____res : 62; + }; + + /* + * If cap_usr_rdpmc this field provides the bit-width of the value + * read using the rdpmc() or equivalent instruction. This can be used + * to sign extend the result like: + * + * pmc <<= 64 - width; + * pmc >>= 64 - width; // signed shift right + * count += pmc; + */ + __u16 pmc_width; + + /* + * If cap_usr_time the below fields can be used to compute the time + * delta since time_enabled (in ns) using rdtsc or similar. + * + * u64 quot, rem; + * u64 delta; + * + * quot = (cyc >> time_shift); + * rem = cyc & ((1 << time_shift) - 1); + * delta = time_offset + quot * time_mult + + * ((rem * time_mult) >> time_shift); + * + * Where time_offset,time_mult,time_shift and cyc are read in the + * seqcount loop described above. This delta can then be added to + * enabled and possible running (if idx), improving the scaling: + * + * enabled += delta; + * if (idx) + * running += delta; + * + * quot = count / running; + * rem = count % running; + * count = quot * enabled + (rem * enabled) / running; + */ + __u16 time_shift; + __u32 time_mult; + __u64 time_offset; + + /* + * Hole for extension of the self monitor capabilities + */ + + __u64 __reserved[120]; /* align to 1k */ + + /* + * Control data for the mmap() data buffer. + * + * User-space reading the @data_head value should issue an rmb(), on + * SMP capable platforms, after reading this value -- see + * perf_event_wakeup(). + * + * When the mapping is PROT_WRITE the @data_tail value should be + * written by userspace to reflect the last read data. In this case + * the kernel will not over-write unread data. + */ + __u64 data_head; /* head in the data section */ + __u64 data_tail; /* user-space written tail */ +}; + +#define PERF_RECORD_MISC_CPUMODE_MASK (7 << 0) +#define PERF_RECORD_MISC_CPUMODE_UNKNOWN (0 << 0) +#define PERF_RECORD_MISC_KERNEL (1 << 0) +#define PERF_RECORD_MISC_USER (2 << 0) +#define PERF_RECORD_MISC_HYPERVISOR (3 << 0) +#define PERF_RECORD_MISC_GUEST_KERNEL (4 << 0) +#define PERF_RECORD_MISC_GUEST_USER (5 << 0) + +/* + * Indicates that the content of PERF_SAMPLE_IP points to + * the actual instruction that triggered the event. See also + * perf_event_attr::precise_ip. + */ +#define PERF_RECORD_MISC_EXACT_IP (1 << 14) +/* + * Reserve the last bit to indicate some extended misc field + */ +#define PERF_RECORD_MISC_EXT_RESERVED (1 << 15) + +struct perf_event_header { + __u32 type; + __u16 misc; + __u16 size; +}; + +enum perf_event_type { + + /* + * If perf_event_attr.sample_id_all is set then all event types will + * have the sample_type selected fields related to where/when + * (identity) an event took place (TID, TIME, ID, CPU, STREAM_ID) + * described in PERF_RECORD_SAMPLE below, it will be stashed just after + * the perf_event_header and the fields already present for the existing + * fields, i.e. at the end of the payload. That way a newer perf.data + * file will be supported by older perf tools, with these new optional + * fields being ignored. + * + * The MMAP events record the PROT_EXEC mappings so that we can + * correlate userspace IPs to code. They have the following structure: + * + * struct { + * struct perf_event_header header; + * + * u32 pid, tid; + * u64 addr; + * u64 len; + * u64 pgoff; + * char filename[]; + * }; + */ + PERF_RECORD_MMAP = 1, + + /* + * struct { + * struct perf_event_header header; + * u64 id; + * u64 lost; + * }; + */ + PERF_RECORD_LOST = 2, + + /* + * struct { + * struct perf_event_header header; + * + * u32 pid, tid; + * char comm[]; + * }; + */ + PERF_RECORD_COMM = 3, + + /* + * struct { + * struct perf_event_header header; + * u32 pid, ppid; + * u32 tid, ptid; + * u64 time; + * }; + */ + PERF_RECORD_EXIT = 4, + + /* + * struct { + * struct perf_event_header header; + * u64 time; + * u64 id; + * u64 stream_id; + * }; + */ + PERF_RECORD_THROTTLE = 5, + PERF_RECORD_UNTHROTTLE = 6, + + /* + * struct { + * struct perf_event_header header; + * u32 pid, ppid; + * u32 tid, ptid; + * u64 time; + * }; + */ + PERF_RECORD_FORK = 7, + + /* + * struct { + * struct perf_event_header header; + * u32 pid, tid; + * + * struct read_format values; + * }; + */ + PERF_RECORD_READ = 8, + + /* + * struct { + * struct perf_event_header header; + * + * { u64 ip; } && PERF_SAMPLE_IP + * { u32 pid, tid; } && PERF_SAMPLE_TID + * { u64 time; } && PERF_SAMPLE_TIME + * { u64 addr; } && PERF_SAMPLE_ADDR + * { u64 id; } && PERF_SAMPLE_ID + * { u64 stream_id;} && PERF_SAMPLE_STREAM_ID + * { u32 cpu, res; } && PERF_SAMPLE_CPU + * { u64 period; } && PERF_SAMPLE_PERIOD + * + * { struct read_format values; } && PERF_SAMPLE_READ + * + * { u64 nr, + * u64 ips[nr]; } && PERF_SAMPLE_CALLCHAIN + * + * # + * # The RAW record below is opaque data wrt the ABI + * # + * # That is, the ABI doesn't make any promises wrt to + * # the stability of its content, it may vary depending + * # on event, hardware, kernel version and phase of + * # the moon. + * # + * # In other words, PERF_SAMPLE_RAW contents are not an ABI. + * # + * + * { u32 size; + * char data[size];}&& PERF_SAMPLE_RAW + * + * { u64 from, to, flags } lbr[nr];} && PERF_SAMPLE_BRANCH_STACK + * + * { u64 abi; # enum perf_sample_regs_abi + * u64 regs[weight(mask)]; } && PERF_SAMPLE_REGS_USER + * + * { u64 size; + * char data[size]; + * u64 dyn_size; } && PERF_SAMPLE_STACK_USER + * }; + */ + PERF_RECORD_SAMPLE = 9, + + PERF_RECORD_MAX, /* non-ABI */ +}; + +#define PERF_MAX_STACK_DEPTH 127 + +enum perf_callchain_context { + PERF_CONTEXT_HV = (__u64)-32, + PERF_CONTEXT_KERNEL = (__u64)-128, + PERF_CONTEXT_USER = (__u64)-512, + + PERF_CONTEXT_GUEST = (__u64)-2048, + PERF_CONTEXT_GUEST_KERNEL = (__u64)-2176, + PERF_CONTEXT_GUEST_USER = (__u64)-2560, + + PERF_CONTEXT_MAX = (__u64)-4095, +}; + +#define PERF_FLAG_FD_NO_GROUP (1U << 0) +#define PERF_FLAG_FD_OUTPUT (1U << 1) +#define PERF_FLAG_PID_CGROUP (1U << 2) /* pid=cgroup id, per-cpu mode only */ + +#endif /* _UAPI_LINUX_PERF_EVENT_H */ -- cgit v1.2.3 From 9d72259f943a3b31fa4e32aeb1c5a2de3d8ca611 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 9 Apr 2012 11:37:25 -0300 Subject: Add the skeleton Linux perf events counter for QtTest Currently, it only prints "perf available" if you use the -perf option and perf is available. The implementation comes in the next commits. Change-Id: Ic6cdee70e21df25780799a4bc31ca2c2d923b9f8 Reviewed-by: Jason McDonald --- src/testlib/qbenchmark.cpp | 4 ++ src/testlib/qbenchmark_p.h | 11 +++- src/testlib/qbenchmarkperfevents.cpp | 115 +++++++++++++++++++++++++++++++++++ src/testlib/qbenchmarkperfevents_p.h | 82 +++++++++++++++++++++++++ src/testlib/qtestcase.cpp | 11 ++++ src/testlib/testlib.pro | 2 + 6 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 src/testlib/qbenchmarkperfevents.cpp create mode 100644 src/testlib/qbenchmarkperfevents_p.h (limited to 'src') diff --git a/src/testlib/qbenchmark.cpp b/src/testlib/qbenchmark.cpp index 796d817ae2..91cafc99e3 100644 --- a/src/testlib/qbenchmark.cpp +++ b/src/testlib/qbenchmark.cpp @@ -87,6 +87,10 @@ QBenchmarkMeasurerBase * QBenchmarkGlobalData::createMeasurer() } else if (mode_ == CallgrindChildProcess || mode_ == CallgrindParentProcess) { measurer = new QBenchmarkCallgrindMeasurer; #endif +#ifdef QTESTLIB_USE_PERF_EVENTS + } else if (mode_ == PerfCounter) { + measurer = new QBenchmarkPerfEventsMeasurer; +#endif #ifdef HAVE_TICK_COUNTER } else if (mode_ == TickCounter) { measurer = new QBenchmarkTickMeasurer; diff --git a/src/testlib/qbenchmark_p.h b/src/testlib/qbenchmark_p.h index 6b5d996966..9859ca973c 100644 --- a/src/testlib/qbenchmark_p.h +++ b/src/testlib/qbenchmark_p.h @@ -63,12 +63,21 @@ #undef QTESTLIB_USE_VALGRIND #endif +#if defined(Q_OS_LINUX) && !defined(QT_LINUXBASE) +#define QTESTLIB_USE_PERF_EVENTS +#else +#undef QTESTLIB_USE_PERF_EVENTS +#endif + #include #include #include #ifdef QTESTLIB_USE_VALGRIND #include #endif +#ifdef QTESTLIB_USE_PERF_EVENTS +#include +#endif #include #include @@ -137,7 +146,7 @@ public: QBenchmarkGlobalData(); ~QBenchmarkGlobalData(); - enum Mode { WallTime, CallgrindParentProcess, CallgrindChildProcess, TickCounter, EventCounter }; + enum Mode { WallTime, CallgrindParentProcess, CallgrindChildProcess, PerfCounter, TickCounter, EventCounter }; void setMode(Mode mode); Mode mode() const { return mode_; } QBenchmarkMeasurerBase *createMeasurer(); diff --git a/src/testlib/qbenchmarkperfevents.cpp b/src/testlib/qbenchmarkperfevents.cpp new file mode 100644 index 0000000000..8c2a4852b4 --- /dev/null +++ b/src/testlib/qbenchmarkperfevents.cpp @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Intel Corporation. +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qbenchmarkperfevents_p.h" +#include "qbenchmark_p.h" + +#ifdef QTESTLIB_USE_PERF_EVENTS + +#include +#include + +#include + +#include "3rdparty/linux_perf_event_p.h" + +QT_BEGIN_NAMESPACE + + +static int perf_event_open(perf_event_attr *attr, pid_t pid, int cpu, int group_fd, unsigned long flags) +{ + return syscall(SYS_perf_event_open, attr, pid, cpu, group_fd, flags); +} + +bool QBenchmarkPerfEventsMeasurer::isAvailable() +{ + // this generates an EFAULT because attr == NULL if perf_event_open is available + // if the kernel is too old, it generates ENOSYS + return perf_event_open(0, 0, 0, 0, 0) == -1 && errno != ENOSYS; +} + +QBenchmarkPerfEventsMeasurer::QBenchmarkPerfEventsMeasurer() +{ +} + +QBenchmarkPerfEventsMeasurer::~QBenchmarkPerfEventsMeasurer() +{ +} + +void QBenchmarkPerfEventsMeasurer::init() +{ +} + +void QBenchmarkPerfEventsMeasurer::start() +{ +} + +qint64 QBenchmarkPerfEventsMeasurer::checkpoint() +{ +} + +qint64 QBenchmarkPerfEventsMeasurer::stop() +{ +} + +bool QBenchmarkPerfEventsMeasurer::isMeasurementAccepted(qint64) +{ + return true; +} + +int QBenchmarkPerfEventsMeasurer::adjustIterationCount(int) +{ + return 1; +} + +int QBenchmarkPerfEventsMeasurer::adjustMedianCount(int) +{ + return 1; +} + +QTest::QBenchmarkMetric QBenchmarkPerfEventsMeasurer::metricType() +{ + return QTest::Events; +} + +#endif + +QT_END_NAMESPACE diff --git a/src/testlib/qbenchmarkperfevents_p.h b/src/testlib/qbenchmarkperfevents_p.h new file mode 100644 index 0000000000..19e68aebc3 --- /dev/null +++ b/src/testlib/qbenchmarkperfevents_p.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Intel Corporation. +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBENCHMARKPERFEVENTS_P_H +#define QBENCHMARKPERFEVENTS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +class QBenchmarkPerfEventsMeasurer : public QBenchmarkMeasurerBase +{ +public: + QBenchmarkPerfEventsMeasurer(); + ~QBenchmarkPerfEventsMeasurer(); + virtual void init(); + virtual void start(); + virtual qint64 checkpoint(); + virtual qint64 stop(); + virtual bool isMeasurementAccepted(qint64 measurement); + virtual int adjustIterationCount(int suggestion); + virtual int adjustMedianCount(int suggestion); + virtual bool repeatCount() { return 1; } + virtual bool needsWarmupIteration() { return true; } + virtual QTest::QBenchmarkMetric metricType(); + + static bool isAvailable(); +private: +}; + +QT_END_NAMESPACE + +#endif // QBENCHMARKPERFEVENTS_P_H diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index ef8ffa570b..20d06f6be2 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -1341,6 +1341,9 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml) #ifdef QTESTLIB_USE_VALGRIND " -callgrind : Use callgrind to time benchmarks\n" #endif +#ifdef QTESTLIB_USE_PERF_EVENTS + " -perf : Use Linux perf events to time benchmarks\n" +#endif #ifdef HAVE_TICK_COUNTER " -tickcounter : Use CPU tick counters to time benchmarks\n" #endif @@ -1481,6 +1484,14 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml) QBenchmarkGlobalData::current->callgrindOutFileBase = QBenchmarkValgrindUtils::outFileBase(); #endif +#ifdef QTESTLIB_USE_PERF_EVENTS + } else if (strcmp(argv[i], "-perf") == 0) { + if (QBenchmarkPerfEventsMeasurer::isAvailable()) { + printf("perf available\n"); + } else { + fprintf(stderr, "WARNING: Linux perf events not available. Using the walltime measurer.\n"); + } +#endif #ifdef HAVE_TICK_COUNTER } else if (strcmp(argv[i], "-tickcounter") == 0) { QBenchmarkGlobalData::current->setMode(QBenchmarkGlobalData::TickCounter); diff --git a/src/testlib/testlib.pro b/src/testlib/testlib.pro index 8c6972f6a3..97301de151 100644 --- a/src/testlib/testlib.pro +++ b/src/testlib/testlib.pro @@ -16,6 +16,7 @@ HEADERS = qbenchmark.h \ qbenchmarkmeasurement_p.h \ qbenchmarkvalgrind_p.h \ qbenchmarkevent_p.h \ + qbenchmarkperfevents_p.h \ qbenchmarkmetric_p.h \ qsignalspy.h \ qtestaccessible.h \ @@ -48,6 +49,7 @@ SOURCES = qtestcase.cpp \ qbenchmarkmeasurement.cpp \ qbenchmarkvalgrind.cpp \ qbenchmarkevent.cpp \ + qbenchmarkperfevents.cpp \ qbenchmarkmetric.cpp \ qtestelement.cpp \ qtestelementattribute.cpp \ -- cgit v1.2.3 From c63420a117fe67107466d806890e901d091cb1d5 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 9 Apr 2012 14:11:47 -0300 Subject: Implement the Linux Perf Counter backend for benchlib Currently, we only support one event type: counting CPU cycles with hardware counters. There are no fallbacks if this hardware counter is not available, and there is currently no way to specify other counters. Benchlib only supports reporting one event per benchmark, even though the event counter interface allows specifying more than one. Still, the hardware usually has limitations on how many events it can monitor at a time, and we'd prefer to have the counter running at 100% of the time, so this will not change. Change-Id: I79858a3ad1e696dc4b7b72c420e5a04b67cd55de Reviewed-by: Jason McDonald --- src/testlib/qbenchmarkperfevents.cpp | 105 ++++++++++++++++++++++++++++++++++- src/testlib/qbenchmarkperfevents_p.h | 3 + src/testlib/qtestcase.cpp | 3 +- 3 files changed, 109 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/testlib/qbenchmarkperfevents.cpp b/src/testlib/qbenchmarkperfevents.cpp index 8c2a4852b4..178d4cc7e8 100644 --- a/src/testlib/qbenchmarkperfevents.cpp +++ b/src/testlib/qbenchmarkperfevents.cpp @@ -44,15 +44,41 @@ #ifdef QTESTLIB_USE_PERF_EVENTS +// include the qcore_unix_p.h without core-private +// we only use inline functions anyway +#include "../corelib/kernel/qcore_unix_p.h" + #include #include +#include +#include #include +#include #include "3rdparty/linux_perf_event_p.h" QT_BEGIN_NAMESPACE +/*! + \class QBenchmarkPerfEvents + \brief The Linux perf events benchmark backend + + This benchmark backend uses the Linux Performance Counters interface, + introduced with the Linux kernel v2.6.31. The interface is done by one + system call (perf_event_open) which takes an attribute structure and + returns a file descriptor. + + More information: + \li design docs: tools/perf/design.txt + \li sample tool: tools/perf/builtin-stat.c + (note: as of v3.3.1, the documentation is out-of-date with the kernel + interface, so reading the source code of existing tools is necessary) + + This benchlib backend monitors the current process as well as child process + launched. We do not try to benchmark in kernel or hypervisor mode, as that + usually requires elevated privileges. + */ static int perf_event_open(perf_event_attr *attr, pid_t pid, int cpu, int group_fd, unsigned long flags) { @@ -67,27 +93,69 @@ bool QBenchmarkPerfEventsMeasurer::isAvailable() } QBenchmarkPerfEventsMeasurer::QBenchmarkPerfEventsMeasurer() + : fd(-1) { } QBenchmarkPerfEventsMeasurer::~QBenchmarkPerfEventsMeasurer() { + qt_safe_close(fd); } void QBenchmarkPerfEventsMeasurer::init() { + perf_event_attr attr; + memset(&attr, 0, sizeof attr); + + // common init + attr.size = sizeof attr; + attr.sample_period = 0; + attr.sample_type = 0; + attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | PERF_FORMAT_TOTAL_TIME_RUNNING; + attr.disabled = true; // start disabled, we'll enable later + attr.inherit = true; // let children inherit, if the benchmark has child processes + attr.pinned = true; // keep it running on the PMU + attr.inherit_stat = true; // collapse all the info from child processes + attr.task = true; // trace fork and exit + + // our event type + // ### FIXME hardcoded for now + attr.type = PERF_TYPE_HARDWARE; + attr.config = PERF_COUNT_HW_CPU_CYCLES; + + // pid == 0 -> attach to the current process + // cpu == -1 -> monitor on all CPUs + // group_fd == -1 -> this is the group leader + // flags == 0 -> reserved, must be zero + fd = perf_event_open(&attr, 0, -1, -1, 0); + if (fd == -1) { + perror("QBenchmarkPerfEventsMeasurer::start: perf_event_open"); + exit(1); + } else { + ::fcntl(fd, F_SETFD, FD_CLOEXEC); + } } void QBenchmarkPerfEventsMeasurer::start() { + // enable the counter + ::ioctl(fd, PERF_EVENT_IOC_RESET); + ::ioctl(fd, PERF_EVENT_IOC_ENABLE); } qint64 QBenchmarkPerfEventsMeasurer::checkpoint() { + ::ioctl(fd, PERF_EVENT_IOC_DISABLE); + qint64 value = readValue(); + ::ioctl(fd, PERF_EVENT_IOC_ENABLE); + return value; } qint64 QBenchmarkPerfEventsMeasurer::stop() { + // disable the counter + ::ioctl(fd, PERF_EVENT_IOC_DISABLE); + return readValue(); } bool QBenchmarkPerfEventsMeasurer::isMeasurementAccepted(qint64) @@ -110,6 +178,41 @@ QTest::QBenchmarkMetric QBenchmarkPerfEventsMeasurer::metricType() return QTest::Events; } -#endif +qint64 QBenchmarkPerfEventsMeasurer::readValue() +{ + /* from the kernel docs: + * struct read_format { + * { u64 value; + * { u64 time_enabled; } && PERF_FORMAT_TOTAL_TIME_ENABLED + * { u64 time_running; } && PERF_FORMAT_TOTAL_TIME_RUNNING + * { u64 id; } && PERF_FORMAT_ID + * } && !PERF_FORMAT_GROUP + */ + + struct read_format { + quint64 value; + quint64 time_enabled; + quint64 time_running; + } results; + + size_t nread = 0; + while (nread < sizeof results) { + char *ptr = reinterpret_cast(&results); + qint64 r = qt_safe_read(fd, ptr + nread, sizeof results - nread); + if (r == -1) { + perror("QBenchmarkPerfEventsMeasurer::readValue: reading the results"); + exit(1); + } + nread += quint64(r); + } + + if (results.time_running == results.time_enabled) + return results.value; + + // scale the results, though this shouldn't happen! + return results.value * (double(results.time_running) / double(results.time_enabled)); +} QT_END_NAMESPACE + +#endif diff --git a/src/testlib/qbenchmarkperfevents_p.h b/src/testlib/qbenchmarkperfevents_p.h index 19e68aebc3..74966e1699 100644 --- a/src/testlib/qbenchmarkperfevents_p.h +++ b/src/testlib/qbenchmarkperfevents_p.h @@ -75,6 +75,9 @@ public: static bool isAvailable(); private: + int fd; + + qint64 readValue(); }; QT_END_NAMESPACE diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 20d06f6be2..87d32da26a 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -1487,7 +1487,8 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml) #ifdef QTESTLIB_USE_PERF_EVENTS } else if (strcmp(argv[i], "-perf") == 0) { if (QBenchmarkPerfEventsMeasurer::isAvailable()) { - printf("perf available\n"); + // perf available + QBenchmarkGlobalData::current->setMode(QBenchmarkGlobalData::PerfCounter); } else { fprintf(stderr, "WARNING: Linux perf events not available. Using the walltime measurer.\n"); } -- cgit v1.2.3 From 93fe3895cfad75f095b8b1d48cce48ba17600b4e Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 9 Apr 2012 15:20:15 -0300 Subject: Add more events for QBenchlib, based on the Linux perf counters Change-Id: Ic7e7e122bfe3995eb7ea033c744fd501579ea8fa Reviewed-by: Jason McDonald --- src/testlib/qbenchmarkmetric.cpp | 124 ++++++++++++++++++++++++++++++++--- src/testlib/qbenchmarkmetric.h | 23 ++++++- src/testlib/qbenchmarkperfevents.cpp | 2 +- 3 files changed, 137 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/testlib/qbenchmarkmetric.cpp b/src/testlib/qbenchmarkmetric.cpp index ca802e3688..727b9fb912 100644 --- a/src/testlib/qbenchmarkmetric.cpp +++ b/src/testlib/qbenchmarkmetric.cpp @@ -51,19 +51,39 @@ \value BitsPerSecond Bits per second \value BytesPerSecond Bytes per second \value WalltimeMilliseconds Clock time in milliseconds - \value CPUTicks CPU time - \value InstructionReads Instruction reads - \value Events Event count \value WalltimeNanoseconds Clock time in nanoseconds \value BytesAllocated Memory usage in bytes + \value Events Event count + \value CPUTicks CPU time + \value CPUMigrations Process migrations between CPUs + \value CPUCycles CPU cycles + \value BusCycles Bus cycles + \value StalledCycles Cycles stalled + \value InstructionReads Instruction reads + \value Instructions Instructions executed + \value BranchInstructions Branch-type instructions + \value BranchMisses Branch instructions that were mispredicted + \value CacheReferences Cache accesses of any type + \value CacheMisses Cache misses of any type + \value CacheReads Cache reads / loads + \value CacheReadMisses Cache read / load misses + \value CacheWrites Cache writes / stores + \value CacheWriteMisses Cache write / store misses + \value CachePrefetches Cache prefetches + \value CachePrefetchMisses Cache prefetch misses + \value ContextSwitches Context switches + \value PageFaults Page faults of any type + \value MinorPageFaults Minor page faults + \value MajorPageFaults Major page faults + \value AlignmentFaults Faults caused due to misalignment + \value EmulationFaults Faults that needed software emulation + + \sa QTest::benchmarkMetricName(), QTest::benchmarkMetricUnit() Note that \c WalltimeNanoseconds and \c BytesAllocated are only provided for use via \l setBenchmarkResult(), and results in those metrics are not able to be provided automatically by the QTest framework. - - \sa QTest::benchmarkMetricName(), QTest::benchmarkMetricUnit() - */ /*! @@ -82,16 +102,58 @@ const char * QTest::benchmarkMetricName(QBenchmarkMetric metric) return "BytesPerSecond"; case WalltimeMilliseconds: return "WalltimeMilliseconds"; + case Events: + return "Events"; case CPUTicks: return "CPUTicks"; + case CPUMigrations: + return "CPUMigrations"; + case CPUCycles: + return "CPUCycles"; + case BusCycles: + return "BusCycles"; + case StalledCycles: + return "StalledCycles"; case InstructionReads: return "InstructionReads"; - case Events: - return "Events"; + case Instructions: + return "Instructions"; case WalltimeNanoseconds: return "WalltimeNanoseconds"; case BytesAllocated: return "BytesAllocated"; + case BranchInstructions: + return "BranchInstructions"; + case BranchMisses: + return "BranchMisses"; + case CacheReferences: + return "CacheReferences"; + case CacheReads: + return "CacheReads"; + case CacheWrites: + return "CacheWrites"; + case CachePrefetches: + return "CachePrefetches"; + case CacheMisses: + return "CacheMisses"; + case CacheReadMisses: + return "CacheReadMisses"; + case CacheWriteMisses: + return "CacheWriteMisses"; + case CachePrefetchMisses: + return "CachePrefetchMisses"; + case ContextSwitches: + return "ContextSwitches"; + case PageFaults: + return "PageFaults"; + case MinorPageFaults: + return "MinorPageFaults"; + case MajorPageFaults: + return "MajorPageFaults"; + case AlignmentFaults: + return "AlignmentFaults"; + case EmulationFaults: + return "EmulationFaults"; default: return ""; } @@ -113,16 +175,58 @@ const char * QTest::benchmarkMetricUnit(QBenchmarkMetric metric) return "bytes/s"; case WalltimeMilliseconds: return "msecs"; + case Events: + return "events"; case CPUTicks: return "CPU ticks"; + case CPUMigrations: + return "CPU migrations"; + case CPUCycles: + return "CPU cycles"; + case BusCycles: + return "bus cycles"; + case StalledCycles: + return "stalled cycles"; case InstructionReads: return "instruction reads"; - case Events: - return "events"; + case Instructions: + return "instructions"; case WalltimeNanoseconds: return "nsecs"; case BytesAllocated: return "bytes"; + case BranchInstructions: + return "branch instructions"; + case BranchMisses: + return "branch misses"; + case CacheReferences: + return "cache references"; + case CacheReads: + return "cache loads"; + case CacheWrites: + return "cache stores"; + case CachePrefetches: + return "cache prefetches"; + case CacheMisses: + return "cache misses"; + case CacheReadMisses: + return "cache load misses"; + case CacheWriteMisses: + return "cache store misses"; + case CachePrefetchMisses: + return "cache prefetch misses"; + case ContextSwitches: + return "context switches"; + case PageFaults: + return "page faults"; + case MinorPageFaults: + return "minor page faults"; + case MajorPageFaults: + return "major page faults"; + case AlignmentFaults: + return "alignment faults"; + case EmulationFaults: + return "emulation faults"; default: return ""; } diff --git a/src/testlib/qbenchmarkmetric.h b/src/testlib/qbenchmarkmetric.h index 3de73f6f87..448df3f691 100644 --- a/src/testlib/qbenchmarkmetric.h +++ b/src/testlib/qbenchmarkmetric.h @@ -58,7 +58,28 @@ enum QBenchmarkMetric { InstructionReads, Events, WalltimeNanoseconds, - BytesAllocated + BytesAllocated, + CPUMigrations, + CPUCycles, + BusCycles, + StalledCycles, + Instructions, + BranchInstructions, + BranchMisses, + CacheReferences, + CacheReads, + CacheWrites, + CachePrefetches, + CacheMisses, + CacheReadMisses, + CacheWriteMisses, + CachePrefetchMisses, + ContextSwitches, + PageFaults, + MinorPageFaults, + MajorPageFaults, + AlignmentFaults, + EmulationFaults }; } diff --git a/src/testlib/qbenchmarkperfevents.cpp b/src/testlib/qbenchmarkperfevents.cpp index 178d4cc7e8..5ed76f9aa7 100644 --- a/src/testlib/qbenchmarkperfevents.cpp +++ b/src/testlib/qbenchmarkperfevents.cpp @@ -175,7 +175,7 @@ int QBenchmarkPerfEventsMeasurer::adjustMedianCount(int) QTest::QBenchmarkMetric QBenchmarkPerfEventsMeasurer::metricType() { - return QTest::Events; + return QTest::CPUCycles; } qint64 QBenchmarkPerfEventsMeasurer::readValue() -- cgit v1.2.3 From 051f68c2d3a069543dce4d560facff6aa22284bd Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 9 Apr 2012 17:16:31 -0300 Subject: Add support for more performance counters in QBenchlib Added support for most hardware and software counters available on Linux 3.3. The cache-based counters are missing because they need special handling. Also added an option that lists available counters. Note that the list is of counters the library knows about, not the counters that the hardware can measure. Change-Id: I9f6fb09b5460bf4ac6082081611c1d6ff806a3fa Reviewed-by: Jason McDonald --- src/testlib/qbenchmarkperfevents.cpp | 206 +++++++++++++++++++++++++++++++++-- src/testlib/qbenchmarkperfevents_p.h | 3 + src/testlib/qtestcase.cpp | 12 ++ 3 files changed, 213 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/testlib/qbenchmarkperfevents.cpp b/src/testlib/qbenchmarkperfevents.cpp index 5ed76f9aa7..85a0875a88 100644 --- a/src/testlib/qbenchmarkperfevents.cpp +++ b/src/testlib/qbenchmarkperfevents.cpp @@ -40,6 +40,7 @@ ****************************************************************************/ #include "qbenchmarkperfevents_p.h" +#include "qbenchmarkmetric.h" #include "qbenchmark_p.h" #ifdef QTESTLIB_USE_PERF_EVENTS @@ -60,6 +61,9 @@ QT_BEGIN_NAMESPACE +static quint32 event_type = PERF_TYPE_HARDWARE; +static quint64 event_id = PERF_COUNT_HW_CPU_CYCLES; + /*! \class QBenchmarkPerfEvents \brief The Linux perf events benchmark backend @@ -92,6 +96,182 @@ bool QBenchmarkPerfEventsMeasurer::isAvailable() return perf_event_open(0, 0, 0, 0, 0) == -1 && errno != ENOSYS; } +/* Event list structure + The following table provides the list of supported events + + Event type Event counter Unit Name and aliases + HARDWARE CPU_CYCLES CPUCycles cycles cpu-cycles + HARDWARE INSTRUCTIONS Instructions instructions + HARDWARE CACHE_REFERENCES CacheReferences cache-references + HARDWARE CACHE_MISSES CacheMisses cache-misses + HARDWARE BRANCH_INSTRUCTIONS BranchInstructions branch-instructions branches + HARDWARE BRANCH_MISSES BranchMisses branch-misses + HARDWARE BUS_CYCLES BusCycles bus-cycles + HARDWARE STALLED_CYCLES_FRONTEND StalledCycles stalled-cycles-frontend idle-cycles-frontend + HARDWARE STALLED_CYCLES_BACKEND StalledCycles stalled-cycles-backend idle-cycles-backend + SOFTWARE CPU_CLOCK WalltimeMilliseconds cpu-clock + SOFTWARE TASK_CLOCK WalltimeMilliseconds task-clock + SOFTWARE PAGE_FAULTS PageFaults page-faults faults + SOFTWARE PAGE_FAULTS_MAJ MajorPageFaults major-faults + SOFTWARE PAGE_FAULTS_MIN MinorPageFaults minor-faults + SOFTWARE CONTEXT_SWITCHES ContextSwitches context-switches cs + SOFTWARE CPU_MIGRATIONS CPUMigrations cpu-migrations migrations + SOFTWARE ALIGNMENT_FAULTS AlignmentFaults alignment-faults + SOFTWARE EMULATION_FAULTS EmulationFaults emulation-faults + + Use the following Perl script to re-generate the list +=== cut perl === +#!/usr/bin/env perl +# Load all entries into %map +while () { + m/^\s*(.*)\s*$/; + @_ = split /\s+/, $1; + $type = shift @_; + $id = ($type eq "HARDWARE" ? "PERF_COUNT_HW_" : + $type eq "SOFTWARE" ? "PERF_COUNT_SW_" : + $type eq "HW_CACHE" ? "CACHE_" : "") . shift @_; + $unit = shift @_; + + for $string (@_) { + die "$string was already seen!" if defined($map{$string}); + $map{$string} = [-1, $type, $id, $unit]; + push @strings, $string; + } +} + +# sort the map and print the string list +@strings = sort @strings; +print "static const char eventlist_strings[] = \n"; +$counter = 0; +for $entry (@strings) { + print " \"$entry\\0\"\n"; + $map{$entry}[0] = $counter; + $counter += 1 + length $entry; +} + +# print the table +print " \"\\0\";\n\nstatic const Events eventlist[] = {\n"; +for $entry (sort @strings) { + printf " { %3d, PERF_TYPE_%s, %s, QTest::%s },\n", + $map{$entry}[0], + $map{$entry}[1], + $map{$entry}[2], + $map{$entry}[3]; +} +print " { 0, PERF_TYPE_MAX, 0, QTest::Events }\n};\n"; +=== cut perl === +*/ + +struct Events { + unsigned offset; + quint32 type; + quint64 event_id; + QTest::QBenchmarkMetric metric; +}; + +/* -- BEGIN GENERATED CODE -- */ +static const char eventlist_strings[] = + "alignment-faults\0" + "branch-instructions\0" + "branch-misses\0" + "branches\0" + "bus-cycles\0" + "cache-misses\0" + "cache-references\0" + "context-switches\0" + "cpu-clock\0" + "cpu-cycles\0" + "cpu-migrations\0" + "cs\0" + "cycles\0" + "emulation-faults\0" + "faults\0" + "idle-cycles-backend\0" + "idle-cycles-frontend\0" + "instructions\0" + "major-faults\0" + "migrations\0" + "minor-faults\0" + "page-faults\0" + "stalled-cycles-backend\0" + "stalled-cycles-frontend\0" + "task-clock\0" + "\0"; + +static const Events eventlist[] = { + { 0, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_ALIGNMENT_FAULTS, QTest::AlignmentFaults }, + { 17, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BRANCH_INSTRUCTIONS, QTest::BranchInstructions }, + { 37, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BRANCH_MISSES, QTest::BranchMisses }, + { 51, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BRANCH_INSTRUCTIONS, QTest::BranchInstructions }, + { 60, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BUS_CYCLES, QTest::BusCycles }, + { 71, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CACHE_MISSES, QTest::CacheMisses }, + { 84, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CACHE_REFERENCES, QTest::CacheReferences }, + { 101, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CONTEXT_SWITCHES, QTest::ContextSwitches }, + { 118, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_CLOCK, QTest::WalltimeMilliseconds }, + { 128, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CPU_CYCLES, QTest::CPUCycles }, + { 139, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_MIGRATIONS, QTest::CPUMigrations }, + { 154, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CONTEXT_SWITCHES, QTest::ContextSwitches }, + { 157, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CPU_CYCLES, QTest::CPUCycles }, + { 164, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_EMULATION_FAULTS, QTest::EmulationFaults }, + { 181, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS, QTest::PageFaults }, + { 188, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_BACKEND, QTest::StalledCycles }, + { 208, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, QTest::StalledCycles }, + { 229, PERF_TYPE_HARDWARE, PERF_COUNT_HW_INSTRUCTIONS, QTest::Instructions }, + { 242, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS_MAJ, QTest::MajorPageFaults }, + { 255, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_MIGRATIONS, QTest::CPUMigrations }, + { 266, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS_MIN, QTest::MinorPageFaults }, + { 279, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS, QTest::PageFaults }, + { 291, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_BACKEND, QTest::StalledCycles }, + { 314, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, QTest::StalledCycles }, + { 338, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_TASK_CLOCK, QTest::WalltimeMilliseconds }, + { 0, PERF_TYPE_MAX, 0, QTest::Events } +}; +/* -- END GENERATED CODE -- */ + +QTest::QBenchmarkMetric QBenchmarkPerfEventsMeasurer::metricForEvent(quint32 type, quint64 event_id) +{ + const Events *ptr = eventlist; + for ( ; ptr->type != PERF_TYPE_MAX; ++ptr) { + if (ptr->type == type && ptr->event_id == event_id) + return ptr->metric; + } + return QTest::Events; +} + +void QBenchmarkPerfEventsMeasurer::setCounter(const char *name) +{ + const Events *ptr = eventlist; + for ( ; ptr->type != PERF_TYPE_MAX; ++ptr) { + int c = strcmp(name, eventlist_strings + ptr->offset); + if (c == 0) + break; + if (c < 0) { + fprintf(stderr, "ERROR: Performance counter type '%s' is unknown\n", name); + exit(1); + } + } + + ::event_type = ptr->type; + ::event_id = ptr->event_id; +} + +void QBenchmarkPerfEventsMeasurer::listCounters() +{ + if (!isAvailable()) { + printf("Performance counters are not available on this system\n"); + return; + } + + printf("The following performance counters are available:\n"); + const Events *ptr = eventlist; + for ( ; ptr->type != PERF_TYPE_MAX; ++ptr) { + printf(" %-30s [%s]\n", eventlist_strings + ptr->offset, + ptr->type == PERF_TYPE_HARDWARE ? "hardware" : + ptr->type == PERF_TYPE_SOFTWARE ? "software" : + ptr->type == PERF_TYPE_HW_CACHE ? "cache" : "other"); + } +} + QBenchmarkPerfEventsMeasurer::QBenchmarkPerfEventsMeasurer() : fd(-1) { @@ -103,6 +283,10 @@ QBenchmarkPerfEventsMeasurer::~QBenchmarkPerfEventsMeasurer() } void QBenchmarkPerfEventsMeasurer::init() +{ +} + +void QBenchmarkPerfEventsMeasurer::start() { perf_event_attr attr; memset(&attr, 0, sizeof attr); @@ -119,9 +303,8 @@ void QBenchmarkPerfEventsMeasurer::init() attr.task = true; // trace fork and exit // our event type - // ### FIXME hardcoded for now - attr.type = PERF_TYPE_HARDWARE; - attr.config = PERF_COUNT_HW_CPU_CYCLES; + attr.type = ::event_type; + attr.config = ::event_id; // pid == 0 -> attach to the current process // cpu == -1 -> monitor on all CPUs @@ -134,10 +317,7 @@ void QBenchmarkPerfEventsMeasurer::init() } else { ::fcntl(fd, F_SETFD, FD_CLOEXEC); } -} -void QBenchmarkPerfEventsMeasurer::start() -{ // enable the counter ::ioctl(fd, PERF_EVENT_IOC_RESET); ::ioctl(fd, PERF_EVENT_IOC_ENABLE); @@ -175,10 +355,10 @@ int QBenchmarkPerfEventsMeasurer::adjustMedianCount(int) QTest::QBenchmarkMetric QBenchmarkPerfEventsMeasurer::metricType() { - return QTest::CPUCycles; + return metricForEvent(event_type, event_id); } -qint64 QBenchmarkPerfEventsMeasurer::readValue() +static quint64 rawReadValue(int fd) { /* from the kernel docs: * struct read_format { @@ -213,6 +393,16 @@ qint64 QBenchmarkPerfEventsMeasurer::readValue() return results.value * (double(results.time_running) / double(results.time_enabled)); } +qint64 QBenchmarkPerfEventsMeasurer::readValue() +{ + quint64 raw = rawReadValue(fd); + if (metricType() == QTest::WalltimeMilliseconds) { + // perf returns nanoseconds + return raw / 1000000; + } + return raw; +} + QT_END_NAMESPACE #endif diff --git a/src/testlib/qbenchmarkperfevents_p.h b/src/testlib/qbenchmarkperfevents_p.h index 74966e1699..f73d140300 100644 --- a/src/testlib/qbenchmarkperfevents_p.h +++ b/src/testlib/qbenchmarkperfevents_p.h @@ -74,6 +74,9 @@ public: virtual QTest::QBenchmarkMetric metricType(); static bool isAvailable(); + static QTest::QBenchmarkMetric metricForEvent(quint32 type, quint64 event_id); + static void setCounter(const char *name); + static void listCounters(); private: int fd; diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 87d32da26a..c1ab574291 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -1343,6 +1343,8 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml) #endif #ifdef QTESTLIB_USE_PERF_EVENTS " -perf : Use Linux perf events to time benchmarks\n" + " -perfcounter name : Use the counter named 'name'\n" + " -perfcounterlist : Lists the counters available\n" #endif #ifdef HAVE_TICK_COUNTER " -tickcounter : Use CPU tick counters to time benchmarks\n" @@ -1492,6 +1494,16 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml) } else { fprintf(stderr, "WARNING: Linux perf events not available. Using the walltime measurer.\n"); } + } else if (strcmp(argv[i], "-perfcounter") == 0) { + if (i + 1 >= argc) { + fprintf(stderr, "-perfcounter needs an extra parameter with the name of the counter\n"); + exit(1); + } else { + QBenchmarkPerfEventsMeasurer::setCounter(argv[++i]); + } + } else if (strcmp(argv[i], "-perfcounterlist") == 0) { + QBenchmarkPerfEventsMeasurer::listCounters(); + exit(0); #endif #ifdef HAVE_TICK_COUNTER } else if (strcmp(argv[i], "-tickcounter") == 0) { -- cgit v1.2.3 From 914b56dbf5f8ff96981cff58d5b9293e6463e379 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 9 Apr 2012 18:06:21 -0300 Subject: Add support for the cache-related operations counters in benchlib This adds support for checking cache accesses and misses, per operation (read, write and prefetch) as well as per cache level (L1 for data, L1 for instructions, last level). The branch prediction unit (BPU) is also accessed via the cache monitor subsystem. Change-Id: I8fa96b141cc777c9d231bd57fa36bca33ae7bdfd Reviewed-by: Jason McDonald --- src/testlib/qbenchmarkperfevents.cpp | 203 +++++++++++++++++++++++++++++++---- 1 file changed, 180 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/testlib/qbenchmarkperfevents.cpp b/src/testlib/qbenchmarkperfevents.cpp index 85a0875a88..3fd8ea92fb 100644 --- a/src/testlib/qbenchmarkperfevents.cpp +++ b/src/testlib/qbenchmarkperfevents.cpp @@ -59,6 +59,29 @@ #include "3rdparty/linux_perf_event_p.h" +// for PERF_TYPE_HW_CACHE, the config is a bitmask +// lowest 8 bits: cache type +// bits 8 to 15: cache operation +// bits 16 to 23: cache result +#define CACHE_L1D_READ (PERF_COUNT_HW_CACHE_L1D | PERF_COUNT_HW_CACHE_OP_READ << 8 | PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16) +#define CACHE_L1D_WRITE (PERF_COUNT_HW_CACHE_L1D | PERF_COUNT_HW_CACHE_OP_WRITE << 8 | PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16) +#define CACHE_L1D_PREFETCH (PERF_COUNT_HW_CACHE_L1D | PERF_COUNT_HW_CACHE_OP_PREFETCH << 8 | PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16) +#define CACHE_L1I_READ (PERF_COUNT_HW_CACHE_L1I | PERF_COUNT_HW_CACHE_OP_READ << 8 | PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16) +#define CACHE_L1I_PREFETCH (PERF_COUNT_HW_CACHE_L1I | PERF_COUNT_HW_CACHE_OP_PREFETCH << 8 | PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16) +#define CACHE_LLC_READ (PERF_COUNT_HW_CACHE_LL | PERF_COUNT_HW_CACHE_OP_READ << 8 | PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16) +#define CACHE_LLC_WRITE (PERF_COUNT_HW_CACHE_LL | PERF_COUNT_HW_CACHE_OP_WRITE << 8| PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16) +#define CACHE_LLC_PREFETCH (PERF_COUNT_HW_CACHE_LL | PERF_COUNT_HW_CACHE_OP_PREFETCH << 8 | PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16) +#define CACHE_L1D_READ_MISS (PERF_COUNT_HW_CACHE_L1D | PERF_COUNT_HW_CACHE_OP_READ << 8 | PERF_COUNT_HW_CACHE_RESULT_MISS << 16) +#define CACHE_L1D_WRITE_MISS (PERF_COUNT_HW_CACHE_L1D | PERF_COUNT_HW_CACHE_OP_WRITE << 8 | PERF_COUNT_HW_CACHE_RESULT_MISS << 16) +#define CACHE_L1D_PREFETCH_MISS (PERF_COUNT_HW_CACHE_L1D | PERF_COUNT_HW_CACHE_OP_PREFETCH << 8 | PERF_COUNT_HW_CACHE_RESULT_MISS << 16) +#define CACHE_L1I_READ_MISS (PERF_COUNT_HW_CACHE_L1I | PERF_COUNT_HW_CACHE_OP_READ << 8 | PERF_COUNT_HW_CACHE_RESULT_MISS << 16) +#define CACHE_L1I_PREFETCH_MISS (PERF_COUNT_HW_CACHE_L1I | PERF_COUNT_HW_CACHE_OP_PREFETCH << 8 | PERF_COUNT_HW_CACHE_RESULT_MISS << 16) +#define CACHE_LLC_READ_MISS (PERF_COUNT_HW_CACHE_LL | PERF_COUNT_HW_CACHE_OP_READ << 8 | PERF_COUNT_HW_CACHE_RESULT_MISS << 16) +#define CACHE_LLC_WRITE_MISS (PERF_COUNT_HW_CACHE_LL | PERF_COUNT_HW_CACHE_OP_WRITE << 8 | PERF_COUNT_HW_CACHE_RESULT_MISS << 16) +#define CACHE_LLC_PREFETCH_MISS (PERF_COUNT_HW_CACHE_LL | PERF_COUNT_HW_CACHE_OP_PREFETCH << 8 | PERF_COUNT_HW_CACHE_RESULT_MISS << 16) +#define CACHE_BRANCH_READ (PERF_COUNT_HW_CACHE_BPU | PERF_COUNT_HW_CACHE_OP_READ << 8 | PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16) +#define CACHE_BRANCH_READ_MISS (PERF_COUNT_HW_CACHE_BPU | PERF_COUNT_HW_CACHE_OP_READ << 8 | PERF_COUNT_HW_CACHE_RESULT_MISS << 16) + QT_BEGIN_NAMESPACE static quint32 event_type = PERF_TYPE_HARDWARE; @@ -118,6 +141,24 @@ bool QBenchmarkPerfEventsMeasurer::isAvailable() SOFTWARE CPU_MIGRATIONS CPUMigrations cpu-migrations migrations SOFTWARE ALIGNMENT_FAULTS AlignmentFaults alignment-faults SOFTWARE EMULATION_FAULTS EmulationFaults emulation-faults + HW_CACHE L1D_READ CacheReads l1d-cache-reads l1d-cache-loads l1d-reads l1d-loads + HW_CACHE L1D_WRITE CacheWrites l1d-cache-writes l1d-cache-stores l1d-writes l1d-stores + HW_CACHE L1D_PREFETCH CachePrefetches l1d-cache-prefetches l1d-prefetches + HW_CACHE L1I_READ CacheReads l1i-cache-reads l1i-cache-loads l1i-reads l1i-loads + HW_CACHE L1I_PREFETCH CachePrefetches l1i-cache-prefetches l1i-prefetches + HW_CACHE LLC_READ CacheReads llc-cache-reads llc-cache-loads llc-loads llc-reads + HW_CACHE LLC_WRITE CacheWrites llc-cache-writes llc-cache-stores llc-writes llc-stores + HW_CACHE LLC_PREFETCH CachePrefetches llc-cache-prefetches llc-prefetches + HW_CACHE L1D_READ_MISS CacheReads l1d-cache-read-misses l1d-cache-load-misses l1d-read-misses l1d-load-misses + HW_CACHE L1D_WRITE_MISS CacheWrites l1d-cache-write-misses l1d-cache-store-misses l1d-write-misses l1d-store-misses + HW_CACHE L1D_PREFETCH_MISS CachePrefetches l1d-cache-prefetch-misses l1d-prefetch-misses + HW_CACHE L1I_READ_MISS CacheReads l1i-cache-read-misses l1i-cache-load-misses l1i-read-misses l1i-load-misses + HW_CACHE L1I_PREFETCH_MISS CachePrefetches l1i-cache-prefetch-misses l1i-prefetch-misses + HW_CACHE LLC_READ_MISS CacheReads llc-cache-read-misses llc-cache-load-misses llc-read-misses llc-load-misses + HW_CACHE LLC_WRITE_MISS CacheWrites llc-cache-write-misses llc-cache-store-misses llc-write-misses llc-store-misses + HW_CACHE LLC_PREFETCH_MISS CachePrefetches llc-cache-prefetch-misses llc-prefetch-misses + HW_CACHE BRANCH_READ BranchInstructions branch-reads branch-loads branch-predicts + HW_CACHE BRANCH_READ_MISS BranchMisses branch-mispredicts branch-read-misses branch-load-misses Use the following Perl script to re-generate the list === cut perl === @@ -173,7 +214,13 @@ struct Events { static const char eventlist_strings[] = "alignment-faults\0" "branch-instructions\0" + "branch-load-misses\0" + "branch-loads\0" + "branch-mispredicts\0" "branch-misses\0" + "branch-predicts\0" + "branch-read-misses\0" + "branch-reads\0" "branches\0" "bus-cycles\0" "cache-misses\0" @@ -189,6 +236,58 @@ static const char eventlist_strings[] = "idle-cycles-backend\0" "idle-cycles-frontend\0" "instructions\0" + "l1d-cache-load-misses\0" + "l1d-cache-loads\0" + "l1d-cache-prefetch-misses\0" + "l1d-cache-prefetches\0" + "l1d-cache-read-misses\0" + "l1d-cache-reads\0" + "l1d-cache-store-misses\0" + "l1d-cache-stores\0" + "l1d-cache-write-misses\0" + "l1d-cache-writes\0" + "l1d-load-misses\0" + "l1d-loads\0" + "l1d-prefetch-misses\0" + "l1d-prefetches\0" + "l1d-read-misses\0" + "l1d-reads\0" + "l1d-store-misses\0" + "l1d-stores\0" + "l1d-write-misses\0" + "l1d-writes\0" + "l1i-cache-load-misses\0" + "l1i-cache-loads\0" + "l1i-cache-prefetch-misses\0" + "l1i-cache-prefetches\0" + "l1i-cache-read-misses\0" + "l1i-cache-reads\0" + "l1i-load-misses\0" + "l1i-loads\0" + "l1i-prefetch-misses\0" + "l1i-prefetches\0" + "l1i-read-misses\0" + "l1i-reads\0" + "llc-cache-load-misses\0" + "llc-cache-loads\0" + "llc-cache-prefetch-misses\0" + "llc-cache-prefetches\0" + "llc-cache-read-misses\0" + "llc-cache-reads\0" + "llc-cache-store-misses\0" + "llc-cache-stores\0" + "llc-cache-write-misses\0" + "llc-cache-writes\0" + "llc-load-misses\0" + "llc-loads\0" + "llc-prefetch-misses\0" + "llc-prefetches\0" + "llc-read-misses\0" + "llc-reads\0" + "llc-store-misses\0" + "llc-stores\0" + "llc-write-misses\0" + "llc-writes\0" "major-faults\0" "migrations\0" "minor-faults\0" @@ -201,29 +300,87 @@ static const char eventlist_strings[] = static const Events eventlist[] = { { 0, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_ALIGNMENT_FAULTS, QTest::AlignmentFaults }, { 17, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BRANCH_INSTRUCTIONS, QTest::BranchInstructions }, - { 37, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BRANCH_MISSES, QTest::BranchMisses }, - { 51, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BRANCH_INSTRUCTIONS, QTest::BranchInstructions }, - { 60, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BUS_CYCLES, QTest::BusCycles }, - { 71, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CACHE_MISSES, QTest::CacheMisses }, - { 84, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CACHE_REFERENCES, QTest::CacheReferences }, - { 101, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CONTEXT_SWITCHES, QTest::ContextSwitches }, - { 118, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_CLOCK, QTest::WalltimeMilliseconds }, - { 128, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CPU_CYCLES, QTest::CPUCycles }, - { 139, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_MIGRATIONS, QTest::CPUMigrations }, - { 154, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CONTEXT_SWITCHES, QTest::ContextSwitches }, - { 157, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CPU_CYCLES, QTest::CPUCycles }, - { 164, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_EMULATION_FAULTS, QTest::EmulationFaults }, - { 181, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS, QTest::PageFaults }, - { 188, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_BACKEND, QTest::StalledCycles }, - { 208, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, QTest::StalledCycles }, - { 229, PERF_TYPE_HARDWARE, PERF_COUNT_HW_INSTRUCTIONS, QTest::Instructions }, - { 242, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS_MAJ, QTest::MajorPageFaults }, - { 255, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_MIGRATIONS, QTest::CPUMigrations }, - { 266, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS_MIN, QTest::MinorPageFaults }, - { 279, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS, QTest::PageFaults }, - { 291, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_BACKEND, QTest::StalledCycles }, - { 314, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, QTest::StalledCycles }, - { 338, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_TASK_CLOCK, QTest::WalltimeMilliseconds }, + { 37, PERF_TYPE_HW_CACHE, CACHE_BRANCH_READ_MISS, QTest::BranchMisses }, + { 56, PERF_TYPE_HW_CACHE, CACHE_BRANCH_READ, QTest::BranchInstructions }, + { 69, PERF_TYPE_HW_CACHE, CACHE_BRANCH_READ_MISS, QTest::BranchMisses }, + { 88, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BRANCH_MISSES, QTest::BranchMisses }, + { 102, PERF_TYPE_HW_CACHE, CACHE_BRANCH_READ, QTest::BranchInstructions }, + { 118, PERF_TYPE_HW_CACHE, CACHE_BRANCH_READ_MISS, QTest::BranchMisses }, + { 137, PERF_TYPE_HW_CACHE, CACHE_BRANCH_READ, QTest::BranchInstructions }, + { 150, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BRANCH_INSTRUCTIONS, QTest::BranchInstructions }, + { 159, PERF_TYPE_HARDWARE, PERF_COUNT_HW_BUS_CYCLES, QTest::BusCycles }, + { 170, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CACHE_MISSES, QTest::CacheMisses }, + { 183, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CACHE_REFERENCES, QTest::CacheReferences }, + { 200, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CONTEXT_SWITCHES, QTest::ContextSwitches }, + { 217, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_CLOCK, QTest::WalltimeMilliseconds }, + { 227, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CPU_CYCLES, QTest::CPUCycles }, + { 238, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_MIGRATIONS, QTest::CPUMigrations }, + { 253, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CONTEXT_SWITCHES, QTest::ContextSwitches }, + { 256, PERF_TYPE_HARDWARE, PERF_COUNT_HW_CPU_CYCLES, QTest::CPUCycles }, + { 263, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_EMULATION_FAULTS, QTest::EmulationFaults }, + { 280, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS, QTest::PageFaults }, + { 287, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_BACKEND, QTest::StalledCycles }, + { 307, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, QTest::StalledCycles }, + { 328, PERF_TYPE_HARDWARE, PERF_COUNT_HW_INSTRUCTIONS, QTest::Instructions }, + { 341, PERF_TYPE_HW_CACHE, CACHE_L1D_READ_MISS, QTest::CacheReads }, + { 363, PERF_TYPE_HW_CACHE, CACHE_L1D_READ, QTest::CacheReads }, + { 379, PERF_TYPE_HW_CACHE, CACHE_L1D_PREFETCH_MISS, QTest::CachePrefetches }, + { 405, PERF_TYPE_HW_CACHE, CACHE_L1D_PREFETCH, QTest::CachePrefetches }, + { 426, PERF_TYPE_HW_CACHE, CACHE_L1D_READ_MISS, QTest::CacheReads }, + { 448, PERF_TYPE_HW_CACHE, CACHE_L1D_READ, QTest::CacheReads }, + { 464, PERF_TYPE_HW_CACHE, CACHE_L1D_WRITE_MISS, QTest::CacheWrites }, + { 487, PERF_TYPE_HW_CACHE, CACHE_L1D_WRITE, QTest::CacheWrites }, + { 504, PERF_TYPE_HW_CACHE, CACHE_L1D_WRITE_MISS, QTest::CacheWrites }, + { 527, PERF_TYPE_HW_CACHE, CACHE_L1D_WRITE, QTest::CacheWrites }, + { 544, PERF_TYPE_HW_CACHE, CACHE_L1D_READ_MISS, QTest::CacheReads }, + { 560, PERF_TYPE_HW_CACHE, CACHE_L1D_READ, QTest::CacheReads }, + { 570, PERF_TYPE_HW_CACHE, CACHE_L1D_PREFETCH_MISS, QTest::CachePrefetches }, + { 590, PERF_TYPE_HW_CACHE, CACHE_L1D_PREFETCH, QTest::CachePrefetches }, + { 605, PERF_TYPE_HW_CACHE, CACHE_L1D_READ_MISS, QTest::CacheReads }, + { 621, PERF_TYPE_HW_CACHE, CACHE_L1D_READ, QTest::CacheReads }, + { 631, PERF_TYPE_HW_CACHE, CACHE_L1D_WRITE_MISS, QTest::CacheWrites }, + { 648, PERF_TYPE_HW_CACHE, CACHE_L1D_WRITE, QTest::CacheWrites }, + { 659, PERF_TYPE_HW_CACHE, CACHE_L1D_WRITE_MISS, QTest::CacheWrites }, + { 676, PERF_TYPE_HW_CACHE, CACHE_L1D_WRITE, QTest::CacheWrites }, + { 687, PERF_TYPE_HW_CACHE, CACHE_L1I_READ_MISS, QTest::CacheReads }, + { 709, PERF_TYPE_HW_CACHE, CACHE_L1I_READ, QTest::CacheReads }, + { 725, PERF_TYPE_HW_CACHE, CACHE_L1I_PREFETCH_MISS, QTest::CachePrefetches }, + { 751, PERF_TYPE_HW_CACHE, CACHE_L1I_PREFETCH, QTest::CachePrefetches }, + { 772, PERF_TYPE_HW_CACHE, CACHE_L1I_READ_MISS, QTest::CacheReads }, + { 794, PERF_TYPE_HW_CACHE, CACHE_L1I_READ, QTest::CacheReads }, + { 810, PERF_TYPE_HW_CACHE, CACHE_L1I_READ_MISS, QTest::CacheReads }, + { 826, PERF_TYPE_HW_CACHE, CACHE_L1I_READ, QTest::CacheReads }, + { 836, PERF_TYPE_HW_CACHE, CACHE_L1I_PREFETCH_MISS, QTest::CachePrefetches }, + { 856, PERF_TYPE_HW_CACHE, CACHE_L1I_PREFETCH, QTest::CachePrefetches }, + { 871, PERF_TYPE_HW_CACHE, CACHE_L1I_READ_MISS, QTest::CacheReads }, + { 887, PERF_TYPE_HW_CACHE, CACHE_L1I_READ, QTest::CacheReads }, + { 897, PERF_TYPE_HW_CACHE, CACHE_LLC_READ_MISS, QTest::CacheReads }, + { 919, PERF_TYPE_HW_CACHE, CACHE_LLC_READ, QTest::CacheReads }, + { 935, PERF_TYPE_HW_CACHE, CACHE_LLC_PREFETCH_MISS, QTest::CachePrefetches }, + { 961, PERF_TYPE_HW_CACHE, CACHE_LLC_PREFETCH, QTest::CachePrefetches }, + { 982, PERF_TYPE_HW_CACHE, CACHE_LLC_READ_MISS, QTest::CacheReads }, + { 1004, PERF_TYPE_HW_CACHE, CACHE_LLC_READ, QTest::CacheReads }, + { 1020, PERF_TYPE_HW_CACHE, CACHE_LLC_WRITE_MISS, QTest::CacheWrites }, + { 1043, PERF_TYPE_HW_CACHE, CACHE_LLC_WRITE, QTest::CacheWrites }, + { 1060, PERF_TYPE_HW_CACHE, CACHE_LLC_WRITE_MISS, QTest::CacheWrites }, + { 1083, PERF_TYPE_HW_CACHE, CACHE_LLC_WRITE, QTest::CacheWrites }, + { 1100, PERF_TYPE_HW_CACHE, CACHE_LLC_READ_MISS, QTest::CacheReads }, + { 1116, PERF_TYPE_HW_CACHE, CACHE_LLC_READ, QTest::CacheReads }, + { 1126, PERF_TYPE_HW_CACHE, CACHE_LLC_PREFETCH_MISS, QTest::CachePrefetches }, + { 1146, PERF_TYPE_HW_CACHE, CACHE_LLC_PREFETCH, QTest::CachePrefetches }, + { 1161, PERF_TYPE_HW_CACHE, CACHE_LLC_READ_MISS, QTest::CacheReads }, + { 1177, PERF_TYPE_HW_CACHE, CACHE_LLC_READ, QTest::CacheReads }, + { 1187, PERF_TYPE_HW_CACHE, CACHE_LLC_WRITE_MISS, QTest::CacheWrites }, + { 1204, PERF_TYPE_HW_CACHE, CACHE_LLC_WRITE, QTest::CacheWrites }, + { 1215, PERF_TYPE_HW_CACHE, CACHE_LLC_WRITE_MISS, QTest::CacheWrites }, + { 1232, PERF_TYPE_HW_CACHE, CACHE_LLC_WRITE, QTest::CacheWrites }, + { 1243, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS_MAJ, QTest::MajorPageFaults }, + { 1256, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_MIGRATIONS, QTest::CPUMigrations }, + { 1267, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS_MIN, QTest::MinorPageFaults }, + { 1280, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_PAGE_FAULTS, QTest::PageFaults }, + { 1292, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_BACKEND, QTest::StalledCycles }, + { 1315, PERF_TYPE_HARDWARE, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, QTest::StalledCycles }, + { 1339, PERF_TYPE_SOFTWARE, PERF_COUNT_SW_TASK_CLOCK, QTest::WalltimeMilliseconds }, { 0, PERF_TYPE_MAX, 0, QTest::Events } }; /* -- END GENERATED CODE -- */ -- cgit v1.2.3 From 3963ab9d7370083445e7f0ff506ab196669ae267 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 9 Apr 2012 18:22:38 -0300 Subject: Store the performance counter attributes globally This will allow us to modify more attributes from the command-line Change-Id: I84d4933cbfa2b69c4e1009eaf3e005cfc3e7e01c Reviewed-by: Jason McDonald --- src/testlib/qbenchmarkperfevents.cpp | 49 ++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/testlib/qbenchmarkperfevents.cpp b/src/testlib/qbenchmarkperfevents.cpp index 3fd8ea92fb..f5dae0bf5a 100644 --- a/src/testlib/qbenchmarkperfevents.cpp +++ b/src/testlib/qbenchmarkperfevents.cpp @@ -84,8 +84,28 @@ QT_BEGIN_NAMESPACE -static quint32 event_type = PERF_TYPE_HARDWARE; -static quint64 event_id = PERF_COUNT_HW_CPU_CYCLES; +static perf_event_attr attr; + +static void initPerf() +{ + static bool done; + if (!done) { + memset(&attr, 0, sizeof attr); + attr.size = sizeof attr; + attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | PERF_FORMAT_TOTAL_TIME_RUNNING; + attr.disabled = true; // we'll enable later + attr.inherit = true; // let children processes inherit the monitoring + attr.pinned = true; // keep it running in the hardware + attr.inherit_stat = true; // aggregate all the info from child processes + attr.task = true; // trace fork/exits + + // set a default performance counter: CPU cycles + attr.type = PERF_TYPE_HARDWARE; + attr.config = PERF_COUNT_HW_CPU_CYCLES; // default + + done = true; + } +} /*! \class QBenchmarkPerfEvents @@ -397,6 +417,7 @@ QTest::QBenchmarkMetric QBenchmarkPerfEventsMeasurer::metricForEvent(quint32 typ void QBenchmarkPerfEventsMeasurer::setCounter(const char *name) { + initPerf(); const Events *ptr = eventlist; for ( ; ptr->type != PERF_TYPE_MAX; ++ptr) { int c = strcmp(name, eventlist_strings + ptr->offset); @@ -408,8 +429,8 @@ void QBenchmarkPerfEventsMeasurer::setCounter(const char *name) } } - ::event_type = ptr->type; - ::event_id = ptr->event_id; + attr.type = ptr->type; + attr.config = ptr->event_id; } void QBenchmarkPerfEventsMeasurer::listCounters() @@ -445,24 +466,8 @@ void QBenchmarkPerfEventsMeasurer::init() void QBenchmarkPerfEventsMeasurer::start() { - perf_event_attr attr; - memset(&attr, 0, sizeof attr); - - // common init - attr.size = sizeof attr; - attr.sample_period = 0; - attr.sample_type = 0; - attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | PERF_FORMAT_TOTAL_TIME_RUNNING; - attr.disabled = true; // start disabled, we'll enable later - attr.inherit = true; // let children inherit, if the benchmark has child processes - attr.pinned = true; // keep it running on the PMU - attr.inherit_stat = true; // collapse all the info from child processes - attr.task = true; // trace fork and exit - - // our event type - attr.type = ::event_type; - attr.config = ::event_id; + initPerf(); // pid == 0 -> attach to the current process // cpu == -1 -> monitor on all CPUs // group_fd == -1 -> this is the group leader @@ -512,7 +517,7 @@ int QBenchmarkPerfEventsMeasurer::adjustMedianCount(int) QTest::QBenchmarkMetric QBenchmarkPerfEventsMeasurer::metricType() { - return metricForEvent(event_type, event_id); + return metricForEvent(attr.type, attr.config); } static quint64 rawReadValue(int fd) -- cgit v1.2.3 From 408fa1e2b9c4c9310279388285342cb25ccbda17 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 9 Apr 2012 18:35:49 -0300 Subject: Add support for attributes in the -perfcounter argument Five attributes are supported, matching what the perf(1) tool supports. The 'p' attribute (precise IP reporting) wasn't added because we don't do assembly-level debugging with benchlib. Change-Id: I726f735a5bcc0c97e62cde0fbe0843597068ad7c Reviewed-by: Jason McDonald --- src/testlib/qbenchmarkperfevents.cpp | 39 +++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/testlib/qbenchmarkperfevents.cpp b/src/testlib/qbenchmarkperfevents.cpp index f5dae0bf5a..e3034d1f94 100644 --- a/src/testlib/qbenchmarkperfevents.cpp +++ b/src/testlib/qbenchmarkperfevents.cpp @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -418,9 +419,11 @@ QTest::QBenchmarkMetric QBenchmarkPerfEventsMeasurer::metricForEvent(quint32 typ void QBenchmarkPerfEventsMeasurer::setCounter(const char *name) { initPerf(); + const char *colon = strchr(name, ':'); + int n = colon ? colon - name : strlen(name); const Events *ptr = eventlist; for ( ; ptr->type != PERF_TYPE_MAX; ++ptr) { - int c = strcmp(name, eventlist_strings + ptr->offset); + int c = strncmp(name, eventlist_strings + ptr->offset, n); if (c == 0) break; if (c < 0) { @@ -431,6 +434,32 @@ void QBenchmarkPerfEventsMeasurer::setCounter(const char *name) attr.type = ptr->type; attr.config = ptr->event_id; + + // now parse the attributes + if (!colon) + return; + while (*++colon) { + switch (*colon) { + case 'u': + attr.exclude_user = true; + break; + case 'k': + attr.exclude_kernel = true; + break; + case 'h': + attr.exclude_hv = true; + break; + case 'G': + attr.exclude_guest = true; + break; + case 'H': + attr.exclude_host = true; + break; + default: + fprintf(stderr, "ERROR: Unknown attribute '%c'\n", *colon); + exit(1); + } + } } void QBenchmarkPerfEventsMeasurer::listCounters() @@ -448,6 +477,14 @@ void QBenchmarkPerfEventsMeasurer::listCounters() ptr->type == PERF_TYPE_SOFTWARE ? "software" : ptr->type == PERF_TYPE_HW_CACHE ? "cache" : "other"); } + + printf("\nAttributes can be specified by adding a colon and the following:\n" + " u - exclude measuring in the userspace\n" + " k - exclude measuring in kernel mode\n" + " h - exclude measuring in the hypervisor\n" + " G - exclude measuring when running virtualized (guest VM)\n" + " H - exclude measuring when running non-virtualized (host system)\n" + "Attributes can be combined, for example: -perfcounter branch-mispredicts:kh\n"); } QBenchmarkPerfEventsMeasurer::QBenchmarkPerfEventsMeasurer() -- cgit v1.2.3 From 510660080de6fab87e117de2663c33eff5ae451b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Wed, 13 Feb 2013 17:48:49 +0100 Subject: QVector - add remove functions This patch adds the functions removeFirst() and removeLast(). Functions that QList has. Beside making these functions, pop_back and pop_front are redirected to these rather than calling erase. Change-Id: Ifc5f8a78e33f436f06f21095a920ec5d4311fd6f Reviewed-by: Thiago Macieira --- src/corelib/tools/qvector.cpp | 24 ++++++++++++++++++++++-- src/corelib/tools/qvector.h | 6 ++++-- 2 files changed, 26 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp index efc4b6a446..5ece011f0b 100644 --- a/src/corelib/tools/qvector.cpp +++ b/src/corelib/tools/qvector.cpp @@ -544,6 +544,26 @@ \sa insert(), replace(), fill() */ +/*! \fn void QVector::removeFirst() + \since 5.1 + Removes the first item in the vector. Calling this function is + equivalent to calling remove(0). The vector must not be empty. If + the vector can be empty, call isEmpty() before calling this + function. + + \sa remove(), isEmpty() +*/ + +/*! \fn void QVector::removeLast() + \since 5.1 + Removes the last item in the vector. Calling this function is + equivalent to calling remove(size() - 1). The vector must not be + empty. If the vector can be empty, call isEmpty() before calling + this function. + + \sa remove(), removeFirst(), isEmpty() +*/ + /*! \fn QVector &QVector::fill(const T &value, int size = -1) Assigns \a value to all items in the vector. If \a size is @@ -773,13 +793,13 @@ /*! \fn void QVector::pop_front() This function is provided for STL compatibility. It is equivalent - to erase(begin()). + to removeFirst(). */ /*! \fn void QVector::pop_back() This function is provided for STL compatibility. It is equivalent - to erase(end() - 1). + to removeLast(). */ /*! \fn T& QVector::front() diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h index 7d5cf91324..f6fe316a15 100644 --- a/src/corelib/tools/qvector.h +++ b/src/corelib/tools/qvector.h @@ -138,6 +138,8 @@ public: void replace(int i, const T &t); void remove(int i); void remove(int i, int n); + inline void removeFirst() { Q_ASSERT(!isEmpty()); erase(d->begin()); } + inline void removeLast() { Q_ASSERT(!isEmpty()); erase(d->end() - 1); } QVector &fill(const T &t, int size = -1); @@ -198,8 +200,8 @@ public: typedef int size_type; inline void push_back(const T &t) { append(t); } inline void push_front(const T &t) { prepend(t); } - void pop_back() { Q_ASSERT(!isEmpty()); erase(d->end() - 1); } - void pop_front() { Q_ASSERT(!isEmpty()); erase(d->begin()); } + void pop_back() { removeLast(); } + void pop_front() { removeFirst(); } inline bool empty() const { return d->size == 0; } inline T& front() { return first(); } -- cgit v1.2.3 From ab52e722926d495e29263e59a466ad5ff0106275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Sat, 16 Feb 2013 20:20:35 +0100 Subject: QVector - add functions takeFirst and takeLast This patch adds takeFirst and takeLast which are functions that QList also has. Change-Id: I761f90b529774edc8fa96e07c6fcf76226123b20 Reviewed-by: Thiago Macieira --- src/corelib/tools/qvector.cpp | 26 ++++++++++++++++++++++++-- src/corelib/tools/qvector.h | 2 ++ 2 files changed, 26 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp index 5ece011f0b..e72c1964a2 100644 --- a/src/corelib/tools/qvector.cpp +++ b/src/corelib/tools/qvector.cpp @@ -551,7 +551,7 @@ the vector can be empty, call isEmpty() before calling this function. - \sa remove(), isEmpty() + \sa remove(), takeFirst(), isEmpty() */ /*! \fn void QVector::removeLast() @@ -561,9 +561,31 @@ empty. If the vector can be empty, call isEmpty() before calling this function. - \sa remove(), removeFirst(), isEmpty() + \sa remove(), takeLast(), removeFirst(), isEmpty() */ +/*! \fn T QVector::takeFirst() + + Removes the first item in the vector and returns it. This function + assumes the vector is not empty. To avoid failure, call isEmpty() + before calling this function. + + \sa takeLast(), removeFirst() +*/ + +/*! \fn T QVector::takeLast() + + Removes the last item in the list and returns it. This function + assumes the vector is not empty. To avoid failure, call isEmpty() + before calling this function. + + If you don't use the return value, removeLast() is more + efficient. + + \sa takeFirst(), removeLast() +*/ + + /*! \fn QVector &QVector::fill(const T &value, int size = -1) Assigns \a value to all items in the vector. If \a size is diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h index f6fe316a15..e2c28e4060 100644 --- a/src/corelib/tools/qvector.h +++ b/src/corelib/tools/qvector.h @@ -140,6 +140,8 @@ public: void remove(int i, int n); inline void removeFirst() { Q_ASSERT(!isEmpty()); erase(d->begin()); } inline void removeLast() { Q_ASSERT(!isEmpty()); erase(d->end() - 1); } + inline T takeFirst() { Q_ASSERT(!isEmpty()); T r = first(); removeFirst(); return r; } + inline T takeLast() { Q_ASSERT(!isEmpty()); T r = last(); removeLast(); return r; } QVector &fill(const T &t, int size = -1); -- cgit v1.2.3 From 3222db0937aaf1ae5681bc124406ec37f550bc7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Martsum?= Date: Thu, 10 Jan 2013 19:42:59 +0100 Subject: QVector - removeLast optimize In case somebody uses QVector as a stack, it is not fair to have takeLast, removeLast and pop_back to do way too much work. This is still very slow compared to std::vector::pop_back (mostly due implicit sharing), however it is more than a factor faster than before. Change-Id: I636872675e80c8ca0c8ebc94b04f587a2dcd6d8d Reviewed-by: Thiago Macieira --- src/corelib/tools/qvector.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h index e2c28e4060..a06fb7b4eb 100644 --- a/src/corelib/tools/qvector.h +++ b/src/corelib/tools/qvector.h @@ -139,7 +139,7 @@ public: void remove(int i); void remove(int i, int n); inline void removeFirst() { Q_ASSERT(!isEmpty()); erase(d->begin()); } - inline void removeLast() { Q_ASSERT(!isEmpty()); erase(d->end() - 1); } + inline void removeLast(); inline T takeFirst() { Q_ASSERT(!isEmpty()); T r = first(); removeFirst(); return r; } inline T takeLast() { Q_ASSERT(!isEmpty()); T r = last(); removeLast(); return r; } @@ -557,6 +557,22 @@ void QVector::append(const T &t) ++d->size; } +template +inline void QVector::removeLast() +{ + Q_ASSERT(!isEmpty()); + + if (d->alloc) { + if (d->ref.isShared()) { + reallocData(d->size - 1, int(d->alloc)); + return; + } + if (QTypeInfo::isComplex) + (d->data() + d->size - 1)->~T(); + --d->size; + } +} + template typename QVector::iterator QVector::insert(iterator before, size_type n, const T &t) { @@ -606,6 +622,7 @@ typename QVector::iterator QVector::erase(iterator abegin, iterator aend) // FIXME we could do a proper realloc, which copy constructs only needed data. // FIXME we ara about to delete data maybe it is good time to shrink? + // FIXME the shrink is also an issue in removeLast, that is just a copy + reduce of this. if (d->alloc) { detach(); abegin = d->begin() + itemsUntouched; -- cgit v1.2.3 From 6b68be9587c6d6946faff34f88d80de53f11ed86 Mon Sep 17 00:00:00 2001 From: Axel Waggershauser Date: Wed, 6 Mar 2013 17:18:48 +0100 Subject: Let QMetaObject::connectSlotsByName(o) also check for signals of o QMetaObject::connectSlotsByName(QObject* o) creates a list of all children to look for signals that match slots of o. This changeset simply adds the object o itself to that list. The motivation is to finally fix the long standing QtCreator bug QTCREATORBUG-6494. Where executing 'Go to slot...' and choosing 'accepted()' for a simple QDialog named 'MyDialog' will add a on_MyDialog_accepted() slot to MyDialog. That slot never gets connected. More details may be found in the linked QTBUG-7595. Task-number: QTBUG-7595 Task-number: QTCREATORBUG-6494 Change-Id: I35f52761791af697eabb569adb5faee6fae50638 Reviewed-by: Olivier Goffart Reviewed-by: Friedemann Kleint --- src/corelib/kernel/qobject.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index c96fb446d6..617fadc1ab 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3219,6 +3219,9 @@ bool QMetaObjectPrivate::disconnect(const QObject *sender, \snippet code/src_corelib_kernel_qobject.cpp 34 + If \a object itself has a properly set object name, its own signals are also + connected to its respective slots. + \sa QObject::setObjectName() */ void QMetaObject::connectSlotsByName(QObject *o) @@ -3227,7 +3230,10 @@ void QMetaObject::connectSlotsByName(QObject *o) return; const QMetaObject *mo = o->metaObject(); Q_ASSERT(mo); - const QObjectList list = o->findChildren(QString()); + const QObjectList list = // list of all objects to look for matching signals including... + o->findChildren(QString()) // all children of 'o'... + << o; // and the object 'o' itself + for (int i = 0; i < mo->methodCount(); ++i) { QByteArray slotSignature = mo->method(i).methodSignature(); const char *slot = slotSignature.constData(); -- cgit v1.2.3 From c2f17ad937d410180f511365b05bf06985823137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Mon, 4 Mar 2013 12:46:14 +0100 Subject: Fixed build of SSL when using android-no-sdk. Introduced Q_OS_ANDROID_NO_SDK which makes more sense than Q_OS_LINUX_ANDROID when Q_OS_ANDROID also defines Q_OS_LINUX. Change-Id: Id2aa228b66daffba82776a12c91a264a360afd86 Reviewed-by: Gunnar Sletta --- src/network/ssl/qsslsocket_openssl_symbols.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp index 2be62515e8..fed99752b0 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols.cpp +++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp @@ -67,7 +67,7 @@ #if defined(Q_OS_UNIX) #include #endif -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID_NO_SDK) #include #endif @@ -383,7 +383,7 @@ static bool libGreaterThan(const QString &lhs, const QString &rhs) return true; } -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID_NO_SDK) static int dlIterateCallback(struct dl_phdr_info *info, size_t size, void *data) { if (size < sizeof (info->dlpi_addr) + sizeof (info->dlpi_name)) @@ -414,7 +414,9 @@ static QStringList libraryPathList() paths << QLatin1String("/lib64") << QLatin1String("/usr/lib64") << QLatin1String("/usr/local/lib64"); paths << QLatin1String("/lib32") << QLatin1String("/usr/lib32") << QLatin1String("/usr/local/lib32"); -#ifdef Q_OS_LINUX +#if defined(Q_OS_ANDROID_NO_SDK) + paths << QLatin1String("/system/lib"); +#elif defined(Q_OS_LINUX) // discover paths of already loaded libraries QSet loadedPaths; dl_iterate_phdr(dlIterateCallback, &loadedPaths); -- cgit v1.2.3 From 341fb50d5b4433193b47cffa0d513f633d9978cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 6 Mar 2013 08:37:07 +0100 Subject: Fixed android-no-sdk build by excluding platformsupport/jniconvenience. Change-Id: I02e45523a0e35aad3afdbef4a4b3a00de32663f3 Reviewed-by: Gunnar Sletta --- src/platformsupport/jniconvenience/jniconvenience.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/platformsupport/jniconvenience/jniconvenience.pri b/src/platformsupport/jniconvenience/jniconvenience.pri index 991518e370..ca7c5b1e96 100644 --- a/src/platformsupport/jniconvenience/jniconvenience.pri +++ b/src/platformsupport/jniconvenience/jniconvenience.pri @@ -1,4 +1,4 @@ -android { +android:!android-no-sdk { QT += gui-private HEADERS += $$PWD/qjnihelpers_p.h \ -- cgit v1.2.3 From eef7a68acdce3735bbe684acfb1efb836b3c8df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 7 Mar 2013 00:03:17 +0100 Subject: Disable PCRE JIT on iOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First of all, we were missing an implementation of SLJIT_CACHE_FLUSH, as ___clear_cache was not available and we would get missing symbols. This was fixed in upstream PCRE 8.31, but even then the JIT would only work on jailbroken devices, so we disable it. http://bugs.exim.org/show_bug.cgi?id=1243 Change-Id: I678f9a31eb76d7d08882465befb9d799e46e7cf8 Reviewed-by: Richard Moe Gustavsen Reviewed-by: Simon Hausmann Reviewed-by: Morten Johan Sørvig Reviewed-by: Giuseppe D'Angelo --- src/3rdparty/pcre.pri | 1 + src/3rdparty/pcre/config.h | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/3rdparty/pcre.pri b/src/3rdparty/pcre.pri index 6ab9d4dc87..41ce218c9e 100644 --- a/src/3rdparty/pcre.pri +++ b/src/3rdparty/pcre.pri @@ -1,6 +1,7 @@ DEFINES += PCRE_HAVE_CONFIG_H win32:DEFINES += PCRE_STATIC +ios:DEFINES += PCRE_DISABLE_JIT INCLUDEPATH += $$PWD/pcre SOURCES += \ diff --git a/src/3rdparty/pcre/config.h b/src/3rdparty/pcre/config.h index 6dda704f68..ed388fc9ba 100644 --- a/src/3rdparty/pcre/config.h +++ b/src/3rdparty/pcre/config.h @@ -20,7 +20,7 @@ - x86/x86-64 - MIPS 32bit (__GNUC__ compilers only) */ -#if \ +#if !defined(PCRE_DISABLE_JIT) && (\ /* ARM */ \ (defined(__GNUC__) && (defined(__arm__) || defined(__TARGET_ARCH_ARM))) \ /* x86 32/64 */ \ @@ -29,6 +29,6 @@ /* MIPS32 */ \ || (defined(__GNUC__) \ && (defined(__mips) || defined(__mips__)) \ - && !(defined(_MIPS_ARCH_MIPS64) || defined(__mips64))) + && !(defined(_MIPS_ARCH_MIPS64) || defined(__mips64)))) # define SUPPORT_JIT #endif -- cgit v1.2.3 From 638d9d3831357f80800a2fae4925f71648907f30 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Wed, 6 Mar 2013 11:54:08 +0100 Subject: Fix multi-touch input on Android MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The touch events were collected but then thrown away because of a missing port of he handleTouchEvent() function call. Task-number: QTBUG-29126 Change-Id: I02f7380945be04a36da14a89f2f3ff9429b17cbc Reviewed-by: Samuel Rødal --- .../platforms/android/src/androidjniinput.cpp | 21 +++++++++++++++++++-- .../platforms/android/src/androidjnimain.cpp | 6 ++++++ src/plugins/platforms/android/src/androidjnimain.h | 1 + .../android/src/qandroidplatformintegration.cpp | 4 +++- .../android/src/qandroidplatformintegration.h | 6 ++++++ 5 files changed, 35 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/android/src/androidjniinput.cpp b/src/plugins/platforms/android/src/androidjniinput.cpp index 6a3dd1f349..da6156a330 100644 --- a/src/plugins/platforms/android/src/androidjniinput.cpp +++ b/src/plugins/platforms/android/src/androidjniinput.cpp @@ -41,6 +41,7 @@ #include "androidjniinput.h" #include "androidjnimain.h" +#include "qandroidplatformintegration.h" #include #include @@ -219,6 +220,9 @@ namespace QtAndroidInput static void touchEnd(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint action) { + if (m_touchPoints.isEmpty()) + return; + QEvent::Type eventType = QEvent::None; switch (action) { case 0: @@ -232,8 +236,21 @@ namespace QtAndroidInput break; } - // FIXME - // QWindowSystemInterface::handleTouchEvent(0, 0, eventType, QTouchEvent::TouchScreen, m_touchPoints); + QAndroidPlatformIntegration *platformIntegration = QtAndroid::androidPlatformIntegration(); + QTouchDevice *touchDevice = platformIntegration->touchDevice(); + if (touchDevice == 0) { + touchDevice = new QTouchDevice; + touchDevice->setType(QTouchDevice::TouchScreen); + touchDevice->setCapabilities(QTouchDevice::Position + | QTouchDevice::Area + | QTouchDevice::Pressure + | QTouchDevice::NormalizedPosition); + QWindowSystemInterface::registerTouchDevice(touchDevice); + platformIntegration->setTouchDevice(touchDevice); + } + + QWindow *window = QtAndroid::topLevelWindowAt(m_touchPoints.at(0).area.center().toPoint()); + QWindowSystemInterface::handleTouchEvent(window, touchDevice, m_touchPoints); } static int mapAndroidKey(int key) diff --git a/src/plugins/platforms/android/src/androidjnimain.cpp b/src/plugins/platforms/android/src/androidjnimain.cpp index 2a4c48df3c..f8f077908c 100644 --- a/src/plugins/platforms/android/src/androidjnimain.cpp +++ b/src/plugins/platforms/android/src/androidjnimain.cpp @@ -266,6 +266,12 @@ namespace QtAndroid m_surfaceMutex.unlock(); } + QAndroidPlatformIntegration *androidPlatformIntegration() + { + QMutexLocker locker(&m_surfaceMutex); + return m_androidPlatformIntegration; + } + void setFullScreen(QWidget *widget) { AttachedJNIEnv env; diff --git a/src/plugins/platforms/android/src/androidjnimain.h b/src/plugins/platforms/android/src/androidjnimain.h index 36699f15b8..618bd87cdb 100644 --- a/src/plugins/platforms/android/src/androidjnimain.h +++ b/src/plugins/platforms/android/src/androidjnimain.h @@ -65,6 +65,7 @@ class QWindow; namespace QtAndroid { + QAndroidPlatformIntegration *androidPlatformIntegration(); void setAndroidPlatformIntegration(QAndroidPlatformIntegration *androidPlatformIntegration); void setQtThread(QThread *thread); diff --git a/src/plugins/platforms/android/src/qandroidplatformintegration.cpp b/src/plugins/platforms/android/src/qandroidplatformintegration.cpp index 1091416ccc..cbd0f26835 100644 --- a/src/plugins/platforms/android/src/qandroidplatformintegration.cpp +++ b/src/plugins/platforms/android/src/qandroidplatformintegration.cpp @@ -84,8 +84,9 @@ void *QAndroidPlatformNativeInterface::nativeResourceForIntegration(const QByteA } QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList ¶mList) + : m_touchDevice(0) #ifdef ANDROID_PLUGIN_OPENGL - : m_primaryWindow(0) + , m_primaryWindow(0) #endif { Q_UNUSED(paramList); @@ -179,6 +180,7 @@ QAndroidPlatformIntegration::~QAndroidPlatformIntegration() { delete m_androidPlatformNativeInterface; delete m_androidFDB; + delete m_touchDevice; QtAndroid::setAndroidPlatformIntegration(NULL); } QPlatformFontDatabase *QAndroidPlatformIntegration::fontDatabase() const diff --git a/src/plugins/platforms/android/src/qandroidplatformintegration.h b/src/plugins/platforms/android/src/qandroidplatformintegration.h index 7dde277d25..3f8cc5a809 100644 --- a/src/plugins/platforms/android/src/qandroidplatformintegration.h +++ b/src/plugins/platforms/android/src/qandroidplatformintegration.h @@ -126,9 +126,15 @@ public: return QSize(m_defaultGeometryWidth, m_defaultGeometryHeight); } + QTouchDevice *touchDevice() const { return m_touchDevice; } + void setTouchDevice(QTouchDevice *touchDevice) { m_touchDevice = touchDevice; } + private: friend class QEglFSAndroidHooks; + + QTouchDevice *m_touchDevice; + #ifndef ANDROID_PLUGIN_OPENGL QAbstractEventDispatcher *m_eventDispatcher; QAndroidPlatformScreen *m_primaryScreen; -- cgit v1.2.3 From 5e907919d77fec0a92905d29764a56ee282cfcee Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Wed, 6 Mar 2013 18:01:37 +0100 Subject: Android: Allow more than three touch points Now that we do not support Android versions below API level 9, we can use the modern multi-touch functions. Change-Id: I5887b4c35f9e02089a334526cebecf0cf767bd6c Reviewed-by: BogDan Vatra Reviewed-by: Eskil Abrahamsen Blomfeldt --- .../src/org/qtproject/qt5/android/QtNative.java | 48 ++++------------------ 1 file changed, 7 insertions(+), 41 deletions(-) (limited to 'src') diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java index 346bc1221a..7cb3fdff45 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java @@ -279,10 +279,10 @@ public class QtNative }); } - //@ANDROID-5 + //@ANDROID-9 static private int getAction(int index, MotionEvent event) { - int action = event.getAction(); + int action = event.getActionMasked(); if (action == MotionEvent.ACTION_MOVE) { int hsz = event.getHistorySize(); if (hsz > 0) { @@ -295,48 +295,14 @@ public class QtNative } return 1; } - - switch (index) { - case 0: - if (action == MotionEvent.ACTION_DOWN - || action == MotionEvent.ACTION_POINTER_1_DOWN) { - return 0; - } - - if (action == MotionEvent.ACTION_UP - || action == MotionEvent.ACTION_POINTER_1_UP) { - return 3; - } - break; - - case 1: - if (action == MotionEvent.ACTION_POINTER_2_DOWN - || action == MotionEvent.ACTION_POINTER_DOWN) { - return 0; - } - - if (action == MotionEvent.ACTION_POINTER_2_UP - || action == MotionEvent.ACTION_POINTER_UP) { - return 3; - } - break; - - case 2: - if (action == MotionEvent.ACTION_POINTER_3_DOWN - || action == MotionEvent.ACTION_POINTER_DOWN) { - return 0; - } - - if (action == MotionEvent.ACTION_POINTER_3_UP - || action == MotionEvent.ACTION_POINTER_UP) { - return 3; - } - - break; + if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN && index == event.getActionIndex()) { + return 0; + } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP && index == event.getActionIndex()) { + return 3; } return 2; } - //@ANDROID-5 + //@ANDROID-9 static public void sendTouchEvent(MotionEvent event, int id) { -- cgit v1.2.3 From 268972999a46822b7de6facc4f36d44dff93e6b0 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Tue, 5 Mar 2013 10:10:51 +0100 Subject: Documentation and versioning for new Window properties Task-number: QTBUG-29807 Change-Id: Id03ae17270832a7b5915e4324a508e591c0b6d98 Reviewed-by: Alan Alpert Reviewed-by: Laszlo Papp --- src/gui/kernel/qwindow.cpp | 6 ++++++ src/gui/kernel/qwindow.h | 40 ++++++++++++++++++++++------------------ 2 files changed, 28 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 3d4383301e..6aff1cac9e 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -781,6 +781,7 @@ void QWindow::lower() /*! \property QWindow::opacity \brief The opacity of the window in the windowing system. + \since 5.1 If the windowing system supports window opacity, this can be used to fade the window in and out, or to make it semitransparent. @@ -904,6 +905,7 @@ bool QWindow::isActive() const /*! \property QWindow::contentOrientation \brief the orientation of the window's contents + \since 5.1 This is a hint to the window manager in case it needs to display additional content like popups, dialogs, status bars, or similar @@ -1160,6 +1162,7 @@ void QWindow::setHeight(int arg) /*! \property QWindow::minimumWidth \brief the minimum width of the window's geometry + \since 5.1 */ void QWindow::setMinimumWidth(int w) { @@ -1169,6 +1172,7 @@ void QWindow::setMinimumWidth(int w) /*! \property QWindow::minimumHeight \brief the minimum height of the window's geometry + \since 5.1 */ void QWindow::setMinimumHeight(int h) { @@ -1201,6 +1205,7 @@ void QWindow::setMaximumSize(const QSize &size) /*! \property QWindow::maximumWidth \brief the maximum width of the window's geometry + \since 5.1 */ void QWindow::setMaximumWidth(int w) { @@ -1210,6 +1215,7 @@ void QWindow::setMaximumWidth(int w) /*! \property QWindow::maximumHeight \brief the maximum height of the window's geometry + \since 5.1 */ void QWindow::setMaximumHeight(int h) { diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index ca3ffb0709..1b63e185f8 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -99,6 +99,10 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface // For example "state" (meaning windowState) is not a good property to declare, because it has // a different meaning in QQuickItem, and users will tend to assume it is the same for Window. + // Any new properties which you add here MUST be versioned and MUST be documented both as + // C++ properties in qwindow.cpp AND as QML properties in qquickwindow.cpp. + // http://qt-project.org/doc/qt-5.0/qtqml/qtqml-cppintegration-definetypes.html#type-revisions-and-versions + Q_PROPERTY(QString title READ title WRITE setTitle) Q_PROPERTY(Qt::WindowModality modality READ modality WRITE setModality NOTIFY modalityChanged) Q_PROPERTY(Qt::WindowFlags flags READ flags WRITE setFlags) @@ -106,14 +110,14 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface Q_PROPERTY(int y READ y WRITE setY NOTIFY yChanged) Q_PROPERTY(int width READ width WRITE setWidth NOTIFY widthChanged) Q_PROPERTY(int height READ height WRITE setHeight NOTIFY heightChanged) - Q_PROPERTY(int minimumWidth READ minimumWidth WRITE setMinimumWidth NOTIFY minimumWidthChanged) - Q_PROPERTY(int minimumHeight READ minimumHeight WRITE setMinimumHeight NOTIFY minimumHeightChanged) - Q_PROPERTY(int maximumWidth READ maximumWidth WRITE setMaximumWidth NOTIFY maximumWidthChanged) - Q_PROPERTY(int maximumHeight READ maximumHeight WRITE setMaximumHeight NOTIFY maximumHeightChanged) + Q_PROPERTY(int minimumWidth READ minimumWidth WRITE setMinimumWidth NOTIFY minimumWidthChanged REVISION 1) + Q_PROPERTY(int minimumHeight READ minimumHeight WRITE setMinimumHeight NOTIFY minimumHeightChanged REVISION 1) + Q_PROPERTY(int maximumWidth READ maximumWidth WRITE setMaximumWidth NOTIFY maximumWidthChanged REVISION 1) + Q_PROPERTY(int maximumHeight READ maximumHeight WRITE setMaximumHeight NOTIFY maximumHeightChanged REVISION 1) Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged) - Q_PROPERTY(Visibility visibility READ visibility WRITE setVisibility NOTIFY visibilityChanged) - Q_PROPERTY(Qt::ScreenOrientation contentOrientation READ contentOrientation WRITE reportContentOrientationChange NOTIFY contentOrientationChanged) - Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged) + Q_PROPERTY(Visibility visibility READ visibility WRITE setVisibility NOTIFY visibilityChanged REVISION 1) + Q_PROPERTY(Qt::ScreenOrientation contentOrientation READ contentOrientation WRITE reportContentOrientationChange NOTIFY contentOrientationChanged REVISION 1) + Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged REVISION 1) public: enum Visibility { @@ -281,10 +285,10 @@ public Q_SLOTS: void setWidth(int arg); void setHeight(int arg); - void setMinimumWidth(int w); - void setMinimumHeight(int h); - void setMaximumWidth(int w); - void setMaximumHeight(int h); + Q_REVISION(1) void setMinimumWidth(int w); + Q_REVISION(1) void setMinimumHeight(int h); + Q_REVISION(1) void setMaximumWidth(int w); + Q_REVISION(1) void setMaximumHeight(int h); Q_SIGNALS: void screenChanged(QScreen *screen); @@ -297,18 +301,18 @@ Q_SIGNALS: void widthChanged(int arg); void heightChanged(int arg); - void minimumWidthChanged(int arg); - void minimumHeightChanged(int arg); - void maximumWidthChanged(int arg); - void maximumHeightChanged(int arg); + Q_REVISION(1) void minimumWidthChanged(int arg); + Q_REVISION(1) void minimumHeightChanged(int arg); + Q_REVISION(1) void maximumWidthChanged(int arg); + Q_REVISION(1) void maximumHeightChanged(int arg); void visibleChanged(bool arg); - void visibilityChanged(QWindow::Visibility visibility); - void contentOrientationChanged(Qt::ScreenOrientation orientation); + Q_REVISION(1) void visibilityChanged(QWindow::Visibility visibility); + Q_REVISION(1) void contentOrientationChanged(Qt::ScreenOrientation orientation); void focusObjectChanged(QObject *object); - void opacityChanged(qreal opacity); + Q_REVISION(1) void opacityChanged(qreal opacity); private Q_SLOTS: void screenDestroyed(QObject *screen); -- cgit v1.2.3 From da672eba998eb909b6ea264c71f75b4d611101e0 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 8 Mar 2013 14:06:32 +0100 Subject: Windows: Use arrow cursor for toplevels with no cursor set. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes unsetting the cursor in Qt Quick Controls. Task-number: QTBUG-28879 Change-Id: I049beafaa723f6e782df872f14c09b7f927e70ac Reviewed-by: Jan Arve Sæther Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/qwindowswindow.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index 2d0f537477..2da0af8abb 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -1705,6 +1705,16 @@ void QWindowsWindow::getSizeHints(MINMAXINFO *mmi) const } #endif // !Q_OS_WINCE +// Return the default cursor (Arrow) from QWindowsCursor's cache. +static inline QWindowsWindowCursor defaultCursor(const QWindow *w) +{ + if (QScreen *screen = w->screen()) + if (const QPlatformScreen *platformScreen = screen->handle()) + if (QPlatformCursor *cursor = platformScreen->cursor()) + return static_cast(cursor)->standardWindowCursor(Qt::ArrowCursor); + return QWindowsWindowCursor(Qt::ArrowCursor); +} + /*! \brief Applies to cursor property set on the window to the global cursor. @@ -1714,9 +1724,12 @@ void QWindowsWindow::getSizeHints(MINMAXINFO *mmi) const void QWindowsWindow::applyCursor() { #ifndef QT_NO_CURSOR - if (m_cursor.isNull()) { // Recurse up to parent with non-null cursor. - if (const QWindow *p = window()->parent()) + if (m_cursor.isNull()) { // Recurse up to parent with non-null cursor. Set default for toplevel. + if (const QWindow *p = window()->parent()) { QWindowsWindow::baseWindowOf(p)->applyCursor(); + } else { + SetCursor(defaultCursor(window()).handle()); + } } else { SetCursor(m_cursor.handle()); } -- cgit v1.2.3 From 323a2bff2c56e6dd6d2f4c2e8662f699edc69a4e Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 7 Mar 2013 16:41:39 +0100 Subject: QApplication: Fix MSVC-warning about unused variable q. Change-Id: I44f34816cb18583fcbbab0a6c79b313a829d9236 Reviewed-by: Joerg Bornemann Reviewed-by: Oliver Wolff --- src/widgets/kernel/qapplication.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 1e493fe8c6..e9ec0a916d 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -603,10 +603,8 @@ void QApplicationPrivate::initialize() is_app_running = true; // no longer starting up - Q_Q(QApplication); - if (qgetenv("QT_USE_NATIVE_WINDOWS").toInt() > 0) - q->setAttribute(Qt::AA_NativeWindows); + QCoreApplication::setAttribute(Qt::AA_NativeWindows); #ifdef Q_OS_WINCE #ifdef QT_AUTO_MAXIMIZE_THRESHOLD @@ -3777,8 +3775,6 @@ private: bool QApplicationPrivate::translateTouchToMouse(QWidget *widget, QTouchEvent *event) { - Q_Q(QApplication); - // Check if the platform wants synthesized mouse events. if (!QGuiApplicationPrivate::platformIntegration()->styleHint(QPlatformIntegration::SynthesizeMouseFromTouchEvents).toBool()) return false; @@ -3809,7 +3805,7 @@ bool QApplicationPrivate::translateTouchToMouse(QWidget *widget, QTouchEvent *ev // Note it has to be a spontaneous event if we want the focus management // and input method support to behave properly. Quite some of the code // related to those aspect check for the spontaneous flag. - const bool res = q->sendSpontaneousEvent(widget, &mouseEvent); + const bool res = QCoreApplication::sendSpontaneousEvent(widget, &mouseEvent); event->setAccepted(mouseEvent.isAccepted()); if (mouseEvent.isAccepted()) -- cgit v1.2.3 From 324e01aa7219b497b04cd69f708d4bdbd7dfe171 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 7 Mar 2013 16:31:06 +0100 Subject: Fix MinGW-64-warnings about cast from DWORD to HWND. Change-Id: I16580f58fda56b18a7611f94f7359e3ceeb65c69 Reviewed-by: Oliver Wolff Reviewed-by: Joerg Bornemann --- src/widgets/util/qsystemtrayicon_win.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/widgets/util/qsystemtrayicon_win.cpp b/src/widgets/util/qsystemtrayicon_win.cpp index 209fb206e1..936e1a1bc1 100644 --- a/src/widgets/util/qsystemtrayicon_win.cpp +++ b/src/widgets/util/qsystemtrayicon_win.cpp @@ -117,7 +117,7 @@ public: bool trayMessage(DWORD msg); void setIconContents(NOTIFYICONDATA &data); bool showMessage(const QString &title, const QString &message, QSystemTrayIcon::MessageIcon type, uint uSecs); - QRect findIconGeometry(const int a_iButtonID); + QRect findIconGeometry(UINT iconId); HICON createIcon(); bool winEvent(MSG *m, long *result); @@ -413,8 +413,15 @@ void QSystemTrayIconPrivate::install_sys() * * If it fails an invalid rect is returned. */ -QRect QSystemTrayIconSys::findIconGeometry(const int iconId) + +QRect QSystemTrayIconSys::findIconGeometry(UINT iconId) { + struct AppData + { + HWND hwnd; + UINT uID; + }; + static PtrShell_NotifyIconGetRect Shell_NotifyIconGetRect = (PtrShell_NotifyIconGetRect)QSystemLibrary::resolve(QLatin1String("shell32"), "Shell_NotifyIconGetRect"); @@ -474,21 +481,18 @@ QRect QSystemTrayIconSys::findIconGeometry(const int iconId) //search for our icon among all toolbar buttons for (int toolbarButton = 0; toolbarButton < buttonCount; ++toolbarButton ) { SIZE_T numBytes = 0; - DWORD appData[2] = { 0, 0 }; + AppData appData = { 0, 0 }; SendMessage(trayHandle, TB_GETBUTTON, toolbarButton , (LPARAM)data); if (!ReadProcessMemory(trayProcess, data, &buttonData, sizeof(TBBUTTON), &numBytes)) continue; - if (!ReadProcessMemory(trayProcess, (LPVOID) buttonData.dwData, appData, sizeof(appData), &numBytes)) + if (!ReadProcessMemory(trayProcess, (LPVOID) buttonData.dwData, &appData, sizeof(AppData), &numBytes)) continue; - int currentIconId = appData[1]; - HWND currentIconHandle = (HWND) appData[0]; bool isHidden = buttonData.fsState & TBSTATE_HIDDEN; - if (currentIconHandle == m_hwnd && - currentIconId == iconId && !isHidden) { + if (m_hwnd == appData.hwnd && appData.uID == iconId && !isHidden) { SendMessage(trayHandle, TB_GETITEMRECT, toolbarButton , (LPARAM)data); RECT iconRect = {0, 0, 0, 0}; if(ReadProcessMemory(trayProcess, data, &iconRect, sizeof(RECT), &numBytes)) { -- cgit v1.2.3 From 9c6239e0c120897b5edb7824b4e694c2b4d472cf Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 7 Mar 2013 15:41:53 +0100 Subject: Fix warning about unhandled enumeration value. Change-Id: Ic22a9bddfa04c286f359bc29e1d5d1ec8ef98ecc Reviewed-by: Richard Moe Gustavsen --- src/gui/kernel/qguiapplication.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 32c52d2fe2..a00eeaa5e9 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1648,6 +1648,8 @@ void QGuiApplicationPrivate::processApplicationStateChangedEvent(QWindowSystemIn QEvent appDeactivate(QEvent::ApplicationDeactivate); qApp->sendSpontaneousEvent(qApp, &appDeactivate); break; } + default: + break; } } -- cgit v1.2.3 From cd035286c59f550ecc772eee7126679f9c065bb3 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 7 Mar 2013 15:32:05 +0100 Subject: Silence warning about unused fields in test event (CLANG). Change-Id: I8e05fc9b8820136a7714219627dbdae300af0b0d Reviewed-by: Frederik Gladhorn --- src/testlib/qtestspontaneevent.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/testlib/qtestspontaneevent.h b/src/testlib/qtestspontaneevent.h index 45cc74e343..e299981670 100644 --- a/src/testlib/qtestspontaneevent.h +++ b/src/testlib/qtestspontaneevent.h @@ -71,7 +71,7 @@ public: class QSpontaneKeyEvent { public: - void setSpontaneous() { spont = 1; } + void setSpontaneous() { spont = 1; Q_UNUSED(posted) Q_UNUSED(m_accept) Q_UNUSED(reserved) } bool spontaneous() { return spont; } virtual void dummyFunc() {} virtual ~QSpontaneKeyEvent() {} -- cgit v1.2.3 From 39a902c0081f442141353c466ada09d62036c04e Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Sat, 29 Dec 2012 17:08:12 +0100 Subject: Add support for setting/getting the paper name on the QPrinter This adds support for specifying a paper name which will be set on the printer if it is available for the driver. Change-Id: Id7fd0c8cf68745db3d7a8de7e2ac98d3e2ba9b79 Reviewed-by: Pierre Rossi --- src/plugins/platforms/cocoa/qprintengine_mac.mm | 38 ++++++++++ src/plugins/platforms/cocoa/qprintengine_mac_p.h | 1 + src/plugins/printsupport/cups/qcupsprintengine.cpp | 47 +++++++++++- src/plugins/printsupport/cups/qcupsprintengine_p.h | 1 + src/printsupport/dialogs/qpagesetupdialog_unix.cpp | 16 ++-- src/printsupport/kernel/qprintengine.h | 1 + src/printsupport/kernel/qprintengine_win.cpp | 87 +++++++++++++++++++--- src/printsupport/kernel/qprinter.cpp | 33 ++++++++ src/printsupport/kernel/qprinter.h | 3 + 9 files changed, 209 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qprintengine_mac.mm b/src/plugins/platforms/cocoa/qprintengine_mac.mm index 4570a663f6..4748005f1a 100644 --- a/src/plugins/platforms/cocoa/qprintengine_mac.mm +++ b/src/plugins/platforms/cocoa/qprintengine_mac.mm @@ -180,6 +180,38 @@ QPrinter::PaperSize QMacPrintEnginePrivate::paperSize() const return QPlatformPrinterSupport::convertQSizeFToPaperSize(sizef); } +void QMacPrintEnginePrivate::setPaperName(const QString &name) +{ + Q_Q(QMacPrintEngine); + PMPrinter printer; + + if (PMSessionGetCurrentPrinter(session(), &printer) == noErr) { + CFArrayRef array; + if (PMPrinterGetPaperList(printer, &array) != noErr) { + PMRelease(printer); + return; + } + int count = CFArrayGetCount(array); + for (int i = 0; i < count; ++i) { + PMPaper paper = static_cast(const_cast(CFArrayGetValueAtIndex(array, i))); + QCFString paperName; + if (PMPaperCreateLocalizedName(paper, printer, &paperName) == noErr) { + if (QString(paperName) == name) { + PMPageFormat tmp; + PMCreatePageFormatWithPMPaper(&tmp, paper); + PMCopyPageFormat(tmp, format()); + q->setProperty(QPrintEngine::PPK_Orientation, orient); + if (PMSessionValidatePageFormat(session(), format(), kPMDontWantBoolean) != noErr) { + // Don't know, warn for the moment. + qWarning("QMacPrintEngine, problem setting paper name"); + } + } + } + } + PMRelease(printer); + } +} + QList QMacPrintEnginePrivate::supportedResolutions() const { Q_ASSERT_X(printInfo, "QMacPrinterEngine::supportedResolutions", @@ -601,6 +633,9 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va case PPK_PaperSize: d->setPaperSize(QPrinter::PaperSize(value.toInt())); break; + case PPK_PaperName: + d->setPaperName(value.toString()); + break; case PPK_PrinterName: { bool printerNameSet = false; OSStatus status = noErr; @@ -739,6 +774,9 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const case PPK_PaperSize: ret = d->paperSize(); break; + case PPK_PaperName: + ret = QCFString::toQString([d->printInfo localizedPaperName]); + break; case PPK_PaperRect: { QRect r; PMRect macrect; diff --git a/src/plugins/platforms/cocoa/qprintengine_mac_p.h b/src/plugins/platforms/cocoa/qprintengine_mac_p.h index e122cc5822..fd1b60a9ad 100644 --- a/src/plugins/platforms/cocoa/qprintengine_mac_p.h +++ b/src/plugins/platforms/cocoa/qprintengine_mac_p.h @@ -142,6 +142,7 @@ public: bool newPage_helper(); void setPaperSize(QPrinter::PaperSize ps); QPrinter::PaperSize paperSize() const; + void setPaperName(const QString &name); QList supportedResolutions() const; inline bool isPrintSessionInitialized() const { diff --git a/src/plugins/printsupport/cups/qcupsprintengine.cpp b/src/plugins/printsupport/cups/qcupsprintengine.cpp index 21895e9d28..1c86420cb2 100644 --- a/src/plugins/printsupport/cups/qcupsprintengine.cpp +++ b/src/plugins/printsupport/cups/qcupsprintengine.cpp @@ -103,7 +103,9 @@ void QCupsPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &v d->cupsOptions = value.toStringList(); break; case PPK_CupsStringPageSize: + case PPK_PaperName: d->cupsStringPageSize = value.toString(); + d->setPaperName(); break; case PPK_PrinterName: // prevent setting the defaults again for the same printer @@ -140,6 +142,7 @@ QVariant QCupsPrintEngine::property(PrintEnginePropertyKey key) const ret = d->cupsOptions; break; case PPK_CupsStringPageSize: + case PPK_PaperName: ret = d->cupsStringPageSize; break; default: @@ -284,6 +287,7 @@ void QCupsPrintEnginePrivate::setPaperSize() QPdf::PaperSize size = QPdf::paperSize(QPrinter::PaperSize(printerPaperSize)); if (cups.currentPPD()) { + cupsStringPageSize = QLatin1String("Custom"); const ppd_option_t* pageSizes = cups.pageSizes(); for (int i = 0; i < pageSizes->num_choices; ++i) { QByteArray cupsPageSize = pageSizes->choices[i].choice; @@ -293,7 +297,7 @@ void QCupsPrintEnginePrivate::setPaperSize() if (qAbs(size.width - tmpCupsPaperRect.width()) < 5 && qAbs(size.height - tmpCupsPaperRect.height()) < 5) { cupsPaperRect = tmpCupsPaperRect; cupsPageRect = tmpCupsPageRect; - + cupsStringPageSize = pageSizes->choices[i].text; leftMargin = cupsPageRect.x() - cupsPaperRect.x(); topMargin = cupsPageRect.y() - cupsPaperRect.y(); rightMargin = cupsPaperRect.right() - cupsPageRect.right(); @@ -307,6 +311,43 @@ void QCupsPrintEnginePrivate::setPaperSize() } } +void QCupsPrintEnginePrivate::setPaperName() +{ + if (QCUPSSupport::isAvailable()) { + QCUPSSupport cups; + if (cups.currentPPD()) { + const ppd_option_t* pageSizes = cups.pageSizes(); + bool foundPaperName = false; + for (int i = 0; i < pageSizes->num_choices; ++i) { + if (cupsStringPageSize == pageSizes->choices[i].text) { + foundPaperName = true; + QByteArray cupsPageSize = pageSizes->choices[i].choice; + cupsPaperRect = cups.paperRect(cupsPageSize); + cupsPageRect = cups.pageRect(cupsPageSize); + leftMargin = cupsPageRect.x() - cupsPaperRect.x(); + topMargin = cupsPageRect.y() - cupsPaperRect.y(); + rightMargin = cupsPaperRect.right() - cupsPageRect.right(); + bottomMargin = cupsPaperRect.bottom() - cupsPageRect.bottom(); + printerPaperSize = QPrinter::Custom; + customPaperSize = cupsPaperRect.size(); + for (int ps = 0; ps < QPrinter::NPageSize; ++ps) { + QPdf::PaperSize size = QPdf::paperSize(QPrinter::PaperSize(ps)); + if (qAbs(size.width - cupsPaperRect.width()) < 5 && qAbs(size.height - cupsPaperRect.height()) < 5) { + printerPaperSize = static_cast(ps); + customPaperSize = QSize(); + break; + } + } + updatePaperSize(); + break; + } + } + if (!foundPaperName) + cupsStringPageSize = QString(); + } + } +} + void QCupsPrintEnginePrivate::setCupsDefaults() { if (QCUPSSupport::isAvailable()) { @@ -348,8 +389,10 @@ void QCupsPrintEnginePrivate::setCupsDefaults() const ppd_option_t* pageSizes = cups.pageSizes(); QByteArray cupsPageSize; for (int i = 0; i < pageSizes->num_choices; ++i) { - if (static_cast(pageSizes->choices[i].marked) == 1) + if (static_cast(pageSizes->choices[i].marked) == 1) { cupsPageSize = pageSizes->choices[i].choice; + cupsStringPageSize = pageSizes->choices[i].text; + } } cupsOptions = cups.options(); diff --git a/src/plugins/printsupport/cups/qcupsprintengine_p.h b/src/plugins/printsupport/cups/qcupsprintengine_p.h index 31ee6bb256..db947a0232 100644 --- a/src/plugins/printsupport/cups/qcupsprintengine_p.h +++ b/src/plugins/printsupport/cups/qcupsprintengine_p.h @@ -97,6 +97,7 @@ public: void updatePaperSize(); void setPaperSize(); + void setPaperName(); void setCupsDefaults(); private: diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp index 322d47d1fb..1e0251c6d2 100644 --- a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp +++ b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp @@ -360,7 +360,7 @@ void QPageSetupWidget::setupPrinter() const else { m_printer->setPaperSize(static_cast(ps)); } - + m_printer->setPaperName(widget.paperSize->currentText()); #ifdef PSD_ENABLE_PAPERSOURCE m_printer->setPaperSource((QPrinter::PaperSource)widget.paperSource->currentIndex()); #endif @@ -380,16 +380,22 @@ void QPageSetupWidget::selectPrinter() int cupsDefaultSize = 0; QSize qtPreferredSize = m_printer->paperSize(QPrinter::Point).toSize(); + QString qtPaperName = m_printer->paperName(); bool preferredSizeMatched = false; for (int i = 0; i < numChoices; ++i) { widget.paperSize->addItem(QString::fromLocal8Bit(pageSizes->choices[i].text), QByteArray(pageSizes->choices[i].choice)); if (static_cast(pageSizes->choices[i].marked) == 1) cupsDefaultSize = i; - QRect cupsPaperSize = cups.paperRect(pageSizes->choices[i].choice); - QSize diff = cupsPaperSize.size() - qtPreferredSize; - if (qAbs(diff.width()) < 5 && qAbs(diff.height()) < 5) { + if (qtPaperName == QString::fromLocal8Bit(pageSizes->choices[i].text)) { widget.paperSize->setCurrentIndex(i); preferredSizeMatched = true; + } else { + QRect cupsPaperSize = cups.paperRect(pageSizes->choices[i].choice); + QSize diff = cupsPaperSize.size() - qtPreferredSize; + if (qAbs(diff.width()) < 5 && qAbs(diff.height()) < 5) { + widget.paperSize->setCurrentIndex(i); + preferredSizeMatched = true; + } } } if (!preferredSizeMatched) @@ -452,7 +458,7 @@ void QPageSetupWidget::_q_paperSizeChanged() bool custom = size == QPrinter::Custom; #if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY) - custom = custom ? m_cups : custom; + custom = custom && m_cups && (m_printer->paperName() == QLatin1String("Custom")); #endif widget.paperWidth->setEnabled(custom); diff --git a/src/printsupport/kernel/qprintengine.h b/src/printsupport/kernel/qprintengine.h index dabd39c5c0..3993a22bef 100644 --- a/src/printsupport/kernel/qprintengine.h +++ b/src/printsupport/kernel/qprintengine.h @@ -84,6 +84,7 @@ public: PPK_PageMargins, PPK_CopyCount, PPK_SupportsMultipleCopies, + PPK_PaperName, PPK_PaperSize = PPK_PageSize, PPK_CustomBase = 0xff00 diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp index 7c67fd2845..c798ac0c7f 100644 --- a/src/printsupport/kernel/qprintengine_win.cpp +++ b/src/printsupport/kernel/qprintengine_win.cpp @@ -167,6 +167,16 @@ static int mapPaperSourceDevmode(QPrinter::PaperSource s) return sources[i].winSourceName ? sources[i].winSourceName : s; } +static inline uint qwcsnlen(const wchar_t *str, uint maxlen) +{ + uint length = 0; + if (str) { + while (length < maxlen && *str++) + length++; + } + return length; +} + QWin32PrintEngine::QWin32PrintEngine(QPrinter::PrinterMode mode) : QAlphaPaintEngine(*(new QWin32PrintEnginePrivate), PaintEngineFeatures(PrimitiveTransform @@ -1285,7 +1295,39 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & d->has_custom_paper_size = (QPrinter::PaperSize(value.toInt()) == QPrinter::Custom); d->doReinit(); break; - + case PPK_PaperName: + { + if (!d->devMode) + break; + DWORD size = DeviceCapabilities(reinterpret_cast(d->name.utf16()), + NULL, DC_PAPERNAMES, NULL, NULL); + if ((int)size > 0) { + wchar_t *paperNames = new wchar_t[size*64]; + size = DeviceCapabilities(reinterpret_cast(d->name.utf16()), + NULL, DC_PAPERNAMES, paperNames, NULL); + int paperPos = -1; + for (int i=0;i<(int)size;i++) { + wchar_t *copyOfPaper = paperNames + (i * 64); + if (value.toString() == QString::fromWCharArray(copyOfPaper, qwcsnlen(copyOfPaper, 64))) { + paperPos = i; + break; + } + } + delete [] paperNames; + size = DeviceCapabilities(reinterpret_cast(d->name.utf16()), + NULL, DC_PAPERS, NULL, NULL); + if ((int)size > 0) { + wchar_t *papers = new wchar_t[size]; + size = DeviceCapabilities(reinterpret_cast(d->name.utf16()), + NULL, DC_PAPERS, papers, NULL); + d->has_custom_paper_size = false; + d->devMode->dmPaperSize = papers[paperPos]; + d->doReinit(); + delete [] papers; + } + } + } + break; case PPK_PaperSource: { if (!d->devMode) @@ -1479,7 +1521,40 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const value = QTransform(1/d->stretch_x, 0, 0, 1/d->stretch_y, 0, 0).mapRect(d->devPaperRect); } break; + case PPK_PaperName: + if (!d->devMode) { + value = QLatin1String("A4"); + } else { + DWORD size = DeviceCapabilities(reinterpret_cast(d->name.utf16()), + NULL, DC_PAPERS, NULL, NULL); + int paperSizePos = -1; + if ((int)size > 0) { + wchar_t *papers = new wchar_t[size]; + size = DeviceCapabilities(reinterpret_cast(d->name.utf16()), + NULL, DC_PAPERS, papers, NULL); + for (int i=0;i<(int)size;i++) { + if (papers[i] == d->devMode->dmPaperSize) { + paperSizePos = i; + break; + } + } + delete [] papers; + } + if (paperSizePos != -1) { + size = DeviceCapabilities(reinterpret_cast(d->name.utf16()), + NULL, DC_PAPERNAMES, NULL, NULL); + if ((int)size > 0) { + wchar_t *papers = new wchar_t[size*64]; + size = DeviceCapabilities(reinterpret_cast(d->name.utf16()), + NULL, DC_PAPERNAMES, papers, NULL); + wchar_t *copyOfPaper = papers + (paperSizePos * 64); + value = QString::fromWCharArray(copyOfPaper, qwcsnlen(copyOfPaper, 64)); + delete [] papers; + } + } + } + break; case PPK_PaperSource: if (!d->devMode) { value = QPrinter::Auto; @@ -1596,16 +1671,6 @@ QList QWin32PrintEngine::supportedPaperSizes(const QPrinter return returnList; } -static inline uint qwcsnlen(const wchar_t *str, uint maxlen) -{ - uint length = 0; - if (str) { - while (length < maxlen && *str++) - length++; - } - return length; -} - QList > QWin32PrintEngine::supportedSizesWithNames(const QPrinterInfo &printerInfo) { QList > paperSizes; diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp index c1a2483f24..387101dc9b 100644 --- a/src/printsupport/kernel/qprinter.cpp +++ b/src/printsupport/kernel/qprinter.cpp @@ -1022,6 +1022,37 @@ QSizeF QPrinter::paperSize(Unit unit) const } } +/*! + \since 5.1 + + Sets the paper used by the printer to \a paperName. + + \sa paperName() +*/ + +void QPrinter::setPaperName(const QString &paperName) +{ + Q_D(QPrinter); + if (d->paintEngine->type() != QPaintEngine::Pdf) + ABORT_IF_ACTIVE("QPrinter::setPaperName"); + d->printEngine->setProperty(QPrintEngine::PPK_PaperName, paperName); + d->addToManualSetList(QPrintEngine::PPK_PaperName); +} + +/*! + \since 5.1 + + Returns the paper name of the paper set on the printer. + + The default value for this is driver-dependent. +*/ + +QString QPrinter::paperName() const +{ + Q_D(const QPrinter); + return d->printEngine->property(QPrintEngine::PPK_PaperName).toString(); +} + /*! Sets the page order to \a pageOrder. @@ -1959,6 +1990,8 @@ QPrinter::PrintRange QPrinter::printRange() const \value PPK_PaperSources Specifies more than one QPrinter::PaperSource value. + \value PPK_PaperName A string specifying the name of the paper. + \value PPK_PaperSize Specifies a QPrinter::PaperSize value. \value PPK_PrinterName A string specifying the name of the printer. diff --git a/src/printsupport/kernel/qprinter.h b/src/printsupport/kernel/qprinter.h index 017c2c61c0..2528157532 100644 --- a/src/printsupport/kernel/qprinter.h +++ b/src/printsupport/kernel/qprinter.h @@ -167,6 +167,9 @@ public: void setPaperSize(const QSizeF &paperSize, Unit unit); QSizeF paperSize(Unit unit) const; + void setPaperName(const QString &paperName); + QString paperName() const; + void setPageOrder(PageOrder); PageOrder pageOrder() const; -- cgit v1.2.3 From 14b2d4cd3894e145c222a7cf63b8293567107402 Mon Sep 17 00:00:00 2001 From: Volker Krause Date: Sat, 9 Mar 2013 14:47:51 +0100 Subject: Build with GL headers in non-standard locations. Change-Id: Icd5fdfeea8e2642ee68ec1811c6a6ce9205b7e00 Reviewed-by: Sean Harmer Reviewed-by: Gunnar Sletta --- src/openglextensions/openglextensions.pro | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/openglextensions/openglextensions.pro b/src/openglextensions/openglextensions.pro index 14b30ef801..dc7a314230 100644 --- a/src/openglextensions/openglextensions.pro +++ b/src/openglextensions/openglextensions.pro @@ -2,6 +2,10 @@ TARGET = QtOpenGLExtensions QT = core CONFIG += static +contains(QT_CONFIG, opengl):CONFIG += opengl +contains(QT_CONFIG, opengles1):CONFIG += opengles1 +contains(QT_CONFIG, opengles2):CONFIG += opengles2 + load(qt_module) DEFINES += QT_NO_CAST_FROM_ASCII -- cgit v1.2.3 From 6b821a3dc80b7203a8c9def42294924e5d718068 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sun, 10 Mar 2013 17:23:18 +0100 Subject: QRegularExpression: refactor the handling of the study data Consider the following situation: - threads A and B have shallow copies of the same QRegularExpression - threads A and B both call match() on a string - thread A calls optimizePattern(), which doesn't optimize - thread B calls optimizePattern(), which does optimize, and sets studyData - thread A uses studyData (set by B) A needs to properly acquire the memory pointed by studyData (which, in turn, needs to be released by B). This commit implements that. (Before, we used to return a copy of the current studyData from optimizePattern(), so A didn't see that B optimized the pattern and set studyData). Change-Id: I9e4741a3d3229905c247491a07099519815680bb Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 41 +++++++++++++++++++------------- 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 19b492a505..a50c7da6cc 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #include @@ -801,7 +802,7 @@ struct QRegularExpressionPrivate : QSharedData void cleanCompiledPattern(); void compilePattern(); void getPatternInfo(); - pcre16_extra *optimizePattern(); + void optimizePattern(); QRegularExpressionMatchPrivate *doMatch(const QString &subject, int offset, @@ -827,7 +828,7 @@ struct QRegularExpressionPrivate : QSharedData // objects themselves; when the private is copied (i.e. a detach happened) // they are set to 0 pcre16 *compiledPattern; - pcre16_extra *studyData; + QAtomicPointer studyData; const char *errorString; int errorOffset; int capturingCount; @@ -934,10 +935,10 @@ QRegularExpressionPrivate::QRegularExpressionPrivate(const QRegularExpressionPri void QRegularExpressionPrivate::cleanCompiledPattern() { pcre16_free(compiledPattern); - pcre16_free_study(studyData); + pcre16_free_study(studyData.load()); usedCount = 0; compiledPattern = 0; - studyData = 0; + studyData.store(0); usingCrLfNewlines = false; errorOffset = -1; capturingCount = 0; @@ -967,7 +968,7 @@ void QRegularExpressionPrivate::compilePattern() return; Q_ASSERT(errorCode == 0); - Q_ASSERT(studyData == 0); // studying (=>optimizing) is always done later + Q_ASSERT(studyData.load() == 0); // studying (=>optimizing) is always done later errorOffset = -1; getPatternInfo(); @@ -979,7 +980,7 @@ void QRegularExpressionPrivate::compilePattern() void QRegularExpressionPrivate::getPatternInfo() { Q_ASSERT(compiledPattern); - Q_ASSERT(studyData == 0); + Q_ASSERT(studyData.load() == 0); pcre16_fullinfo(compiledPattern, 0, PCRE_INFO_CAPTURECOUNT, &capturingCount); @@ -1101,17 +1102,18 @@ static bool isJitEnabled() leaving studyData to NULL); but before calling pcre16_exec to perform the match, another thread performs the studying and sets studyData to something else. Although the assignment to studyData is itself atomic, the release of - the memory pointed by studyData isn't. Therefore, the current studyData - value is returned and used by doMatch. + the memory pointed by studyData isn't. Therefore, we work on a local copy + (localStudyData) before using storeRelease on studyData. In doMatch there's + the corresponding loadAcquire. */ -pcre16_extra *QRegularExpressionPrivate::optimizePattern() +void QRegularExpressionPrivate::optimizePattern() { Q_ASSERT(compiledPattern); QMutexLocker lock(&mutex); - if (studyData || (++usedCount != qt_qregularexpression_optimize_after_use_count)) - return studyData; + if (studyData.load() || (++usedCount != qt_qregularexpression_optimize_after_use_count)) + return; static const bool enableJit = isJitEnabled(); @@ -1120,15 +1122,15 @@ pcre16_extra *QRegularExpressionPrivate::optimizePattern() studyOptions |= PCRE_STUDY_JIT_COMPILE; const char *err; - studyData = pcre16_study(compiledPattern, studyOptions, &err); + pcre16_extra * const localStudyData = pcre16_study(compiledPattern, studyOptions, &err); - if (studyData && studyData->flags & PCRE_EXTRA_EXECUTABLE_JIT) - pcre16_assign_jit_stack(studyData, qtPcreCallback, 0); + if (localStudyData && localStudyData->flags & PCRE_EXTRA_EXECUTABLE_JIT) + pcre16_assign_jit_stack(localStudyData, qtPcreCallback, 0); - if (!studyData && err) + if (!localStudyData && err) qWarning("QRegularExpressionPrivate::optimizePattern(): pcre_study failed: %s", err); - return studyData; + studyData.storeRelease(localStudyData); } /*! @@ -1231,7 +1233,12 @@ QRegularExpressionMatchPrivate *QRegularExpressionPrivate::doMatch(const QString capturingCount + 1); // this is mutex protected - const pcre16_extra *currentStudyData = const_cast(this)->optimizePattern(); + const_cast(this)->optimizePattern(); + + // work with a local copy of the study data, as we are running pcre_exec + // potentially more than once, and we don't want to run call it + // with different study data + const pcre16_extra * const currentStudyData = studyData.loadAcquire(); int pcreOptions = convertToPcreOptions(matchOptions); -- cgit v1.2.3 From 381566445e89c4d945ca40d1fbc12c728e0186b5 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Fri, 8 Mar 2013 14:00:27 +0100 Subject: Reset the X error handler after initializing GTK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It turns out that we were setting the error handler to a dummy one in qxcbconnection.cpp, but GTK then overrides it to an handler that calls exit(1) on errors. This causes problems as we are relying on the glXCreateContextAttribsARB call to fail when creating an OpenGL context, so we need to reset the handler after GTK initialization. Change-Id: I9bc3eb2480abfd3740884cb0000b9180d2cf37a5 Reviewed-by: J-P Nurmi Reviewed-by: Samuel Rødal --- src/plugins/platformthemes/gtk2/qgtk2theme.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/plugins/platformthemes/gtk2/qgtk2theme.cpp b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp index b26ab94b83..f069d9f97c 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2theme.cpp +++ b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp @@ -46,6 +46,8 @@ #undef signals #include +#include + QT_BEGIN_NAMESPACE const char *QGtk2Theme::name = "gtk2"; @@ -62,7 +64,13 @@ static QString gtkSetting(const gchar *propertyName) QGtk2Theme::QGtk2Theme() { + // gtk_init will reset the Xlib error handler, and that causes + // Qt applications to quit on X errors. Therefore, we need to manually restore it. + int (*oldErrorHandler)(Display *, XErrorEvent *) = XSetErrorHandler(NULL); + gtk_init(0, 0); + + XSetErrorHandler(oldErrorHandler); } QVariant QGtk2Theme::themeHint(QPlatformTheme::ThemeHint hint) const -- cgit v1.2.3 From ec9c0faefd43b099bf7472daa932a865ddf8112c Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 6 Mar 2013 10:50:40 +0100 Subject: Update gl2ext.h with the latest version from Khronos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds (amongst other things) the support for the GL_KHR_debug extension, which is required by QOpenGLDebug classes. Change-Id: Id8b80968807e4f3db7eebd8cc9d9beae23b5d7e2 Reviewed-by: Samuel Rødal Reviewed-by: Lars Knoll --- src/gui/opengl/qopengles2ext.h | 481 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 461 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopengles2ext.h b/src/gui/opengl/qopengles2ext.h index 6213fab344..be7d6f3290 100644 --- a/src/gui/opengl/qopengles2ext.h +++ b/src/gui/opengl/qopengles2ext.h @@ -7,7 +7,7 @@ #pragma qt_sync_stop_processing #endif -/* $Revision: 18481 $ on $Date:: 2012-07-11 18:07:26 -0700 #$ */ +/* $Revision: 20771 $ on $Date:: 2013-03-05 18:53:24 -0800 #$ */ #ifdef __cplusplus extern "C" { @@ -100,7 +100,23 @@ typedef void* GLeglImageOES; #endif /* GL_OES_required_internalformat */ -/* No new tokens introduced by this extension. */ +#ifndef GL_OES_required_internalformat +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +/* reuse GL_DEPTH_COMPONENT24_OES */ +/* reuse GL_DEPTH24_STENCIL8_OES */ +/* reuse GL_DEPTH_COMPONENT32_OES */ +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +/* reuse GL_RGB8_OES */ +/* reuse GL_RGBA8_OES */ +/* reuse GL_RGB10_EXT */ +/* reuse GL_RGB10_A2_EXT */ +#endif /* GL_OES_rgb8_rgba8 */ #ifndef GL_OES_rgb8_rgba8 @@ -123,6 +139,10 @@ typedef void* GLeglImageOES; #define GL_STENCIL_INDEX4_OES 0x8D47 #endif +#ifndef GL_OES_surfaceless_context +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif + /* GL_OES_texture_3D */ #ifndef GL_OES_texture_3D #define GL_TEXTURE_WRAP_R_OES 0x8072 @@ -164,6 +184,85 @@ typedef void* GLeglImageOES; #define GL_INT_10_10_10_2_OES 0x8DF7 #endif +/*------------------------------------------------------------------------* + * KHR extension tokens + *------------------------------------------------------------------------*/ + +#ifndef GL_KHR_debug +typedef void (GL_APIENTRYP GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_QUERY 0x82E3 +/* PROGRAM_PIPELINE only in GL */ +#define GL_SAMPLER 0x82E6 +/* DISPLAY_LIST only in GL */ +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#endif + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#endif + /*------------------------------------------------------------------------* * AMD extension tokens *------------------------------------------------------------------------*/ @@ -201,6 +300,18 @@ typedef void* GLeglImageOES; * ANGLE extension tokens *------------------------------------------------------------------------*/ +/* GL_ANGLE_depth_texture */ +#ifndef GL_ANGLE_depth_texture +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_INT 0x1405 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif + /* GL_ANGLE_framebuffer_blit */ #ifndef GL_ANGLE_framebuffer_blit #define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 @@ -226,6 +337,11 @@ typedef void* GLeglImageOES; #define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 #endif +/* GL_ANGLE_program_binary */ +#ifndef GL_ANGLE_program_binary +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif + /* GL_ANGLE_texture_compression_dxt3 */ #ifndef GL_ANGLE_texture_compression_dxt3 #define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 @@ -251,13 +367,9 @@ typedef void* GLeglImageOES; * APPLE extension tokens *------------------------------------------------------------------------*/ -/* GL_APPLE_rgb_422 */ -#ifndef GL_APPLE_rgb_422 -#define GL_RGB_422_APPLE 0x8A1F -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB -#endif - +/* GL_APPLE_copy_texture_levels */ +/* No new tokens introduced by this extension. */ + /* GL_APPLE_framebuffer_multisample */ #ifndef GL_APPLE_framebuffer_multisample #define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB @@ -269,6 +381,47 @@ typedef void* GLeglImageOES; #define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA #endif +/* GL_APPLE_rgb_422 */ +#ifndef GL_APPLE_rgb_422 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#endif + +/* GL_APPLE_sync */ +#ifndef GL_APPLE_sync + +#ifndef __gl3_h_ +/* These types are defined with reference to + * in the Apple extension spec, but here we use the Khronos + * portable types in khrplatform.h, and assume those types + * are always defined. + * If any other extensions using these types are defined, + * the typedefs must move out of this block and be shared. + */ +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef struct __GLsync *GLsync; +#endif + +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +#endif + /* GL_APPLE_texture_format_BGRA8888 */ #ifndef GL_APPLE_texture_format_BGRA8888 #define GL_BGRA_EXT 0x80E1 @@ -283,6 +436,11 @@ typedef void* GLeglImageOES; * ARM extension tokens *------------------------------------------------------------------------*/ +/* GL_ARM_mali_program_binary */ +#ifndef GL_ARM_mali_program_binary +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif + /* GL_ARM_mali_shader_binary */ #ifndef GL_ARM_mali_shader_binary #define GL_MALI_SHADER_BINARY_ARM 0x8F60 @@ -331,6 +489,16 @@ typedef void* GLeglImageOES; #define GL_STENCIL_EXT 0x1802 #endif +/* GL_EXT_map_buffer_range */ +#ifndef GL_EXT_map_buffer_range +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +#endif + /* GL_EXT_multisampled_render_to_texture */ #ifndef GL_EXT_multisampled_render_to_texture #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C @@ -340,6 +508,15 @@ typedef void* GLeglImageOES; #define GL_MAX_SAMPLES_EXT 0x8D57 #endif +/* GL_EXT_multiview_draw_buffers */ +#ifndef GL_EXT_multiview_draw_buffers +#define GL_COLOR_ATTACHMENT_EXT 0x90F0 +#define GL_MULTIVIEW_EXT 0x90F1 +#define GL_DRAW_BUFFER_EXT 0x0C01 +#define GL_READ_BUFFER_EXT 0x0C02 +#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 +#endif + /* GL_EXT_multi_draw_arrays */ /* No new tokens introduced by this extension. */ @@ -381,6 +558,11 @@ typedef void* GLeglImageOES; #define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A #endif +/* GL_EXT_shader_framebuffer_fetch */ +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#endif + /* GL_EXT_shader_texture_lod */ /* No new tokens introduced by this extension. */ @@ -459,9 +641,9 @@ typedef void* GLeglImageOES; /* GL_EXT_unpack_subimage */ #ifndef GL_EXT_unpack_subimage -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 #endif /*------------------------------------------------------------------------* @@ -479,7 +661,7 @@ typedef void* GLeglImageOES; /* GL_FJ_shader_binary_GCCSO */ #ifndef GL_FJ_shader_binary_GCCSO -#define GCCSO_SHADER_BINARY_FJ 0x9260 +#define GL_GCCSO_SHADER_BINARY_F 0x9260 #endif /*------------------------------------------------------------------------* @@ -510,6 +692,12 @@ typedef void* GLeglImageOES; #define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 #endif +/* GL_IMG_texture_compression_pvrtc2 */ +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif + /* GL_IMG_multisampled_render_to_texture */ #ifndef GL_IMG_multisampled_render_to_texture #define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 @@ -577,6 +765,9 @@ typedef void* GLeglImageOES; #define GL_COLOR_ATTACHMENT15_NV 0x8CEF #endif +/* GL_NV_draw_instanced */ +/* No new tokens introduced by this extension. */ + /* GL_NV_fbo_color_attachments */ #ifndef GL_NV_fbo_color_attachments #define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF @@ -590,6 +781,29 @@ typedef void* GLeglImageOES; #define GL_FENCE_CONDITION_NV 0x84F4 #endif +/* GL_NV_framebuffer_blit */ +#ifndef GL_NV_framebuffer_blit +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA +#endif + +/* GL_NV_framebuffer_multisample */ +#ifndef GL_NV_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 +#endif + +/* GL_NV_generate_mipmap_sRGB */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_instanced_arrays */ +#ifndef GL_NV_instanced_arrays +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE +#endif + /* GL_NV_read_buffer */ #ifndef GL_NV_read_buffer #define GL_READ_BUFFER_NV 0x0C02 @@ -607,6 +821,36 @@ typedef void* GLeglImageOES; /* GL_NV_read_stencil */ /* No new tokens introduced by this extension. */ +/* GL_NV_shadow_samplers_array */ +#ifndef GL_NV_shadow_samplers_array +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 +#endif + +/* GL_NV_shadow_samplers_cube */ +#ifndef GL_NV_shadow_samplers_cube +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 +#endif + +/* GL_NV_sRGB_formats */ +#ifndef GL_NV_sRGB_formats +#define GL_SLUMINANCE_NV 0x8C46 +#define GL_SLUMINANCE_ALPHA_NV 0x8C44 +#define GL_SRGB8_NV 0x8C41 +#define GL_SLUMINANCE8_NV 0x8C47 +#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F +#define GL_ETC1_SRGB8_NV 0x88EE +#endif + +/* GL_NV_texture_border_clamp */ +#ifndef GL_NV_texture_border_clamp +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D +#endif + /* GL_NV_texture_compression_s3tc_update */ /* No new tokens introduced by this extension. */ @@ -624,6 +868,14 @@ typedef void* GLeglImageOES; #define GL_ALPHA_TEST_REF_QCOM 0x0BC2 #endif +/* GL_QCOM_binning_control */ +#ifndef GL_QCOM_binning_control +#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 +#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 +#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 +#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 +#endif + /* GL_QCOM_driver_control */ /* No new tokens introduced by this extension. */ @@ -819,6 +1071,10 @@ typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum #define GL_OES_stencil4 1 #endif +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#endif + /* GL_OES_texture_3D */ #ifndef GL_OES_texture_3D #define GL_OES_texture_3D 1 @@ -888,6 +1144,43 @@ typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); #define GL_OES_vertex_type_10_10_10_2 1 #endif +/*------------------------------------------------------------------------* + * KHR extension functions + *------------------------------------------------------------------------*/ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroup (void); +GL_APICALL void GL_APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointerv (GLenum pname, void **params); +#endif +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVPROC) (GLenum pname, void **params); +#endif + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif + + /*------------------------------------------------------------------------* * AMD extension functions *------------------------------------------------------------------------*/ @@ -940,6 +1233,11 @@ typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monito * ANGLE extension functions *------------------------------------------------------------------------*/ +/* GL_ANGLE_depth_texture */ +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif + /* GL_ANGLE_framebuffer_blit */ #ifndef GL_ANGLE_framebuffer_blit #define GL_ANGLE_framebuffer_blit 1 @@ -959,14 +1257,15 @@ typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum #endif #ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 #ifdef GL_GLEXT_PROTOTYPES GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); #endif -typedef void (GL_APIENTRYP PFLGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (GL_APIENTRYP PFLGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); -typedef void (GL_APIENTRYP PFLGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); #endif /* GL_ANGLE_pack_reverse_row_order */ @@ -974,6 +1273,11 @@ typedef void (GL_APIENTRYP PFLGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLu #define GL_ANGLE_pack_reverse_row_order 1 #endif +/* GL_ANGLE_program_binary */ +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#endif + /* GL_ANGLE_texture_compression_dxt3 */ #ifndef GL_ANGLE_texture_compression_dxt3 #define GL_ANGLE_texture_compression_dxt3 1 @@ -994,16 +1298,20 @@ typedef void (GL_APIENTRYP PFLGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLu #ifdef GL_GLEXT_PROTOTYPES GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); #endif -typedef void (GL_APIENTRYP PFLGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); #endif /*------------------------------------------------------------------------* * APPLE extension functions *------------------------------------------------------------------------*/ -/* GL_APPLE_rgb_422 */ -#ifndef GL_APPLE_rgb_422 -#define GL_APPLE_rgb_422 1 +/* GL_APPLE_copy_texture_levels */ +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); #endif /* GL_APPLE_framebuffer_multisample */ @@ -1017,6 +1325,32 @@ typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); #endif +/* GL_APPLE_rgb_422 */ +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#endif + +/* GL_APPLE_sync */ +#ifndef GL_APPLE_sync +#define GL_APPLE_sync 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif + /* GL_APPLE_texture_format_BGRA8888 */ #ifndef GL_APPLE_texture_format_BGRA8888 #define GL_APPLE_texture_format_BGRA8888 1 @@ -1031,6 +1365,11 @@ typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); * ARM extension functions *------------------------------------------------------------------------*/ +/* GL_ARM_mali_program_binary */ +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#endif + /* GL_ARM_mali_shader_binary */ #ifndef GL_ARM_mali_shader_binary #define GL_ARM_mali_shader_binary 1 @@ -1088,6 +1427,17 @@ GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numA typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); #endif +/* GL_EXT_map_buffer_range */ +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void* GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +typedef void* (GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#endif + /* GL_EXT_multisampled_render_to_texture */ #ifndef GL_EXT_multisampled_render_to_texture #define GL_EXT_multisampled_render_to_texture 1 @@ -1099,6 +1449,19 @@ typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum t typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); #endif +/* GL_EXT_multiview_draw_buffers */ +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); +GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); +GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); +#endif +typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +#endif + #ifndef GL_EXT_multi_draw_arrays #define GL_EXT_multi_draw_arrays 1 #ifdef GL_GLEXT_PROTOTYPES @@ -1217,6 +1580,11 @@ typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); #endif +/* GL_EXT_shader_framebuffer_fetch */ +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +#endif + /* GL_EXT_shader_texture_lod */ #ifndef GL_EXT_shader_texture_lod #define GL_EXT_shader_texture_lod 1 @@ -1323,6 +1691,11 @@ typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum #define GL_IMG_texture_compression_pvrtc 1 #endif +/* GL_IMG_texture_compression_pvrtc2 */ +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_IMG_texture_compression_pvrtc2 1 +#endif + /* GL_IMG_multisampled_render_to_texture */ #ifndef GL_IMG_multisampled_render_to_texture #define GL_IMG_multisampled_render_to_texture 1 @@ -1363,6 +1736,17 @@ GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); #endif +/* GL_NV_draw_instanced */ +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +#endif +typedef void (GL_APIENTRYP PFNDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +#endif + /* GL_NV_fbo_color_attachments */ #ifndef GL_NV_fbo_color_attachments #define GL_NV_fbo_color_attachments 1 @@ -1389,6 +1773,38 @@ typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); #endif +/* GL_NV_framebuffer_blit */ +#ifndef GL_NV_framebuffer_blit +#define GL_NV_framebuffer_blit 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferNV (int srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +typedef void (GL_APIENTRYP PFNBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif + +/* GL_NV_framebuffer_multisample */ +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +typedef void (GL_APIENTRYP PFNRENDERBUFFERSTORAGEMULTISAMPLENVPROC) ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif + +/* GL_NV_generate_mipmap_sRGB */ +#ifndef GL_NV_generate_mipmap_sRGB +#define GL_NV_generate_mipmap_sRGB 1 +#endif + +/* GL_NV_instanced_arrays */ +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); +#endif +typedef void (GL_APIENTRYP PFNVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); +#endif + /* GL_NV_read_buffer */ #ifndef GL_NV_read_buffer #define GL_NV_read_buffer 1 @@ -1418,6 +1834,26 @@ typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); #define GL_NV_read_stencil 1 #endif +/* GL_NV_shadow_samplers_array */ +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#endif + +/* GL_NV_shadow_samplers_cube */ +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#endif + +/* GL_NV_sRGB_formats */ +#ifndef GL_NV_sRGB_formats +#define GL_NV_sRGB_formats 1 +#endif + +/* GL_NV_texture_border_clamp */ +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#endif + /* GL_NV_texture_compression_s3tc_update */ #ifndef GL_NV_texture_compression_s3tc_update #define GL_NV_texture_compression_s3tc_update 1 @@ -1441,6 +1877,11 @@ GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); #endif +/* GL_QCOM_binning_control */ +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#endif + /* GL_QCOM_driver_control */ #ifndef GL_QCOM_driver_control #define GL_QCOM_driver_control 1 -- cgit v1.2.3 From a410273fabb294b46b04f7ccee38bab668413061 Mon Sep 17 00:00:00 2001 From: Caroline Chao Date: Tue, 12 Mar 2013 09:24:16 +0100 Subject: Fix wrong initial position If the widget is larger than the screen, its title bar top left corner will be shown inside the screen. Task-number: QTBUG-30142 Change-Id: Id93773874be3616b3ef4b9bee6e1bb751c541d7b Reviewed-by: Caroline Chao Reviewed-by: Shawn Rutledge --- src/plugins/platforms/cocoa/qcocoahelpers.mm | 21 ++++++++++++++++++++- src/plugins/platforms/windows/qwindowswindow.cpp | 5 +++++ 2 files changed, 25 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm index 3f00893465..5ec2cea362 100644 --- a/src/plugins/platforms/cocoa/qcocoahelpers.mm +++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm @@ -47,6 +47,7 @@ #include #include #include +#include #ifndef QT_NO_WIDGETS #include @@ -584,10 +585,28 @@ QString qt_mac_applicationName() return appName; } +/* + Mac window coordinates are in the first quadrant: 0, 0 is at the lower-left + corner of the primary screen. This function converts the given rect to an + NSRect for the window geometry, flipping from 4th quadrant to 1st quadrant + and simultaneously ensuring that as much of the window as possible will be + onscreen. If the rect is too tall for the screen, the OS will reduce the + window's height anyway; but by moving the window upwards we can have more + of it onscreen. But the application can still control the y coordinate + in case it really wants the window to be positioned partially offscreen. +*/ NSRect qt_mac_flipRect(const QRect &rect, QWindow *window) { QPlatformScreen *onScreen = QPlatformScreen::platformScreenForWindow(window); - int flippedY = onScreen->geometry().height() - rect.y() - rect.height(); + int flippedY = onScreen->geometry().height() - (rect.y() + rect.height()); + + // In case of automatic positioning, try to put as much of the window onscreen as possible. + if (window->isTopLevel() && qt_window_private(const_cast(window))->positionAutomatic && flippedY < 0) + flippedY = onScreen->geometry().height() - onScreen->availableGeometry().height() - onScreen->availableGeometry().y(); +#ifdef QT_COCOA_ENABLE_WINDOW_DEBUG + qDebug() << Q_FUNC_INFO << rect << "flippedY" << flippedY << + "screen" << onScreen->geometry() << "available" << onScreen->availableGeometry(); +#endif return NSMakeRect(rect.x(), flippedY, rect.width(), rect.height()); } diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index 2da0af8abb..6cbe3e8cf7 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -487,6 +487,11 @@ QWindowsWindow::WindowData const QWindowCreationContextPtr context(new QWindowCreationContext(w, rect, data.customMargins, style, exStyle)); QWindowsContext::instance()->setWindowCreationContext(context); + if (context->frameX < 0) + context->frameX = 0; + if (context->frameY < 0) + context->frameY = 0; + if (QWindowsContext::verboseWindows) qDebug().nospace() << "CreateWindowEx: " << w << *this -- cgit v1.2.3 From 771286e01e610155fb1f96c3bc3a8fd238c20219 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Thu, 3 Jan 2013 16:06:51 +0000 Subject: Add QOpenGLTimerQuery and QOpenGLTimeMonitor classes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QOpenGLTimerQuery encapsulates a single OpenGL timer query object. QOpenGLTimeMonitor is a convenience wrapper around a sequence of OpenGL timer query objects that can be used to profile OpenGL rendering code or to allow real-time adaptation of rendering methods based upon run-time performance. Change-Id: I873e591927080dea2b079b0e2a1eb9fed15c0372 Reviewed-by: Samuel Rødal Reviewed-by: James Turner --- src/gui/opengl/opengl.pri | 8 +- src/gui/opengl/qopenglqueryhelper_p.h | 177 +++++++ src/gui/opengl/qopengltimerquery.cpp | 876 ++++++++++++++++++++++++++++++++++ src/gui/opengl/qopengltimerquery.h | 116 +++++ 4 files changed, 1174 insertions(+), 3 deletions(-) create mode 100644 src/gui/opengl/qopenglqueryhelper_p.h create mode 100644 src/gui/opengl/qopengltimerquery.cpp create mode 100644 src/gui/opengl/qopengltimerquery.h (limited to 'src') diff --git a/src/gui/opengl/opengl.pri b/src/gui/opengl/opengl.pri index 0c16e1582d..6a5a6f018b 100644 --- a/src/gui/opengl/opengl.pri +++ b/src/gui/opengl/opengl.pri @@ -51,7 +51,6 @@ contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2) { opengl/qopenglversionfunctionsfactory.cpp \ opengl/qopenglvertexarrayobject.cpp - !contains(QT_CONFIG, opengles2) { HEADERS += opengl/qopenglfunctions_1_0.h \ opengl/qopenglfunctions_1_1.h \ @@ -74,7 +73,9 @@ contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2) { opengl/qopenglfunctions_4_0_compatibility.h \ opengl/qopenglfunctions_4_1_compatibility.h \ opengl/qopenglfunctions_4_2_compatibility.h \ - opengl/qopenglfunctions_4_3_compatibility.h + opengl/qopenglfunctions_4_3_compatibility.h \ + opengl/qopenglqueryhelper_p.h \ + opengl/qopengltimerquery.h SOURCES += opengl/qopenglfunctions_1_0.cpp \ opengl/qopenglfunctions_1_1.cpp \ @@ -97,7 +98,8 @@ contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2) { opengl/qopenglfunctions_4_0_compatibility.cpp \ opengl/qopenglfunctions_4_1_compatibility.cpp \ opengl/qopenglfunctions_4_2_compatibility.cpp \ - opengl/qopenglfunctions_4_3_compatibility.cpp + opengl/qopenglfunctions_4_3_compatibility.cpp \ + opengl/qopengltimerquery.cpp } contains(QT_CONFIG, opengles2) { diff --git a/src/gui/opengl/qopenglqueryhelper_p.h b/src/gui/opengl/qopenglqueryhelper_p.h new file mode 100644 index 0000000000..a7136c1cb7 --- /dev/null +++ b/src/gui/opengl/qopenglqueryhelper_p.h @@ -0,0 +1,177 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLQUERYHELPER_P_H +#define QOPENGLQUERYHELPER_P_H + +#include + +#if !defined(QT_OPENGL_ES_2) + +#include + +QT_BEGIN_NAMESPACE + +// Helper class used by QOpenGLTimerQuery and later will be used by +// QOpenGLOcclusionQuery +class QOpenGLQueryHelper +{ +public: + QOpenGLQueryHelper(QOpenGLContext *context) + : GetQueryObjectuiv(0), + GetQueryObjectiv(0), + GetQueryiv(0), + EndQuery(0), + BeginQuery(0), + IsQuery(0), + DeleteQueries(0), + GenQueries(0), + GetInteger64v(0), + GetQueryObjectui64v(0), + GetQueryObjecti64v(0), + QueryCounter(0) + { + Q_ASSERT(context); + + // Core in OpenGL >=1.5 + GetQueryObjectuiv = reinterpret_cast(context->getProcAddress("glGetQueryObjectuiv")); + GetQueryObjectiv = reinterpret_cast(context->getProcAddress("glGetQueryObjectiv")); + GetQueryiv = reinterpret_cast(context->getProcAddress("glGetQueryiv")); + EndQuery = reinterpret_cast(context->getProcAddress("glEndQuery")); + BeginQuery = reinterpret_cast(context->getProcAddress("glBeginQuery")); + IsQuery = reinterpret_cast(context->getProcAddress("glIsQuery")); + DeleteQueries = reinterpret_cast(context->getProcAddress("glDeleteQueries")); + GenQueries = reinterpret_cast(context->getProcAddress("glGenQueries")); + + // Core in OpenGL >=3.2 + GetInteger64v = reinterpret_cast(context->getProcAddress("glGetInteger64v")); + + // Core in OpenGL >=3.3 / ARB_timer_query + GetQueryObjectui64v = reinterpret_cast(context->getProcAddress("glGetQueryObjectui64v")); + GetQueryObjecti64v = reinterpret_cast(context->getProcAddress("glGetQueryObjecti64v")); + QueryCounter = reinterpret_cast(context->getProcAddress("glQueryCounter")); + } + + inline void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params) + { + GetQueryObjectuiv(id, pname, params); + } + + inline void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params) + { + GetQueryObjectiv(id, pname, params); + } + + inline void glGetQueryiv(GLenum target, GLenum pname, GLint *params) + { + GetQueryiv(target, pname, params); + } + + inline void glEndQuery(GLenum target) + { + EndQuery(target); + } + + inline void glBeginQuery(GLenum target, GLuint id) + { + BeginQuery(target, id); + } + + inline GLboolean glIsQuery(GLuint id) + { + return IsQuery(id); + } + + inline void glDeleteQueries(GLsizei n, const GLuint *ids) + { + DeleteQueries(n, ids); + } + + inline void glGenQueries(GLsizei n, GLuint *ids) + { + GenQueries(n, ids); + } + + inline void glGetInteger64v(GLenum pname, GLint64 *params) + { + GetInteger64v(pname, params); + } + + inline void glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 *params) + { + GetQueryObjectui64v(id, pname, params); + } + + inline void glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params) + { + GetQueryObjecti64v(id, pname, params); + } + + inline void glQueryCounter(GLuint id, GLenum target) + { + QueryCounter(id, target); + } + +private: + // Core in OpenGL >=1.5 + void (QOPENGLF_APIENTRYP GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint *params); + void (QOPENGLF_APIENTRYP GetQueryObjectiv)(GLuint id, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP GetQueryiv)(GLenum target, GLenum pname, GLint *params); + void (QOPENGLF_APIENTRYP EndQuery)(GLenum target); + void (QOPENGLF_APIENTRYP BeginQuery)(GLenum target, GLuint id); + GLboolean (QOPENGLF_APIENTRYP IsQuery)(GLuint id); + void (QOPENGLF_APIENTRYP DeleteQueries)(GLsizei n, const GLuint *ids); + void (QOPENGLF_APIENTRYP GenQueries)(GLsizei n, GLuint *ids); + + // Core in OpenGL >=3.2 + void (QOPENGLF_APIENTRYP GetInteger64v)(GLenum pname, GLint64 *params); + + // Core in OpenGL >=3.3 and provided by ARB_timer_query + void (QOPENGLF_APIENTRYP GetQueryObjectui64v)(GLuint id, GLenum pname, GLuint64 *params); + void (QOPENGLF_APIENTRYP GetQueryObjecti64v)(GLuint id, GLenum pname, GLint64 *params); + void (QOPENGLF_APIENTRYP QueryCounter)(GLuint id, GLenum target); +}; + +QT_END_NAMESPACE + +#endif + +#endif // QOPENGLQUERYHELPER_P_H diff --git a/src/gui/opengl/qopengltimerquery.cpp b/src/gui/opengl/qopengltimerquery.cpp new file mode 100644 index 0000000000..38e988c4df --- /dev/null +++ b/src/gui/opengl/qopengltimerquery.cpp @@ -0,0 +1,876 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qopengltimerquery.h" + +#include "qopenglqueryhelper_p.h" +#include +#include + +QT_BEGIN_NAMESPACE + +// Helper class used as fallback if OpenGL <3.3 is being used with EXT_timer_query +class QExtTimerQueryHelper +{ +public: + QExtTimerQueryHelper(QOpenGLContext *context) + { + Q_ASSERT(context); + GetQueryObjectui64vEXT = reinterpret_cast(context->getProcAddress("glGetQueryObjectui64vEXT")); + GetQueryObjecti64vEXT = reinterpret_cast(context->getProcAddress("glGetQueryObjecti64vEXT")); + } + + inline void glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64EXT *params) + { + GetQueryObjectui64vEXT(id, pname, params); + } + + inline void glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64EXT *params) + { + GetQueryObjecti64vEXT(id, pname, params); + } + +private: + void (QOPENGLF_APIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT *params); + void (QOPENGLF_APIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT *params); +}; + +class QOpenGLTimerQueryPrivate : public QObjectPrivate +{ +public: + QOpenGLTimerQueryPrivate() + : QObjectPrivate(), + context(0), + ext(0), + timeInterval(0), + timer(0) + { + } + + ~QOpenGLTimerQueryPrivate() + { + delete core; + delete ext; + } + + bool create(); + void destroy(); + void begin(); + void end(); + GLuint64 waitForTimeStamp() const; + void recordTimestamp(); + bool isResultAvailable() const; + GLuint64 result() const; + + // There are several cases we must handle: + // OpenGL >=3.3 includes timer queries as a core feature + // ARB_timer_query has same functionality as above. Requires OpenGL 3.2 + // EXT_timer_query offers limited support. Can be used with OpenGL >=1.5 + // + // Note that some implementations (OS X) provide OpenGL 3.2 but do not expose the + // ARB_timer_query extension. In such situations we must also be able to handle + // using the EXT_timer_query extension with any version of OpenGL. + // + // OpenGL 1.5 or above contains the generic query API and OpenGL 3.3 and + // ARB_timer_query provide the 64-bit query API. These are wrapped by + // QOpenGLQueryHelper. All we need to handle in addition is the EXT_timer_query + // case and to take care not to call the Core/ARB functions when we only + // have EXT_timer_query available. + QOpenGLContext *context; + QOpenGLQueryHelper *core; + QExtTimerQueryHelper *ext; + mutable GLuint64 timeInterval; + GLuint timer; +}; + +bool QOpenGLTimerQueryPrivate::create() +{ + QOpenGLContext *ctx = QOpenGLContext::currentContext(); + + if (timer && context == ctx) + return true; + + context = ctx; + if (!context) { + qWarning("A current OpenGL context is required to create timer query objects"); + return false; + } + + // Resolve the functions provided by OpenGL 1.5 and OpenGL 3.3 or ARB_timer_query + core = new QOpenGLQueryHelper(context); + + // Check to see if we also need to resolve the functions for EXT_timer_query + QSurfaceFormat f = context->format(); + if (f.version() <= qMakePair(3, 2) + && !context->hasExtension(QByteArrayLiteral("GL_ARB_timer_query")) + && context->hasExtension(QByteArrayLiteral("GL_EXT_timer_query"))) { + ext = new QExtTimerQueryHelper(context); + } else if (f.version() <= qMakePair(3, 2) + && !context->hasExtension(QByteArrayLiteral("GL_ARB_timer_query")) + && !context->hasExtension(QByteArrayLiteral("GL_EXT_timer_query"))) { + qWarning("QOpenGLTimerQuery requires one of:\n" + " OpenGL 3.3 or newer,\n" + " OpenGL 3.2 and the ARB_timer_query extension\n" + " or the EXT_timer query extension"); + return false; + } + + core->glGenQueries(1, &timer); + return (timer != 0); +} + +void QOpenGLTimerQueryPrivate::destroy() +{ + if (!timer) + return; + + core->glDeleteQueries(1, &timer); + timer = 0; + context = 0; +} + +// GL_TIME_ELAPSED_EXT is not defined on OS X 10.6 +#if !defined(GL_TIME_ELAPSED_EXT) +#define GL_TIME_ELAPSED_EXT 0x88BF +#endif + +// GL_TIME_ELAPSED is not defined on OS X 10.7 or 10.8 yet +#if !defined(GL_TIME_ELAPSED) +#define GL_TIME_ELAPSED GL_TIME_ELAPSED_EXT +#endif + +void QOpenGLTimerQueryPrivate::begin() +{ + core->glBeginQuery(GL_TIME_ELAPSED, timer); +} + +void QOpenGLTimerQueryPrivate::end() +{ + core->glEndQuery(GL_TIME_ELAPSED); +} + +void QOpenGLTimerQueryPrivate::recordTimestamp() +{ + // Don't call glQueryCounter if we only have EXT_timer_query +#if defined(GL_TIMESTAMP) + if (!ext) + core->glQueryCounter(timer, GL_TIMESTAMP); + else + qWarning("QOpenGLTimerQuery::recordTimestamp() requires OpenGL 3.3 or GL_ARB_timer_query"); +#else + qWarning("QOpenGLTimerQuery::recordTimestamp() requires OpenGL 3.3 or GL_ARB_timer_query"); +#endif +} + +GLuint64 QOpenGLTimerQueryPrivate::waitForTimeStamp() const +{ + GLint64 tmp = 0; +#if defined(GL_TIMESTAMP) + if (!ext) + core->glGetInteger64v(GL_TIMESTAMP, &tmp); + else + qWarning("QOpenGLTimerQuery::waitForTimestamp() requires OpenGL 3.3 or GL_ARB_timer_query"); +#else + qWarning("QOpenGLTimerQuery::waitForTimestamp() requires OpenGL 3.3 or GL_ARB_timer_query"); +#endif + GLuint64 timestamp(tmp); + return timestamp; +} + +bool QOpenGLTimerQueryPrivate::isResultAvailable() const +{ + GLuint available = GL_FALSE; + core->glGetQueryObjectuiv(timer, GL_QUERY_RESULT_AVAILABLE, &available); + return available; +} + +GLuint64 QOpenGLTimerQueryPrivate::result() const +{ + if (!ext) + core->glGetQueryObjectui64v(timer, GL_QUERY_RESULT, &timeInterval); + else + ext->glGetQueryObjectui64vEXT(timer, GL_QUERY_RESULT, &timeInterval); + return timeInterval; +} + +/*! + \class QOpenGLTimerQuery + \brief The QOpenGLTimerQuery class wraps an OpenGL timer query object. + \inmodule QtGui + \since 5.1 + \ingroup painting-3D + + OpenGL timer query objects are OpenGL managed resources to measure the + execution times of sequences of OpenGL commands on the GPU. + + OpenGL offers various levels of support for timer queries, depending on + the version of OpenGL you have and the presence of the ARB_timer_query or + EXT_timer_query extensions. The support can be summarized as: + + \list + \li OpenGL >=3.3 offers full support for all timer query functionality. + \li OpenGL 3.2 with the ARB_timer_query extension offers full support + for all timer query functionality. + \li OpenGL <=3.2 with the EXT_timer_query extension offers limited support + in that the timestamp of the GPU cannot be queried. Places where this + impacts functions provided by Qt classes will be highlighted in the + function documentation. + \li OpenGL ES 2 (and OpenGL ES 3) do not provide any support for OpenGL + timer queries. + \endlist + + OpenGL represents time with a granularity of 1 nanosecond (1e-9 seconds). As a + consequence of this, 32-bit integers would only give a total possible duration + of approximately 4 seconds, which would not be difficult to exceed in poorly + performing or lengthy operations. OpenGL therefore uses 64 bit integer types + to represent times. A GLuint64 variable has enough width to contain a duration + of hundreds of years, which is plenty for real-time rendering needs. + + As with the other Qt OpenGL classes, QOpenGLTimerQuery has a create() + function to create the underlying OpenGL object. This is to allow the developer to + ensure that there is a valid current OpenGL context at the time. + + Once created, timer queries can be issued in one of several ways. The simplest + method is to delimit a block of commands with calls to begin() and end(). This + instructs OpenGL to measure the time taken from completing all commands issued + prior to begin() until the completion of all commands issued prior to end(). + + At the end of a frame we can retrieve the results by calling waitForResult(). + As this function's name implies, it blocks CPU execution until OpenGL notifies + that the timer query result is available. To avoid blocking, you can check + if the query result is available by calling isResultAvailable(). Note that + modern GPUs are deeply pipelined and query results may not become availble for + between 1-5 frames after they were issued. + + Note that OpenGL does not permit nesting or interleaving of multiple timer queries + using begin() and end(). Using multiple timer queries and recordTimestamp() avoids + this limitation. When using recordTimestamp() the result can be obtained at + some later time using isResultAvailable() and waitForResult(). Qt provides the + convenience class QOpenGLTimeMonitor that helps with using multiple query objects. + + \sa QOpenGLTimeMonitor +*/ + +/*! + Creates a QOpenGLTimerQuery instance with the given \a parent. You must call create() + with a valid OpenGL context before using. +*/ +QOpenGLTimerQuery::QOpenGLTimerQuery(QObject *parent) + : QObject(*new QOpenGLTimerQueryPrivate, parent) +{ +} + +/*! + Destroys the QOpenGLTimerQuery and the underlying OpenGL resource. +*/ +QOpenGLTimerQuery::~QOpenGLTimerQuery() +{ + QOpenGLContext* ctx = QOpenGLContext::currentContext(); + + Q_D(QOpenGLTimerQuery); + QOpenGLContext *oldContext = 0; + if (d->context != ctx) { + oldContext = ctx; + if (d->context->makeCurrent(oldContext->surface())) { + ctx = d->context; + } else { + qWarning("QOpenGLTimerQuery::~QOpenGLTimerQuery() failed to make query objects's context current"); + ctx = 0; + } + } + + if (ctx) + destroy(); + + if (oldContext) { + if (!oldContext->makeCurrent(oldContext->surface())) + qWarning("QOpenGLTimerQuery::~QOpenGLTimerQuery() failed to restore current context"); + } +} + +/*! + Creates the underlying OpenGL timer query object. There must be a valid OpenGL context + that supports query objects current for this function to succeed. + + Returns true if the OpenGL timer query object was successfully created. +*/ +bool QOpenGLTimerQuery::create() +{ + Q_D(QOpenGLTimerQuery); + return d->create(); +} + +/*! + Destroys the underlying OpenGL timer query object. The context that was current when + create() was called must be current when calling this function. +*/ +void QOpenGLTimerQuery::destroy() +{ + Q_D(QOpenGLTimerQuery); + d->destroy(); +} + +/*! + Returns true if the underlying OpenGL query object has been created. If this + returns true and the associated OpenGL context is current, then you are able to issue + queries with this object. +*/ +bool QOpenGLTimerQuery::isCreated() const +{ + Q_D(const QOpenGLTimerQuery); + return (d->timer != 0); +} + +/*! + Returns the id of the underlying OpenGL query object. +*/ +GLuint QOpenGLTimerQuery::objectId() const +{ + Q_D(const QOpenGLTimerQuery); + return d->timer; +} + +/*! + Marks the start point in the OpenGL command queue for a sequence of commands to + be timed by this query object. + + This is useful for simple use-cases. Usually it is better to use recordTimestamp(). + + \sa end(), isResultAvailable(), waitForResult(), recordTimestamp() +*/ +void QOpenGLTimerQuery::begin() +{ + Q_D(QOpenGLTimerQuery); + d->begin(); +} + +/*! + Marks the end point in the OpenGL command queue for a sequence of commands to + be timed by this query object. + + This is useful for simple use-cases. Usually it is better to use recordTimestamp(). + + \sa begin(), isResultAvailable(), waitForResult(), recordTimestamp() +*/ +void QOpenGLTimerQuery::end() +{ + Q_D(QOpenGLTimerQuery); + d->end(); +} + +/*! + Places a marker in the OpenGL command queue for the GPU to record the timestamp + when this marker is reached by the GPU. This function is non-blocking and the + result will become available at some later time. + + The availability of the result can be checked with isResultAvailable(). The result + can be fetched with waitForResult() which will block if the result is not yet + available. + + \sa waitForResult(), isResultAvailable(), begin(), end() +*/ +void QOpenGLTimerQuery::recordTimestamp() +{ + Q_D(QOpenGLTimerQuery); + return d->recordTimestamp(); +} + +/*! + Returns the current timestamp of the GPU when all previously issued OpenGL + commands have been received but not necessarily executed by the GPU. + + This function blocks until the result is returned. + + \sa recordTimestamp() +*/ +GLuint64 QOpenGLTimerQuery::waitForTimestamp() const +{ + Q_D(const QOpenGLTimerQuery); + return d->waitForTimeStamp(); +} + +/*! + Returns true if the OpenGL timer query result is available. + + This function is non-blocking and ideally should be used to check for the + availability of the query result before calling waitForResult(). + + \sa waitForResult() +*/ +bool QOpenGLTimerQuery::isResultAvailable() const +{ + Q_D(const QOpenGLTimerQuery); + return d->isResultAvailable(); +} + +/*! + Returns the result of the OpenGL timer query. + + This function will block until the result is made available by OpenGL. It is + recommended to call isResultAvailable() to ensure that the result is available + to avoid unnecessary blocking and stalling. + + \sa isResultAvailable() +*/ +GLuint64 QOpenGLTimerQuery::waitForResult() const +{ + Q_D(const QOpenGLTimerQuery); + return d->result(); +} + + +class QOpenGLTimeMonitorPrivate : public QObjectPrivate +{ +public: + QOpenGLTimeMonitorPrivate() + : QObjectPrivate(), + timers(), + timeSamples(), + context(0), + core(0), + ext(0), + requestedSampleCount(2), + currentSample(-1), + timerQueryActive(false) + { + } + + ~QOpenGLTimeMonitorPrivate() + { + delete core; + delete ext; + } + + bool create(); + void destroy(); + void recordSample(); + bool isResultAvailable() const; + QVector samples() const; + QVector intervals() const; + void reset(); + + QVector timers; + mutable QVector timeSamples; + + QOpenGLContext *context; + QOpenGLQueryHelper *core; + QExtTimerQueryHelper *ext; + + int requestedSampleCount; + int currentSample; + mutable bool timerQueryActive; +}; + +bool QOpenGLTimeMonitorPrivate::create() +{ + if (!timers.isEmpty() && timers.at(0) != 0 && timers.size() == requestedSampleCount) + return true; + + QOpenGLContext *ctx = QOpenGLContext::currentContext(); + if (context && context != ctx) { + qWarning("QTimeMonitor: Attempting to use different OpenGL context to recreate timers.\n" + "Please call destroy() first or use the same context to previously create"); + return false; + } + + context = ctx; + if (!context) { + qWarning("A current OpenGL context is required to create timer query objects"); + return false; + } + + // Resize the vectors that hold the timers and the recorded samples + timers.resize(requestedSampleCount); + timeSamples.resize(requestedSampleCount); + + // Resolve the functions provided by OpenGL 1.5 and OpenGL 3.3 or ARB_timer_query + core = new QOpenGLQueryHelper(context); + + // Check to see if we also need to resolve the functions for EXT_timer_query + QSurfaceFormat f = context->format(); + if (f.version() <= qMakePair(3, 2) + && !context->hasExtension(QByteArrayLiteral("GL_ARB_timer_query")) + && context->hasExtension(QByteArrayLiteral("GL_EXT_timer_query"))) { + ext = new QExtTimerQueryHelper(context); + } else if (f.version() <= qMakePair(3, 2) + && !context->hasExtension(QByteArrayLiteral("GL_ARB_timer_query")) + && !context->hasExtension(QByteArrayLiteral("GL_EXT_timer_query"))) { + qWarning("QOpenGLTimeMonitor requires one of:\n" + " OpenGL 3.3 or newer,\n" + " OpenGL 3.2 and the ARB_timer_query extension\n" + " or the EXT_timer query extension"); + return false; + } + + core->glGenQueries(requestedSampleCount, timers.data()); + return (timers.at(0) != 0); +} + +void QOpenGLTimeMonitorPrivate::destroy() +{ + if (timers.isEmpty() || timers.at(0) == 0) + return; + + core->glDeleteQueries(timers.size(), timers.data()); + timers.clear(); + delete core; + core = 0; + delete ext; + ext = 0; + context = 0; +} + +void QOpenGLTimeMonitorPrivate::recordSample() +{ + // Use glQueryCounter() and GL_TIMESTAMP where available. + // Otherwise, simulate it with glBeginQuery()/glEndQuery() + if (!ext) { +#if defined(GL_TIMESTAMP) + core->glQueryCounter(timers.at(++currentSample), GL_TIMESTAMP); +#endif + } else { + if (currentSample == -1) { + core->glBeginQuery(GL_TIME_ELAPSED_EXT, timers.at(++currentSample)); + timerQueryActive = true; + } else if (currentSample < timers.size() - 1) { + core->glEndQuery(GL_TIME_ELAPSED_EXT); + core->glBeginQuery(GL_TIME_ELAPSED_EXT, timers.at(++currentSample)); + } else { + if (timerQueryActive) { + core->glEndQuery(GL_TIME_ELAPSED_EXT); + timerQueryActive = false; + } + } + } +} + +bool QOpenGLTimeMonitorPrivate::isResultAvailable() const +{ + // The OpenGL spec says that if a query result is ready then the results of all queries + // of the same type issued before it must also be ready. Therefore we only need to check + // the availability of the result for the last issued query + GLuint available = GL_FALSE; + core->glGetQueryObjectuiv(timers.at(currentSample), GL_QUERY_RESULT_AVAILABLE, &available); + return available; +} + +QVector QOpenGLTimeMonitorPrivate::samples() const +{ + // For the Core and ARB options just ask for the timestamp for each timer query. + // For the EXT implementation we cannot obtain timestamps so we defer any result + // collection to the intervals() function + if (!ext) { + for (int i = 0; i <= currentSample; ++i) + core->glGetQueryObjectui64v(timers.at(i), GL_QUERY_RESULT, &timeSamples[i]); + } else { + qWarning("QOpenGLTimeMonitor::samples() requires OpenGL >=3.3\n" + "or OpenGL 3.2 and GL_ARB_timer_query"); + } + return timeSamples; +} + +QVector QOpenGLTimeMonitorPrivate::intervals() const +{ + QVector intervals(timers.size() - 1); + if (!ext) { + // Obtain the timestamp samples and calculate the interval durations + const QVector timeStamps = samples(); + for (int i = 0; i < intervals.size(); ++i) + intervals[i] = timeStamps[i+1] - timeStamps[i]; + } else { + // Stop the last timer if needed + if (timerQueryActive) { + core->glEndQuery(GL_TIME_ELAPSED_EXT); + timerQueryActive = false; + } + + // Obtain the results from all timers apart from the redundant last one. In this + // case the results actually are the intervals not timestamps + for (int i = 0; i < currentSample; ++i) + ext->glGetQueryObjectui64vEXT(timers.at(i), GL_QUERY_RESULT, &intervals[i]); + } + + return intervals; +} + +void QOpenGLTimeMonitorPrivate::reset() +{ + currentSample = -1; + timeSamples.fill(0); +} + + +/*! + \class QOpenGLTimeMonitor + \brief The QOpenGLTimeMonitor class wraps a sequence of OpenGL timer query objects. + \inmodule QtGui + \since 5.1 + \ingroup painting-3D + + The QOpenGLTimeMonitor class is a convenience wrapper around a collection of OpenGL + timer query objects used to measure intervals of time on the GPU to the level of + granularity required by your rendering application. + + The OpenGL timer queries objects are queried in sequence to record the GPU + timestamps at positions of interest in your rendering code. Once the results for + all issues timer queries become available, the results can be fetched and + QOpenGLTimerMonitor will calculate the recorded time intervals for you. + + The typical use case of this class is to either profile your application's rendering + algorithms or to adjust those algorithms in real-time for dynamic performance/quality + balancing. + + Prior to using QOpenGLTimeMonitor in your rendering function you should set the + required number of sample points that you wish to record by calling setSamples(). Note + that measuring N sample points will produce N-1 time intervals. Once you have set the + number of sample points, call the create() function with a valid current OpenGL context + to create the necessary query timer objects. These steps are usually performed just + once in an initialization function. + + Use the recordSample() function to delimit blocks of code containing OpenGL commands + that you wish to time. You can check availability of the resulting time + samples and time intervals with isResultAvailable(). The calculated time intervals and + the raw timestamp samples can be retrieved with the blocking waitForIntervals() and + waitForSamples() functions respectively. + + After retrieving the results and before starting a new round of taking samples + (for example, in the next frame) be sure to call the reset() function which will clear + the cached results and reset the timer index back to the first timer object. + + \sa QOpenGLTimerQuery +*/ + +/*! + Creates a QOpenGLTimeMonitor instance with the given \a parent. You must call create() + with a valid OpenGL context before using. + + \sa setSampleCount(), create() +*/ +QOpenGLTimeMonitor::QOpenGLTimeMonitor(QObject *parent) + : QObject(*new QOpenGLTimeMonitorPrivate, parent) +{ +} + +/*! + Destroys the QOpenGLTimeMonitor and any underlying OpenGL resources. +*/ +QOpenGLTimeMonitor::~QOpenGLTimeMonitor() +{ + QOpenGLContext* ctx = QOpenGLContext::currentContext(); + + Q_D(QOpenGLTimeMonitor); + QOpenGLContext *oldContext = 0; + if (d->context != ctx) { + oldContext = ctx; + if (d->context->makeCurrent(oldContext->surface())) { + ctx = d->context; + } else { + qWarning("QOpenGLTimeMonitor::~QOpenGLTimeMonitor() failed to make time monitor's context current"); + ctx = 0; + } + } + + if (ctx) + destroy(); + + if (oldContext) { + if (!oldContext->makeCurrent(oldContext->surface())) + qWarning("QOpenGLTimeMonitor::~QOpenGLTimeMonitor() failed to restore current context"); + } +} + +/*! + Sets the number of sample points to \a sampleCount. After setting the number + of samples with this function, you must call create() to instantiate the underlying + OpenGL timer query objects. + + The new \a sampleCount must be at least 2. + + \sa sampleCount(), create(), recordSample() +*/ +void QOpenGLTimeMonitor::setSampleCount(int sampleCount) +{ + // We need at least 2 samples to get an interval + if (sampleCount < 2) + return; + Q_D(QOpenGLTimeMonitor); + d->requestedSampleCount = sampleCount; +} + +/*! + Returns the number of sample points that have been requested with + setSampleCount(). If create was successfully called following setSampleCount(), + then the value returned will be the actual number of sample points + that can be used. + + The default value for sample count is 2, leading to the measurement of a + single interval. + + \sa setSampleCount() +*/ +int QOpenGLTimeMonitor::sampleCount() const +{ + Q_D(const QOpenGLTimeMonitor); + return d->requestedSampleCount; +} + +/*! + Instantiate sampleCount() OpenGL timer query objects that will be used + to track the amount of time taken to execute OpenGL commands between + successive calls to recordSample(). + + Returns true if the OpenGL timer query objects could be created. + + \sa destroy(), setSampleCount(), recordSample() +*/ +bool QOpenGLTimeMonitor::create() +{ + Q_D(QOpenGLTimeMonitor); + return d->create(); +} + +/*! + Destroys any OpenGL timer query objects used within this instance. + + \sa create() +*/ +void QOpenGLTimeMonitor::destroy() +{ + Q_D(QOpenGLTimeMonitor); + d->destroy(); +} + +/*! + Returns true if the underlying OpenGL query objects have been created. If this + returns true and the associated OpenGL context is current, then you are able to record + time samples with this object. +*/ +bool QOpenGLTimeMonitor::isCreated() const +{ + Q_D(const QOpenGLTimeMonitor); + return (!d->timers.isEmpty() && d->timers.at(0) != 0); +} + +/*! + Returns a QVector containing the object Ids of the OpenGL timer query objects. +*/ +QVector QOpenGLTimeMonitor::objectIds() const +{ + Q_D(const QOpenGLTimeMonitor); + return d->timers; +} + +/*! + Issues an OpenGL timer query at this point in the OpenGL command queue. Calling this + function in a sequence in your application's rendering function, will build up + details of the GPU time taken to execute the OpenGL commands between successive + calls to this function. + + \sa setSampleCount(), isResultAvailable(), waitForSamples(), waitForIntervals() +*/ +int QOpenGLTimeMonitor::recordSample() +{ + Q_D(QOpenGLTimeMonitor); + d->recordSample(); + return d->currentSample; +} + +/*! + Returns true if the OpenGL timer query results are available. + + \sa waitForSamples(), waitForIntervals() +*/ +bool QOpenGLTimeMonitor::isResultAvailable() const +{ + Q_D(const QOpenGLTimeMonitor); + return d->isResultAvailable(); +} + +/*! + Returns a QVector containing the GPU timestamps taken with recordSample(). + + This function will block until OpenGL indicates the results are available. It + is recommended to check the availability of the result prior to calling this + function with isResultAvailable(). + + \note This function only works on systems that have OpenGL >=3.3 or the + ARB_timer_query extension. See QOpenGLTimerQuery for more details. + + \sa waitForIntervals(), isResultAvailable() +*/ +QVector QOpenGLTimeMonitor::waitForSamples() const +{ + Q_D(const QOpenGLTimeMonitor); + return d->samples(); +} + +/*! + Returns a QVector containing the time intervals delimited by the calls to + recordSample(). The resulting vector will contain one fewer element as + this represents the intervening intervals rather than the actual timestamp + samples. + + This function will block until OpenGL indicates the results are available. It + is recommended to check the availability of the result prior to calling this + function with isResultAvailable(). + + \sa waitForSamples(), isResultAvailable() +*/ +QVector QOpenGLTimeMonitor::waitForIntervals() const +{ + Q_D(const QOpenGLTimeMonitor); + return d->intervals(); +} + +/*! + Resets the time monitor ready for use in another frame of rendering. Call + this once you have obtained the previous results and before calling + recordSample() for the first time on the next frame. + + \sa recordSample() +*/ +void QOpenGLTimeMonitor::reset() +{ + Q_D(QOpenGLTimeMonitor); + d->reset(); +} + +QT_END_NAMESPACE diff --git a/src/gui/opengl/qopengltimerquery.h b/src/gui/opengl/qopengltimerquery.h new file mode 100644 index 0000000000..649e80d6c0 --- /dev/null +++ b/src/gui/opengl/qopengltimerquery.h @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLTIMERQUERY_H +#define QOPENGLTIMERQUERY_H + +#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) + +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLTimerQueryPrivate; + +class Q_GUI_EXPORT QOpenGLTimerQuery : public QObject +{ + Q_OBJECT + +public: + explicit QOpenGLTimerQuery(QObject *parent = 0); + ~QOpenGLTimerQuery(); + + bool create(); + void destroy(); + bool isCreated() const; + GLuint objectId() const; + + void begin(); + void end(); + GLuint64 waitForTimestamp() const; + void recordTimestamp(); + bool isResultAvailable() const; + GLuint64 waitForResult() const; + +private: + Q_DECLARE_PRIVATE(QOpenGLTimerQuery) + Q_DISABLE_COPY(QOpenGLTimerQuery) +}; + + +class QOpenGLTimeMonitorPrivate; + +class Q_GUI_EXPORT QOpenGLTimeMonitor : public QObject +{ + Q_OBJECT + +public: + explicit QOpenGLTimeMonitor(QObject *parent = 0); + ~QOpenGLTimeMonitor(); + + void setSampleCount(int sampleCount); + int sampleCount() const; + + bool create(); + void destroy(); + bool isCreated() const; + QVector objectIds() const; + + int recordSample(); + + bool isResultAvailable() const; + + QVector waitForSamples() const; + QVector waitForIntervals() const; + + void reset(); + +private: + Q_DECLARE_PRIVATE(QOpenGLTimeMonitor) + Q_DISABLE_COPY(QOpenGLTimeMonitor) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_OPENGL + +#endif // QOPENGLTIMERQUERY_H -- cgit v1.2.3 From b80d130a5192a15eb53592b31e05be7cbee2c1ef Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Mon, 11 Mar 2013 14:20:04 +0000 Subject: Avoid crash in QVertexArrayObject destructor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: If43c7b1cfdee504171a26b07db2ade9c20528299 Reviewed-by: Samuel Rødal Reviewed-by: Gunnar Sletta --- src/gui/opengl/qopenglvertexarrayobject.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/opengl/qopenglvertexarrayobject.cpp b/src/gui/opengl/qopenglvertexarrayobject.cpp index 7f130505ec..e450fe708f 100644 --- a/src/gui/opengl/qopenglvertexarrayobject.cpp +++ b/src/gui/opengl/qopenglvertexarrayobject.cpp @@ -146,6 +146,7 @@ bool QOpenGLVertexArrayObjectPrivate::create() qWarning("QOpenGLVertexArrayObject::create() requires a valid current OpenGL context"); return false; } + context = ctx; #if defined(QT_OPENGL_ES_2) if (ctx->hasExtension("GL_OES_vertex_array_object")) { @@ -326,7 +327,7 @@ QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject() Q_D(QOpenGLVertexArrayObject); QOpenGLContext *oldContext = 0; - if (d->context != ctx) { + if (d->context && d->context != ctx) { oldContext = ctx; if (d->context->makeCurrent(oldContext->surface())) { ctx = d->context; -- cgit v1.2.3 From 3cd94fcaf81ca5285c481c59b6ed4a720241820e Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 7 Mar 2013 12:53:54 +0200 Subject: QFontComboBox: Minor code optimization & simplification Change-Id: If536a0b8721bdc562b505fc94a9fe4f77cc619de Reviewed-by: Lars Knoll --- src/widgets/widgets/qfontcombobox.cpp | 37 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/widgets/widgets/qfontcombobox.cpp b/src/widgets/widgets/qfontcombobox.cpp index 1b9a08b0d2..4adb188212 100644 --- a/src/widgets/widgets/qfontcombobox.cpp +++ b/src/widgets/widgets/qfontcombobox.cpp @@ -56,46 +56,33 @@ QT_BEGIN_NAMESPACE static QFontDatabase::WritingSystem writingSystemForFont(const QFont &font, bool *hasLatin) { - *hasLatin = true; - QList writingSystems = QFontDatabase().writingSystems(font.family()); // qDebug() << font.family() << writingSystems; // this just confuses the algorithm below. Vietnamese is Latin with lots of special chars - writingSystems.removeAll(QFontDatabase::Vietnamese); + writingSystems.removeOne(QFontDatabase::Vietnamese); + *hasLatin = writingSystems.removeOne(QFontDatabase::Latin); + + if (writingSystems.isEmpty()) + return QFontDatabase::Any; - QFontDatabase::WritingSystem system = QFontDatabase::Any; + QFontDatabase::WritingSystem system = writingSystems.last(); - if (!writingSystems.contains(QFontDatabase::Latin)) { - *hasLatin = false; + if (!*hasLatin) { // we need to show something - if (writingSystems.count()) - system = writingSystems.last(); - } else { - writingSystems.removeAll(QFontDatabase::Latin); + return system; } - if (writingSystems.isEmpty()) + if (writingSystems.count() == 1 && system > QFontDatabase::Cyrillic) return system; - if (writingSystems.count() == 1 && writingSystems.at(0) > QFontDatabase::Cyrillic) { - system = writingSystems.at(0); + if (writingSystems.count() <= 2 && system > QFontDatabase::Armenian && system < QFontDatabase::Vietnamese) return system; - } - if (writingSystems.count() <= 2 - && writingSystems.last() > QFontDatabase::Armenian - && writingSystems.last() < QFontDatabase::Vietnamese) { - system = writingSystems.last(); + if (writingSystems.count() <= 5 && system >= QFontDatabase::SimplifiedChinese && system <= QFontDatabase::Korean) return system; - } - if (writingSystems.count() <= 5 - && writingSystems.last() >= QFontDatabase::SimplifiedChinese - && writingSystems.last() <= QFontDatabase::Korean) - system = writingSystems.last(); - - return system; + return QFontDatabase::Any; } class QFontFamilyDelegate : public QAbstractItemDelegate -- cgit v1.2.3 From 06a65b053e9b8697c0140219fdc3c28495426e77 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 7 Mar 2013 15:21:07 +0200 Subject: Get rid of qt_determine_writing_systems_from_truetype_bits() Move this code to QPlatformFontDatabase and get rid of all dups of it. Change-Id: Idea6c84819039bf3b345b1305305951ade8d1ac4 Reviewed-by: Lars Knoll --- src/gui/text/qfontdatabase.cpp | 127 --------------------- src/gui/text/qplatformfontdatabase.cpp | 101 ++++++++++++++++ src/gui/text/qplatformfontdatabase.h | 3 + src/gui/text/qrawfont.cpp | 13 ++- .../fontdatabases/basic/qbasicfontdatabase.cpp | 126 +------------------- .../fontdatabases/basic/qbasicfontdatabase_p.h | 1 - .../platforms/windows/qwindowsfontdatabase.cpp | 126 +------------------- .../platforms/windows/qwindowsfontdatabase_ft.cpp | 2 +- 8 files changed, 115 insertions(+), 384 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index f937e7a820..f052d8fd89 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -383,133 +383,6 @@ QtFontFoundry *QtFontFamily::foundry(const QString &f, bool create) return foundries[count++]; } -// ### copied to tools/makeqpf/qpf2.cpp - -// see the Unicode subset bitfields in the MSDN docs -static int requiredUnicodeBits[QFontDatabase::WritingSystemsCount][2] = { - // Any, - { 127, 127 }, - // Latin, - { 0, 127 }, - // Greek, - { 7, 127 }, - // Cyrillic, - { 9, 127 }, - // Armenian, - { 10, 127 }, - // Hebrew, - { 11, 127 }, - // Arabic, - { 13, 127 }, - // Syriac, - { 71, 127 }, - //Thaana, - { 72, 127 }, - //Devanagari, - { 15, 127 }, - //Bengali, - { 16, 127 }, - //Gurmukhi, - { 17, 127 }, - //Gujarati, - { 18, 127 }, - //Oriya, - { 19, 127 }, - //Tamil, - { 20, 127 }, - //Telugu, - { 21, 127 }, - //Kannada, - { 22, 127 }, - //Malayalam, - { 23, 127 }, - //Sinhala, - { 73, 127 }, - //Thai, - { 24, 127 }, - //Lao, - { 25, 127 }, - //Tibetan, - { 70, 127 }, - //Myanmar, - { 74, 127 }, - // Georgian, - { 26, 127 }, - // Khmer, - { 80, 127 }, - // SimplifiedChinese, - { 126, 127 }, - // TraditionalChinese, - { 126, 127 }, - // Japanese, - { 126, 127 }, - // Korean, - { 56, 127 }, - // Vietnamese, - { 0, 127 }, // same as latin1 - // Other, - { 126, 127 }, - // Ogham, - { 78, 127 }, - // Runic, - { 79, 127 }, - // Nko, - { 14, 127 }, -}; - -#define SimplifiedChineseCsbBit 18 -#define TraditionalChineseCsbBit 20 -#define JapaneseCsbBit 17 -#define KoreanCsbBit 21 - -QList qt_determine_writing_systems_from_truetype_bits(quint32 unicodeRange[4], quint32 codePageRange[2]) -{ - QList writingSystems; - bool hasScript = false; - - int i; - for(i = 0; i < QFontDatabase::WritingSystemsCount; i++) { - int bit = requiredUnicodeBits[i][0]; - int index = bit/32; - int flag = 1 << (bit&31); - if (bit != 126 && unicodeRange[index] & flag) { - bit = requiredUnicodeBits[i][1]; - index = bit/32; - - flag = 1 << (bit&31); - if (bit == 127 || unicodeRange[index] & flag) { - writingSystems.append(QFontDatabase::WritingSystem(i)); - hasScript = true; - // qDebug("font %s: index=%d, flag=%8x supports script %d", familyName.latin1(), index, flag, i); - } - } - } - if(codePageRange[0] & (1 << SimplifiedChineseCsbBit)) { - writingSystems.append(QFontDatabase::SimplifiedChinese); - hasScript = true; - //qDebug("font %s supports Simplified Chinese", familyName.latin1()); - } - if(codePageRange[0] & (1 << TraditionalChineseCsbBit)) { - writingSystems.append(QFontDatabase::TraditionalChinese); - hasScript = true; - //qDebug("font %s supports Traditional Chinese", familyName.latin1()); - } - if(codePageRange[0] & (1 << JapaneseCsbBit)) { - writingSystems.append(QFontDatabase::Japanese); - hasScript = true; - //qDebug("font %s supports Japanese", familyName.latin1()); - } - if(codePageRange[0] & (1 << KoreanCsbBit)) { - writingSystems.append(QFontDatabase::Korean); - hasScript = true; - //qDebug("font %s supports Korean", familyName.latin1()); - } - if (!hasScript) - writingSystems.append(QFontDatabase::Symbol); - - return writingSystems; -} - class QFontDatabasePrivate { diff --git a/src/gui/text/qplatformfontdatabase.cpp b/src/gui/text/qplatformfontdatabase.cpp index 08e697cacf..4e2a2df66a 100644 --- a/src/gui/text/qplatformfontdatabase.cpp +++ b/src/gui/text/qplatformfontdatabase.cpp @@ -413,6 +413,107 @@ bool QPlatformFontDatabase::fontsAlwaysScalable() const return ret; } + +// ### copied to tools/makeqpf/qpf2.cpp + +// see the Unicode subset bitfields in the MSDN docs +static const ushort requiredUnicodeBits[QFontDatabase::WritingSystemsCount][2] = { + { 127, 127 }, // Any + { 0, 127 }, // Latin + { 7, 127 }, // Greek + { 9, 127 }, // Cyrillic + { 10, 127 }, // Armenian + { 11, 127 }, // Hebrew + { 13, 127 }, // Arabic + { 71, 127 }, // Syriac + { 72, 127 }, // Thaana + { 15, 127 }, // Devanagari + { 16, 127 }, // Bengali + { 17, 127 }, // Gurmukhi + { 18, 127 }, // Gujarati + { 19, 127 }, // Oriya + { 20, 127 }, // Tamil + { 21, 127 }, // Telugu + { 22, 127 }, // Kannada + { 23, 127 }, // Malayalam + { 73, 127 }, // Sinhala + { 24, 127 }, // Thai + { 25, 127 }, // Lao + { 70, 127 }, // Tibetan + { 74, 127 }, // Myanmar + { 26, 127 }, // Georgian + { 80, 127 }, // Khmer + { 126, 127 }, // SimplifiedChinese + { 126, 127 }, // TraditionalChinese + { 126, 127 }, // Japanese + { 56, 127 }, // Korean + { 0, 127 }, // Vietnamese (same as latin1) + { 126, 127 }, // Other + { 78, 127 }, // Ogham + { 79, 127 }, // Runic + { 14, 127 }, // Nko +}; + +enum { + SimplifiedChineseCsbBit = 18, + TraditionalChineseCsbBit = 20, + JapaneseCsbBit = 17, + KoreanCsbBit = 21 +}; + +/*! + Helper function that determines the writing systems support by a given + \a unicodeRange and \a codePageRange. + + \since 5.1 +*/ +QSupportedWritingSystems QPlatformFontDatabase::writingSystemsFromTrueTypeBits(quint32 unicodeRange[4], quint32 codePageRange[2]) +{ + QSupportedWritingSystems writingSystems; + + bool hasScript = false; + for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) { + int bit = requiredUnicodeBits[i][0]; + int index = bit/32; + int flag = 1 << (bit&31); + if (bit != 126 && (unicodeRange[index] & flag)) { + bit = requiredUnicodeBits[i][1]; + index = bit/32; + + flag = 1 << (bit&31); + if (bit == 127 || (unicodeRange[index] & flag)) { + writingSystems.setSupported(QFontDatabase::WritingSystem(i)); + hasScript = true; + // qDebug("font %s: index=%d, flag=%8x supports script %d", familyName.latin1(), index, flag, i); + } + } + } + if (codePageRange[0] & (1 << SimplifiedChineseCsbBit)) { + writingSystems.setSupported(QFontDatabase::SimplifiedChinese); + hasScript = true; + //qDebug("font %s supports Simplified Chinese", familyName.latin1()); + } + if (codePageRange[0] & (1 << TraditionalChineseCsbBit)) { + writingSystems.setSupported(QFontDatabase::TraditionalChinese); + hasScript = true; + //qDebug("font %s supports Traditional Chinese", familyName.latin1()); + } + if (codePageRange[0] & (1 << JapaneseCsbBit)) { + writingSystems.setSupported(QFontDatabase::Japanese); + hasScript = true; + //qDebug("font %s supports Japanese", familyName.latin1()); + } + if (codePageRange[0] & (1 << KoreanCsbBit)) { + writingSystems.setSupported(QFontDatabase::Korean); + hasScript = true; + //qDebug("font %s supports Korean", familyName.latin1()); + } + if (!hasScript) + writingSystems.setSupported(QFontDatabase::Symbol); + + return writingSystems; +} + /*! \class QPlatformFontDatabase \since 5.0 diff --git a/src/gui/text/qplatformfontdatabase.h b/src/gui/text/qplatformfontdatabase.h index 4b20677cbb..6e53eba98b 100644 --- a/src/gui/text/qplatformfontdatabase.h +++ b/src/gui/text/qplatformfontdatabase.h @@ -112,6 +112,9 @@ public: virtual bool fontsAlwaysScalable() const; virtual QList standardSizes() const; + // helper + static QSupportedWritingSystems writingSystemsFromTrueTypeBits(quint32 unicodeRange[4], quint32 codePageRange[2]); + //callback static void registerQPF2Font(const QByteArray &dataArray, void *handle); static void registerFont(const QString &familyname, const QString &stylename, diff --git a/src/gui/text/qrawfont.cpp b/src/gui/text/qrawfont.cpp index 279f0ecd90..567586495c 100644 --- a/src/gui/text/qrawfont.cpp +++ b/src/gui/text/qrawfont.cpp @@ -45,6 +45,7 @@ #include "qrawfont.h" #include "qrawfont_p.h" +#include "qplatformfontdatabase.h" #include @@ -574,9 +575,6 @@ QByteArray QRawFont::fontTable(const char *tagName) const return d->fontEngine->getSfntTable(qToBigEndian(*tagId)); } -// From qfontdatabase.cpp -extern QList qt_determine_writing_systems_from_truetype_bits(quint32 unicodeRange[4], quint32 codePageRange[2]); - /*! Returns a list of writing systems supported by the font according to designer supplied information in the font file. Please note that this does not guarantee support for a @@ -590,6 +588,7 @@ extern QList qt_determine_writing_systems_from_tru */ QList QRawFont::supportedWritingSystems() const { + QList writingSystems; if (d->isValid()) { QByteArray os2Table = fontTable("OS/2"); if (os2Table.size() > 86) { @@ -606,11 +605,15 @@ QList QRawFont::supportedWritingSystems() const unicodeRanges[i] = qFromBigEndian(bigEndianUnicodeRanges[i]); } - return qt_determine_writing_systems_from_truetype_bits(unicodeRanges, codepageRanges); + QSupportedWritingSystems ws = QPlatformFontDatabase::writingSystemsFromTrueTypeBits(unicodeRanges, codepageRanges); + for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) { + if (ws.supported(QFontDatabase::WritingSystem(i))) + writingSystems.append(QFontDatabase::WritingSystem(i)); + } } } - return QList(); + return writingSystems; } /*! diff --git a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp index f17eff4dd7..49440c8566 100644 --- a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp +++ b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp @@ -60,82 +60,6 @@ QT_BEGIN_NAMESPACE -#define SimplifiedChineseCsbBit 18 -#define TraditionalChineseCsbBit 20 -#define JapaneseCsbBit 17 -#define KoreanCsbBit 21 - -static int requiredUnicodeBits[QFontDatabase::WritingSystemsCount][2] = { - // Any, - { 127, 127 }, - // Latin, - { 0, 127 }, - // Greek, - { 7, 127 }, - // Cyrillic, - { 9, 127 }, - // Armenian, - { 10, 127 }, - // Hebrew, - { 11, 127 }, - // Arabic, - { 13, 127 }, - // Syriac, - { 71, 127 }, - //Thaana, - { 72, 127 }, - //Devanagari, - { 15, 127 }, - //Bengali, - { 16, 127 }, - //Gurmukhi, - { 17, 127 }, - //Gujarati, - { 18, 127 }, - //Oriya, - { 19, 127 }, - //Tamil, - { 20, 127 }, - //Telugu, - { 21, 127 }, - //Kannada, - { 22, 127 }, - //Malayalam, - { 23, 127 }, - //Sinhala, - { 73, 127 }, - //Thai, - { 24, 127 }, - //Lao, - { 25, 127 }, - //Tibetan, - { 70, 127 }, - //Myanmar, - { 74, 127 }, - // Georgian, - { 26, 127 }, - // Khmer, - { 80, 127 }, - // SimplifiedChinese, - { 126, 127 }, - // TraditionalChinese, - { 126, 127 }, - // Japanese, - { 126, 127 }, - // Korean, - { 56, 127 }, - // Vietnamese, - { 0, 127 }, // same as latin1 - // Other, - { 126, 127 }, - // Ogham, - { 78, 127 }, - // Runic, - { 79, 127 }, - // Nko, - { 14, 127 }, -}; - typedef struct { quint16 majorVersion; quint16 minorVersion; @@ -167,54 +91,6 @@ typedef struct { quint16 stringOffset; } NAME_RECORD; -QSupportedWritingSystems QBasicFontDatabase::determineWritingSystemsFromTrueTypeBits(quint32 unicodeRange[4], quint32 codePageRange[2]) -{ - QSupportedWritingSystems writingSystems; - bool hasScript = false; - - int i; - for(i = 0; i < QFontDatabase::WritingSystemsCount; i++) { - int bit = requiredUnicodeBits[i][0]; - int index = bit/32; - int flag = 1 << (bit&31); - if (bit != 126 && unicodeRange[index] & flag) { - bit = requiredUnicodeBits[i][1]; - index = bit/32; - - flag = 1 << (bit&31); - if (bit == 127 || unicodeRange[index] & flag) { - writingSystems.setSupported(QFontDatabase::WritingSystem(i)); - hasScript = true; - // qDebug("font %s: index=%d, flag=%8x supports script %d", familyName.latin1(), index, flag, i); - } - } - } - if(codePageRange[0] & (1 << SimplifiedChineseCsbBit)) { - writingSystems.setSupported(QFontDatabase::SimplifiedChinese); - hasScript = true; - //qDebug("font %s supports Simplified Chinese", familyName.latin1()); - } - if(codePageRange[0] & (1 << TraditionalChineseCsbBit)) { - writingSystems.setSupported(QFontDatabase::TraditionalChinese); - hasScript = true; - //qDebug("font %s supports Traditional Chinese", familyName.latin1()); - } - if(codePageRange[0] & (1 << JapaneseCsbBit)) { - writingSystems.setSupported(QFontDatabase::Japanese); - hasScript = true; - //qDebug("font %s supports Japanese", familyName.latin1()); - } - if(codePageRange[0] & (1 << KoreanCsbBit)) { - writingSystems.setSupported(QFontDatabase::Korean); - hasScript = true; - //qDebug("font %s supports Korean", familyName.latin1()); - } - if (!hasScript) - writingSystems.setSupported(QFontDatabase::Symbol); - - return writingSystems; -} - static inline bool scriptRequiresOpenType(int script) { return ((script >= QChar::Script_Syriac && script <= QChar::Script_Sinhala) @@ -414,7 +290,7 @@ QStringList QBasicFontDatabase::addTTFile(const QByteArray &fontData, const QByt quint32(os2->ulCodePageRange2) }; - writingSystems = determineWritingSystemsFromTrueTypeBits(unicodeRange, codePageRange); + writingSystems = QPlatformFontDatabase::writingSystemsFromTrueTypeBits(unicodeRange, codePageRange); if (os2->usWeightClass == 0) ; diff --git a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h index 8bb574f335..4d6fd2ceeb 100644 --- a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h +++ b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h @@ -65,7 +65,6 @@ public: void releaseHandle(void *handle); static QStringList addTTFile(const QByteArray &fontData, const QByteArray &file); - static QSupportedWritingSystems determineWritingSystemsFromTrueTypeBits(quint32 unicodeRange[4], quint32 codePageRange[2]); static QString fontNameFromTTFile(const QString &filename); }; diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp index 6fdb10288a..2fa691347d 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp @@ -606,130 +606,6 @@ QDebug operator<<(QDebug d, const QFontDef &def) return d; } -/* From QFontDatabase.cpp, qt_determine_writing_systems_from_truetype_bits(). - * Fixme: Make public? */ - -// see the Unicode subset bitfields in the MSDN docs -static int requiredUnicodeBits[QFontDatabase::WritingSystemsCount][2] = { - // Any, - { 127, 127 }, - // Latin, - { 0, 127 }, - // Greek, - { 7, 127 }, - // Cyrillic, - { 9, 127 }, - // Armenian, - { 10, 127 }, - // Hebrew, - { 11, 127 }, - // Arabic, - { 13, 127 }, - // Syriac, - { 71, 127 }, - //Thaana, - { 72, 127 }, - //Devanagari, - { 15, 127 }, - //Bengali, - { 16, 127 }, - //Gurmukhi, - { 17, 127 }, - //Gujarati, - { 18, 127 }, - //Oriya, - { 19, 127 }, - //Tamil, - { 20, 127 }, - //Telugu, - { 21, 127 }, - //Kannada, - { 22, 127 }, - //Malayalam, - { 23, 127 }, - //Sinhala, - { 73, 127 }, - //Thai, - { 24, 127 }, - //Lao, - { 25, 127 }, - //Tibetan, - { 70, 127 }, - //Myanmar, - { 74, 127 }, - // Georgian, - { 26, 127 }, - // Khmer, - { 80, 127 }, - // SimplifiedChinese, - { 126, 127 }, - // TraditionalChinese, - { 126, 127 }, - // Japanese, - { 126, 127 }, - // Korean, - { 56, 127 }, - // Vietnamese, - { 0, 127 }, // same as latin1 - // Other, - { 126, 127 }, - // Ogham, - { 78, 127 }, - // Runic, - { 79, 127 }, - // Nko, - { 14, 127 }, -}; - -enum -{ - SimplifiedChineseCsbBit = 18, - TraditionalChineseCsbBit = 20, - JapaneseCsbBit = 17, - KoreanCsbBit = 21 -}; - -static inline void writingSystemsFromTrueTypeBits(quint32 unicodeRange[4], - quint32 codePageRange[2], - QSupportedWritingSystems *ws) -{ - bool hasScript = false; - for(int i = 0; i < QFontDatabase::WritingSystemsCount; i++) { - int bit = requiredUnicodeBits[i][0]; - int index = bit/32; - int flag = 1 << (bit&31); - if (bit != 126 && unicodeRange[index] & flag) { - bit = requiredUnicodeBits[i][1]; - index = bit/32; - - flag = 1 << (bit&31); - if (bit == 127 || unicodeRange[index] & flag) { - ws->setSupported(QFontDatabase::WritingSystem(i), true); - hasScript = true; - } - } - } - if(codePageRange[0] & (1 << SimplifiedChineseCsbBit)) { - ws->setSupported(QFontDatabase::SimplifiedChinese, true); - hasScript = true; - } - if(codePageRange[0] & (1 << TraditionalChineseCsbBit)) { - ws->setSupported(QFontDatabase::TraditionalChinese, true); - hasScript = true; - } - if(codePageRange[0] & (1 << JapaneseCsbBit)) { - ws->setSupported(QFontDatabase::Japanese, true); - hasScript = true; - //qDebug("font %s supports Japanese", familyName.latin1()); - } - if(codePageRange[0] & (1 << KoreanCsbBit)) { - ws->setSupported(QFontDatabase::Korean, true); - hasScript = true; - } - if (!hasScript) - ws->setSupported(QFontDatabase::Symbol, true); -} - // convert 0 ~ 1000 integer to QFont::Weight static inline QFont::Weight weightFromInteger(long weight) { @@ -1019,7 +895,7 @@ static bool addFontToDatabase(QString familyName, const QString &scriptName, unicodeRange[3] = 0xffffffff; } #endif - writingSystemsFromTrueTypeBits(unicodeRange, codePageRange, &writingSystems); + writingSystems = QPlatformFontDatabase::writingSystemsFromTrueTypeBits(unicodeRange, codePageRange); // ### Hack to work around problem with Thai text on Windows 7. Segoe UI contains // the symbol for Baht, and Windows thus reports that it supports the Thai script. // Since it's the default UI font on this platform, most widgets will be unable to diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp index c2ddb912f1..99b8d215f2 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp @@ -175,7 +175,7 @@ static bool addFontToDatabase(QString familyName, const QString &scriptName, quint32 codePageRange[2] = { signature->fsCsb[0], signature->fsCsb[1] }; - writingSystems = QBasicFontDatabase::determineWritingSystemsFromTrueTypeBits(unicodeRange, codePageRange); + writingSystems = QPlatformFontDatabase::writingSystemsFromTrueTypeBits(unicodeRange, codePageRange); // ### Hack to work around problem with Thai text on Windows 7. Segoe UI contains // the symbol for Baht, and Windows thus reports that it supports the Thai script. // Since it's the default UI font on this platform, most widgets will be unable to -- cgit v1.2.3 From bf3adbcdf5e1a54093febc30e02c4dac09376c7e Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 21 Feb 2013 15:30:11 +0100 Subject: XCB: support creation of OpenGL ES profiles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The GLX_EXT_create_context_es2_profile extension allows us to create OpenGL ES profiles even under a desktop OpenGL implementation. Therefore, if a OpenGL ES renderable type is requested, and we have that extension, we can fullfill the request. We also strenghten the renderable types that the XCB plugin supports (default, OpenGL, OpenGL ES). Change-Id: I94ecbbaa910ab4c6d71185a69640e79594cb7bdc Reviewed-by: Samuel Rødal --- src/plugins/platforms/xcb/qglxintegration.cpp | 124 ++++++++++++++++---------- 1 file changed, 78 insertions(+), 46 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/xcb/qglxintegration.cpp b/src/plugins/platforms/xcb/qglxintegration.cpp index 5efac6ce12..516b35dac8 100644 --- a/src/plugins/platforms/xcb/qglxintegration.cpp +++ b/src/plugins/platforms/xcb/qglxintegration.cpp @@ -71,6 +71,10 @@ typedef GLXContext (*glXCreateContextAttribsARBProc)(Display*, GLXFBConfig, GLXC #define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 #endif +#ifndef GLX_CONTEXT_ES2_PROFILE_BIT_EXT +#define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 +#endif + #ifndef GLX_CONTEXT_PROFILE_MASK_ARB #define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 #endif @@ -123,33 +127,34 @@ static void updateFormatFromContext(QSurfaceFormat &format) } format.setProfile(QSurfaceFormat::NoProfile); + format.setOption(QSurfaceFormat::FormatOptions()); - const int version = (major << 8) + minor; - if (version < 0x0300) { - format.setProfile(QSurfaceFormat::NoProfile); - format.setOption(QSurfaceFormat::DeprecatedFunctions); - return; - } - - // Version 3.0 onwards - check if it includes deprecated functionality or is - // a debug context - GLint value = 0; - glGetIntegerv(GL_CONTEXT_FLAGS, &value); - if (!(value & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT)) - format.setOption(QSurfaceFormat::DeprecatedFunctions); - if (value & GL_CONTEXT_FLAG_DEBUG_BIT) - format.setOption(QSurfaceFormat::DebugContext); - if (version < 0x0302) - return; - - // Version 3.2 and newer have a profile - value = 0; - glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &value); + if (format.renderableType() == QSurfaceFormat::OpenGL) { + if (format.version() < qMakePair(3, 0)) { + format.setOption(QSurfaceFormat::DeprecatedFunctions); + return; + } - if (value & GL_CONTEXT_CORE_PROFILE_BIT) - format.setProfile(QSurfaceFormat::CoreProfile); - else if (value & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) - format.setProfile(QSurfaceFormat::CompatibilityProfile); + // Version 3.0 onwards - check if it includes deprecated functionality or is + // a debug context + GLint value = 0; + glGetIntegerv(GL_CONTEXT_FLAGS, &value); + if (!(value & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT)) + format.setOption(QSurfaceFormat::DeprecatedFunctions); + if (value & GL_CONTEXT_FLAG_DEBUG_BIT) + format.setOption(QSurfaceFormat::DebugContext); + if (format.version() < qMakePair(3, 2)) + return; + + // Version 3.2 and newer have a profile + value = 0; + glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &value); + + if (value & GL_CONTEXT_CORE_PROFILE_BIT) + format.setProfile(QSurfaceFormat::CoreProfile); + else if (value & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) + format.setProfile(QSurfaceFormat::CompatibilityProfile); + } } QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlatformOpenGLContext *share) @@ -162,7 +167,7 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat { if (m_format.renderableType() == QSurfaceFormat::DefaultRenderableType) m_format.setRenderableType(QSurfaceFormat::OpenGL); - if (m_format.renderableType() != QSurfaceFormat::OpenGL) + if (m_format.renderableType() != QSurfaceFormat::OpenGL && m_format.renderableType() != QSurfaceFormat::OpenGLES) return; if (share) @@ -181,17 +186,31 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat bool supportsProfiles = glxExt.contains("GLX_ARB_create_context_profile"); // Use glXCreateContextAttribsARB if available - if (glxExt.contains("GLX_ARB_create_context") && glXCreateContextAttribsARB != 0) { + // Also, GL ES context creation requires GLX_EXT_create_context_es2_profile + if (glxExt.contains("GLX_ARB_create_context") && glXCreateContextAttribsARB != 0 + && (m_format.renderableType() != QSurfaceFormat::OpenGLES || (supportsProfiles && glxExt.contains("GLX_EXT_create_context_es2_profile")))) { // Try to create an OpenGL context for each known OpenGL version in descending // order from the requested version. const int requestedVersion = format.majorVersion() * 10 + qMin(format.minorVersion(), 9); QVector glVersions; - if (requestedVersion > 43) - glVersions << requestedVersion; + if (m_format.renderableType() == QSurfaceFormat::OpenGL) { + if (requestedVersion > 43) + glVersions << requestedVersion; + + // Don't bother with versions below 2.0 + glVersions << 43 << 42 << 41 << 40 << 33 << 32 << 31 << 30 << 21 << 20; + } else if (m_format.renderableType() == QSurfaceFormat::OpenGLES) { + if (requestedVersion > 30) + glVersions << requestedVersion; + + // Don't bother with versions below ES 2.0 + glVersions << 30 << 20; + // ES does not support any format option + m_format.setOption(QSurfaceFormat::FormatOptions()); + } - // Don't bother with versions below 2.0 - glVersions << 43 << 42 << 41 << 40 << 33 << 32 << 31 << 30 << 21 << 20; + Q_ASSERT(glVersions.count() > 0); for (int i = 0; !m_context && i < glVersions.count(); i++) { const int version = glVersions[i]; @@ -205,25 +224,30 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat contextAttributes << GLX_CONTEXT_MAJOR_VERSION_ARB << majorVersion << GLX_CONTEXT_MINOR_VERSION_ARB << minorVersion; - // If asking for OpenGL 3.2 or newer we should also specify a profile - if (version >= 32 && supportsProfiles) { - if (m_format.profile() == QSurfaceFormat::CoreProfile) - contextAttributes << GLX_CONTEXT_PROFILE_MASK_ARB << GLX_CONTEXT_CORE_PROFILE_BIT_ARB; - else - contextAttributes << GLX_CONTEXT_PROFILE_MASK_ARB << GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB; - } - int flags = 0; + if (m_format.renderableType() == QSurfaceFormat::OpenGL) { + // If asking for OpenGL 3.2 or newer we should also specify a profile + if (version >= 32 && supportsProfiles) { + if (m_format.profile() == QSurfaceFormat::CoreProfile) + contextAttributes << GLX_CONTEXT_PROFILE_MASK_ARB << GLX_CONTEXT_CORE_PROFILE_BIT_ARB; + else + contextAttributes << GLX_CONTEXT_PROFILE_MASK_ARB << GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB; + } - if (m_format.testOption(QSurfaceFormat::DebugContext)) - flags |= GLX_CONTEXT_DEBUG_BIT_ARB; + int flags = 0; - // A forward-compatible context may be requested for 3.0 and later - if (version >= 30 && !m_format.testOption(QSurfaceFormat::DeprecatedFunctions)) - flags |= GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB; + if (m_format.testOption(QSurfaceFormat::DebugContext)) + flags |= GLX_CONTEXT_DEBUG_BIT_ARB; - if (flags != 0) - contextAttributes << GLX_CONTEXT_FLAGS_ARB << flags; + // A forward-compatible context may be requested for 3.0 and later + if (version >= 30 && !m_format.testOption(QSurfaceFormat::DeprecatedFunctions)) + flags |= GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB; + + if (flags != 0) + contextAttributes << GLX_CONTEXT_FLAGS_ARB << flags; + } else if (m_format.renderableType() == QSurfaceFormat::OpenGLES) { + contextAttributes << GLX_CONTEXT_PROFILE_MASK_ARB << GLX_CONTEXT_ES2_PROFILE_BIT_EXT; + } contextAttributes << None; @@ -239,6 +263,10 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat // Could not create a context using glXCreateContextAttribsARB, falling back to glXCreateNewContext. if (!m_context) { + // requesting an OpenGL ES context requires glXCreateContextAttribsARB, so bail out + if (m_format.renderableType() == QSurfaceFormat::OpenGLES) + return; + m_context = glXCreateNewContext(DISPLAY_FROM_XCB(screen), config, GLX_RGBA_TYPE, m_shareContext, true); if (!m_context && m_shareContext) { // re-try without a shared glx context @@ -255,6 +283,10 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat // Create a temporary window so that we can make the new context current window = createDummyWindow(screen, config); } else { + // requesting an OpenGL ES context requires glXCreateContextAttribsARB, so bail out + if (m_format.renderableType() == QSurfaceFormat::OpenGLES) + return; + // Note that m_format gets updated with the used surface format visualInfo = qglx_findVisualInfo(DISPLAY_FROM_XCB(screen), screen->screenNumber(), &m_format); if (!visualInfo) -- cgit v1.2.3 From d66fe675ae27da6baf452f17ba5f8fbb3b33b1b2 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Thu, 7 Mar 2013 13:03:34 +0100 Subject: Android build fix Apparently, the Linux Perf Counter is not supported on Android. Change-Id: I38115d140a3ee783bfcd8a984d8832ffe5bbace4 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/testlib/qbenchmark_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/testlib/qbenchmark_p.h b/src/testlib/qbenchmark_p.h index 9859ca973c..c5dac38fec 100644 --- a/src/testlib/qbenchmark_p.h +++ b/src/testlib/qbenchmark_p.h @@ -63,7 +63,7 @@ #undef QTESTLIB_USE_VALGRIND #endif -#if defined(Q_OS_LINUX) && !defined(QT_LINUXBASE) +#if defined(Q_OS_LINUX) && !defined(QT_LINUXBASE) && !defined(Q_OS_ANDROID) #define QTESTLIB_USE_PERF_EVENTS #else #undef QTESTLIB_USE_PERF_EVENTS -- cgit v1.2.3 From 79d4f5b6280f9b440e4fe77177823fd8480d5e12 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Mon, 11 Mar 2013 12:55:38 +0100 Subject: Android: install java-related files The jar files are deployed on the device. The files in the java directory are used by creator when making a new project. Change-Id: Ie59f40edaa9c10044a1ca9949808ee22e6622ea1 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/android/android.pro | 17 ++--------------- src/android/jar/jar.pro | 19 +++++++++++++++++++ src/android/java/java.pro | 8 ++++++++ 3 files changed, 29 insertions(+), 15 deletions(-) create mode 100644 src/android/jar/jar.pro create mode 100644 src/android/java/java.pro (limited to 'src') diff --git a/src/android/android.pro b/src/android/android.pro index 049a51904c..a5db78e32f 100644 --- a/src/android/android.pro +++ b/src/android/android.pro @@ -1,15 +1,2 @@ -CONFIG += java -TARGET = QtAndroid -DESTDIR = $$[QT_INSTALL_PREFIX/get]/jar - -PATHPREFIX = $$PWD/jar/src/org/qtproject/qt5/android/ - -JAVACLASSPATH += $$PWD/jar/src/ -JAVASOURCES += \ - $$PATHPREFIX/QtActivityDelegate.java \ - $$PATHPREFIX/QtEditText.java \ - $$PATHPREFIX/QtInputConnection.java \ - $$PATHPREFIX/QtLayout.java \ - $$PATHPREFIX/QtNative.java \ - $$PATHPREFIX/QtNativeLibrariesDir.java \ - $$PATHPREFIX/QtSurface.java +TEMPLATE = subdirs +SUBDIRS = jar java diff --git a/src/android/jar/jar.pro b/src/android/jar/jar.pro new file mode 100644 index 0000000000..1955f16142 --- /dev/null +++ b/src/android/jar/jar.pro @@ -0,0 +1,19 @@ +CONFIG += java +TARGET = QtAndroid +DESTDIR = $$[QT_INSTALL_PREFIX/get]/jar + +PATHPREFIX = $$PWD/src/org/qtproject/qt5/android/ + +JAVACLASSPATH += $$PWD/src/ +JAVASOURCES += \ + $$PATHPREFIX/QtActivityDelegate.java \ + $$PATHPREFIX/QtEditText.java \ + $$PATHPREFIX/QtInputConnection.java \ + $$PATHPREFIX/QtLayout.java \ + $$PATHPREFIX/QtNative.java \ + $$PATHPREFIX/QtNativeLibrariesDir.java \ + $$PATHPREFIX/QtSurface.java + +# install +target.path = $$[QT_INSTALL_PREFIX]/jar +INSTALLS += target diff --git a/src/android/java/java.pro b/src/android/java/java.pro new file mode 100644 index 0000000000..fe5bf2f62b --- /dev/null +++ b/src/android/java/java.pro @@ -0,0 +1,8 @@ +javaresources.files = \ + $$PWD/AndroidManifest.xml \ + $$PWD/res \ + $$PWD/src + +javaresources.path = $$[QT_INSTALL_PREFIX]/src/android/java + +INSTALLS += javaresources -- cgit v1.2.3 From b047f48612e2ba38ff63979bd60e0f203d77ceb3 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 12 Mar 2013 09:50:11 +0100 Subject: Do not list desktop widgets and desktop screen widgets as top-levels. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Iea4905d802213848594d2ad0266696e5edb884f8 Reviewed-by: Samuel Rødal Reviewed-by: Oliver Wolff --- src/gui/kernel/qguiapplication.cpp | 2 +- src/widgets/kernel/qdesktopwidget_qpa_p.h | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index a00eeaa5e9..7d95a75f84 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -666,7 +666,7 @@ QWindowList QGuiApplication::topLevelWindows() const QWindowList &list = QGuiApplicationPrivate::window_list; QWindowList topLevelWindows; for (int i = 0; i < list.size(); i++) { - if (!list.at(i)->parent()) { + if (!list.at(i)->parent() && list.at(i)->type() != Qt::Desktop) { // Top windows of embedded QAxServers do not have QWindow parents, // but they are not true top level windows, so do not include them. const bool embedded = list.at(i)->handle() && list.at(i)->handle()->isEmbedded(0); diff --git a/src/widgets/kernel/qdesktopwidget_qpa_p.h b/src/widgets/kernel/qdesktopwidget_qpa_p.h index 9f0089616b..3e42f98937 100644 --- a/src/widgets/kernel/qdesktopwidget_qpa_p.h +++ b/src/widgets/kernel/qdesktopwidget_qpa_p.h @@ -61,9 +61,8 @@ QT_BEGIN_NAMESPACE class QDesktopScreenWidget : public QWidget { Q_OBJECT public: - QDesktopScreenWidget(int screenNumber = -1) + QDesktopScreenWidget(int screenNumber = -1) : QWidget(0, Qt::Desktop) { - setWindowFlags(Qt::Desktop); setVisible(false); QTLWExtra *topData = d_func()->topData(); topData->screenIndex = screenNumber; -- cgit v1.2.3 From f69c9059d6c0bfb911bf0bdcec1e7470c38fa7e2 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 9 Mar 2013 19:28:20 +0200 Subject: Replace HB types used in API with Qt analogs hb_uint32 <-> quint32 HB_Glyph <-> glyph_t HB_Fixed <-> QFixed, HB_FixedPoint <-> QFixedPoint HB_GlyphAttributes <-> QGlyphAttributes Change-Id: I4338ec4ce9a9c20ea591606ab10e6ef4f19931b8 Reviewed-by: Lars Knoll --- src/gui/painting/qpaintbuffer.cpp | 4 ++-- src/gui/painting/qpainter.cpp | 8 +++---- src/gui/text/qfontengine.cpp | 6 +++--- src/gui/text/qfontengine_ft.cpp | 12 +++++------ src/gui/text/qfontengine_ft_p.h | 4 ++-- src/gui/text/qfontengine_p.h | 8 ++----- src/gui/text/qfontengine_qpf.cpp | 4 ++-- src/gui/text/qfontengine_qpf_p.h | 2 +- src/gui/text/qfontmetrics.cpp | 2 +- src/gui/text/qrawfont.cpp | 2 +- src/gui/text/qtextengine.cpp | 45 ++++++++++++++++++--------------------- src/gui/text/qtextengine_p.h | 42 ++++++++++++++++++++++++------------ 12 files changed, 73 insertions(+), 66 deletions(-) (limited to 'src') diff --git a/src/gui/painting/qpaintbuffer.cpp b/src/gui/painting/qpaintbuffer.cpp index 43bf1fd4ee..be446c86eb 100644 --- a/src/gui/painting/qpaintbuffer.cpp +++ b/src/gui/painting/qpaintbuffer.cpp @@ -74,11 +74,11 @@ QTextItemIntCopy::QTextItemIntCopy(const QTextItem &item) char *glyphLayoutData = new char[size]; QGlyphLayout glyphs(glyphLayoutData, m_item.glyphs.numGlyphs); memcpy(glyphs.offsets, m_item.glyphs.offsets, m_item.glyphs.numGlyphs * sizeof(QFixedPoint)); - memcpy(glyphs.glyphs, m_item.glyphs.glyphs, m_item.glyphs.numGlyphs * sizeof(HB_Glyph)); + memcpy(glyphs.glyphs, m_item.glyphs.glyphs, m_item.glyphs.numGlyphs * sizeof(glyph_t)); memcpy(glyphs.advances_x, m_item.glyphs.advances_x, m_item.glyphs.numGlyphs * sizeof(QFixed)); memcpy(glyphs.advances_y, m_item.glyphs.advances_y, m_item.glyphs.numGlyphs * sizeof(QFixed)); memcpy(glyphs.justifications, m_item.glyphs.justifications, m_item.glyphs.numGlyphs * sizeof(QGlyphJustification)); - memcpy(glyphs.attributes, m_item.glyphs.attributes, m_item.glyphs.numGlyphs * sizeof(HB_GlyphAttributes)); + memcpy(glyphs.attributes, m_item.glyphs.attributes, m_item.glyphs.numGlyphs * sizeof(QGlyphAttributes)); m_item.glyphs = glyphs; m_font = *m_item.f; diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index c483e93a5f..be77fffc7c 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -5612,13 +5612,13 @@ void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, QFixedPoint *positio QVarLengthArray advances(glyphCount); QVarLengthArray glyphJustifications(glyphCount); - QVarLengthArray glyphAttributes(glyphCount); - memset(glyphAttributes.data(), 0, glyphAttributes.size() * sizeof(HB_GlyphAttributes)); + QVarLengthArray glyphAttributes(glyphCount); + memset(glyphAttributes.data(), 0, glyphAttributes.size() * sizeof(QGlyphAttributes)); memset(advances.data(), 0, advances.size() * sizeof(QFixed)); memset(glyphJustifications.data(), 0, glyphJustifications.size() * sizeof(QGlyphJustification)); textItem.glyphs.numGlyphs = glyphCount; - textItem.glyphs.glyphs = reinterpret_cast(const_cast(glyphArray)); + textItem.glyphs.glyphs = const_cast(glyphArray); textItem.glyphs.offsets = positions; textItem.glyphs.advances_x = advances.data(); textItem.glyphs.advances_y = advances.data(); @@ -5841,7 +5841,7 @@ void QPainter::drawText(const QPointF &p, const QString &str, int tf, int justif return; if (tf & Qt::TextBypassShaping) { - // Skip harfbuzz complex shaping, shape using glyph advances only + // Skip complex shaping, shape using glyph advances only int len = str.length(); int numGlyphs = len; QVarLengthGlyphLayoutArray glyphs(len); diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 2d09cf9f78..dadc2de394 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -135,7 +135,7 @@ static HB_Fixed hb_getFontMetric(HB_Font font, HB_FontMetric metric) return 0; } -HB_Error QFontEngine::getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints) +int QFontEngine::getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints) { Q_UNUSED(glyph) Q_UNUSED(flags) @@ -149,7 +149,7 @@ HB_Error QFontEngine::getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 poi static HB_Error hb_getPointInOutline(HB_Font font, HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints) { QFontEngine *fe = (QFontEngine *)font->userData; - return fe->getPointInOutline(glyph, flags, point, xpos, ypos, nPoints); + return (HB_Error)fe->getPointInOutline(glyph, flags, point, (QFixed *)xpos, (QFixed *)ypos, (quint32 *)nPoints); } static const HB_FontClass hb_fontClass = { @@ -1206,7 +1206,7 @@ bool QFontEngineBox::stringToCMap(const QChar *, int len, QGlyphLayout *glyphs, return false; } - memset(glyphs->glyphs, 0, len * sizeof(HB_Glyph)); + memset(glyphs->glyphs, 0, len * sizeof(glyph_t)); *nglyphs = len; glyphs->numGlyphs = len; diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index bedd5753c7..6cac4b9205 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -183,9 +183,9 @@ int QFreetypeFace::fsType() const return fsType; } -HB_Error QFreetypeFace::getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints) +int QFreetypeFace::getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints) { - if (HB_Error error = (HB_Error)FT_Load_Glyph(face, glyph, flags)) + if (int error = FT_Load_Glyph(face, glyph, flags)) return error; if (face->glyph->format != FT_GLYPH_FORMAT_OUTLINE) @@ -198,8 +198,8 @@ HB_Error QFreetypeFace::getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 p if (point > *nPoints) return HB_Err_Invalid_SubTable; - *xpos = face->glyph->outline.points[point].x; - *ypos = face->glyph->outline.points[point].y; + *xpos = QFixed::fromFixed(face->glyph->outline.points[point].x); + *ypos = QFixed::fromFixed(face->glyph->outline.points[point].y); return HB_Err_Ok; } @@ -2029,13 +2029,13 @@ void QFontEngineFT::QGlyphSet::setGlyph(glyph_t index, QFixed subPixelPosition, } } -HB_Error QFontEngineFT::getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints) +int QFontEngineFT::getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints) { lockFace(); bool hsubpixel = true; int vfactor = 1; int load_flags = loadFlags(0, Format_A8, flags, hsubpixel, vfactor); - HB_Error result = freetype->getPointInOutline(glyph, load_flags, point, xpos, ypos, nPoints); + int result = freetype->getPointInOutline(glyph, load_flags, point, xpos, ypos, nPoints); unlockFace(); return result; } diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h index 2f2a705329..9963d307ba 100644 --- a/src/gui/text/qfontengine_ft_p.h +++ b/src/gui/text/qfontengine_ft_p.h @@ -113,7 +113,7 @@ struct QFreetypeFace int fsType() const; - HB_Error getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints); + int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints); static void addGlyphToPath(FT_Face face, FT_GlyphSlot g, const QFixedPoint &point, QPainterPath *path, FT_Fixed x_scale, FT_Fixed y_scale); static void addBitmapToPath(FT_GlyphSlot slot, const QFixedPoint &point, QPainterPath *path, bool = false); @@ -298,7 +298,7 @@ private: bool init(FaceId faceId, bool antialias, GlyphFormat format, QFreetypeFace *freetypeFace); - virtual HB_Error getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints); + virtual int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints); virtual void setDefaultHintStyle(HintStyle style); diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h index 7ce920b6af..4f29aff9d7 100644 --- a/src/gui/text/qfontengine_p.h +++ b/src/gui/text/qfontengine_p.h @@ -60,16 +60,12 @@ #include "private/qtextengine_p.h" #include "private/qfont_p.h" - +#include "private/qharfbuzz_copy_p.h" #include -struct glyph_metrics_t; -typedef unsigned int glyph_t; - QT_BEGIN_NAMESPACE -class QChar; class QPainterPath; struct QGlyphLayout; @@ -257,7 +253,7 @@ public: HB_Face initializedHarfbuzzFace() const; bool supportsScript(QChar::Script script) const; - virtual HB_Error getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints); + virtual int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints); void setGlyphCache(const void *key, QFontEngineGlyphCache *data); QFontEngineGlyphCache *glyphCache(const void *key, QFontEngineGlyphCache::Type type, const QTransform &transform) const; diff --git a/src/gui/text/qfontengine_qpf.cpp b/src/gui/text/qfontengine_qpf.cpp index 2959ae666d..56d4c29f1c 100644 --- a/src/gui/text/qfontengine_qpf.cpp +++ b/src/gui/text/qfontengine_qpf.cpp @@ -854,12 +854,12 @@ void QFontEngineQPF::doKerning(QGlyphLayout *g, QFontEngine::ShaperFlags flags) QFontEngine::doKerning(g, flags); } -HB_Error QFontEngineQPF::getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints) +int QFontEngineQPF::getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints) { if (!freetype) return HB_Err_Not_Covered; lockFace(); - HB_Error result = freetype->getPointInOutline(glyph, flags, point, xpos, ypos, nPoints); + int result = freetype->getPointInOutline(glyph, flags, point, xpos, ypos, nPoints); unlockFace(); return result; } diff --git a/src/gui/text/qfontengine_qpf_p.h b/src/gui/text/qfontengine_qpf_p.h index 9392872a26..35355d3a65 100644 --- a/src/gui/text/qfontengine_qpf_p.h +++ b/src/gui/text/qfontengine_qpf_p.h @@ -208,7 +208,7 @@ public: FT_Face lockFace() const; void unlockFace() const; void doKerning(QGlyphLayout *g, ShaperFlags flags) const; - virtual HB_Error getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints); + virtual int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints); virtual QFixed emSquareSize() const; #endif diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp index d889fa97b5..ad3d2bb813 100644 --- a/src/gui/text/qfontmetrics.cpp +++ b/src/gui/text/qfontmetrics.cpp @@ -526,7 +526,7 @@ int QFontMetrics::width(const QString &text, int len, int flags) const return 0; if (flags & Qt::TextBypassShaping) { - // Skip harfbuzz complex shaping, only use advances + // Skip complex shaping, only use advances int numGlyphs = len; QVarLengthGlyphLayoutArray glyphs(numGlyphs); QFontEngine *engine = d->engineForScript(QChar::Script_Common); diff --git a/src/gui/text/qrawfont.cpp b/src/gui/text/qrawfont.cpp index 567586495c..1f42c16d62 100644 --- a/src/gui/text/qrawfont.cpp +++ b/src/gui/text/qrawfont.cpp @@ -535,7 +535,7 @@ bool QRawFont::advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *adv return false; QGlyphLayout glyphs; - glyphs.glyphs = const_cast(glyphIndexes); + glyphs.glyphs = const_cast(glyphIndexes); glyphs.numGlyphs = numGlyphs; QVarLengthArray advances_x(numGlyphs); QVarLengthArray advances_y(numGlyphs); diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index e51e0c0835..fdedfded12 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -61,6 +61,8 @@ #include "qfontengine_qpa_p.h" +#include + QT_BEGIN_NAMESPACE static const float smallCapsFraction = 0.7f; @@ -836,13 +838,6 @@ void QTextEngine::bidiReorder(int numItems, const quint8 *levels, int *visualOrd #endif } -QT_BEGIN_INCLUDE_NAMESPACE - - -#include - -QT_END_INCLUDE_NAMESPACE - // ask the font engine to find out which glyphs (as an index in the specific font) to use for the text in one item. static bool stringToGlyphs(HB_ShaperItem *item, QGlyphLayout *glyphs, QFontEngine *fontEngine) { @@ -971,19 +966,21 @@ static inline bool hasCaseChange(const QScriptItem &si) static inline void moveGlyphData(const QGlyphLayout &destination, const QGlyphLayout &source, int num) { if (num > 0 && destination.glyphs != source.glyphs) { - memmove(destination.glyphs, source.glyphs, num * sizeof(HB_Glyph)); - memmove(destination.attributes, source.attributes, num * sizeof(HB_GlyphAttributes)); - memmove(destination.advances_x, source.advances_x, num * sizeof(HB_Fixed)); - memmove(destination.offsets, source.offsets, num * sizeof(HB_FixedPoint)); + memmove(destination.glyphs, source.glyphs, num * sizeof(glyph_t)); + memmove(destination.attributes, source.attributes, num * sizeof(QGlyphAttributes)); + memmove(destination.advances_x, source.advances_x, num * sizeof(QFixed)); + memmove(destination.offsets, source.offsets, num * sizeof(QFixedPoint)); } } +Q_STATIC_ASSERT(sizeof(HB_Glyph) == sizeof(glyph_t)); +Q_STATIC_ASSERT(sizeof(HB_GlyphAttributes) == sizeof(QGlyphAttributes)); +Q_STATIC_ASSERT(sizeof(HB_Fixed) == sizeof(QFixed)); +Q_STATIC_ASSERT(sizeof(HB_FixedPoint) == sizeof(QFixedPoint)); + /// take the item from layoutData->items and void QTextEngine::shapeTextWithHarfbuzz(int item) const { - Q_ASSERT(sizeof(HB_Fixed) == sizeof(QFixed)); - Q_ASSERT(sizeof(HB_FixedPoint) == sizeof(QFixedPoint)); - QScriptItem &si = layoutData->items[item]; si.glyph_data_offset = layoutData->used; @@ -1074,9 +1071,9 @@ void QTextEngine::shapeTextWithHarfbuzz(int item) const itemBoundaries.append(i); } lastEngine = engineIdx; - if (HB_IsHighSurrogate(entire_shaper_item.string[charIdx]) + if (QChar::isHighSurrogate(entire_shaper_item.string[charIdx]) && charIdx < stringEnd - 1 - && HB_IsLowSurrogate(entire_shaper_item.string[charIdx + 1])) + && QChar::isLowSurrogate(entire_shaper_item.string[charIdx + 1])) ++charIdx; } } @@ -1129,13 +1126,13 @@ void QTextEngine::shapeTextWithHarfbuzz(int item) const if (shaper_item.num_glyphs > shaper_item.item.length) moveGlyphData(g.mid(shaper_item.num_glyphs), g.mid(shaper_item.initialGlyphCount), remaining_glyphs); - shaper_item.glyphs = g.glyphs; - shaper_item.attributes = g.attributes; + shaper_item.glyphs = reinterpret_cast(g.glyphs); + shaper_item.attributes = reinterpret_cast(g.attributes); shaper_item.advances = reinterpret_cast(g.advances_x); shaper_item.offsets = reinterpret_cast(g.offsets); if (engineIdx != 0 && shaper_item.glyphIndicesPresent) { - for (hb_uint32 i = 0; i < shaper_item.initialGlyphCount; ++i) + for (quint32 i = 0; i < shaper_item.initialGlyphCount; ++i) shaper_item.glyphs[i] &= 0x00ffffff; } @@ -1147,14 +1144,14 @@ void QTextEngine::shapeTextWithHarfbuzz(int item) const QGlyphLayout g = availableGlyphs(&si).mid(glyph_pos, shaper_item.num_glyphs); moveGlyphData(g.mid(shaper_item.num_glyphs), g.mid(shaper_item.initialGlyphCount), remaining_glyphs); - for (hb_uint32 i = 0; i < shaper_item.item.length; ++i) + for (quint32 i = 0; i < shaper_item.item.length; ++i) shaper_item.log_clusters[i] += glyph_pos; if (kerningEnabled && !shaper_item.kerning_applied) actualFontEngine->doKerning(&g, option.useDesignMetrics() ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlags(0)); if (engineIdx != 0) { - for (hb_uint32 i = 0; i < shaper_item.num_glyphs; ++i) + for (quint32 i = 0; i < shaper_item.num_glyphs; ++i) g.glyphs[i] |= (engineIdx << 24); } @@ -1224,7 +1221,7 @@ const QCharAttributes *QTextEngine::attributes() const scriptItems[i].script = si.analysis.script; } - QUnicodeTools::initCharAttributes(reinterpret_cast(layoutData->string.constData()), + QUnicodeTools::initCharAttributes(reinterpret_cast(layoutData->string.constData()), layoutData->string.length(), scriptItems.data(), scriptItems.size(), (QCharAttributes *)layoutData->memory); @@ -2156,11 +2153,11 @@ void QGlyphLayout::grow(char *address, int totalGlyphs) if (numGlyphs) { // move the existing data - memmove(newLayout.attributes, oldLayout.attributes, numGlyphs * sizeof(HB_GlyphAttributes)); + memmove(newLayout.attributes, oldLayout.attributes, numGlyphs * sizeof(QGlyphAttributes)); memmove(newLayout.justifications, oldLayout.justifications, numGlyphs * sizeof(QGlyphJustification)); memmove(newLayout.advances_y, oldLayout.advances_y, numGlyphs * sizeof(QFixed)); memmove(newLayout.advances_x, oldLayout.advances_x, numGlyphs * sizeof(QFixed)); - memmove(newLayout.glyphs, oldLayout.glyphs, numGlyphs * sizeof(HB_Glyph)); + memmove(newLayout.glyphs, oldLayout.glyphs, numGlyphs * sizeof(glyph_t)); } // clear the new data diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h index 93e92e7ca8..88bc5dcc4c 100644 --- a/src/gui/text/qtextengine_p.h +++ b/src/gui/text/qtextengine_p.h @@ -71,8 +71,6 @@ #include "private/qtextdocument_p.h" #endif -#include "private/qharfbuzz_copy_p.h" - #include "private/qfixed_p.h" #include @@ -89,6 +87,22 @@ class QPainter; class QAbstractTextDocumentLayout; +typedef quint32 glyph_t; + +#ifdef __xlC__ +typedef unsigned q_hb_bitfield; +#else +typedef quint8 q_hb_bitfield; +#endif + +typedef struct { + q_hb_bitfield justification :4; /* Justification class */ + q_hb_bitfield clusterStart :1; /* First glyph of representation of cluster */ + q_hb_bitfield mark :1; /* needs to be positioned around base char */ + q_hb_bitfield zeroWidth :1; /* ZWJ, ZWNJ etc, with no width */ + q_hb_bitfield dontPrint :1; + q_hb_bitfield combiningClass :8; +} QGlyphAttributes; // this uses the same coordinate system as Qt, but a different one to freetype. // * y is usually negative, and is equal to the ascent. @@ -164,20 +178,20 @@ struct QGlyphLayoutInstance { QFixedPoint offset; QFixedPoint advance; - HB_Glyph glyph; + glyph_t glyph; QGlyphJustification justification; - HB_GlyphAttributes attributes; + QGlyphAttributes attributes; }; struct QGlyphLayout { // init to 0 not needed, done when shaping QFixedPoint *offsets; // 8 bytes per element - HB_Glyph *glyphs; // 4 bytes per element + glyph_t *glyphs; // 4 bytes per element QFixed *advances_x; // 4 bytes per element QFixed *advances_y; // 4 bytes per element QGlyphJustification *justifications; // 4 bytes per element - HB_GlyphAttributes *attributes; // 2 bytes per element + QGlyphAttributes *attributes; // 2 bytes per element int numGlyphs; @@ -186,16 +200,16 @@ struct QGlyphLayout inline explicit QGlyphLayout(char *address, int totalGlyphs) { offsets = reinterpret_cast(address); - int offset = totalGlyphs * sizeof(HB_FixedPoint); - glyphs = reinterpret_cast(address + offset); - offset += totalGlyphs * sizeof(HB_Glyph); + int offset = totalGlyphs * sizeof(QFixedPoint); + glyphs = reinterpret_cast(address + offset); + offset += totalGlyphs * sizeof(glyph_t); advances_x = reinterpret_cast(address + offset); offset += totalGlyphs * sizeof(QFixed); advances_y = reinterpret_cast(address + offset); offset += totalGlyphs * sizeof(QFixed); justifications = reinterpret_cast(address + offset); offset += totalGlyphs * sizeof(QGlyphJustification); - attributes = reinterpret_cast(address + offset); + attributes = reinterpret_cast(address + offset); numGlyphs = totalGlyphs; } @@ -215,7 +229,7 @@ struct QGlyphLayout } static inline int spaceNeededForGlyphLayout(int totalGlyphs) { - return totalGlyphs * (sizeof(HB_Glyph) + sizeof(HB_GlyphAttributes) + return totalGlyphs * (sizeof(glyph_t) + sizeof(QGlyphAttributes) + sizeof(QFixed) + sizeof(QFixed) + sizeof(QFixedPoint) + sizeof(QGlyphJustification)); } @@ -254,11 +268,11 @@ struct QGlyphLayout } else { const int num = last - first; memset(offsets + first, 0, num * sizeof(QFixedPoint)); - memset(glyphs + first, 0, num * sizeof(HB_Glyph)); + memset(glyphs + first, 0, num * sizeof(glyph_t)); memset(advances_x + first, 0, num * sizeof(QFixed)); memset(advances_y + first, 0, num * sizeof(QFixed)); memset(justifications + first, 0, num * sizeof(QGlyphJustification)); - memset(attributes + first, 0, num * sizeof(HB_GlyphAttributes)); + memset(attributes + first, 0, num * sizeof(QGlyphAttributes)); } } @@ -300,7 +314,7 @@ public: } private: - void *buffer[(N * (sizeof(HB_Glyph) + sizeof(HB_GlyphAttributes) + void *buffer[(N * (sizeof(glyph_t) + sizeof(QGlyphAttributes) + sizeof(QFixed) + sizeof(QFixed) + sizeof(QFixedPoint) + sizeof(QGlyphJustification))) / sizeof(void *) + 1]; -- cgit v1.2.3 From 5df9a95d2c5b285967ca5e4c7167bf4a96f76221 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 6 Mar 2013 11:00:27 +0100 Subject: don't clobber 8-bit output otherwise it becomes useless for utf-8. the output is encoded as local8bit, so it shouldn't be garbage. Change-Id: I68e59bddb092ac53746f421a90e3803632dbf1c6 Reviewed-by: Thiago Macieira --- src/testlib/qabstracttestlogger.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/testlib/qabstracttestlogger.cpp b/src/testlib/qabstracttestlogger.cpp index da7e793341..d039c3c342 100644 --- a/src/testlib/qabstracttestlogger.cpp +++ b/src/testlib/qabstracttestlogger.cpp @@ -82,9 +82,9 @@ QAbstractTestLogger::~QAbstractTestLogger() void QAbstractTestLogger::filterUnprintable(char *str) const { - char *idx = str; + unsigned char *idx = reinterpret_cast(str); while (*idx) { - if (((*idx < 0x20 && *idx != '\n' && *idx != '\t') || *idx > 0x7e)) + if (((*idx < 0x20 && *idx != '\n' && *idx != '\t') || *idx == 0x7f)) *idx = '?'; ++idx; } -- cgit v1.2.3 From cca1cca53dccb19a455d58d1adc895e1827db4e2 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 6 Mar 2013 10:59:35 +0100 Subject: fix encoding when printing debug under wince the strings are in local8bit format, not latin1 Change-Id: I19f20b0310351aacb26b70d8053ed267e710986f Reviewed-by: Joerg Bornemann --- src/testlib/qplaintestlogger.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/testlib/qplaintestlogger.cpp b/src/testlib/qplaintestlogger.cpp index 93f0dd34ff..9fe82de19e 100644 --- a/src/testlib/qplaintestlogger.cpp +++ b/src/testlib/qplaintestlogger.cpp @@ -196,7 +196,7 @@ namespace QTest { void QPlainTestLogger::outputMessage(const char *str) { #if defined(Q_OS_WINCE) - QString strUtf16 = QString::fromLatin1(str); + QString strUtf16 = QString::fromLocal8Bit(str); const int maxOutputLength = 255; do { QString tmp = strUtf16.left(maxOutputLength); -- cgit v1.2.3 From 27b3746b33006afd2d2153e529e9d5b2886a900b Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 6 Mar 2013 12:35:31 +0100 Subject: fix encoding when invoking default message handler the output is local8bit, not latin1. Change-Id: Ib1ab260ac378b354c5ab47856ce6c6c657caefd4 Reviewed-by: Thiago Macieira Reviewed-by: Kai Koehne --- src/corelib/global/qlogging.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index 6a127e1786..ccb09a84d4 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -891,7 +891,7 @@ static void qDefaultMessageHandler(QtMsgType type, const QMessageLogContext &con static void qDefaultMsgHandler(QtMsgType type, const char *buf) { QMessageLogContext emptyContext; - qDefaultMessageHandler(type, emptyContext, QLatin1String(buf)); + qDefaultMessageHandler(type, emptyContext, QString::fromLocal8Bit(buf)); } static void qt_message_print(QtMsgType msgType, const QMessageLogContext &context, const QString &message) -- cgit v1.2.3 From 77057674fbe871b6a3eb6fe07084b9288b78571a Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 6 Mar 2013 12:33:33 +0100 Subject: de-duplicate and accelerate code ... by using existing function. Change-Id: I25e60e70b307885c46b03b6458f06a561976590c Reviewed-by: Thiago Macieira Reviewed-by: Kai Koehne --- src/corelib/global/qlogging.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index ccb09a84d4..13470d9479 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -171,9 +171,7 @@ static void qEmergencyOut(QtMsgType msgType, const char *msg, va_list ap) Q_DECL fflush(stderr); #endif - if (msgType == QtFatalMsg - || (msgType == QtWarningMsg - && qEnvironmentVariableIsSet("QT_FATAL_WARNINGS"))) { + if (isFatal(msgType)) { #if defined(Q_CC_MSVC) && defined(QT_DEBUG) && defined(_DEBUG) && defined(_CRT_ERROR) // get the current report mode int reportMode = _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); -- cgit v1.2.3 From b7155b6c07b76d802b15dea8eb5aca4085b0d10d Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 6 Mar 2013 12:34:29 +0100 Subject: make QtCriticalMsg fatal if QT_FATAL_WARNINGS is set if warnings are fatal, then critical messages should be even more so. Change-Id: I3681fa1fc606337006f1781dd961ea9cf6ce282d Reviewed-by: Thiago Macieira Reviewed-by: Lars Knoll Reviewed-by: Kai Koehne --- src/corelib/global/qlogging.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index 13470d9479..f95e1e9447 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -76,7 +76,7 @@ static bool isFatal(QtMsgType msgType) if (msgType == QtFatalMsg) return true; - if (msgType == QtWarningMsg) { + if (msgType == QtWarningMsg || msgType == QtCriticalMsg) { static bool fatalWarnings = !qEnvironmentVariableIsEmpty("QT_FATAL_WARNINGS"); return fatalWarnings; } -- cgit v1.2.3 From 4d2bf663ebca19402fda5527535b93d5cdde6e27 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 7 Mar 2013 15:06:33 +0100 Subject: interpret format argument of QString::sprintf() as UTF-8 we expect our source code to be utf-8 throughout, so it doesn't make sense to expect the specifier to be latin-1, as that limits the effective charset to ascii. Change-Id: I22335509ba6c5805d8b264cfd01d7f9a4cf7ef76 Reviewed-by: Lars Knoll --- src/corelib/tools/qstring.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 75ef07a96e..eb8750838b 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -5461,8 +5461,10 @@ QString &QString::vsprintf(const char* cformat, va_list ap) const char *c = cformat; for (;;) { // Copy non-escape chars to result + const char *cb = c; while (*c != '\0' && *c != '%') - result.append(QLatin1Char(*c++)); + c++; + result.append(QString::fromUtf8(cb, (int)(c - cb))); if (*c == '\0') break; -- cgit v1.2.3 From ef7c25e8486a092ead3c02e0346cc0d765d6a22f Mon Sep 17 00:00:00 2001 From: Rafael Roquetto Date: Thu, 7 Mar 2013 11:38:36 -0300 Subject: QNX: Fix build error This error was caused by a merge Change-Id: I937ab6ac905ba3a729669060285df6d0c3d5be2f Reviewed-by: Thomas McGuire Reviewed-by: Tobias Koenig Reviewed-by: Wolfgang Bremer --- src/plugins/platforms/qnx/qqnxscreen.cpp | 5 ----- 1 file changed, 5 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/qnx/qqnxscreen.cpp b/src/plugins/platforms/qnx/qqnxscreen.cpp index 3e79ca7f1d..f9efbde40c 100644 --- a/src/plugins/platforms/qnx/qqnxscreen.cpp +++ b/src/plugins/platforms/qnx/qqnxscreen.cpp @@ -503,11 +503,6 @@ QPlatformCursor * QQnxScreen::cursor() const return m_cursor; } -QPlatformCursor * QQnxScreen::cursor() const -{ - return m_cursor; -} - void QQnxScreen::keyboardHeightChanged(int height) { if (height == m_keyboardHeight) -- cgit v1.2.3 From 0d505b983af91ea7eeed9f3098f0d0603b3ea472 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 8 Mar 2013 19:50:46 +0100 Subject: remove strange qdoc dependency it's not quite clear why it was here. probably a vestige. Change-Id: I6768df717ff9605a5833bcc4db56f486c266ea2e Reviewed-by: Joerg Bornemann --- src/tools/tools.pro | 7 ------- 1 file changed, 7 deletions(-) (limited to 'src') diff --git a/src/tools/tools.pro b/src/tools/tools.pro index fa9ed54c50..1eba102c20 100644 --- a/src/tools/tools.pro +++ b/src/tools/tools.pro @@ -34,10 +34,3 @@ contains(QT_CONFIG, dbus) { } SUBDIRS = $$TOOLS_SUBDIRS - -# Ensure qdoc is built before making any docs. We rely on the existing dependency -# on bootstrap for each of the other tools to ensure they also build qdoc first, -# and likewise, the dependency of the rest of the build on tools, src, etc. -bootstrap_prepare_docs.depends += $${src_tools_qdoc.target}-make_first -bootstrap_prepare_docs.target = $${src_tools_bootstrap.target}-prepare_docs -QMAKE_EXTRA_TARGETS += bootstrap_prepare_docs -- cgit v1.2.3 From 29daf4ddf9151bd897791b7634a44ef64417bec6 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 8 Mar 2013 20:31:05 +0100 Subject: melt src/tools/tools.pro into src/src.pro this is done mainly to resolve spurious dependencies, in preparation for making some tools not bootstrapped in native builds. as a nice side effect, there is even more parallelization possible now. Change-Id: I779cf0059c98c65aba8510bf3d24fdab4eeaa863 Reviewed-by: Thiago Macieira Reviewed-by: Lars Knoll Reviewed-by: Joerg Bornemann --- src/src.pro | 44 ++++++++++++++++++++++++++++++++++---------- src/tools/tools.pro | 36 ------------------------------------ 2 files changed, 34 insertions(+), 46 deletions(-) delete mode 100644 src/tools/tools.pro (limited to 'src') diff --git a/src/src.pro b/src/src.pro index 90f0a35711..3529478b30 100644 --- a/src/src.pro +++ b/src/src.pro @@ -1,7 +1,31 @@ TEMPLATE = subdirs -src_tools.subdir = $$PWD/tools -src_tools.target = sub-tools +src_tools_bootstrap.subdir = tools/bootstrap +src_tools_bootstrap.target = sub-bootstrap + +src_tools_moc.subdir = tools/moc +src_tools_moc.target = sub-moc +src_tools_moc.depends = src_tools_bootstrap + +src_tools_rcc.subdir = tools/rcc +src_tools_rcc.target = sub-rcc +src_tools_rcc.depends = src_tools_bootstrap + +src_tools_uic.subdir = tools/uic +src_tools_uic.target = sub-uic +src_tools_uic.depends = src_tools_bootstrap + +src_tools_qdoc.subdir = tools/qdoc +src_tools_qdoc.target = sub-qdoc +src_tools_qdoc.depends = src_tools_bootstrap + +src_tools_qdbusxml2cpp.subdir = tools/qdbusxml2cpp +src_tools_qdbusxml2cpp.target = sub-qdbusxml2cpp +src_tools_qdbusxml2cpp.depends = src_tools_bootstrap + +src_tools_qdbuscpp2xml.subdir = tools/qdbuscpp2xml +src_tools_qdbuscpp2xml.target = sub-qdbuscpp2xml +src_tools_qdbuscpp2xml.depends = src_tools_bootstrap src_winmain.subdir = $$PWD/winmain src_winmain.target = sub-winmain @@ -9,7 +33,7 @@ src_winmain.depends = sub-corelib # just for the module .pri file src_corelib.subdir = $$PWD/corelib src_corelib.target = sub-corelib -src_corelib.depends = src_tools +src_corelib.depends = src_tools_moc src_tools_rcc src_xml.subdir = $$PWD/xml src_xml.target = sub-xml @@ -48,7 +72,7 @@ src_platformsupport.depends = src_corelib src_gui src_network src_widgets.subdir = $$PWD/widgets src_widgets.target = sub-widgets -src_widgets.depends = src_corelib src_gui +src_widgets.depends = src_corelib src_gui src_tools_uic src_opengl.subdir = $$PWD/opengl src_opengl.target = sub-opengl @@ -60,7 +84,7 @@ src_openglextensions.depends = src_gui src_printsupport.subdir = $$PWD/printsupport src_printsupport.target = sub-printsupport -src_printsupport.depends = src_corelib src_gui src_widgets +src_printsupport.depends = src_corelib src_gui src_widgets src_tools_uic src_plugins.subdir = $$PWD/plugins src_plugins.target = sub-plugins @@ -69,12 +93,12 @@ src_plugins.depends = src_sql src_xml src_network src_android.subdir = $$PWD/android # this order is important -SUBDIRS += src_tools src_corelib +SUBDIRS += src_tools_bootstrap src_tools_moc src_tools_rcc src_corelib win32:SUBDIRS += src_winmain SUBDIRS += src_network src_sql src_xml src_testlib contains(QT_CONFIG, dbus) { - SUBDIRS += src_dbus - src_plugins.depends += src_dbus + SUBDIRS += src_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml + src_plugins.depends += src_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml } contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent !contains(QT_CONFIG, no-gui) { @@ -85,7 +109,7 @@ contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent SUBDIRS += src_gui src_platformsupport src_openglextensions src_plugins.depends += src_gui src_platformsupport !contains(QT_CONFIG, no-widgets) { - SUBDIRS += src_widgets + SUBDIRS += src_tools_uic src_widgets src_plugins.depends += src_widgets contains(QT_CONFIG, opengl(es1|es2)?) { SUBDIRS += src_opengl @@ -97,7 +121,7 @@ contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent } } } -SUBDIRS += src_plugins +SUBDIRS += src_plugins src_tools_qdoc nacl: SUBDIRS -= src_network src_testlib diff --git a/src/tools/tools.pro b/src/tools/tools.pro deleted file mode 100644 index 1eba102c20..0000000000 --- a/src/tools/tools.pro +++ /dev/null @@ -1,36 +0,0 @@ -TEMPLATE = subdirs - -TOOLS_SUBDIRS = src_tools_bootstrap src_tools_moc src_tools_rcc src_tools_qdoc -contains(QT_CONFIG, dbus): TOOLS_SUBDIRS += src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml -!contains(QT_CONFIG, no-widgets): TOOLS_SUBDIRS += src_tools_uic -# Set subdir and respective target name -src_tools_bootstrap.subdir = bootstrap -src_tools_bootstrap.target = sub-tools-bootstrap -src_tools_moc.subdir = moc -src_tools_moc.target = sub-moc -src_tools_rcc.subdir = rcc -src_tools_rcc.target = sub-rcc -src_tools_uic.subdir = uic -src_tools_uic.target = sub-uic -src_tools_qdoc.subdir = qdoc -src_tools_qdoc.target = sub-qdoc -contains(QT_CONFIG, dbus) { - src_tools_qdbusxml2cpp.subdir = qdbusxml2cpp - src_tools_qdbusxml2cpp.target = sub-qdbusxml2cpp - src_tools_qdbuscpp2xml.subdir = qdbuscpp2xml - src_tools_qdbuscpp2xml.target = sub-qdbuscpp2xml -} - -!ordered { - # Set dependencies for each subdir - src_tools_moc.depends = src_tools_bootstrap - src_tools_rcc.depends = src_tools_bootstrap - src_tools_uic.depends = src_tools_bootstrap - src_tools_qdoc.depends = src_tools_bootstrap - contains(QT_CONFIG, dbus) { - src_tools_qdbusxml2cpp.depends = src_tools_bootstrap - src_tools_qdbuscpp2xml.depends = src_tools_bootstrap - } -} - -SUBDIRS = $$TOOLS_SUBDIRS -- cgit v1.2.3 From 3372b0faa74114184afbfde20a3bc27049df2c94 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 11 Mar 2013 13:56:12 +0100 Subject: g_thread_init is deprecated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since glib 2.32 this function is just an empty body. Fix the warning and don't try to call it. There seems to be no way to disable threading in glib. Change-Id: Id30e606d341bd6ef871737275336f6c6b3b2559b Reviewed-by: Friedemann Kleint Reviewed-by: Jędrzej Nowacki --- src/corelib/kernel/qeventdispatcher_glib.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp index 75cd88c456..17830868da 100644 --- a/src/corelib/kernel/qeventdispatcher_glib.cpp +++ b/src/corelib/kernel/qeventdispatcher_glib.cpp @@ -293,12 +293,14 @@ static GSourceFuncs postEventSourceFuncs = { QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(GMainContext *context) : mainContext(context) { +#if GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 32 if (qEnvironmentVariableIsEmpty("QT_NO_THREADED_GLIB")) { static QBasicMutex mutex; QMutexLocker locker(&mutex); if (!g_thread_supported()) g_thread_init(NULL); } +#endif if (mainContext) { g_main_context_ref(mainContext); -- cgit v1.2.3 From cfa663d62b147c4050359e036f17a6b1b6a8b4fe Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 9 Mar 2013 21:39:21 +0200 Subject: Avoid using HB types in QFontEngine API This affects HB_Font and HB_Face. As of now, the Hurfbuzz API usage is concentrated in qfontengine(|_ft).cpp and qtextengine.cpp, thus it is a lot easier to switch to Hurfbuzz-NG. Change-Id: Ie06959efd5d6080fe44c407d9f5de0a07dd1c210 Reviewed-by: Lars Knoll Reviewed-by: Josh Faust --- src/gui/text/qfontengine.cpp | 74 +++++++++++++++++++++++++--------------- src/gui/text/qfontengine_ft.cpp | 32 +++++++++++------ src/gui/text/qfontengine_ft_p.h | 4 +-- src/gui/text/qfontengine_p.h | 21 +++++------- src/gui/text/qfontengine_qpf.cpp | 1 + src/gui/text/qtextengine.cpp | 4 +-- 6 files changed, 81 insertions(+), 55 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index dadc2de394..2bf33863f7 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -165,19 +165,33 @@ static HB_Error hb_getSFntTable(void *font, HB_Tag tableTag, HB_Byte *buffer, HB return HB_Err_Ok; } +static void hb_freeFace(void *face) +{ + qHBFreeFace((HB_Face)face); +} + // QFontEngine QFontEngine::QFontEngine() - : QObject(), ref(0) + : QObject(), ref(0), + font_(0), font_destroy_func(0), + face_(0), face_destroy_func(0) { cache_count = 0; fsType = 0; symbol = false; - memset(&hbFont, 0, sizeof(hbFont)); - hbFont.klass = &hb_fontClass; - hbFont.userData = this; - hbFace = 0; + { + HB_FontRec *hbFont = (HB_FontRec *) malloc(sizeof(HB_FontRec)); + Q_CHECK_PTR(hbFont); + memset(hbFont, 0, sizeof(HB_FontRec)); + hbFont->klass = &hb_fontClass; + hbFont->userData = this; + + font_ = (void *)hbFont; + font_destroy_func = free; + } + glyphFormat = -1; m_subPixelPositionCount = 0; } @@ -185,7 +199,15 @@ QFontEngine::QFontEngine() QFontEngine::~QFontEngine() { m_glyphCaches.clear(); - qHBFreeFace(hbFace); + + if (font_ && font_destroy_func) { + font_destroy_func(font_); + font_ = 0; + } + if (face_ && face_destroy_func) { + face_destroy_func(face_); + face_ = 0; + } } QFixed QFontEngine::lineThickness() const @@ -206,39 +228,37 @@ QFixed QFontEngine::underlinePosition() const return ((lineThickness() * 2) + 3) / 6; } -HB_Font QFontEngine::harfbuzzFont() const +void *QFontEngine::harfbuzzFont() const { - if (!hbFont.x_ppem) { + HB_FontRec *hbFont = (HB_FontRec *)font_; + if (!hbFont->x_ppem) { QFixed emSquare = emSquareSize(); - hbFont.x_ppem = fontDef.pixelSize; - hbFont.y_ppem = fontDef.pixelSize * fontDef.stretch / 100; - hbFont.x_scale = (QFixed(hbFont.x_ppem * (1 << 16)) / emSquare).value(); - hbFont.y_scale = (QFixed(hbFont.y_ppem * (1 << 16)) / emSquare).value(); + hbFont->x_ppem = fontDef.pixelSize; + hbFont->y_ppem = fontDef.pixelSize * fontDef.stretch / 100; + hbFont->x_scale = (QFixed(hbFont->x_ppem * (1 << 16)) / emSquare).value(); + hbFont->y_scale = (QFixed(hbFont->y_ppem * (1 << 16)) / emSquare).value(); } - return &hbFont; + return font_; } -HB_Face QFontEngine::harfbuzzFace() const +void *QFontEngine::harfbuzzFace() const { - if (!hbFace) { - hbFace = qHBNewFace(const_cast(this), hb_getSFntTable); + if (!face_) { + HB_Face hbFace = qHBNewFace(const_cast(this), hb_getSFntTable); Q_CHECK_PTR(hbFace); - } - return hbFace; -} + if (hbFace->font_for_init != 0) + hbFace = qHBLoadFace(hbFace); -HB_Face QFontEngine::initializedHarfbuzzFace() const -{ - HB_Face face = harfbuzzFace(); - if (face != 0 && face->font_for_init != 0) - face = qHBLoadFace(face); - - return face; + face_ = (void *)hbFace; + face_destroy_func = hb_freeFace; + } + return face_; } bool QFontEngine::supportsScript(QChar::Script script) const { - return initializedHarfbuzzFace()->supported_scripts[script_to_hbscript(script)]; + HB_Face hbFace = (HB_Face)harfbuzzFace(); + return hbFace->supported_scripts[script_to_hbscript(script)]; } glyph_metrics_t QFontEngine::boundingBox(glyph_t glyph, const QTransform &matrix) diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 6cac4b9205..8486810299 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -46,6 +46,8 @@ #include "qfontengine_ft_p.h" #include "private/qimage_p.h" +#include + #ifndef QT_NO_FREETYPE #include "qfile.h" @@ -258,8 +260,12 @@ QFreetypeFace *QFreetypeFace::getFace(const QFontEngine::FaceId &face_id, } newFreetype->face = face; - newFreetype->hbFace = qHBNewFace(face, hb_getSFntTable); - Q_CHECK_PTR(newFreetype->hbFace); + HB_Face hbFace = qHBNewFace(face, hb_getSFntTable); + Q_CHECK_PTR(hbFace); + if (hbFace->font_for_init != 0) + hbFace = qHBLoadFace(hbFace); + newFreetype->hbFace = (void *)hbFace; + newFreetype->ref.store(1); newFreetype->xsize = 0; newFreetype->ysize = 0; @@ -313,7 +319,7 @@ void QFreetypeFace::release(const QFontEngine::FaceId &face_id) { QtFreetypeData *freetypeData = qt_getFreetypeData(); if (!ref.deref()) { - qHBFreeFace(hbFace); + qHBFreeFace((HB_Face)hbFace); FT_Done_Face(face); if(freetypeData->faces.contains(face_id)) freetypeData->faces.take(face_id); @@ -654,7 +660,6 @@ QFontEngineFT::~QFontEngineFT() { if (freetype) freetype->release(face_id); - hbFace = 0; // we share the face in QFreeTypeFace, don't let ~QFontEngine delete it } bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format, @@ -691,7 +696,7 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format, symbol = bool(fontDef.family.contains(QLatin1String("symbol"), Qt::CaseInsensitive)); } // ##### - freetype->hbFace->isSymbolFont = symbol; + ((HB_Face)freetype->hbFace)->isSymbolFont = symbol; lbearing = rbearing = SHRT_MIN; freetype->computeSize(fontDef, &xsize, &ysize, &defaultGlyphSet.outline_drawing); @@ -729,12 +734,17 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format, if (line_thickness < 1) line_thickness = 1; - hbFont.x_ppem = face->size->metrics.x_ppem; - hbFont.y_ppem = face->size->metrics.y_ppem; - hbFont.x_scale = face->size->metrics.x_scale; - hbFont.y_scale = face->size->metrics.y_scale; - - hbFace = freetype->hbFace; + HB_FontRec *hbFont = (HB_FontRec *)font_; + hbFont->x_ppem = face->size->metrics.x_ppem; + hbFont->y_ppem = face->size->metrics.y_ppem; + hbFont->x_scale = face->size->metrics.x_scale; + hbFont->y_scale = face->size->metrics.y_scale; + + // ### + if (face_ && face_destroy_func) + face_destroy_func(face_); + face_ = freetype->hbFace; + face_destroy_func = 0; // we share the face in QFreeTypeFace, don't let ~QFontEngine delete it metrics = face->size->metrics; diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h index 9963d307ba..434eb76c33 100644 --- a/src/gui/text/qfontengine_ft_p.h +++ b/src/gui/text/qfontengine_ft_p.h @@ -69,8 +69,6 @@ #include -#include "private/qharfbuzz_copy_p.h" - QT_BEGIN_NAMESPACE class QFontEngineFTRawFont; @@ -101,7 +99,7 @@ struct QFreetypeFace } FT_Face face; - HB_Face hbFace; + void *hbFace; int xsize; // 26.6 int ysize; // 26.6 FT_Matrix matrix; diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h index 4f29aff9d7..3c7746b3c9 100644 --- a/src/gui/text/qfontengine_p.h +++ b/src/gui/text/qfontengine_p.h @@ -60,8 +60,6 @@ #include "private/qtextengine_p.h" #include "private/qfont_p.h" -#include "private/qharfbuzz_copy_p.h" - #include QT_BEGIN_NAMESPACE @@ -77,6 +75,7 @@ struct QGlyphLayout; ((quint32)(ch4)) \ ) +typedef void (*qt_destroy_func_t) (void *user_data); class Q_GUI_EXPORT QFontEngine : public QObject { @@ -162,11 +161,6 @@ public: /* returns 0 as glyph index for non existent glyphs */ virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, ShaperFlags flags) const = 0; - - /** - * This is a callback from harfbuzz. The font engine uses the font-system in use to find out the - * advances of each glyph and set it on the layout. - */ virtual void recalcAdvances(QGlyphLayout *, ShaperFlags) const {} virtual void doKerning(QGlyphLayout *, ShaperFlags) const; @@ -248,9 +242,8 @@ public: virtual QFontEngine *cloneWithSize(qreal /*pixelSize*/) const { return 0; } - HB_Font harfbuzzFont() const; - HB_Face harfbuzzFace() const; - HB_Face initializedHarfbuzzFace() const; + void *harfbuzzFont() const; + void *harfbuzzFace() const; bool supportsScript(QChar::Script script) const; virtual int getPointInOutline(glyph_t glyph, int flags, quint32 point, QFixed *xpos, QFixed *ypos, quint32 *nPoints); @@ -273,12 +266,16 @@ public: QAtomicInt ref; QFontDef fontDef; + + mutable void *font_; + mutable qt_destroy_func_t font_destroy_func; + mutable void *face_; + mutable qt_destroy_func_t face_destroy_func; + uint cache_cost; // amount of mem used in kb by the font int cache_count; uint fsType : 16; bool symbol; - mutable HB_FontRec hbFont; - mutable HB_Face hbFace; struct KernPair { uint left_right; QFixed adjust; diff --git a/src/gui/text/qfontengine_qpf.cpp b/src/gui/text/qfontengine_qpf.cpp index 56d4c29f1c..def671c62f 100644 --- a/src/gui/text/qfontengine_qpf.cpp +++ b/src/gui/text/qfontengine_qpf.cpp @@ -50,6 +50,7 @@ #include #if !defined(QT_NO_FREETYPE) #include "private/qfontengine_ft_p.h" +#include #endif #include "private/qcore_unix_p.h" // overrides QT_OPEN diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index fdedfded12..2814b5ae12 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1111,8 +1111,8 @@ void QTextEngine::shapeTextWithHarfbuzz(int item) const si.descent = qMax(actualFontEngine->descent(), si.descent); si.leading = qMax(actualFontEngine->leading(), si.leading); - shaper_item.font = actualFontEngine->harfbuzzFont(); - shaper_item.face = actualFontEngine->initializedHarfbuzzFace(); + shaper_item.font = (HB_Font)actualFontEngine->harfbuzzFont(); + shaper_item.face = (HB_Face)actualFontEngine->harfbuzzFace(); shaper_item.glyphIndicesPresent = true; -- cgit v1.2.3 From 0194fa135b1d84a8c8d70ed8a0ff46eef0289fb7 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sun, 10 Mar 2013 10:55:27 +0200 Subject: Hide Harfbuzz from the outer world Don't export, don't generate private headers, don't mention HB in API. Change-Id: I048ebd178bf4afaf9fda710a00933b95274cf910 Reviewed-by: Josh Faust Reviewed-by: Lars Knoll --- src/corelib/tools/qharfbuzz_p.h | 227 ++++++++++++++++++++- src/corelib/tools/qunicodetools.cpp | 3 +- src/corelib/tools/tools.pri | 2 +- src/gui/text/qharfbuzz_copy_p.h | 95 --------- src/gui/text/text.pri | 1 - .../fontdatabases/fontdatabases.pri | 2 - src/plugins/platforms/windows/windows.pro | 4 - 7 files changed, 227 insertions(+), 107 deletions(-) delete mode 100644 src/gui/text/qharfbuzz_copy_p.h (limited to 'src') diff --git a/src/corelib/tools/qharfbuzz_p.h b/src/corelib/tools/qharfbuzz_p.h index 9a0156f673..27ddb44e91 100644 --- a/src/corelib/tools/qharfbuzz_p.h +++ b/src/corelib/tools/qharfbuzz_p.h @@ -54,7 +54,230 @@ #define QHARFBUZZ_P_H #include -#include + +#if defined(QT_BUILD_CORE_LIB) +# include +#else +// a minimal set of HB types required for Qt libs other than Core +extern "C" { + +typedef enum { + /* no error */ + HB_Err_Ok = 0x0000, + HB_Err_Not_Covered = 0xFFFF, + + /* _hb_err() is called whenever returning the following errors, + * and in a couple places for HB_Err_Not_Covered too. */ + + /* programmer error */ + HB_Err_Invalid_Argument = 0x1A66, + + /* font error */ + HB_Err_Invalid_SubTable_Format = 0x157F, + HB_Err_Invalid_SubTable = 0x1570, + HB_Err_Read_Error = 0x6EAD, + + /* system error */ + HB_Err_Out_Of_Memory = 0xDEAD +} HB_Error; + +typedef QT_PREPEND_NAMESPACE(qint8) hb_int8; +typedef QT_PREPEND_NAMESPACE(quint8) hb_uint8; +typedef QT_PREPEND_NAMESPACE(qint16) hb_int16; +typedef QT_PREPEND_NAMESPACE(quint16) hb_uint16; +typedef QT_PREPEND_NAMESPACE(qint32) hb_int32; +typedef QT_PREPEND_NAMESPACE(quint32) hb_uint32; + +typedef hb_uint8 HB_Bool; +typedef hb_uint8 HB_Byte; +typedef hb_uint16 HB_UShort; +typedef hb_uint32 HB_UInt; +typedef hb_int8 HB_Char; +typedef hb_int16 HB_Short; +typedef hb_int32 HB_Int; +typedef hb_uint16 HB_UChar16; +typedef hb_uint32 HB_UChar32; +typedef hb_uint32 HB_Glyph; +typedef hb_int32 HB_Fixed; /* 26.6 */ +typedef hb_int32 HB_16Dot16; /* 16.16 */ +typedef hb_uint32 HB_Tag; + +typedef struct { + HB_Fixed x; + HB_Fixed y; +} HB_FixedPoint; + +typedef enum { + HB_Script_Common, + HB_Script_Greek, + HB_Script_Cyrillic, + HB_Script_Armenian, + HB_Script_Hebrew, + HB_Script_Arabic, + HB_Script_Syriac, + HB_Script_Thaana, + HB_Script_Devanagari, + HB_Script_Bengali, + HB_Script_Gurmukhi, + HB_Script_Gujarati, + HB_Script_Oriya, + HB_Script_Tamil, + HB_Script_Telugu, + HB_Script_Kannada, + HB_Script_Malayalam, + HB_Script_Sinhala, + HB_Script_Thai, + HB_Script_Lao, + HB_Script_Tibetan, + HB_Script_Myanmar, + HB_Script_Georgian, + HB_Script_Hangul, + HB_Script_Ogham, + HB_Script_Runic, + HB_Script_Khmer, + HB_Script_Nko, + HB_Script_Inherited, + HB_ScriptCount = HB_Script_Inherited +} HB_Script; + +typedef enum { + HB_NoJustification= 0, /* Justification can't be applied after this glyph */ + HB_Arabic_Space = 1, /* This glyph represents a space inside arabic text */ + HB_Character = 2, /* Inter-character justification point follows this glyph */ + HB_Space = 4, /* This glyph represents a blank outside an Arabic run */ + HB_Arabic_Normal = 7, /* Normal Middle-Of-Word glyph that connects to the right (begin) */ + HB_Arabic_Waw = 8, /* Next character is final form of Waw/Ain/Qaf/Fa */ + HB_Arabic_BaRa = 9, /* Next two chars are Ba + Ra/Ya/AlefMaksura */ + HB_Arabic_Alef = 10, /* Next character is final form of Alef/Tah/Lam/Kaf/Gaf */ + HB_Arabic_HaaDal = 11, /* Next character is final form of Haa/Dal/Taa Marbutah */ + HB_Arabic_Seen = 12, /* Initial or Medial form Of Seen/Sad */ + HB_Arabic_Kashida = 13 /* Kashida(U+640) in middle of word */ +} HB_JustificationClass; + +#ifdef __xlC__ +typedef unsigned hb_bitfield; +#else +typedef hb_uint8 hb_bitfield; +#endif + +typedef struct { + hb_bitfield justification :4; /* Justification class */ + hb_bitfield clusterStart :1; /* First glyph of representation of cluster */ + hb_bitfield mark :1; /* needs to be positioned around base char */ + hb_bitfield zeroWidth :1; /* ZWJ, ZWNJ etc, with no width */ + hb_bitfield dontPrint :1; + hb_bitfield combiningClass :8; +} HB_GlyphAttributes; + +typedef void * HB_GDEF; +typedef void * HB_GSUB; +typedef void * HB_GPOS; +typedef void * HB_Buffer; + +typedef HB_Error (*HB_GetFontTableFunc)(void *font, HB_Tag tag, HB_Byte *buffer, HB_UInt *length); + +typedef struct HB_FaceRec_ { + HB_Bool isSymbolFont; + + HB_GDEF gdef; + HB_GSUB gsub; + HB_GPOS gpos; + HB_Bool supported_scripts[HB_ScriptCount]; + HB_Buffer buffer; + HB_Script current_script; + int current_flags; /* HB_ShaperFlags */ + HB_Bool has_opentype_kerning; + HB_Bool glyphs_substituted; + HB_GlyphAttributes *tmpAttributes; + unsigned int *tmpLogClusters; + int length; + int orig_nglyphs; + void *font_for_init; + HB_GetFontTableFunc get_font_table_func; +} HB_FaceRec; + +typedef struct { + HB_Fixed x, y; + HB_Fixed width, height; + HB_Fixed xOffset, yOffset; +} HB_GlyphMetrics; + +typedef enum { + HB_FontAscent +} HB_FontMetric; + +struct HB_Font_; +typedef struct HB_Font_ *HB_Font; +typedef struct HB_FaceRec_ *HB_Face; + +typedef struct { + HB_Bool (*convertStringToGlyphIndices)(HB_Font font, const HB_UChar16 *string, hb_uint32 length, HB_Glyph *glyphs, hb_uint32 *numGlyphs, HB_Bool rightToLeft); + void (*getGlyphAdvances)(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGlyphs, HB_Fixed *advances, int flags /*HB_ShaperFlag*/); + HB_Bool (*canRender)(HB_Font font, const HB_UChar16 *string, hb_uint32 length); + /* implementation needs to make sure to load a scaled glyph, so /no/ FT_LOAD_NO_SCALE */ + HB_Error (*getPointInOutline)(HB_Font font, HB_Glyph glyph, int flags /*HB_ShaperFlag*/, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints); + void (*getGlyphMetrics)(HB_Font font, HB_Glyph glyph, HB_GlyphMetrics *metrics); + HB_Fixed (*getFontMetric)(HB_Font font, HB_FontMetric metric); +} HB_FontClass; + +typedef struct HB_Font_ { + const HB_FontClass *klass; + + /* Metrics */ + HB_UShort x_ppem, y_ppem; + HB_16Dot16 x_scale, y_scale; + + void *userData; +} HB_FontRec; + +typedef enum { + HB_LeftToRight = 0, + HB_RightToLeft = 1 +} HB_StringToGlyphsFlags; + +typedef enum { + HB_ShaperFlag_Default = 0, + HB_ShaperFlag_NoKerning = 1, + HB_ShaperFlag_UseDesignMetrics = 2 +} HB_ShaperFlag; + +typedef struct +{ + hb_uint32 pos; + hb_uint32 length; + HB_Script script; + hb_uint8 bidiLevel; +} HB_ScriptItem; + +typedef struct HB_ShaperItem_ HB_ShaperItem; + +struct HB_ShaperItem_ { + const HB_UChar16 *string; /* input: the Unicode UTF16 text to be shaped */ + hb_uint32 stringLength; /* input: the length of the input in 16-bit words */ + HB_ScriptItem item; /* input: the current run to be shaped: a run of text all in the same script that is a substring of */ + HB_Font font; /* input: the font: scale, units and function pointers supplying glyph indices and metrics */ + HB_Face face; /* input: the shaper state; current script, access to the OpenType tables , etc. */ + int shaperFlags; /* input (unused) should be set to 0; intended to support flags defined in HB_ShaperFlag */ + HB_Bool glyphIndicesPresent; /* input: true if the array contains glyph indices ready to be shaped */ + hb_uint32 initialGlyphCount; /* input: if glyphIndicesPresent is true, the number of glyph indices in the array */ + + hb_uint32 num_glyphs; /* input: capacity of output arrays , , , , and ; */ + /* output: required capacity (may be larger than actual capacity) */ + + HB_Glyph *glyphs; /* output: indices of shaped glyphs */ + HB_GlyphAttributes *attributes; /* output: glyph attributes */ + HB_Fixed *advances; /* output: advances */ + HB_FixedPoint *offsets; /* output: offsets */ + unsigned short *log_clusters; /* output: for each output glyph, the index in the input of the start of its logical cluster */ + + /* internal */ + HB_Bool kerning_applied; /* output: true if kerning was applied by the shaper */ +}; + +} + +#endif // QT_BUILD_CORE_LIB + QT_BEGIN_NAMESPACE @@ -144,4 +367,4 @@ Q_DECLARE_TYPEINFO(HB_FixedPoint, Q_PRIMITIVE_TYPE); QT_END_NAMESPACE -#endif +#endif // QHARFBUZZ_P_H diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index 01aa1c4d52..3102035684 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -44,8 +44,7 @@ #include "qunicodetables_p.h" #include "qvarlengtharray.h" -#include -#include +#include "qharfbuzz_p.h" #define FLAG(x) (1 << (x)) diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index 9b80b7c4fe..c6e12c59eb 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -134,7 +134,7 @@ pcre { LIBS_PRIVATE += -lpcre16 } -DEFINES += HB_EXPORT=Q_CORE_EXPORT +INCLUDEPATH += ../3rdparty/harfbuzz/src HEADERS += ../3rdparty/harfbuzz/src/harfbuzz.h SOURCES += ../3rdparty/harfbuzz/src/harfbuzz-buffer.c \ ../3rdparty/harfbuzz/src/harfbuzz-gdef.c \ diff --git a/src/gui/text/qharfbuzz_copy_p.h b/src/gui/text/qharfbuzz_copy_p.h deleted file mode 100644 index 34acca3f9a..0000000000 --- a/src/gui/text/qharfbuzz_copy_p.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies) - * Copyright (C) 2007 Red Hat, Inc. - * - * This code is a modified version of some part of HarfBuzz, - * an OpenType Layout engine library. - * - * Permission is hereby granted, without written agreement and without - * license or royalty fees, to use, copy, modify, and distribute this - * software and its documentation for any purpose, provided that the - * above copyright notice and the following two paragraphs appear in - * all copies of this software. - * - * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN - * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - * - * Red Hat Author(s): Behdad Esfahbod - */ - -#ifndef QHARFBUZZ_COPY_P_H -#define QHARFBUZZ_COPY_P_H - -/* - The purpose of this header file is to allow inclusion of the private - headers for font and text classes without having to pull in the full - harfbuzz library under QTDIR/src/3rdparty/harfbuzz/src -*/ -#if defined(QT_BUILD_GUI_LIB) || defined(QT_COMPILES_IN_HARFBUZZ) -#include -#else - -extern "C" { - -#ifdef __xlC__ -typedef unsigned hb_bitfield; -#else -typedef QT_PREPEND_NAMESPACE(quint8) hb_bitfield; -#endif - -typedef enum { - /* no error */ - HB_Err_Ok = 0x0000, - HB_Err_Not_Covered = 0xFFFF, - - /* _hb_err() is called whenever returning the following errors, - * and in a couple places for HB_Err_Not_Covered too. */ - - /* programmer error */ - HB_Err_Invalid_Argument = 0x1A66, - - /* font error */ - HB_Err_Invalid_SubTable_Format = 0x157F, - HB_Err_Invalid_SubTable = 0x1570, - HB_Err_Read_Error = 0x6EAD, - - /* system error */ - HB_Err_Out_Of_Memory = 0xDEAD -} HB_Error; - -typedef QT_PREPEND_NAMESPACE(quint32) HB_Glyph; -typedef void * HB_Font; -typedef void * HB_Face; -typedef void * HB_FontRec; -typedef QT_PREPEND_NAMESPACE(quint32) hb_uint32; -typedef QT_PREPEND_NAMESPACE(qint32) HB_Fixed; - -typedef struct { - HB_Fixed x; - HB_Fixed y; -} HB_FixedPoint; - -// The GlyphAttrbutes class is used inline so it needs to be complete. -typedef struct { - hb_bitfield justification :4; /* Justification class */ - hb_bitfield clusterStart :1; /* First glyph of representation of cluster */ - hb_bitfield mark :1; /* needs to be positioned around base char */ - hb_bitfield zeroWidth :1; /* ZWJ, ZWNJ etc, with no width */ - hb_bitfield dontPrint :1; - hb_bitfield combiningClass :8; -} HB_GlyphAttributes; - -} - -#endif // ifdef QT_BUILD_GUI_LIB - -#endif // QHARFBUZZ_COPY_P_H diff --git a/src/gui/text/text.pri b/src/gui/text/text.pri index 436b7c7aec..e9ea2a3f83 100644 --- a/src/gui/text/text.pri +++ b/src/gui/text/text.pri @@ -42,7 +42,6 @@ HEADERS += \ text/qrawfont_p.h \ text/qglyphrun.h \ text/qglyphrun_p.h \ - text/qharfbuzz_copy_p.h \ text/qdistancefield_p.h SOURCES += \ diff --git a/src/platformsupport/fontdatabases/fontdatabases.pri b/src/platformsupport/fontdatabases/fontdatabases.pri index 003017473b..12b06d64cc 100644 --- a/src/platformsupport/fontdatabases/fontdatabases.pri +++ b/src/platformsupport/fontdatabases/fontdatabases.pri @@ -1,5 +1,3 @@ -DEFINES += QT_COMPILES_IN_HARFBUZZ - !win32|contains(QT_CONFIG, freetype):!mac { include($$PWD/basic/basic.pri) } diff --git a/src/plugins/platforms/windows/windows.pro b/src/plugins/platforms/windows/windows.pro index ff162e2d41..3aa9caaa0f 100644 --- a/src/plugins/platforms/windows/windows.pro +++ b/src/plugins/platforms/windows/windows.pro @@ -102,12 +102,8 @@ contains(QT_CONFIG, opengles2) { } } -# Enable access to HB_Face in harfbuzz includes included by qfontengine_p.h. -DEFINES *= QT_COMPILES_IN_HARFBUZZ - contains(QT_CONFIG, freetype) { DEFINES *= QT_NO_FONTCONFIG - DEFINES *= QT_COMPILES_IN_HARFBUZZ QT_FREETYPE_DIR = $$QT_SOURCE_TREE/src/3rdparty/freetype HEADERS += \ -- cgit v1.2.3 From 39b4955da3afca252dfc58c2a1395446207d89e4 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Tue, 12 Mar 2013 18:56:08 +0200 Subject: QTextEngine::itemize(): Minor optimization Avoid using script_to_hbscript() in generateScriptItems()'s loop. This is absolutely unnecessary due to hbscript_to_script(script_to_hbscript(..)) in QTextEngine::itemize(). Change-Id: I44e710d010f8e57043a6c74dd80f3164e95e18e6 Reviewed-by: Lars Knoll --- src/gui/text/qtextengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 2814b5ae12..b312eae93e 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -135,7 +135,7 @@ private: // along, and nothing else. if (m_analysis[i].bidiLevel == m_analysis[start].bidiLevel && m_analysis[i].flags == m_analysis[start].flags - && (script_to_hbscript(m_analysis[i].script) == script_to_hbscript(m_analysis[start].script) || m_string[i] == QLatin1Char('.')) + && (m_analysis[i].script == m_analysis[start].script || m_string[i] == QLatin1Char('.')) && m_analysis[i].flags < QScriptAnalysis::SpaceTabOrObject && i - start < MaxItemLength) continue; -- cgit v1.2.3 From 75614792fa2370b6b0402117bfef8efc364b7b67 Mon Sep 17 00:00:00 2001 From: Jan Arve Saether Date: Tue, 12 Mar 2013 11:24:37 +0100 Subject: Fixed bug in QTimeLine::setPaused(false) The problem was that the elapsed timer was not restarted, causing the currentTime() not being adjusted for the time it was paused. Task-number: QTBUG-30108 Change-Id: Ib9b2c5a0dea52762109e0b25f1068dd7c88e15ba Reviewed-by: Richard Moe Gustavsen --- src/corelib/tools/qtimeline.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/corelib/tools/qtimeline.cpp b/src/corelib/tools/qtimeline.cpp index 390effb6c2..976c03aef4 100644 --- a/src/corelib/tools/qtimeline.cpp +++ b/src/corelib/tools/qtimeline.cpp @@ -744,7 +744,10 @@ void QTimeLine::setPaused(bool paused) d->timerId = 0; d->setState(Paused); } else if (!paused && d->state == Paused) { + // Same as resume() d->timerId = startTimer(d->updateInterval); + d->startTime = d->currentTime; + d->timer.start(); d->setState(Running); } } -- cgit v1.2.3 From bad1918cb438874e31dee05536e300c3470c7b23 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 13 Mar 2013 10:19:21 +0100 Subject: Fix build with Windows SDKs pre 7.0. Check whether the IShellLibrary interface exists. Task-number: QTBUG-29447 Change-Id: I93fc54a1e6d5c090f7c1768c756571ba57a7b2d2 Reviewed-by: Andreas Holzammer Reviewed-by: Oswald Buddenhagen Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/qwindowsdialoghelpers.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp index 14bc26f770..0530707479 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp @@ -1004,7 +1004,7 @@ void QWindowsNativeFileDialogBase::setMode(QFileDialogOptions::FileMode mode, QF qErrnoWarning("%s: SetOptions() failed", __FUNCTION__); } -#ifndef Q_OS_WINCE +#if !defined(Q_OS_WINCE) && defined(__IShellLibrary_INTERFACE_DEFINED__) // Windows SDK 7 // Helper for "Libraries": collections of folders appearing from Windows 7 // on, visible in the file dialogs. @@ -1057,7 +1057,7 @@ QString QWindowsNativeFileDialogBase::libraryItemDefaultSaveFolder(IShellItem *i return result; } -#else // !Q_OS_WINCE +#else // !Q_OS_WINCE && __IShellLibrary_INTERFACE_DEFINED__ QStringList QWindowsNativeFileDialogBase::libraryItemPaths(IShellItem *) { @@ -1069,7 +1069,7 @@ QString QWindowsNativeFileDialogBase::libraryDefaultSaveFolder(IShellItem *) return QString(); } -#endif // Q_OS_WINCE +#endif // Q_OS_WINCE || !__IShellLibrary_INTERFACE_DEFINED__ QString QWindowsNativeFileDialogBase::itemPath(IShellItem *item) { -- cgit v1.2.3 From 03e2ea2ac057b2b4aa1dc4e5b817ffd552080ce5 Mon Sep 17 00:00:00 2001 From: Kevin Ottens Date: Wed, 27 Feb 2013 17:11:41 +0100 Subject: Add convenience for section actions in QMenu Those actions are just separators having also text and potentially icon. It is very convenient to create titled sections in a menu, or give a title to a context menu. Obviously requires support for them on the style side, but modern styles like fusion or oxygen handle them just fine. For legacy styles it properly falls back to a regular separator aspect. That's why a specific style hint is also introduced. It is used by QMenu to know how the sections will be treated and take care of them correctly when eliminating duplicated separators or separators at the beginning of the menu. Change-Id: Iad00a93422b7983dc90dfc4b4b1c360122e47610 Reviewed-by: David Faure (KDE) Reviewed-by: Lars Knoll --- src/widgets/styles/qcommonstyle.cpp | 3 ++ src/widgets/styles/qfusionstyle.cpp | 1 + src/widgets/styles/qstyle.cpp | 3 ++ src/widgets/styles/qstyle.h | 1 + src/widgets/widgets/qmenu.cpp | 104 +++++++++++++++++++++++++++++++++++- src/widgets/widgets/qmenu.h | 5 ++ 6 files changed, 115 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 64eb76dbb4..269b887909 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -5109,6 +5109,9 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget case SH_ScrollBar_Transient: ret = false; break; + case SH_Menu_SupportsSections: + ret = false; + break; default: ret = 0; break; diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index defdf30b6b..ee237ac71a 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -3473,6 +3473,7 @@ int QFusionStyle::styleHint(StyleHint hint, const QStyleOption *option, const QW case SH_ItemView_ChangeHighlightOnFocus: case SH_MenuBar_MouseTracking: case SH_Menu_MouseTracking: + case SH_Menu_SupportsSections: return 1; case SH_ToolBox_SelectedPageTitleBold: diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp index 9c4901795d..1d4e4bd570 100644 --- a/src/widgets/styles/qstyle.cpp +++ b/src/widgets/styles/qstyle.cpp @@ -1891,6 +1891,9 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \value SH_ScrollBar_Transient Determines if the style supports transient scroll bars. Transient scroll bars appear when the content is scrolled and disappear when they are no longer needed. + \value SH_Menu_SupportsSections Determines if the style displays sections in menus or treat them as + plain separators. Sections are separators with a text and icon hint. + \sa styleHint() */ diff --git a/src/widgets/styles/qstyle.h b/src/widgets/styles/qstyle.h index a9ac1813c5..0d139cb83d 100644 --- a/src/widgets/styles/qstyle.h +++ b/src/widgets/styles/qstyle.h @@ -697,6 +697,7 @@ public: SH_ToolButtonStyle, SH_RequestSoftwareInputPanel, SH_ScrollBar_Transient, + SH_Menu_SupportsSections, // Add new style hint values here SH_CustomBase = 0xf0000000 diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 117d56ff18..bbfc79d117 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -260,12 +260,15 @@ void QMenuPrivate::updateActionRects(const QRect &screen) const bool previousWasSeparator = true; // this is true to allow removing the leading separators for(int i = 0; i <= lastVisibleAction; i++) { QAction *action = actions.at(i); + const bool isSection = action->isSeparator() && (!action->text().isEmpty() || !action->icon().isNull()); + const bool isPlainSeparator = (isSection && !q->style()->styleHint(QStyle::SH_Menu_SupportsSections)) + || (action->isSeparator() && !isSection); if (!action->isVisible() || - (collapsibleSeparators && previousWasSeparator && action->isSeparator())) + (collapsibleSeparators && previousWasSeparator && isPlainSeparator)) continue; // we continue, this action will get an empty QRect - previousWasSeparator = action->isSeparator(); + previousWasSeparator = isPlainSeparator; //let the style modify the above size.. QStyleOptionMenuItem opt; @@ -1510,6 +1513,54 @@ QAction *QMenu::addSeparator() return action; } +/*! + \since 5.1 + + This convenience function creates a new section action, i.e. an + action with QAction::isSeparator() returning true but also + having \a text hint, and adds the new action to this menu's list + of actions. It returns the newly created action. + + The rendering of the hint is style and platform dependent. Widget + styles can use the text information in the rendering for sections, + or can choose to ignore it and render sections like simple separators. + + QMenu takes ownership of the returned QAction. + + \sa QWidget::addAction() +*/ +QAction *QMenu::addSection(const QString &text) +{ + QAction *action = new QAction(text, this); + action->setSeparator(true); + addAction(action); + return action; +} + +/*! + \since 5.1 + + This convenience function creates a new section action, i.e. an + action with QAction::isSeparator() returning true but also + having \a text and \a icon hints, and adds the new action to this menu's + list of actions. It returns the newly created action. + + The rendering of the hints is style and platform dependent. Widget + styles can use the text and icon information in the rendering for sections, + or can choose to ignore them and render sections like simple separators. + + QMenu takes ownership of the returned QAction. + + \sa QWidget::addAction() +*/ +QAction *QMenu::addSection(const QIcon &icon, const QString &text) +{ + QAction *action = new QAction(icon, text, this); + action->setSeparator(true); + addAction(action); + return action; +} + /*! This convenience function inserts \a menu before action \a before and returns the menus menuAction(). @@ -1541,6 +1592,55 @@ QAction *QMenu::insertSeparator(QAction *before) return action; } +/*! + \since 5.1 + + This convenience function creates a new title action, i.e. an + action with QAction::isSeparator() returning true but also having + \a text hint. The function inserts the newly created action + into this menu's list of actions before action \a before and + returns it. + + The rendering of the hint is style and platform dependent. Widget + styles can use the text information in the rendering for sections, + or can choose to ignore it and render sections like simple separators. + + QMenu takes ownership of the returned QAction. + + \sa QWidget::insertAction(), addSection() +*/ +QAction *QMenu::insertSection(QAction *before, const QString &text) +{ + QAction *action = new QAction(text, this); + action->setSeparator(true); + insertAction(before, action); + return action; +} + +/*! + \since 5.1 + + This convenience function creates a new title action, i.e. an + action with QAction::isSeparator() returning true but also having + \a text and \a icon hints. The function inserts the newly created action + into this menu's list of actions before action \a before and returns it. + + The rendering of the hints is style and platform dependent. Widget + styles can use the text and icon information in the rendering for sections, + or can choose to ignore them and render sections like simple separators. + + QMenu takes ownership of the returned QAction. + + \sa QWidget::insertAction(), addSection() +*/ +QAction *QMenu::insertSection(QAction *before, const QIcon &icon, const QString &text) +{ + QAction *action = new QAction(icon, text, this); + action->setSeparator(true); + insertAction(before, action); + return action; +} + /*! This sets the default action to \a act. The default action may have a visual cue, depending on the current QStyle. A default action diff --git a/src/widgets/widgets/qmenu.h b/src/widgets/widgets/qmenu.h index 7547c69a10..7fa3336769 100644 --- a/src/widgets/widgets/qmenu.h +++ b/src/widgets/widgets/qmenu.h @@ -93,8 +93,13 @@ public: QAction *addSeparator(); + QAction *addSection(const QString &text); + QAction *addSection(const QIcon &icon, const QString &text); + QAction *insertMenu(QAction *before, QMenu *menu); QAction *insertSeparator(QAction *before); + QAction *insertSection(QAction *before, const QString &text); + QAction *insertSection(QAction *before, const QIcon &icon, const QString &text); bool isEmpty() const; void clear(); -- cgit v1.2.3 From 51216956b2b6b29cd77877c473c0d2b5707d3333 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Tue, 5 Mar 2013 15:13:12 +0100 Subject: Draw StatusBar with gradient on mac We can safely remove code applying to 10.3 on mac. We also should draw the gradient even on non unified toolbars. Change-Id: Ia97c3c93daf7a711c3ce4b61b74a5eb1d914519b Reviewed-by: Gabriel de Dietrich --- src/widgets/styles/qmacstyle_mac.mm | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index a34b08bac4..203cf8c622 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -3201,18 +3201,6 @@ void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPai drawTabCloseButton(p, hover, active, selected); } break; case PE_PanelStatusBar: { - if (QSysInfo::MacintoshVersion <= QSysInfo::MV_10_4) { - QCommonStyle::drawPrimitive(pe, opt, p, w); - break; - } - // Use the Leopard style only if the status bar is the status bar for a - // QMainWindow with a unifed toolbar. - if (w == 0 || w->parent() == 0 || qobject_cast(w->parent()) == 0 || - qobject_cast(w->parent())->unifiedTitleAndToolBarOnMac() == false ) { - QCommonStyle::drawPrimitive(pe, opt, p, w); - break; - } - // Fill the status bar with the titlebar gradient. QLinearGradient linearGrad(0, opt->rect.top(), 0, opt->rect.bottom()); if (opt->state & QStyle::State_Active) { -- cgit v1.2.3 From 99b032e13203a22793431e61f38c73cbf02a66cb Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Tue, 5 Mar 2013 14:37:17 +0100 Subject: Improve the look and feel of Mac extension arrow This adds an improved extension arrow as well as a graphic for retina macs. Change-Id: Ie7395bbd87d6d354437bdbcc0cf258a27c09a360 Reviewed-by: Gabriel de Dietrich --- src/widgets/styles/images/toolbar-ext.png | Bin 0 -> 516 bytes src/widgets/styles/images/toolbar-ext@2x.png | Bin 0 -> 505 bytes src/widgets/styles/qmacstyle_mac.mm | 6 ++- src/widgets/styles/qmacstylepixmaps_mac_p.h | 72 --------------------------- src/widgets/styles/qstyle.qrc | 2 + src/widgets/styles/styles.pri | 1 - 6 files changed, 6 insertions(+), 75 deletions(-) create mode 100644 src/widgets/styles/images/toolbar-ext.png create mode 100644 src/widgets/styles/images/toolbar-ext@2x.png delete mode 100644 src/widgets/styles/qmacstylepixmaps_mac_p.h (limited to 'src') diff --git a/src/widgets/styles/images/toolbar-ext.png b/src/widgets/styles/images/toolbar-ext.png new file mode 100644 index 0000000000..37bd403ff8 Binary files /dev/null and b/src/widgets/styles/images/toolbar-ext.png differ diff --git a/src/widgets/styles/images/toolbar-ext@2x.png b/src/widgets/styles/images/toolbar-ext@2x.png new file mode 100644 index 0000000000..6fc729efb0 Binary files /dev/null and b/src/widgets/styles/images/toolbar-ext@2x.png differ diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index 203cf8c622..1eb78adeda 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -48,7 +48,6 @@ #include "qmacstyle_mac_p.h" #include "qmacstyle_mac_p_p.h" -#include "qmacstylepixmaps_mac_p.h" #define QMAC_QAQUASTYLE_SIZE_CONSTRAIN //#define DEBUG_SIZE_CONSTRAINT @@ -2375,6 +2374,9 @@ int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QW case PM_MenuHMargin: ret = 0; break; + case PM_ToolBarExtensionExtent: + ret = 21; + break; case PM_ToolBarFrameWidth: ret = 1; if (widget) { @@ -6362,7 +6364,7 @@ QIcon QMacStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption *o return QCommonStyle::standardIcon(standardIcon, opt, widget); case SP_ToolBarHorizontalExtensionButton: case SP_ToolBarVerticalExtensionButton: { - QPixmap pixmap(qt_mac_toolbar_ext); + QPixmap pixmap(QLatin1String(":/qt-project.org/styles/macstyle/images/toolbar-ext.png")); if (standardIcon == SP_ToolBarVerticalExtensionButton) { QPixmap pix2(pixmap.height(), pixmap.width()); pix2.fill(Qt::transparent); diff --git a/src/widgets/styles/qmacstylepixmaps_mac_p.h b/src/widgets/styles/qmacstylepixmaps_mac_p.h deleted file mode 100644 index f76383a2d4..0000000000 --- a/src/widgets/styles/qmacstylepixmaps_mac_p.h +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QMACSTYLEPIXMAPS_MAC_P_H -#define QMACSTYLEPIXMAPS_MAC_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -static const char * const qt_mac_toolbar_ext[]={ - "14 9 4 1", - "# c #858585", - "b c #d9d9d9", - ". c #dbdbdb", - "a c None", - ".###..###.aaaa", - "a.###..###.aaa", - "aab###bb###baa", - "aaab###bb###ba", - "aaaa.###..###.", - "aaa.###..###.a", - "aab###bb###baa", - "ab###bb###baaa", - ".###..###.aaaa"}; - -#endif // QMACSTYLEPIXMAPS_MAC_P_H diff --git a/src/widgets/styles/qstyle.qrc b/src/widgets/styles/qstyle.qrc index d835728928..28ad484032 100644 --- a/src/widgets/styles/qstyle.qrc +++ b/src/widgets/styles/qstyle.qrc @@ -133,5 +133,7 @@ images/closedock-down-16.png images/dockdock-16.png images/dockdock-down-16.png + images/toolbar-ext.png + images/toolbar-ext@2x.png diff --git a/src/widgets/styles/styles.pri b/src/widgets/styles/styles.pri index 109621988e..b39b17fd86 100644 --- a/src/widgets/styles/styles.pri +++ b/src/widgets/styles/styles.pri @@ -52,7 +52,6 @@ contains(QT_CONFIG, gtkstyle) { contains( styles, mac ) { HEADERS += \ styles/qmacstyle_mac_p.h \ - styles/qmacstylepixmaps_mac_p.h \ styles/qmacstyle_mac_p_p.h OBJECTIVE_SOURCES += styles/qmacstyle_mac.mm -- cgit v1.2.3 From 7b5ee9cb805badfc6f54764d0cf753f1456d5006 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Tue, 5 Mar 2013 11:55:47 +0100 Subject: Improved appearance of mac toolbar handles The old ones were too heavy and cluttered to fit on mac. Change-Id: I5d9f1a8801992026af65af4c6b2aeae3a03a9f5c Reviewed-by: Gabriel de Dietrich --- src/widgets/styles/qmacstyle_mac.mm | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index 1eb78adeda..9a8d768e2a 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -2960,16 +2960,16 @@ void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPai p->save(); QPainterPath path; int x = opt->rect.x() + 6; - int y = opt->rect.y() + 5; + int y = opt->rect.y() + 7; static const int RectHeight = 2; if (opt->state & State_Horizontal) { - while (y < opt->rect.height() - RectHeight - 6) { + while (y < opt->rect.height() - RectHeight - 5) { path.moveTo(x, y); path.addRect(x, y, RectHeight, RectHeight); y += 6; } } else { - while (x < opt->rect.width() - RectHeight - 6) { + while (x < opt->rect.width() - RectHeight - 5) { path.moveTo(x, y); path.addRect(x, y, RectHeight, RectHeight); x += 6; @@ -2981,12 +2981,6 @@ void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPai QColor light = opt->palette.light().color(); light.setAlphaF(0.6); p->fillPath(path, light); - p->save(); - p->translate(1, 1); - p->fillPath(path, dark); - p->restore(); - p->translate(3, 3); - p->fillPath(path, light); p->translate(1, 1); p->fillPath(path, dark); p->restore(); -- cgit v1.2.3 From 7cf603e92e2139215220ff5fa2f0c4e65db676c9 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Mon, 11 Mar 2013 16:02:10 +0100 Subject: Fix openglextensions module depends. It requires the QtGui module. Just remove the QT line and allow the default to be used. Change-Id: Ie6dffaa0621c7ececd31ff0b696814bc82a2a764 Reviewed-by: Sean Harmer --- src/openglextensions/openglextensions.pro | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/openglextensions/openglextensions.pro b/src/openglextensions/openglextensions.pro index dc7a314230..5ab750bee8 100644 --- a/src/openglextensions/openglextensions.pro +++ b/src/openglextensions/openglextensions.pro @@ -1,5 +1,4 @@ TARGET = QtOpenGLExtensions -QT = core CONFIG += static contains(QT_CONFIG, opengl):CONFIG += opengl -- cgit v1.2.3 From 91cd2009bd446091c90c79ecf29e29db8768956e Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Tue, 12 Mar 2013 10:38:22 +0100 Subject: Generate a Qt5ConfigVersion.cmake file. This allows finding a minimum particular version of Qt 5. Change-Id: I96112f1be90f397ec60a2b233989ac0e0380bef9 Reviewed-by: Alexander Neundorf Reviewed-by: Stephen Kelly --- src/corelib/corelib.pro | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro index b1f1a60b6c..3b7eb11229 100644 --- a/src/corelib/corelib.pro +++ b/src/corelib/corelib.pro @@ -72,10 +72,13 @@ ctest_macros_file.CONFIG = verbatim cmake_umbrella_config_file.input = $$PWD/Qt5Config.cmake.in cmake_umbrella_config_file.output = $$DESTDIR/cmake/Qt5/Qt5Config.cmake -cmake_qt5_umbrella_module_files.files = $$cmake_umbrella_config_file.output +cmake_umbrella_config_version_file.input = $$PWD/../../mkspecs/features/data/cmake/Qt5ConfigVersion.cmake.in +cmake_umbrella_config_version_file.output = $$DESTDIR/cmake/Qt5/Qt5ConfigVersion.cmake + +cmake_qt5_umbrella_module_files.files = $$cmake_umbrella_config_file.output $$cmake_umbrella_config_version_file.output cmake_qt5_umbrella_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5 -QMAKE_SUBSTITUTES += ctest_macros_file cmake_umbrella_config_file +QMAKE_SUBSTITUTES += ctest_macros_file cmake_umbrella_config_file cmake_umbrella_config_version_file ctest_qt5_module_files.files += $$ctest_macros_file.output -- cgit v1.2.3 From c9eb0f9b49e825500f3aace1b84e3e4b143cb98d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 13 Mar 2013 13:07:32 +0100 Subject: Don't include custom qopengles2ext.h on iOS This fixes the build after ec9c0faefd (Update gl2ext.h with the latest version from Khronos). Just like Mac OS X, iOS is a controlled platform, and we should include the system headers instead. The OES_EGL_image_external extension is not yet in the system headers though, so we provide our own typedef to make the qopenglextensions.cpp code build, and the extension will work out of the box once Apple includes driver support for it. Change-Id: Ib6ba09d400ba38f05d91c90d4c9e54a8626889e1 Reviewed-by: Sean Harmer Reviewed-by: Giuseppe D'Angelo --- src/gui/opengl/qopengl.h | 53 +++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h index e4e06ba284..0613527333 100644 --- a/src/gui/opengl/qopengl.h +++ b/src/gui/opengl/qopengl.h @@ -46,12 +46,35 @@ #include +// Note: Mac OSX is a "controlled platform" for OpenGL ABI so we +// use the system provided headers there. Controlled means that the +// headers always match the actual driver implementation so there +// is no possibility of drivers exposing additional functionality +// from the system headers. Also it means that the vendor can +// (and does) make different choices about some OpenGL types. For +// e.g. Apple uses void* for GLhandleARB whereas other platforms +// use unsigned int. +// +// For the "uncontrolled" Windows and Linux platforms we use the +// official Khronos headers. On these platforms this gives +// access to additional functionality the drivers may expose but +// which the system headers do not. + #if defined(QT_OPENGL_ES_2) # if defined(Q_OS_MAC) # include -# else +# include + +/* + OES_EGL_image_external is not included in the Apple provided + system headers yet, but we define the missing typedef so that + the qopenglextensions.cpp code will magically work once Apple + include the extension in their drivers. +*/ +typedef void* GLeglImageOES; + +# else // "uncontrolled" platforms # include -# endif /* Some GLES2 implementations (like the one on Harmattan) are missing the @@ -61,27 +84,15 @@ */ typedef char GLchar; -# include -# ifndef GL_DOUBLE -# define GL_DOUBLE GL_FLOAT -# endif -# ifndef GLdouble +# include +# ifndef GL_DOUBLE +# define GL_DOUBLE GL_FLOAT +# endif +# ifndef GLdouble typedef GLfloat GLdouble; -# endif +# endif +# endif // Q_OS_MAC #else -// Mac OSX is a "controlled platform" for OpenGL ABI so we use -// the system provided headers there. Controlled means that the -// headers always match the actual driver implementation so there -// is no possibility of drivers exposing additional functionality -// from the system headers. Also it means that the vendor can -// (and does) make different choices about some OpenGL types. For -// e.g. Apple uses void* for GLhandleARB whereas other platforms -// use unsigned int. -// -// For the "uncontrolled" Windows and Linux platforms we use the -// official Khronos glext.h header. On these platforms this gives -// access to additional functionality the drivers may expose but -// which the system headers do not. # if defined(Q_OS_MAC) # include # if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 -- cgit v1.2.3 From 2f0756a63c699bb67232b535854c8fcbdf2f973c Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 8 Mar 2013 22:13:55 +0100 Subject: remove pointless DBUS_PATH includes nothing sets this variable. QT_CFLAGS_DBUS contains the relevant -I flags. Change-Id: I888b81f2110c5966550efd4313e74fe6f76ab06b Reviewed-by: Thiago Macieira --- src/tools/qdbuscpp2xml/qdbuscpp2xml.pro | 2 -- src/tools/qdbusxml2cpp/qdbusxml2cpp.pro | 2 -- 2 files changed, 4 deletions(-) (limited to 'src') diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro index 02c3655f33..7fac7cfb99 100644 --- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro +++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro @@ -10,8 +10,6 @@ INCLUDEPATH += $$QT_BUILD_TREE/include \ $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION/QtDBus \ $$QT_SOURCE_TREE/src/dbus -!isEmpty(DBUS_PATH): INCLUDEPATH += $$DBUS_PATH/include - QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS SOURCES += qdbuscpp2xml.cpp \ diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro index b473014938..98f51b3c44 100644 --- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro +++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro @@ -8,8 +8,6 @@ INCLUDEPATH += $$QT_BUILD_TREE/include \ $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION/QtDBus \ $$QT_SOURCE_TREE/src/dbus -!isEmpty(DBUS_PATH): INCLUDEPATH += $$DBUS_PATH/include - QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS SOURCES = qdbusxml2cpp.cpp \ -- cgit v1.2.3 From 3c2748afd58ef84d14b028fa43d193addb1add4c Mon Sep 17 00:00:00 2001 From: Axel Waggershauser Date: Wed, 6 Mar 2013 17:44:15 +0100 Subject: Improve warning messages (and readability) of connectSlotsByName() While adding a test case for the new behavior, two issues with the connectSlotsByName implementation came up: 1. for auto-connected slots that don't exactly match a signal, a 'compatible' one is searched. There might be more than one of those. The implementation randomly picks any. 2. The "No matching signal for %s" warning gets printed even for slots that can never be connected via connectSlotsMyName anyway (e.g. "on_something"). This is inconsistent. This fixed both: an explicit warning is printed if more than one 'compatible' signal is found and the "No matching signal for %s" warning is only printed if the slot adheres to the full "on_child_signal()" naming convention. In the process I added comments and changed the code slightly to make it more readable and explicitly hint at non-obvious behavior. Change-Id: Icc8e3b9936188d2da8dfff9f0373c8e5c776eb14 Reviewed-by: Olivier Goffart Reviewed-by: Friedemann Kleint --- src/corelib/kernel/qobject.cpp | 52 ++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 617fadc1ab..3e578b36d7 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3234,38 +3234,62 @@ void QMetaObject::connectSlotsByName(QObject *o) o->findChildren(QString()) // all children of 'o'... << o; // and the object 'o' itself + // for each method/slot of o ... for (int i = 0; i < mo->methodCount(); ++i) { - QByteArray slotSignature = mo->method(i).methodSignature(); + const QByteArray slotSignature = mo->method(i).methodSignature(); const char *slot = slotSignature.constData(); Q_ASSERT(slot); + + // ...that starts with "on_", ... if (slot[0] != 'o' || slot[1] != 'n' || slot[2] != '_') continue; + + // ...we check each object in our list, ... bool foundIt = false; for(int j = 0; j < list.count(); ++j) { const QObject *co = list.at(j); - QByteArray objName = co->objectName().toLatin1(); - int len = objName.length(); - if (!len || qstrncmp(slot + 3, objName.data(), len) || slot[len+3] != '_') + const QByteArray coName = co->objectName().toLatin1(); + + // ...discarding those whose objectName is not fitting the pattern "on__...", ... + if (coName.isEmpty() || qstrncmp(slot + 3, coName.constData(), coName.size()) || slot[coName.size()+3] != '_') continue; + + const char *signal = slot + coName.size() + 4; // the 'signal' part of the slot name + + // ...for the presence of a matching signal "on__". const QMetaObject *smeta; - int sigIndex = co->d_func()->signalIndex(slot + len + 4, &smeta); - if (sigIndex < 0) { // search for compatible signals + int sigIndex = co->d_func()->signalIndex(signal, &smeta); + if (sigIndex < 0) { + // if no exactly fitting signal (name + complete parameter type list) could be found + // look for just any signal with the correct name and at least the slot's parameter list. + // Note: if more than one of thoses signals exist, the one that gets connected is + // chosen 'at random' (order of declaration in source file) + QList compatibleSignals; const QMetaObject *smo = co->metaObject(); - int slotlen = qstrlen(slot + len + 4) - 1; - for (int k = 0; k < QMetaObjectPrivate::absoluteSignalCount(smo); ++k) { - QMetaMethod method = QMetaObjectPrivate::signal(smo, k); - if (!qstrncmp(method.methodSignature().constData(), slot + len + 4, slotlen)) { + int sigLen = qstrlen(signal) - 1; // ignore the trailing ')' + for (int k = QMetaObjectPrivate::absoluteSignalCount(smo)-1; k >= 0; --k) { + const QMetaMethod method = QMetaObjectPrivate::signal(smo, k); + if (!qstrncmp(method.methodSignature().constData(), signal, sigLen)) { smeta = method.enclosingMetaObject(); sigIndex = k; - break; + compatibleSignals.prepend(method.methodSignature()); } } + if (compatibleSignals.size() > 1) + qWarning() << "QMetaObject::connectSlotsByName: Connecting slot" << slot + << "with the first of the following compatible signals:" << compatibleSignals; } + if (sigIndex < 0) continue; + // we connect it... if (Connection(QMetaObjectPrivate::connect(co, sigIndex, smeta, o, i))) { foundIt = true; + // ...and stop looking for further objects with the same name. + // Note: the Designer will make sure each object name is unique in the above + // 'list' but other code may create two child objects with the same name. In + // this case one is chosen 'at random'. break; } } @@ -3274,7 +3298,11 @@ void QMetaObject::connectSlotsByName(QObject *o) while (mo->method(i + 1).attributes() & QMetaMethod::Cloned) ++i; } else if (!(mo->method(i).attributes() & QMetaMethod::Cloned)) { - qWarning("QMetaObject::connectSlotsByName: No matching signal for %s", slot); + // check if the slot has the following signature: "on_..._...(..." + int iParen = slotSignature.indexOf('('); + int iLastUnderscore = slotSignature.lastIndexOf('_', iParen-1); + if (iLastUnderscore > 3) + qWarning("QMetaObject::connectSlotsByName: No matching signal for %s", slot); } } } -- cgit v1.2.3 From 9fe16e0ee92863c364fcb6f871b0691bbf43059a Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Thu, 7 Mar 2013 22:10:51 +0100 Subject: Window deactivation should set focus reason. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Iccc46880278bc5f7fe2b706efcdf9b4e6483c3e6 Reviewed-by: Samuel Rødal Reviewed-by: Caroline Chao --- src/gui/kernel/qguiapplication.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 7d95a75f84..51d1d76302 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1595,7 +1595,7 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate return; if (previous) { - QFocusEvent focusOut(QEvent::FocusOut); + QFocusEvent focusOut(QEvent::FocusOut, e->reason); QCoreApplication::sendSpontaneousEvent(previous, &focusOut); QObject::disconnect(previous, SIGNAL(focusObjectChanged(QObject*)), qApp, SLOT(_q_updateFocusObject(QObject*))); -- cgit v1.2.3 From cb22d3bbba7bf7938561f7093ebaed92e6111f02 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 5 Mar 2013 11:38:24 +0100 Subject: consolidate syncqt invocations Change-Id: Ic28ea95201501b05c4a62366d1f70fa120161927 Reviewed-by: Joerg Bornemann Reviewed-by: Oswald Buddenhagen --- src/angle/angle.pro | 17 ++++------------- src/tools/bootstrap/bootstrap.pro | 25 ++++++++----------------- 2 files changed, 12 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/angle/angle.pro b/src/angle/angle.pro index 00e0501d60..371e39868f 100644 --- a/src/angle/angle.pro +++ b/src/angle/angle.pro @@ -1,19 +1,10 @@ TEMPLATE = subdirs SUBDIRS += src -# We need to call syncqt manually instead of using "load(qt_module_headers)" for several reasons: +# We do it this way instead of letting load(qt_module) handle it for two reasons: # 1) qt_module_headers assumes the TARGET is the same as the include directory (eg: libGLESv2 != GLES2) # 2) If we made a 'QtANGLE' module, the include directory would be flattened which won't work since # we need to support "#include " -!build_pass { - qtPrepareTool(QMAKE_SYNCQT, syncqt) - QTDIR = $$[QT_HOST_PREFIX] - exists($$QTDIR/.qmake.cache): \ - mod_component_base = $$QTDIR - else: \ - mod_component_base = $$dirname(_QMAKE_CACHE_) - QMAKE_SYNCQT += -minimal -module KHR -module EGL -module GLES2 \ - -mkspecsdir $$[QT_HOST_DATA/get]/mkspecs -outdir $$mod_component_base $$dirname(_QMAKE_CONF_) - !silent:message($$QMAKE_SYNCQT) - system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT") -} +CONFIG += minimal_syncqt +QMAKE_SYNCQT_OPTIONS = -module KHR -module EGL -module GLES2 +load(qt_module_headers) diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index cc7d40c43e..ea1d087b59 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -2,7 +2,7 @@ option(host_build) TARGET = QtBootstrap QT = -CONFIG += no_module_headers internal_module +CONFIG += internal_module !build_pass: CONFIG += release # otherwise mingw headers do not declare common functions like putenv @@ -37,6 +37,13 @@ MODULE_PRIVATE_INCLUDES = \ \$\$QT_MODULE_INCLUDE_BASE/QtXml/$$QT_VERSION \ \$\$QT_MODULE_INCLUDE_BASE/QtXml/$$QT_VERSION/QtXml +# We need the forwarding headers before their respective modules are built, +# so do a minimal syncqt run. +CONFIG += minimal_syncqt +QMAKE_SYNCQT_OPTIONS = -module QtCore -module QtDBus -module QtXml +contains(QT_CONFIG, zlib): \ + QMAKE_SYNCQT_OPTIONS += -module QtZlib + load(qt_module) INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global @@ -128,19 +135,3 @@ win32:LIBS += -luser32 -lole32 -ladvapi32 lib.CONFIG = dummy_install INSTALLS += lib - -!build_pass { - # We need the forwarding headers before their respective modules are built, - # so do a minimal syncqt run. - qtPrepareTool(QMAKE_SYNCQT, syncqt) - QTDIR = $$[QT_HOST_PREFIX] - exists($$QTDIR/.qmake.cache): \ - mod_component_base = $$QTDIR - else: \ - mod_component_base = $$dirname(_QMAKE_CACHE_) - QMAKE_SYNCQT += -minimal -module QtCore -module QtDBus -module QtXml \ - -mkspecsdir $$[QT_HOST_DATA/get]/mkspecs -outdir $$mod_component_base $$dirname(_QMAKE_CONF_) - contains(QT_CONFIG, zlib):QMAKE_SYNCQT += -module QtZlib - !silent:message($$QMAKE_SYNCQT) - system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT") -} -- cgit v1.2.3 From 1188885fdf09980c6339562acc5f1d0bb9a4bc0d Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 6 Dec 2012 20:10:55 +0100 Subject: QStandardPaths::displayName() is unavailable when bootstrapped reflect that in the class definition Change-Id: I1224ed851b220abae38c62a4d3dbea8ddbd40b83 Reviewed-by: Oswald Buddenhagen --- src/corelib/io/qstandardpaths.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/corelib/io/qstandardpaths.h b/src/corelib/io/qstandardpaths.h index 2376b7d6c8..d8b6d24f57 100644 --- a/src/corelib/io/qstandardpaths.h +++ b/src/corelib/io/qstandardpaths.h @@ -83,7 +83,9 @@ public: static QString locate(StandardLocation type, const QString &fileName, LocateOptions options = LocateFile); static QStringList locateAll(StandardLocation type, const QString &fileName, LocateOptions options = LocateFile); +#ifndef QT_BOOTSTRAPPED static QString displayName(StandardLocation type); +#endif static QString findExecutable(const QString &executableName, const QStringList &paths = QStringList()); -- cgit v1.2.3 From 203f2800c05df1e926777e025fbc1ac0824c1679 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 6 Dec 2012 21:05:34 +0100 Subject: make Q_DECLARE_TR_FUNCTIONS() compile with QT_NO_DEPRECATED Change-Id: I9cde256347e5b59f7754bc578e56c60227c926ab Reviewed-by: hjk --- src/corelib/kernel/qcoreapplication.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h index 022ef8c0bc..5f87820823 100644 --- a/src/corelib/kernel/qcoreapplication.h +++ b/src/corelib/kernel/qcoreapplication.h @@ -215,12 +215,19 @@ inline QString QCoreApplication::translate(const char *, const char *sourceText, } #endif +#ifdef QT_NO_DEPRECATED +# define QT_DECLARE_DEPRECATED_TR_FUNCTIONS(context) +#else +# define QT_DECLARE_DEPRECATED_TR_FUNCTIONS(context) \ + QT_DEPRECATED static inline QString trUtf8(const char *sourceText, const char *disambiguation = 0, int n = -1) \ + { return QCoreApplication::translate(#context, sourceText, disambiguation, n); } +#endif + #define Q_DECLARE_TR_FUNCTIONS(context) \ public: \ static inline QString tr(const char *sourceText, const char *disambiguation = 0, int n = -1) \ { return QCoreApplication::translate(#context, sourceText, disambiguation, n); } \ - QT_DEPRECATED static inline QString trUtf8(const char *sourceText, const char *disambiguation = 0, int n = -1) \ - { return QCoreApplication::translate(#context, sourceText, disambiguation, n); } \ + QT_DECLARE_DEPRECATED_TR_FUNCTIONS(context) \ private: typedef void (*QtStartUpFunction)(); -- cgit v1.2.3 From de5562ff38e8355c0314a6f994629570146645aa Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 6 Dec 2012 21:07:39 +0100 Subject: make stubbed QCoreApplication::translate() resolve %n Change-Id: I36326d0f11e71580977d6589c9810ffa252a0fa7 Reviewed-by: hjk --- src/corelib/kernel/qcoreapplication.cpp | 13 +++++++++++++ src/corelib/kernel/qcoreapplication.h | 7 ------- 2 files changed, 13 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 46de52ec9f..d89df92bdb 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -1781,6 +1781,19 @@ bool QCoreApplicationPrivate::isTranslatorInstalled(QTranslator *translator) && QCoreApplication::self->d_func()->translators.contains(translator); } +#else + +QString QCoreApplication::translate(const char *context, const char *sourceText, + const char *disambiguation, int n) +{ + Q_UNUSED(context) + Q_UNUSED(disambiguation) + QString ret = QString::fromUtf8(sourceText); + if (n >= 0) + ret.replace(QLatin1String("%n"), QString::number(n)); + return ret; +} + #endif //QT_NO_TRANSLATE /*! diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h index 5f87820823..9f9a1c14fd 100644 --- a/src/corelib/kernel/qcoreapplication.h +++ b/src/corelib/kernel/qcoreapplication.h @@ -208,13 +208,6 @@ inline bool QCoreApplication::sendEvent(QObject *receiver, QEvent *event) inline bool QCoreApplication::sendSpontaneousEvent(QObject *receiver, QEvent *event) { if (event) event->spont = true; return self ? self->notifyInternal(receiver, event) : false; } -#ifdef QT_NO_TRANSLATION -inline QString QCoreApplication::translate(const char *, const char *sourceText, const char *, int) -{ - return QString::fromUtf8(sourceText); -} -#endif - #ifdef QT_NO_DEPRECATED # define QT_DECLARE_DEPRECATED_TR_FUNCTIONS(context) #else -- cgit v1.2.3 From 62266ef813a0e98c6487794860d28b9cf18cb2cb Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 6 Mar 2013 11:17:46 +0100 Subject: make testlib's toString() use local8Bit, not latin1 this is consistent with what qDebug does. consequently, this makes the code usable with 8-bit strings in the first place. note that some {to,from}Latin1 is left - this is where we know that we are dealing with ascii-only text. Change-Id: I26cfdf3622250b8bf95ebfe221465ca89d7cd082 Reviewed-by: Lars Knoll --- src/testlib/qtest.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/testlib/qtest.h b/src/testlib/qtest.h index d15e432bd5..ac1d6cc9ef 100644 --- a/src/testlib/qtest.h +++ b/src/testlib/qtest.h @@ -68,12 +68,12 @@ namespace QTest template<> inline char *toString(const QLatin1String &str) { - return qstrdup(str.latin1()); + return qstrdup(qPrintable(QString(str))); } template<> inline char *toString(const QString &str) { - return qstrdup(str.toLatin1().constData()); + return qstrdup(qPrintable(str)); } template<> inline char *toString(const QByteArray &ba) @@ -85,29 +85,29 @@ template<> inline char *toString(const QByteArray &ba) template<> inline char *toString(const QTime &time) { return time.isValid() - ? qstrdup(time.toString(QLatin1String("hh:mm:ss.zzz")).toLatin1().constData()) + ? qstrdup(qPrintable(time.toString(QLatin1String("hh:mm:ss.zzz")))) : qstrdup("Invalid QTime"); } template<> inline char *toString(const QDate &date) { return date.isValid() - ? qstrdup(date.toString(QLatin1String("yyyy/MM/dd")).toLatin1().constData()) + ? qstrdup(qPrintable(date.toString(QLatin1String("yyyy/MM/dd")))) : qstrdup("Invalid QDate"); } template<> inline char *toString(const QDateTime &dateTime) { return dateTime.isValid() - ? qstrdup((dateTime.toString(QLatin1String("yyyy/MM/dd hh:mm:ss.zzz")) + - (dateTime.timeSpec() == Qt::LocalTime ? QLatin1String("[local time]") : QLatin1String("[UTC]"))).toLatin1().constData()) + ? qstrdup(qPrintable(dateTime.toString(QLatin1String("yyyy/MM/dd hh:mm:ss.zzz")) + + (dateTime.timeSpec() == Qt::LocalTime ? QLatin1String("[local time]") : QLatin1String("[UTC]")))) : qstrdup("Invalid QDateTime"); } #endif // QT_NO_DATESTRING template<> inline char *toString(const QChar &c) { - return qstrdup(QString::fromLatin1("QChar: '%1' (0x%2)").arg(c).arg(QString::number(static_cast(c.unicode()), 16)).toLatin1().constData()); + return qstrdup(qPrintable(QString::fromLatin1("QChar: '%1' (0x%2)").arg(c).arg(QString::number(static_cast(c.unicode()), 16)))); } template<> inline char *toString(const QPoint &p) @@ -143,7 +143,7 @@ template<> inline char *toString(const QRectF &s) template<> inline char *toString(const QUrl &uri) { if (!uri.isValid()) - return qstrdup(QByteArray("Invalid URL: " + uri.errorString().toLatin1()).constData()); + return qstrdup(qPrintable(QStringLiteral("Invalid URL: ") + uri.errorString())); return qstrdup(uri.toEncoded().constData()); } @@ -159,7 +159,7 @@ template<> inline char *toString(const QVariant &v) if (!v.isNull()) { vstring.append(','); if (v.canConvert(QVariant::String)) { - vstring.append(qvariant_cast(v).toLatin1()); + vstring.append(qvariant_cast(v).toLocal8Bit()); } else { vstring.append(""); -- cgit v1.2.3 From 8d83911542f87d02207093bd8c121613e8643e2f Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Wed, 13 Mar 2013 18:18:45 +0100 Subject: Remove incorrect export macro. As this is a static library, no export macro is needed at all. With the wrong export macro, attempting to use this library fails on Windows. Change-Id: I618d7f02e374761fc8d8a5a0afb8d6d80e380389 Reviewed-by: Oswald Buddenhagen Reviewed-by: Sean Harmer --- src/openglextensions/qopenglextensions.h | 60 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/openglextensions/qopenglextensions.h b/src/openglextensions/qopenglextensions.h index c64e11e65c..0e9e2c60d4 100644 --- a/src/openglextensions/qopenglextensions.h +++ b/src/openglextensions/qopenglextensions.h @@ -17956,7 +17956,7 @@ public: void (QOPENGLF_APIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLeglImageOES image); }; -class Q_GUI_EXPORT QOpenGLExtension_OES_EGL_image : public QAbstractOpenGLExtension +class QOpenGLExtension_OES_EGL_image : public QAbstractOpenGLExtension { public: QOpenGLExtension_OES_EGL_image(); @@ -17989,7 +17989,7 @@ public: void (QOPENGLF_APIENTRYP ProgramBinaryOES)(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); }; -class Q_GUI_EXPORT QOpenGLExtension_OES_get_program_binary : public QAbstractOpenGLExtension +class QOpenGLExtension_OES_get_program_binary : public QAbstractOpenGLExtension { public: QOpenGLExtension_OES_get_program_binary(); @@ -18023,7 +18023,7 @@ public: void (QOPENGLF_APIENTRYP GetBufferPointervOES)(GLenum target, GLenum pname, GLvoid** params); }; -class Q_GUI_EXPORT QOpenGLExtension_OES_mapbuffer : public QAbstractOpenGLExtension +class QOpenGLExtension_OES_mapbuffer : public QAbstractOpenGLExtension { public: QOpenGLExtension_OES_mapbuffer(); @@ -18067,7 +18067,7 @@ public: void (QOPENGLF_APIENTRYP FramebufferTexture3DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); }; -class Q_GUI_EXPORT QOpenGLExtension_OES_texture_3D : public QAbstractOpenGLExtension +class QOpenGLExtension_OES_texture_3D : public QAbstractOpenGLExtension { public: QOpenGLExtension_OES_texture_3D(); @@ -18130,7 +18130,7 @@ public: GLboolean (QOPENGLF_APIENTRYP IsVertexArrayOES)(GLuint array); }; -class Q_GUI_EXPORT QOpenGLExtension_OES_vertex_array_object : public QAbstractOpenGLExtension +class QOpenGLExtension_OES_vertex_array_object : public QAbstractOpenGLExtension { public: QOpenGLExtension_OES_vertex_array_object(); @@ -18186,7 +18186,7 @@ public: void (QOPENGLF_APIENTRYP GetPerfMonitorCounterDataAMD)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); }; -class Q_GUI_EXPORT QOpenGLExtension_AMD_performance_monitor : public QAbstractOpenGLExtension +class QOpenGLExtension_AMD_performance_monitor : public QAbstractOpenGLExtension { public: QOpenGLExtension_AMD_performance_monitor(); @@ -18281,7 +18281,7 @@ public: void (QOPENGLF_APIENTRYP BlitFramebufferANGLE)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); }; -class Q_GUI_EXPORT QOpenGLExtension_ANGLE_framebuffer_blit : public QAbstractOpenGLExtension +class QOpenGLExtension_ANGLE_framebuffer_blit : public QAbstractOpenGLExtension { public: QOpenGLExtension_ANGLE_framebuffer_blit(); @@ -18306,7 +18306,7 @@ public: void (QOPENGLF_APIENTRYP RenderbufferStorageMultisampleANGLE)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); }; -class Q_GUI_EXPORT QOpenGLExtension_ANGLE_framebuffer_multisample : public QAbstractOpenGLExtension +class QOpenGLExtension_ANGLE_framebuffer_multisample : public QAbstractOpenGLExtension { public: QOpenGLExtension_ANGLE_framebuffer_multisample(); @@ -18333,7 +18333,7 @@ public: void (QOPENGLF_APIENTRYP VertexAttribDivisorANGLE)(GLuint index, GLuint divisor); }; -class Q_GUI_EXPORT QOpenGLExtension_ANGLE_instanced_arrays : public QAbstractOpenGLExtension +class QOpenGLExtension_ANGLE_instanced_arrays : public QAbstractOpenGLExtension { public: QOpenGLExtension_ANGLE_instanced_arrays(); @@ -18372,7 +18372,7 @@ public: void (QOPENGLF_APIENTRYP GetTranslatedShaderSourceANGLE)(GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); }; -class Q_GUI_EXPORT QOpenGLExtension_ANGLE_translated_shader_source : public QAbstractOpenGLExtension +class QOpenGLExtension_ANGLE_translated_shader_source : public QAbstractOpenGLExtension { public: QOpenGLExtension_ANGLE_translated_shader_source(); @@ -18398,7 +18398,7 @@ public: void (QOPENGLF_APIENTRYP ResolveMultisampleFramebufferAPPLE)(void); }; -class Q_GUI_EXPORT QOpenGLExtension_APPLE_framebuffer_multisample : public QAbstractOpenGLExtension +class QOpenGLExtension_APPLE_framebuffer_multisample : public QAbstractOpenGLExtension { public: QOpenGLExtension_APPLE_framebuffer_multisample(); @@ -18431,7 +18431,7 @@ public: void (QOPENGLF_APIENTRYP GetObjectLabelEXT)(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); }; -class Q_GUI_EXPORT QOpenGLExtension_EXT_debug_label : public QAbstractOpenGLExtension +class QOpenGLExtension_EXT_debug_label : public QAbstractOpenGLExtension { public: QOpenGLExtension_EXT_debug_label(); @@ -18465,7 +18465,7 @@ public: void (QOPENGLF_APIENTRYP PopGroupMarkerEXT)(void); }; -class Q_GUI_EXPORT QOpenGLExtension_EXT_debug_marker : public QAbstractOpenGLExtension +class QOpenGLExtension_EXT_debug_marker : public QAbstractOpenGLExtension { public: QOpenGLExtension_EXT_debug_marker(); @@ -18504,7 +18504,7 @@ public: void (QOPENGLF_APIENTRYP DiscardFramebufferEXT)(GLenum target, GLsizei numAttachments, const GLenum *attachments); }; -class Q_GUI_EXPORT QOpenGLExtension_EXT_discard_framebuffer : public QAbstractOpenGLExtension +class QOpenGLExtension_EXT_discard_framebuffer : public QAbstractOpenGLExtension { public: QOpenGLExtension_EXT_discard_framebuffer(); @@ -18530,7 +18530,7 @@ public: void (QOPENGLF_APIENTRYP FramebufferTexture2DMultisampleEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); }; -class Q_GUI_EXPORT QOpenGLExtension_EXT_multisampled_render_to_texture : public QAbstractOpenGLExtension +class QOpenGLExtension_EXT_multisampled_render_to_texture : public QAbstractOpenGLExtension { public: QOpenGLExtension_EXT_multisampled_render_to_texture(); @@ -18563,7 +18563,7 @@ public: void (QOPENGLF_APIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); }; -class Q_GUI_EXPORT QOpenGLExtension_EXT_multi_draw_arrays : public QAbstractOpenGLExtension +class QOpenGLExtension_EXT_multi_draw_arrays : public QAbstractOpenGLExtension { public: QOpenGLExtension_EXT_multi_draw_arrays(); @@ -18601,7 +18601,7 @@ public: void (QOPENGLF_APIENTRYP GetQueryObjectuivEXT)(GLuint id, GLenum pname, GLuint *params); }; -class Q_GUI_EXPORT QOpenGLExtension_EXT_occlusion_query_boolean : public QAbstractOpenGLExtension +class QOpenGLExtension_EXT_occlusion_query_boolean : public QAbstractOpenGLExtension { public: QOpenGLExtension_EXT_occlusion_query_boolean(); @@ -18671,7 +18671,7 @@ public: void (QOPENGLF_APIENTRYP GetnUniformivEXT)(GLuint program, GLint location, GLsizei bufSize, GLint *params); }; -class Q_GUI_EXPORT QOpenGLExtension_EXT_robustness : public QAbstractOpenGLExtension +class QOpenGLExtension_EXT_robustness : public QAbstractOpenGLExtension { public: QOpenGLExtension_EXT_robustness(); @@ -18746,7 +18746,7 @@ public: void (QOPENGLF_APIENTRYP GetProgramPipelineInfoLogEXT)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); }; -class Q_GUI_EXPORT QOpenGLExtension_EXT_separate_shader_objects : public QAbstractOpenGLExtension +class QOpenGLExtension_EXT_separate_shader_objects : public QAbstractOpenGLExtension { public: QOpenGLExtension_EXT_separate_shader_objects(); @@ -18979,7 +18979,7 @@ public: void (QOPENGLF_APIENTRYP TextureStorage3DEXT)(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); }; -class Q_GUI_EXPORT QOpenGLExtension_EXT_texture_storage : public QAbstractOpenGLExtension +class QOpenGLExtension_EXT_texture_storage : public QAbstractOpenGLExtension { public: QOpenGLExtension_EXT_texture_storage(); @@ -19040,7 +19040,7 @@ public: void (QOPENGLF_APIENTRYP FramebufferTexture2DMultisampleIMG)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); }; -class Q_GUI_EXPORT QOpenGLExtension_IMG_multisampled_render_to_texture : public QAbstractOpenGLExtension +class QOpenGLExtension_IMG_multisampled_render_to_texture : public QAbstractOpenGLExtension { public: QOpenGLExtension_IMG_multisampled_render_to_texture(); @@ -19073,7 +19073,7 @@ public: void (QOPENGLF_APIENTRYP CoverageOperationNV)(GLenum operation); }; -class Q_GUI_EXPORT QOpenGLExtension_NV_coverage_sample : public QAbstractOpenGLExtension +class QOpenGLExtension_NV_coverage_sample : public QAbstractOpenGLExtension { public: QOpenGLExtension_NV_coverage_sample(); @@ -19105,7 +19105,7 @@ public: void (QOPENGLF_APIENTRYP DrawBuffersNV)(GLsizei n, const GLenum *bufs); }; -class Q_GUI_EXPORT QOpenGLExtension_NV_draw_buffers : public QAbstractOpenGLExtension +class QOpenGLExtension_NV_draw_buffers : public QAbstractOpenGLExtension { public: QOpenGLExtension_NV_draw_buffers(); @@ -19136,7 +19136,7 @@ public: void (QOPENGLF_APIENTRYP SetFenceNV)(GLuint fence, GLenum condition); }; -class Q_GUI_EXPORT QOpenGLExtension_NV_fence : public QAbstractOpenGLExtension +class QOpenGLExtension_NV_fence : public QAbstractOpenGLExtension { public: QOpenGLExtension_NV_fence(); @@ -19203,7 +19203,7 @@ public: void (QOPENGLF_APIENTRYP ReadBufferNV)(GLenum mode); }; -class Q_GUI_EXPORT QOpenGLExtension_NV_read_buffer : public QAbstractOpenGLExtension +class QOpenGLExtension_NV_read_buffer : public QAbstractOpenGLExtension { public: QOpenGLExtension_NV_read_buffer(); @@ -19228,7 +19228,7 @@ public: void (QOPENGLF_APIENTRYP AlphaFuncQCOM)(GLenum func, GLclampf ref); }; -class Q_GUI_EXPORT QOpenGLExtension_QCOM_alpha_test : public QAbstractOpenGLExtension +class QOpenGLExtension_QCOM_alpha_test : public QAbstractOpenGLExtension { public: QOpenGLExtension_QCOM_alpha_test(); @@ -19256,7 +19256,7 @@ public: void (QOPENGLF_APIENTRYP DisableDriverControlQCOM)(GLuint driverControl); }; -class Q_GUI_EXPORT QOpenGLExtension_QCOM_driver_control : public QAbstractOpenGLExtension +class QOpenGLExtension_QCOM_driver_control : public QAbstractOpenGLExtension { public: QOpenGLExtension_QCOM_driver_control(); @@ -19309,7 +19309,7 @@ public: void (QOPENGLF_APIENTRYP ExtGetBufferPointervQCOM)(GLenum target, GLvoid **params); }; -class Q_GUI_EXPORT QOpenGLExtension_QCOM_extended_get : public QAbstractOpenGLExtension +class QOpenGLExtension_QCOM_extended_get : public QAbstractOpenGLExtension { public: QOpenGLExtension_QCOM_extended_get(); @@ -19386,7 +19386,7 @@ public: void (QOPENGLF_APIENTRYP ExtGetProgramBinarySourceQCOM)(GLuint program, GLenum shadertype, GLchar *source, GLint *length); }; -class Q_GUI_EXPORT QOpenGLExtension_QCOM_extended_get2 : public QAbstractOpenGLExtension +class QOpenGLExtension_QCOM_extended_get2 : public QAbstractOpenGLExtension { public: QOpenGLExtension_QCOM_extended_get2(); @@ -19433,7 +19433,7 @@ public: void (QOPENGLF_APIENTRYP EndTilingQCOM)(GLbitfield preserveMask); }; -class Q_GUI_EXPORT QOpenGLExtension_QCOM_tiled_rendering : public QAbstractOpenGLExtension +class QOpenGLExtension_QCOM_tiled_rendering : public QAbstractOpenGLExtension { public: QOpenGLExtension_QCOM_tiled_rendering(); -- cgit v1.2.3 From d3d63bb4bc9df8baa0fa25f523ceb6057424cfe4 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Thu, 14 Mar 2013 11:39:16 +0100 Subject: Warn about accessibility interface creation failure only once MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I0555d7d2417149f0eec54b228b842a61d0d08f85 Reviewed-by: Jan Arve Sæther --- src/gui/accessible/qaccessible.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp index 1d1b64117e..4a998dc4b8 100644 --- a/src/gui/accessible/qaccessible.cpp +++ b/src/gui/accessible/qaccessible.cpp @@ -1350,7 +1350,12 @@ QAccessibleInterface *QAccessibleEvent::accessibleInterface() const { QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(m_object); if (!iface) { - qWarning() << "Cannot create accessible interface for object: " << m_object; + static bool hasWarned = false; + if (!hasWarned) { + qWarning() << "Problem creating accessible interface for: " << m_object << endl + << "Make sure to deploy Qt with accessibility plugins."; + hasWarned = true; + } return 0; } -- cgit v1.2.3 From d1d0df8fb6a3461d37455f87445d9bcef62a0f93 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Tue, 12 Mar 2013 15:35:37 +0100 Subject: Make qaccessible2.h internal. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This should have been done right from the start, instead we only made the documentation internal. Also remove the classes from the BIC data. Change-Id: I238a7a7cc5d26980b23931c78e7e5a4477d46920 Reviewed-by: Oswald Buddenhagen Reviewed-by: Jan Arve Sæther --- src/gui/accessible/accessible.pri | 2 +- src/gui/accessible/qaccessible2.cpp | 2 +- src/gui/accessible/qaccessible2.h | 235 --------------------- src/gui/accessible/qaccessible2_p.h | 235 +++++++++++++++++++++ src/gui/accessible/qaccessibleobject.h | 1 - .../linuxaccessibility/atspiadaptor_p.h | 2 +- src/plugins/accessible/widgets/complexwidgets.h | 4 +- src/plugins/accessible/widgets/itemviews.cpp | 2 +- src/plugins/accessible/widgets/itemviews.h | 4 +- src/plugins/accessible/widgets/qaccessiblemenu.h | 2 +- .../accessible/widgets/qaccessiblewidgets.h | 4 +- src/plugins/accessible/widgets/rangecontrols.h | 4 +- src/plugins/accessible/widgets/simplewidgets.h | 4 +- src/plugins/platforms/cocoa/qcocoaaccessibility.mm | 2 +- .../platforms/cocoa/qcocoaaccessibilityelement.mm | 2 +- .../platforms/cocoa/qnsviewaccessibility.mm | 2 +- .../platforms/windows/accessible/iaccessible2.cpp | 2 +- .../windows/accessible/qwindowsaccessibility.cpp | 2 +- .../windows/accessible/qwindowsmsaaaccessible.cpp | 2 +- src/widgets/accessible/accessible.pri | 2 +- src/widgets/accessible/qaccessiblewidget.cpp | 2 +- src/widgets/accessible/qaccessiblewidget.h | 100 --------- src/widgets/accessible/qaccessiblewidget_p.h | 101 +++++++++ src/widgets/itemviews/qabstractitemview.cpp | 2 +- src/widgets/itemviews/qtreeview.cpp | 2 +- 25 files changed, 361 insertions(+), 361 deletions(-) delete mode 100644 src/gui/accessible/qaccessible2.h create mode 100644 src/gui/accessible/qaccessible2_p.h delete mode 100644 src/widgets/accessible/qaccessiblewidget.h create mode 100644 src/widgets/accessible/qaccessiblewidget_p.h (limited to 'src') diff --git a/src/gui/accessible/accessible.pri b/src/gui/accessible/accessible.pri index 7c8e81812a..592607bce5 100644 --- a/src/gui/accessible/accessible.pri +++ b/src/gui/accessible/accessible.pri @@ -3,7 +3,7 @@ contains(QT_CONFIG, accessibility) { HEADERS += \ accessible/qaccessible.h \ - accessible/qaccessible2.h \ + accessible/qaccessible2_p.h \ accessible/qaccessibleobject.h \ accessible/qaccessibleplugin.h \ accessible/qplatformaccessibility.h diff --git a/src/gui/accessible/qaccessible2.cpp b/src/gui/accessible/qaccessible2.cpp index 3d7b8d5a76..bd9ecde260 100644 --- a/src/gui/accessible/qaccessible2.cpp +++ b/src/gui/accessible/qaccessible2.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qaccessible2.h" +#include "qaccessible2_p.h" #include #include "qclipboard.h" #include "qtextboundaryfinder.h" diff --git a/src/gui/accessible/qaccessible2.h b/src/gui/accessible/qaccessible2.h deleted file mode 100644 index 169ca2b5e5..0000000000 --- a/src/gui/accessible/qaccessible2.h +++ /dev/null @@ -1,235 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QACCESSIBLE2_H -#define QACCESSIBLE2_H - -#include -#include - -QT_BEGIN_NAMESPACE - - -#ifndef QT_NO_ACCESSIBILITY - -namespace QAccessible2 -{ - enum BoundaryType { - CharBoundary, - WordBoundary, - SentenceBoundary, - ParagraphBoundary, - LineBoundary, - NoBoundary - }; -} - -class Q_GUI_EXPORT QAccessibleTextInterface -{ -public: - virtual ~QAccessibleTextInterface() {} - // selection - virtual void selection(int selectionIndex, int *startOffset, int *endOffset) const = 0; - virtual int selectionCount() const = 0; - virtual void addSelection(int startOffset, int endOffset) = 0; - virtual void removeSelection(int selectionIndex) = 0; - virtual void setSelection(int selectionIndex, int startOffset, int endOffset) = 0; - - // cursor - virtual int cursorPosition() const = 0; - virtual void setCursorPosition(int position) = 0; - - // text - virtual QString text(int startOffset, int endOffset) const = 0; - virtual QString textBeforeOffset(int offset, QAccessible2::BoundaryType boundaryType, - int *startOffset, int *endOffset) const; - virtual QString textAfterOffset(int offset, QAccessible2::BoundaryType boundaryType, - int *startOffset, int *endOffset) const; - virtual QString textAtOffset(int offset, QAccessible2::BoundaryType boundaryType, - int *startOffset, int *endOffset) const; - virtual int characterCount() const = 0; - - // character <-> geometry - virtual QRect characterRect(int offset) const = 0; - virtual int offsetAtPoint(const QPoint &point) const = 0; - - virtual void scrollToSubstring(int startIndex, int endIndex) = 0; - virtual QString attributes(int offset, int *startOffset, int *endOffset) const = 0; -}; - -class Q_GUI_EXPORT QAccessibleEditableTextInterface -{ -public: - virtual ~QAccessibleEditableTextInterface() {} - - virtual void deleteText(int startOffset, int endOffset) = 0; - virtual void insertText(int offset, const QString &text) = 0; - virtual void replaceText(int startOffset, int endOffset, const QString &text) = 0; -}; - -class Q_GUI_EXPORT QAccessibleValueInterface -{ -public: - - virtual ~QAccessibleValueInterface() {} - - virtual QVariant currentValue() const = 0; - virtual void setCurrentValue(const QVariant &value) = 0; - virtual QVariant maximumValue() const = 0; - virtual QVariant minimumValue() const = 0; - virtual QVariant minimumStepSize() const = 0; -}; - -class Q_GUI_EXPORT QAccessibleTableCellInterface -{ -public: - virtual ~QAccessibleTableCellInterface() {} - - // Returns the number of columns occupied by this cell accessible. - virtual int columnExtent() const = 0; - - // Returns the column headers as an array of cell accessibles. - virtual QList columnHeaderCells() const = 0; - - // Translates this cell accessible into the corresponding column index. - virtual int columnIndex() const = 0; - // Returns the number of rows occupied by this cell accessible. - virtual int rowExtent() const = 0; - // Returns the row headers as an array of cell accessibles. - virtual QList rowHeaderCells() const = 0; - // Translates this cell accessible into the corresponding row index. - virtual int rowIndex() const = 0; - // Returns a boolean value indicating whether this cell is selected. - virtual bool isSelected() const = 0; - - // Gets the row and column indexes and extents of this cell accessible and whether or not it is selected. - // ### Is this really needed?? - // - // ### Maybe change to QSize cellSize(), we already have accessors for the row, column and selected - virtual void rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const = 0; - // Returns a reference to the accessbile of the containing table. - virtual QAccessibleInterface* table() const = 0; -}; - -class Q_GUI_EXPORT QAccessibleTableInterface -{ -public: - virtual ~QAccessibleTableInterface() {} - - // Returns the cell at the specified row and column in the table. - virtual QAccessibleInterface *cellAt (int row, int column) const = 0; - // Returns the caption for the table. - virtual QAccessibleInterface *caption() const = 0; - // Returns the description text of the specified column in the table. - virtual QString columnDescription(int column) const = 0; - // Returns the total number of columns in table. - virtual int columnCount() const = 0; - // Returns the total number of rows in table. - virtual int rowCount() const = 0; - // Returns the total number of selected cells. - virtual int selectedCellCount() const = 0; - // Returns the total number of selected columns. - virtual int selectedColumnCount() const = 0; - // Returns the total number of selected rows. - virtual int selectedRowCount() const = 0; - // Returns the description text of the specified row in the table. - virtual QString rowDescription(int row) const = 0; - // Returns a list of accessibles currently selected. - virtual QList selectedCells() const = 0; - // Returns a list of column indexes currently selected (0 based). - virtual QList selectedColumns() const = 0; - // Returns a list of row indexes currently selected (0 based). - virtual QList selectedRows() const = 0; - // Returns the summary description of the table. - virtual QAccessibleInterface *summary() const = 0; - // Returns a boolean value indicating whether the specified column is completely selected. - virtual bool isColumnSelected(int column) const = 0; - // Returns a boolean value indicating whether the specified row is completely selected. - virtual bool isRowSelected(int row) const = 0; - // Selects a row and it might unselect all previously selected rows. - virtual bool selectRow(int row) = 0; - // Selects a column it might unselect all previously selected columns. - virtual bool selectColumn(int column) = 0; - // Unselects one row, leaving other selected rows selected (if any). - virtual bool unselectRow(int row) = 0; - // Unselects one column, leaving other selected columns selected (if any). - virtual bool unselectColumn(int column) = 0; - -protected: -friend class QAbstractItemView; -friend class QAbstractItemViewPrivate; -}; - -class Q_GUI_EXPORT QAccessibleActionInterface -{ - Q_DECLARE_TR_FUNCTIONS(QAccessibleActionInterface) -public: - virtual ~QAccessibleActionInterface() {} - - virtual QStringList actionNames() const = 0; - virtual QString localizedActionName(const QString &name) const; - virtual QString localizedActionDescription(const QString &name) const; - virtual void doAction(const QString &actionName) = 0; - virtual QStringList keyBindingsForAction(const QString &actionName) const = 0; - - static const QString &pressAction(); - static const QString &increaseAction(); - static const QString &decreaseAction(); - static const QString &showMenuAction(); - static const QString &setFocusAction(); - static const QString &toggleAction(); -}; - -class Q_GUI_EXPORT QAccessibleImageInterface -{ -public: - virtual ~QAccessibleImageInterface() {} - - virtual QString imageDescription() const = 0; - virtual QSize imageSize() const = 0; - virtual QRect imagePosition() const = 0; -}; - -#endif // QT_NO_ACCESSIBILITY - -QT_END_NAMESPACE - -#endif diff --git a/src/gui/accessible/qaccessible2_p.h b/src/gui/accessible/qaccessible2_p.h new file mode 100644 index 0000000000..169ca2b5e5 --- /dev/null +++ b/src/gui/accessible/qaccessible2_p.h @@ -0,0 +1,235 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACCESSIBLE2_H +#define QACCESSIBLE2_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ACCESSIBILITY + +namespace QAccessible2 +{ + enum BoundaryType { + CharBoundary, + WordBoundary, + SentenceBoundary, + ParagraphBoundary, + LineBoundary, + NoBoundary + }; +} + +class Q_GUI_EXPORT QAccessibleTextInterface +{ +public: + virtual ~QAccessibleTextInterface() {} + // selection + virtual void selection(int selectionIndex, int *startOffset, int *endOffset) const = 0; + virtual int selectionCount() const = 0; + virtual void addSelection(int startOffset, int endOffset) = 0; + virtual void removeSelection(int selectionIndex) = 0; + virtual void setSelection(int selectionIndex, int startOffset, int endOffset) = 0; + + // cursor + virtual int cursorPosition() const = 0; + virtual void setCursorPosition(int position) = 0; + + // text + virtual QString text(int startOffset, int endOffset) const = 0; + virtual QString textBeforeOffset(int offset, QAccessible2::BoundaryType boundaryType, + int *startOffset, int *endOffset) const; + virtual QString textAfterOffset(int offset, QAccessible2::BoundaryType boundaryType, + int *startOffset, int *endOffset) const; + virtual QString textAtOffset(int offset, QAccessible2::BoundaryType boundaryType, + int *startOffset, int *endOffset) const; + virtual int characterCount() const = 0; + + // character <-> geometry + virtual QRect characterRect(int offset) const = 0; + virtual int offsetAtPoint(const QPoint &point) const = 0; + + virtual void scrollToSubstring(int startIndex, int endIndex) = 0; + virtual QString attributes(int offset, int *startOffset, int *endOffset) const = 0; +}; + +class Q_GUI_EXPORT QAccessibleEditableTextInterface +{ +public: + virtual ~QAccessibleEditableTextInterface() {} + + virtual void deleteText(int startOffset, int endOffset) = 0; + virtual void insertText(int offset, const QString &text) = 0; + virtual void replaceText(int startOffset, int endOffset, const QString &text) = 0; +}; + +class Q_GUI_EXPORT QAccessibleValueInterface +{ +public: + + virtual ~QAccessibleValueInterface() {} + + virtual QVariant currentValue() const = 0; + virtual void setCurrentValue(const QVariant &value) = 0; + virtual QVariant maximumValue() const = 0; + virtual QVariant minimumValue() const = 0; + virtual QVariant minimumStepSize() const = 0; +}; + +class Q_GUI_EXPORT QAccessibleTableCellInterface +{ +public: + virtual ~QAccessibleTableCellInterface() {} + + // Returns the number of columns occupied by this cell accessible. + virtual int columnExtent() const = 0; + + // Returns the column headers as an array of cell accessibles. + virtual QList columnHeaderCells() const = 0; + + // Translates this cell accessible into the corresponding column index. + virtual int columnIndex() const = 0; + // Returns the number of rows occupied by this cell accessible. + virtual int rowExtent() const = 0; + // Returns the row headers as an array of cell accessibles. + virtual QList rowHeaderCells() const = 0; + // Translates this cell accessible into the corresponding row index. + virtual int rowIndex() const = 0; + // Returns a boolean value indicating whether this cell is selected. + virtual bool isSelected() const = 0; + + // Gets the row and column indexes and extents of this cell accessible and whether or not it is selected. + // ### Is this really needed?? + // + // ### Maybe change to QSize cellSize(), we already have accessors for the row, column and selected + virtual void rowColumnExtents(int *row, int *column, int *rowExtents, int *columnExtents, bool *selected) const = 0; + // Returns a reference to the accessbile of the containing table. + virtual QAccessibleInterface* table() const = 0; +}; + +class Q_GUI_EXPORT QAccessibleTableInterface +{ +public: + virtual ~QAccessibleTableInterface() {} + + // Returns the cell at the specified row and column in the table. + virtual QAccessibleInterface *cellAt (int row, int column) const = 0; + // Returns the caption for the table. + virtual QAccessibleInterface *caption() const = 0; + // Returns the description text of the specified column in the table. + virtual QString columnDescription(int column) const = 0; + // Returns the total number of columns in table. + virtual int columnCount() const = 0; + // Returns the total number of rows in table. + virtual int rowCount() const = 0; + // Returns the total number of selected cells. + virtual int selectedCellCount() const = 0; + // Returns the total number of selected columns. + virtual int selectedColumnCount() const = 0; + // Returns the total number of selected rows. + virtual int selectedRowCount() const = 0; + // Returns the description text of the specified row in the table. + virtual QString rowDescription(int row) const = 0; + // Returns a list of accessibles currently selected. + virtual QList selectedCells() const = 0; + // Returns a list of column indexes currently selected (0 based). + virtual QList selectedColumns() const = 0; + // Returns a list of row indexes currently selected (0 based). + virtual QList selectedRows() const = 0; + // Returns the summary description of the table. + virtual QAccessibleInterface *summary() const = 0; + // Returns a boolean value indicating whether the specified column is completely selected. + virtual bool isColumnSelected(int column) const = 0; + // Returns a boolean value indicating whether the specified row is completely selected. + virtual bool isRowSelected(int row) const = 0; + // Selects a row and it might unselect all previously selected rows. + virtual bool selectRow(int row) = 0; + // Selects a column it might unselect all previously selected columns. + virtual bool selectColumn(int column) = 0; + // Unselects one row, leaving other selected rows selected (if any). + virtual bool unselectRow(int row) = 0; + // Unselects one column, leaving other selected columns selected (if any). + virtual bool unselectColumn(int column) = 0; + +protected: +friend class QAbstractItemView; +friend class QAbstractItemViewPrivate; +}; + +class Q_GUI_EXPORT QAccessibleActionInterface +{ + Q_DECLARE_TR_FUNCTIONS(QAccessibleActionInterface) +public: + virtual ~QAccessibleActionInterface() {} + + virtual QStringList actionNames() const = 0; + virtual QString localizedActionName(const QString &name) const; + virtual QString localizedActionDescription(const QString &name) const; + virtual void doAction(const QString &actionName) = 0; + virtual QStringList keyBindingsForAction(const QString &actionName) const = 0; + + static const QString &pressAction(); + static const QString &increaseAction(); + static const QString &decreaseAction(); + static const QString &showMenuAction(); + static const QString &setFocusAction(); + static const QString &toggleAction(); +}; + +class Q_GUI_EXPORT QAccessibleImageInterface +{ +public: + virtual ~QAccessibleImageInterface() {} + + virtual QString imageDescription() const = 0; + virtual QSize imageSize() const = 0; + virtual QRect imagePosition() const = 0; +}; + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif diff --git a/src/gui/accessible/qaccessibleobject.h b/src/gui/accessible/qaccessibleobject.h index fcbaa59dc9..4861af3557 100644 --- a/src/gui/accessible/qaccessibleobject.h +++ b/src/gui/accessible/qaccessibleobject.h @@ -43,7 +43,6 @@ #define QACCESSIBLEOBJECT_H #include -#include QT_BEGIN_NAMESPACE diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h index 1c79cc75c8..0bc3290baa 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h +++ b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h @@ -48,7 +48,7 @@ #include #include #include -#include +#include #include "dbusconnection_p.h" #include "struct_marshallers_p.h" diff --git a/src/plugins/accessible/widgets/complexwidgets.h b/src/plugins/accessible/widgets/complexwidgets.h index 1dc4d99ea8..32f67c9c69 100644 --- a/src/plugins/accessible/widgets/complexwidgets.h +++ b/src/plugins/accessible/widgets/complexwidgets.h @@ -43,9 +43,9 @@ #define COMPLEXWIDGETS_H #include -#include +#include #include -#include +#include QT_BEGIN_NAMESPACE diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp index 092278f7fb..93f962da57 100644 --- a/src/plugins/accessible/widgets/itemviews.cpp +++ b/src/plugins/accessible/widgets/itemviews.cpp @@ -46,7 +46,7 @@ #include #include #include -#include +#include #include #ifndef QT_NO_ACCESSIBILITY diff --git a/src/plugins/accessible/widgets/itemviews.h b/src/plugins/accessible/widgets/itemviews.h index baf7fd8587..bba698bda2 100644 --- a/src/plugins/accessible/widgets/itemviews.h +++ b/src/plugins/accessible/widgets/itemviews.h @@ -44,8 +44,8 @@ #include "QtCore/qpointer.h" #include -#include -#include +#include +#include #include #include diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.h b/src/plugins/accessible/widgets/qaccessiblemenu.h index 0241cebab6..74d118a09e 100644 --- a/src/plugins/accessible/widgets/qaccessiblemenu.h +++ b/src/plugins/accessible/widgets/qaccessiblemenu.h @@ -42,7 +42,7 @@ #ifndef QACCESSIBLEMENU_H #define QACCESSIBLEMENU_H -#include +#include QT_BEGIN_NAMESPACE diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.h b/src/plugins/accessible/widgets/qaccessiblewidgets.h index 683893f477..35ef3ce905 100644 --- a/src/plugins/accessible/widgets/qaccessiblewidgets.h +++ b/src/plugins/accessible/widgets/qaccessiblewidgets.h @@ -42,8 +42,8 @@ #ifndef QACCESSIBLEWIDGETS_H #define QACCESSIBLEWIDGETS_H -#include -#include +#include +#include #ifndef QT_NO_ACCESSIBILITY diff --git a/src/plugins/accessible/widgets/rangecontrols.h b/src/plugins/accessible/widgets/rangecontrols.h index ef6f3fa226..a5bc11e1c8 100644 --- a/src/plugins/accessible/widgets/rangecontrols.h +++ b/src/plugins/accessible/widgets/rangecontrols.h @@ -42,8 +42,8 @@ #ifndef RANGECONTROLS_H #define RANGECONTROLS_H -#include -#include +#include +#include QT_BEGIN_NAMESPACE diff --git a/src/plugins/accessible/widgets/simplewidgets.h b/src/plugins/accessible/widgets/simplewidgets.h index ae1a041dab..4701634ca0 100644 --- a/src/plugins/accessible/widgets/simplewidgets.h +++ b/src/plugins/accessible/widgets/simplewidgets.h @@ -43,8 +43,8 @@ #define SIMPLEWIDGETS_H #include -#include -#include +#include +#include QT_BEGIN_NAMESPACE diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm index 070f23f028..adeb423cf9 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm +++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm @@ -41,7 +41,7 @@ #include "qcocoaaccessibility.h" #include "qcocoaaccessibilityelement.h" #include -#include +#include #include #ifndef QT_NO_COCOA_ACCESSIBILITY diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm index f5f37c5b00..df496a413b 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm +++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm @@ -43,7 +43,7 @@ #include "qcocoahelpers.h" #include -#include "QAccessibleActionInterface" +#include #import diff --git a/src/plugins/platforms/cocoa/qnsviewaccessibility.mm b/src/plugins/platforms/cocoa/qnsviewaccessibility.mm index 8ee39bf767..e05ffbe343 100644 --- a/src/plugins/platforms/cocoa/qnsviewaccessibility.mm +++ b/src/plugins/platforms/cocoa/qnsviewaccessibility.mm @@ -46,7 +46,7 @@ #include "qcocoaaccessibility.h" #include "qcocoaaccessibilityelement.h" -#include "QAccessibleActionInterface" +#include #include #import diff --git a/src/plugins/platforms/windows/accessible/iaccessible2.cpp b/src/plugins/platforms/windows/accessible/iaccessible2.cpp index 164bd6eed9..fb08daa38e 100644 --- a/src/plugins/platforms/windows/accessible/iaccessible2.cpp +++ b/src/plugins/platforms/windows/accessible/iaccessible2.cpp @@ -44,7 +44,7 @@ #include "iaccessible2.h" #include "qwindowsaccessibility.h" -#include +#include #include #include #include diff --git a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp index 8830d3023a..752b9e7c20 100644 --- a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp +++ b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp @@ -51,7 +51,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp b/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp index c23902014c..bb5d5d13a7 100644 --- a/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp +++ b/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp @@ -54,7 +54,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/widgets/accessible/accessible.pri b/src/widgets/accessible/accessible.pri index 9fb2f18950..84d366e78a 100644 --- a/src/widgets/accessible/accessible.pri +++ b/src/widgets/accessible/accessible.pri @@ -1,6 +1,6 @@ # Qt accessibility module contains(QT_CONFIG, accessibility) { - HEADERS += accessible/qaccessiblewidget.h + HEADERS += accessible/qaccessiblewidget_p.h SOURCES += accessible/qaccessiblewidget.cpp } diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp index 254ecc92dd..d748e5482f 100644 --- a/src/widgets/accessible/qaccessiblewidget.cpp +++ b/src/widgets/accessible/qaccessiblewidget.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qaccessiblewidget.h" +#include "qaccessiblewidget_p.h" #ifndef QT_NO_ACCESSIBILITY diff --git a/src/widgets/accessible/qaccessiblewidget.h b/src/widgets/accessible/qaccessiblewidget.h deleted file mode 100644 index 9830ee32fe..0000000000 --- a/src/widgets/accessible/qaccessiblewidget.h +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QACCESSIBLEWIDGET_H -#define QACCESSIBLEWIDGET_H - -#include - -QT_BEGIN_NAMESPACE - - -#ifndef QT_NO_ACCESSIBILITY - -class QAccessibleWidgetPrivate; - -class Q_WIDGETS_EXPORT QAccessibleWidget : public QAccessibleObject, public QAccessibleActionInterface -{ -public: - explicit QAccessibleWidget(QWidget *o, QAccessible::Role r = QAccessible::Client, const QString& name = QString()); - - QWindow *window() const; - int childCount() const; - int indexOfChild(const QAccessibleInterface *child) const; - QVector > relations(QAccessible::Relation match = QAccessible::AllRelations) const; - QAccessibleInterface *focusChild() const; - - QRect rect() const; - - QAccessibleInterface *parent() const; - QAccessibleInterface *child(int index) const; - - QString text(QAccessible::Text t) const; - QAccessible::Role role() const; - QAccessible::State state() const; - - QColor foregroundColor() const; - QColor backgroundColor() const; - - void *interface_cast(QAccessible::InterfaceType t); - - // QAccessibleActionInterface - QStringList actionNames() const; - void doAction(const QString &actionName); - QStringList keyBindingsForAction(const QString &actionName) const; -protected: - ~QAccessibleWidget(); - QWidget *widget() const; - QObject *parentObject() const; - - void addControllingSignal(const QString &signal); - -private: - QAccessibleWidgetPrivate *d; - Q_DISABLE_COPY(QAccessibleWidget) -}; - - -#endif // QT_NO_ACCESSIBILITY - -QT_END_NAMESPACE - -#endif // QACCESSIBLEWIDGET_H diff --git a/src/widgets/accessible/qaccessiblewidget_p.h b/src/widgets/accessible/qaccessiblewidget_p.h new file mode 100644 index 0000000000..c39ebfa257 --- /dev/null +++ b/src/widgets/accessible/qaccessiblewidget_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QACCESSIBLEWIDGET_H +#define QACCESSIBLEWIDGET_H + +#include +#include + +QT_BEGIN_NAMESPACE + + +#ifndef QT_NO_ACCESSIBILITY + +class QAccessibleWidgetPrivate; + +class Q_WIDGETS_EXPORT QAccessibleWidget : public QAccessibleObject, public QAccessibleActionInterface +{ +public: + explicit QAccessibleWidget(QWidget *o, QAccessible::Role r = QAccessible::Client, const QString& name = QString()); + + QWindow *window() const; + int childCount() const; + int indexOfChild(const QAccessibleInterface *child) const; + QVector > relations(QAccessible::Relation match = QAccessible::AllRelations) const; + QAccessibleInterface *focusChild() const; + + QRect rect() const; + + QAccessibleInterface *parent() const; + QAccessibleInterface *child(int index) const; + + QString text(QAccessible::Text t) const; + QAccessible::Role role() const; + QAccessible::State state() const; + + QColor foregroundColor() const; + QColor backgroundColor() const; + + void *interface_cast(QAccessible::InterfaceType t); + + // QAccessibleActionInterface + QStringList actionNames() const; + void doAction(const QString &actionName); + QStringList keyBindingsForAction(const QString &actionName) const; +protected: + ~QAccessibleWidget(); + QWidget *widget() const; + QObject *parentObject() const; + + void addControllingSignal(const QString &signal); + +private: + QAccessibleWidgetPrivate *d; + Q_DISABLE_COPY(QAccessibleWidget) +}; + + +#endif // QT_NO_ACCESSIBILITY + +QT_END_NAMESPACE + +#endif // QACCESSIBLEWIDGET_H diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index fdefeb7bb3..c6b07eaa56 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -63,7 +63,7 @@ #include #ifndef QT_NO_ACCESSIBILITY #include -#include +#include #endif #ifndef QT_NO_GESTURES # include diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index 8d0a578f61..4c439af0d3 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -55,7 +55,7 @@ #include #ifndef QT_NO_ACCESSIBILITY #include -#include +#include #endif #include -- cgit v1.2.3 From b6e9a8f21ac8b4cc3cc56232ce346ebd7ba17a70 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 11 Mar 2013 19:19:32 +0100 Subject: Add a generic Qt::Edge enum The values are Top/Left/Right/BottomEdge and values specified so that it can be extended as flags later. Change-Id: I67482265e14d89942a8f59bf09e9e3fadab8243f Reviewed-by: Friedemann Kleint Reviewed-by: Gabriel de Dietrich Reviewed-by: Jerome Pasion Reviewed-by: Lars Knoll Reviewed-by: Jens Bache-Wiig --- src/corelib/global/qnamespace.h | 9 ++++++++- src/corelib/global/qnamespace.qdoc | 11 +++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index a33c50a041..0ae0fdf57c 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -63,7 +63,7 @@ Qt { Q_ENUMS(ScrollBarPolicy FocusPolicy ContextMenuPolicy) Q_ENUMS(ArrowType ToolButtonStyle PenStyle PenCapStyle PenJoinStyle BrushStyle) Q_ENUMS(FillRule MaskMode BGMode ClipOperation SizeMode) - Q_ENUMS(Axis Corner LayoutDirection SizeHint Orientation DropAction) + Q_ENUMS(Axis Corner Edge LayoutDirection SizeHint Orientation DropAction) Q_FLAGS(Alignment Orientations DropActions) Q_FLAGS(DockWidgetAreas ToolBarAreas) Q_ENUMS(DockWidgetArea ToolBarArea) @@ -1202,6 +1202,13 @@ public: BottomRightCorner = 0x00003 }; + enum Edge { + TopEdge = 0x00001, + LeftEdge = 0x00002, + RightEdge = 0x00004, + BottomEdge = 0x00008 + }; + enum ConnectionType { AutoConnection, DirectConnection, diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 02d00c213b..b065507645 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -1709,6 +1709,17 @@ \value BottomRightCorner The bottom-right corner of the rectangle. */ +/*! + \enum Qt::Edge + + This enum type specifies an edge in a rectangle: + + \value TopEdge The top edge of the rectangle. + \value LeftEdge The left edge of the rectangle. + \value RightEdge The right edge of the rectangle. + \value BottomEdge The bottom edge of the rectangle. +*/ + /*! \enum Qt::ScrollBarPolicy -- cgit v1.2.3 From 94d1d8486154a1df81545cdda2fe4a2ddcb001e1 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Thu, 7 Mar 2013 18:07:14 +0100 Subject: GTK+ platform theme: cleanup coding style Change-Id: I5db283d7ed42346d9c2b90acbc342336b450aa97 Reviewed-by: Gabriel de Dietrich --- src/plugins/platformthemes/gtk2/main.cpp | 2 +- .../platformthemes/gtk2/qgtk2dialoghelpers.cpp | 12 +++---- .../platformthemes/gtk2/qgtk2dialoghelpers.h | 42 +++++++++++----------- src/plugins/platformthemes/gtk2/qgtk2theme.h | 6 ++-- 4 files changed, 31 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/plugins/platformthemes/gtk2/main.cpp b/src/plugins/platformthemes/gtk2/main.cpp index 0c3fe46e29..13e7d57b13 100644 --- a/src/plugins/platformthemes/gtk2/main.cpp +++ b/src/plugins/platformthemes/gtk2/main.cpp @@ -56,7 +56,7 @@ public: QPlatformTheme *QGtk2ThemePlugin::create(const QString &key, const QStringList ¶ms) { Q_UNUSED(params); - if (!key.compare(QStringLiteral("gtk2"), Qt::CaseInsensitive)) + if (!key.compare(QLatin1String(QGtk2Theme::name), Qt::CaseInsensitive)) return new QGtk2Theme; return 0; diff --git a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp index 2a8815654f..25d45eb81d 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp +++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp @@ -65,7 +65,7 @@ public: QGtk2Dialog(GtkWidget *gtkWidget); ~QGtk2Dialog(); - GtkDialog* gtkDialog() const; + GtkDialog *gtkDialog() const; void exec(); bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); @@ -93,7 +93,7 @@ QGtk2Dialog::~QGtk2Dialog() gtk_widget_destroy(gtkWidget); } -GtkDialog* QGtk2Dialog::gtkDialog() const +GtkDialog *QGtk2Dialog::gtkDialog() const { return GTK_DIALOG(gtkWidget); } @@ -217,7 +217,7 @@ void QGtk2ColorDialogHelper::onColorChanged(QGtk2ColorDialogHelper *dialog) void QGtk2ColorDialogHelper::applyOptions() { - GtkDialog* gtkDialog = d->gtkDialog(); + GtkDialog *gtkDialog = d->gtkDialog(); gtk_window_set_title(GTK_WINDOW(gtkDialog), options()->windowTitle().toUtf8()); GtkWidget *gtkColorSelection = gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(gtkDialog)); @@ -449,7 +449,7 @@ void QGtk2FileDialogHelper::applyOptions() } } -void QGtk2FileDialogHelper::setNameFilters(const QStringList& filters) +void QGtk2FileDialogHelper::setNameFilters(const QStringList &filters) { GtkDialog *gtkDialog = d->gtkDialog(); foreach (GtkFileFilter *filter, _filters) @@ -501,7 +501,7 @@ void QGtk2FontDialogHelper::hide() d->hide(); } -static QString qt_fontToString(const QFont& font) +static QString qt_fontToString(const QFont &font) { PangoFontDescription *desc = pango_font_description_new(); pango_font_description_set_size(desc, font.pointSizeF() * PANGO_SCALE); @@ -537,7 +537,7 @@ static QString qt_fontToString(const QFont& font) static QFont qt_fontFromString(const QString &name) { QFont font; - PangoFontDescription* desc = pango_font_description_from_string(name.toUtf8()); + PangoFontDescription *desc = pango_font_description_from_string(name.toUtf8()); font.setPointSizeF(static_cast(pango_font_description_get_size(desc)) / PANGO_SCALE); QString family = QString::fromUtf8(pango_font_description_get_family(desc)); diff --git a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h index 08af59b2a4..c2d12625f5 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h +++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h @@ -60,12 +60,12 @@ public: QGtk2ColorDialogHelper(); ~QGtk2ColorDialogHelper(); - virtual bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); - virtual void exec(); - virtual void hide(); + bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); + void exec(); + void hide(); - virtual void setCurrentColor(const QColor &color); - virtual QColor currentColor() const; + void setCurrentColor(const QColor &color); + QColor currentColor() const; private Q_SLOTS: void onAccepted(); @@ -85,18 +85,18 @@ public: QGtk2FileDialogHelper(); ~QGtk2FileDialogHelper(); - virtual bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); - virtual void exec(); - virtual void hide(); + bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); + void exec(); + void hide(); - virtual bool defaultNameFilterDisables() const; - virtual void setDirectory(const QString &directory); - virtual QString directory() const; - virtual void selectFile(const QString &filename); - virtual QStringList selectedFiles() const; - virtual void setFilter(); - virtual void selectNameFilter(const QString &filter); - virtual QString selectedNameFilter() const; + bool defaultNameFilterDisables() const; + void setDirectory(const QString &directory); + QString directory() const; + void selectFile(const QString &filename); + QStringList selectedFiles() const; + void setFilter(); + void selectNameFilter(const QString &filter); + QString selectedNameFilter() const; private Q_SLOTS: void onAccepted(); @@ -122,12 +122,12 @@ public: QGtk2FontDialogHelper(); ~QGtk2FontDialogHelper(); - virtual bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); - virtual void exec(); - virtual void hide(); + bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); + void exec(); + void hide(); - virtual void setCurrentFont(const QFont &font); - virtual QFont currentFont() const; + void setCurrentFont(const QFont &font); + QFont currentFont() const; private Q_SLOTS: void onAccepted(); diff --git a/src/plugins/platformthemes/gtk2/qgtk2theme.h b/src/plugins/platformthemes/gtk2/qgtk2theme.h index a351b5b738..a0bd34ed9f 100644 --- a/src/plugins/platformthemes/gtk2/qgtk2theme.h +++ b/src/plugins/platformthemes/gtk2/qgtk2theme.h @@ -51,10 +51,10 @@ class QGtk2Theme : public QGnomeTheme public: QGtk2Theme(); - virtual QVariant themeHint(ThemeHint hint) const; + QVariant themeHint(ThemeHint hint) const; - virtual bool usePlatformNativeDialog(DialogType type) const; - virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const; + bool usePlatformNativeDialog(DialogType type) const; + QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const; static const char *name; }; -- cgit v1.2.3 From 41fc0a04244119fb58d6a14776eefc2679fb0ddd Mon Sep 17 00:00:00 2001 From: Fabian Bumberger Date: Tue, 12 Mar 2013 18:39:20 +0100 Subject: Do not use JIT for pcre on QNX When using JIT, pcre16_study causes a segfault. Change-Id: I43a13579b240edcd75e64a4c291712a96a6ac273 Reviewed-by: Wolfgang Bremer Reviewed-by: Giuseppe D'Angelo --- src/3rdparty/pcre.pri | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/3rdparty/pcre.pri b/src/3rdparty/pcre.pri index 41ce218c9e..8928c045fa 100644 --- a/src/3rdparty/pcre.pri +++ b/src/3rdparty/pcre.pri @@ -2,6 +2,7 @@ DEFINES += PCRE_HAVE_CONFIG_H win32:DEFINES += PCRE_STATIC ios:DEFINES += PCRE_DISABLE_JIT +qnx:DEFINES += PCRE_DISABLE_JIT INCLUDEPATH += $$PWD/pcre SOURCES += \ -- cgit v1.2.3 From 05dd61915b20f37aef0e35b62eab7d511debc4a4 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 14 Mar 2013 11:36:17 +0100 Subject: Add Open GL extensions only when Open GL is enabled. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-30115 Change-Id: I6cb92c654d538fb629334cb81485058b6f1b65ef Reviewed-by: Samuel Rødal --- src/src.pro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/src.pro b/src/src.pro index 3529478b30..5d5a9ffa1f 100644 --- a/src/src.pro +++ b/src/src.pro @@ -106,7 +106,8 @@ contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent SUBDIRS += src_angle src_gui.depends += src_angle } - SUBDIRS += src_gui src_platformsupport src_openglextensions + SUBDIRS += src_gui src_platformsupport + contains(QT_CONFIG, opengl(es1|es2)?):SUBDIRS += src_openglextensions src_plugins.depends += src_gui src_platformsupport !contains(QT_CONFIG, no-widgets) { SUBDIRS += src_tools_uic src_widgets -- cgit v1.2.3 From a0c4a712263dbacd2c8d95da64e00bd213d05cbf Mon Sep 17 00:00:00 2001 From: El Mehdi Fekari Date: Fri, 8 Mar 2013 16:08:23 +0100 Subject: Inital port of QSystemLocale on BlackBerry 10 Change-Id: Ic177e2867d9fa3dbaec221766964ac28656a2662 Reviewed-by: Rafael Roquetto --- src/corelib/tools/qlocale_blackberry.cpp | 313 +++++++++++++++++++++++++++++++ src/corelib/tools/qlocale_blackberry.h | 99 ++++++++++ src/corelib/tools/qlocale_p.h | 26 --- src/corelib/tools/qlocale_unix.cpp | 101 ---------- src/corelib/tools/tools.pri | 4 + 5 files changed, 416 insertions(+), 127 deletions(-) create mode 100644 src/corelib/tools/qlocale_blackberry.cpp create mode 100644 src/corelib/tools/qlocale_blackberry.h (limited to 'src') diff --git a/src/corelib/tools/qlocale_blackberry.cpp b/src/corelib/tools/qlocale_blackberry.cpp new file mode 100644 index 0000000000..01576dd732 --- /dev/null +++ b/src/corelib/tools/qlocale_blackberry.cpp @@ -0,0 +1,313 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qlocale_blackberry.h" +#include "qlocale_p.h" + +#include "qdatetime.h" + +#include "qcoreapplication.h" +#include "private/qcore_unix_p.h" + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SYSTEMLOCALE + +static const char ppsUomPath[] = "/pps/services/locale/uom"; +static const char ppsRegionLocalePath[] = "/pps/services/locale/settings"; +static const char ppsLanguageLocalePath[] = "/pps/services/confstr/_CS_LOCALE"; +static const char ppsHourFormatPath[] = "/pps/system/settings"; + +static const size_t ppsBufferSize = 256; + +QBBSystemLocaleData::QBBSystemLocaleData() + : languageNotifier(0) + , regionNotifier(0) + , measurementNotifier(0) + , hourNotifier(0) + , languageFd(-1) + , regionFd(-1) + , measurementFd(-1) + , hourFd(-1) +{ + // we cannot call this directly, because by the time this constructor is + // called, the event dispatcher has not yet been created, causing the + // subsequent call to QSocketNotifier constructor to fail. + QMetaObject::invokeMethod(this, "installSocketNotifiers", Qt::QueuedConnection); + + readLangageLocale(); + readRegionLocale(); + readMeasurementSystem(); + readHourFormat(); +} + +QBBSystemLocaleData::~QBBSystemLocaleData() +{ + if (measurementFd != -1) + qt_safe_close(measurementFd); + + if (languageFd != -1) + qt_safe_close(languageFd); + + if (regionFd != -1) + qt_safe_close(regionFd); + + if (hourFd != -1) + qt_safe_close(hourFd); +} + +uint QBBSystemLocaleData::measurementSystem() +{ + return m_measurementSystem; +} + +QVariant QBBSystemLocaleData::timeFormat(QLocale::FormatType formatType) +{ + return getCorrectFormat(regionLocale().timeFormat(formatType), formatType); +} + +QVariant QBBSystemLocaleData::dateTimeFormat(QLocale::FormatType formatType) +{ + return getCorrectFormat(regionLocale().dateTimeFormat(formatType), formatType); +} + +QLocale QBBSystemLocaleData::languageLocale() +{ + if (!lc_langage.isEmpty()) + return QLocale(QLatin1String(lc_langage)); + + return QLocale::c(); +} + +QLocale QBBSystemLocaleData::regionLocale() +{ + if (!lc_region.isEmpty()) + return QLocale(QLatin1String(lc_region)); + + return QLocale::c(); +} + +void QBBSystemLocaleData::installSocketNotifiers() +{ + Q_ASSERT(!languageNotifier || !regionNotifier || !measurementNotifier || !hourNotifier); + Q_ASSERT(QCoreApplication::instance()); + + languageNotifier = new QSocketNotifier(languageFd, QSocketNotifier::Read, this); + QObject::connect(languageNotifier, SIGNAL(activated(int)), this, SLOT(readLangageLocale())); + + regionNotifier = new QSocketNotifier(regionFd, QSocketNotifier::Read, this); + QObject::connect(regionNotifier, SIGNAL(activated(int)), this, SLOT(readRegionLocale())); + + measurementNotifier = new QSocketNotifier(measurementFd, QSocketNotifier::Read, this); + QObject::connect(measurementNotifier, SIGNAL(activated(int)), this, SLOT(readMeasurementSystem())); + + hourNotifier = new QSocketNotifier(hourFd, QSocketNotifier::Read, this); + QObject::connect(hourNotifier, SIGNAL(activated(int)), this, SLOT(readHourFormat())); +} + +void QBBSystemLocaleData::readLangageLocale() +{ + lc_langage = readPpsValue(ppsLanguageLocalePath, "_CS_LOCALE", &languageFd); +} + +void QBBSystemLocaleData::readRegionLocale() +{ + lc_region = readPpsValue(ppsRegionLocalePath, "region", ®ionFd); +} + +void QBBSystemLocaleData::readMeasurementSystem() +{ + QByteArray measurement = readPpsValue(ppsUomPath, "uom", &measurementFd); + m_measurementSystem = (qstrcmp(measurement, "imperial") == 0) ? QLocale::ImperialSystem : QLocale::MetricSystem; +} + +void QBBSystemLocaleData::readHourFormat() +{ + QByteArray hourFormat = readPpsValue(ppsHourFormatPath, "hourFormat", &hourFd); + is24HourFormat = (qstrcmp(hourFormat, "24") == 0); +} + +QByteArray QBBSystemLocaleData::readPpsValue(const char *ppsPath, const char *ppsObject, int *ppsFd) +{ + QByteArray result; + if (!ppsPath || !ppsObject) + return result; + + *ppsFd = qt_safe_open(ppsPath, O_RDONLY); + if (*ppsFd == -1) { + qWarning("Failed to open Locale pps, errno=%d", errno); + return result; + } + + char buffer[ppsBufferSize]; + + int bytes = qt_safe_read(*ppsFd, buffer, ppsBufferSize - 1); + if (bytes == -1) { + qWarning("Failed to read Locale pps, errno=%d", errno); + return result; + } + // ensure data is null terminated + buffer[bytes] = '\0'; + + pps_decoder_t ppsDecoder; + pps_decoder_initialize(&ppsDecoder, 0); + if (pps_decoder_parse_pps_str(&ppsDecoder, buffer) == PPS_DECODER_OK) { + pps_decoder_push(&ppsDecoder, 0); + const char *ppsBuff; + if (pps_decoder_get_string(&ppsDecoder, ppsObject, &ppsBuff) == PPS_DECODER_OK) { + result = ppsBuff; + } else { + int val; + if (pps_decoder_get_int(&ppsDecoder, ppsObject, &val) == PPS_DECODER_OK) + result = QByteArray::number(val); + } + } + + pps_decoder_cleanup(&ppsDecoder); + + return result; +} + +QString QBBSystemLocaleData::getCorrectFormat(const QString &baseFormat, QLocale::FormatType formatType) +{ + QString format = baseFormat; + if (is24HourFormat) { + if (format.contains(QStringLiteral("AP"), Qt::CaseInsensitive)) { + format.replace(QStringLiteral("AP"), QStringLiteral(""), Qt::CaseInsensitive); + format.replace(QStringLiteral("h"), QStringLiteral("H"), Qt::CaseSensitive); + } + + } else { + + if (!format.contains(QStringLiteral("AP"), Qt::CaseInsensitive)) { + format.contains(QStringLiteral("HH"), Qt::CaseSensitive) ? + format.replace(QStringLiteral("HH"), QStringLiteral("hh"), Qt::CaseSensitive) : + format.replace(QStringLiteral("H"), QStringLiteral("h"), Qt::CaseSensitive); + + formatType == QLocale::LongFormat ? format.append(QStringLiteral(" AP t")) : format.append(QStringLiteral(" AP")); + } + } + + return format; +} + +Q_GLOBAL_STATIC(QBBSystemLocaleData, bbSysLocaleData) + +QLocale QSystemLocale::fallbackUiLocale() const +{ + return bbSysLocaleData()->languageLocale(); +} + +QVariant QSystemLocale::query(QueryType type, QVariant in) const +{ + QBBSystemLocaleData *d = bbSysLocaleData(); + + QReadLocker locker(&d->lock); + + const QLocale &lc_language = d->languageLocale(); + const QLocale &lc_region = d->regionLocale(); + + switch (type) { + case DecimalPoint: + return lc_region.decimalPoint(); + case GroupSeparator: + return lc_region.groupSeparator(); + case NegativeSign: + return lc_region.negativeSign(); + case PositiveSign: + return lc_region.positiveSign(); + case DateFormatLong: + return lc_region.dateFormat(QLocale::LongFormat); + case DateFormatShort: + return lc_region.dateFormat(QLocale::ShortFormat); + case TimeFormatLong: + return d->timeFormat(QLocale::LongFormat); + case TimeFormatShort: + return d->timeFormat(QLocale::ShortFormat); + case DateTimeFormatLong: + return d->dateTimeFormat(QLocale::LongFormat); + case DateTimeFormatShort: + return d->dateTimeFormat(QLocale::ShortFormat); + case DayNameLong: + return lc_language.dayName(in.toInt(), QLocale::LongFormat); + case DayNameShort: + return lc_language.dayName(in.toInt(), QLocale::ShortFormat); + case MonthNameLong: + return lc_language.monthName(in.toInt(), QLocale::LongFormat); + case MonthNameShort: + return lc_language.monthName(in.toInt(), QLocale::ShortFormat); + case DateToStringLong: + return lc_region.toString(in.toDate(), QLocale::LongFormat); + case DateToStringShort: + return lc_region.toString(in.toDate(), QLocale::ShortFormat); + case TimeToStringLong: + return lc_region.toString(in.toTime(), QLocale::LongFormat); + case TimeToStringShort: + return lc_region.toString(in.toTime(), QLocale::ShortFormat); + case DateTimeToStringShort: + return lc_region.toString(in.toDateTime(), d->dateTimeFormat(QLocale::ShortFormat).toString()); + case DateTimeToStringLong: + return lc_region.toString(in.toDateTime(), d->dateTimeFormat(QLocale::LongFormat).toString()); + case MeasurementSystem: + return d->measurementSystem(); + case ZeroDigit: + return lc_region.zeroDigit(); + case CountryId: + return lc_region.country(); + case LanguageId: + return lc_language.language(); + case AMText: + return lc_language.amText(); + case PMText: + return lc_language.pmText(); + default: + break; + } + return QVariant(); +} + +#endif + +QT_END_NAMESPACE diff --git a/src/corelib/tools/qlocale_blackberry.h b/src/corelib/tools/qlocale_blackberry.h new file mode 100644 index 0000000000..8e9560d6c1 --- /dev/null +++ b/src/corelib/tools/qlocale_blackberry.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QLOCALE_BLACKBERRY_H +#define QLOCALE_BLACKBERRY_H + +#include "qsocketnotifier.h" +#include "qreadwritelock.h" +#include "qlocale.h" + +QT_BEGIN_NAMESPACE + +#ifndef QT_NO_SYSTEMLOCALE + +class QBBSystemLocaleData : public QObject +{ + Q_OBJECT + +public: + QBBSystemLocaleData(); + virtual ~QBBSystemLocaleData(); + uint measurementSystem(); + QVariant timeFormat(QLocale::FormatType); + QVariant dateTimeFormat(QLocale::FormatType); + QLocale languageLocale(); + QLocale regionLocale(); + + QReadWriteLock lock; + +public Q_SLOTS: + void installSocketNotifiers(); + void readLangageLocale(); + void readRegionLocale(); + void readMeasurementSystem(); + void readHourFormat(); + +private: + QByteArray readPpsValue(const char* ppsPath, const char* ppsObject, int* ppsFd); + QString getCorrectFormat(const QString &baseFormat, QLocale::FormatType typeFormat); + + QByteArray lc_langage; + QByteArray lc_region; + uint m_measurementSystem; + bool is24HourFormat; + + QSocketNotifier *languageNotifier; + QSocketNotifier *regionNotifier; + QSocketNotifier *measurementNotifier; + QSocketNotifier *hourNotifier; + + int languageFd; + int regionFd; + int measurementFd; + int hourFd; +}; +#endif // QT_NO_SYSTEMLOCALE + +QT_END_NAMESPACE + +#endif // QLOCALE_BLACKBERRY_H + diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h index 3c3d7c7054..ff44dcc163 100644 --- a/src/corelib/tools/qlocale_p.h +++ b/src/corelib/tools/qlocale_p.h @@ -59,10 +59,6 @@ #include "qlocale.h" -#if defined(Q_OS_BLACKBERRY) -#include "qsocketnotifier.h" -#endif - QT_BEGIN_NAMESPACE #ifndef QT_NO_SYSTEMLOCALE @@ -377,28 +373,6 @@ inline char QLocalePrivate::digitToCLocale(QChar in) const return 0; } -#if defined(Q_OS_BLACKBERRY) -class QQNXLocaleData: public QObject -{ - Q_OBJECT -public: - QQNXLocaleData(); - virtual ~QQNXLocaleData(); - -public Q_SLOTS: - void updateMeasurementSystem(); - void installSocketNotifier(); - -private: - void initialize(); - -public: - uint ppsMeasurement; - QSocketNotifier *ppsNotifier; - int ppsFd; -}; -#endif - QString qt_readEscapedFormatString(const QString &format, int *idx); bool qt_splitLocaleName(const QString &name, QString &lang, QString &script, QString &cntry); int qt_repeatCount(const QString &s, int i); diff --git a/src/corelib/tools/qlocale_unix.cpp b/src/corelib/tools/qlocale_unix.cpp index fb9e3f1a8b..4e443cd79b 100644 --- a/src/corelib/tools/qlocale_unix.cpp +++ b/src/corelib/tools/qlocale_unix.cpp @@ -47,99 +47,8 @@ #include "qvariant.h" #include "qreadwritelock.h" -#if defined(Q_OS_BLACKBERRY) -#include -#include - -#include -#include -#include -#endif - QT_BEGIN_NAMESPACE -#if defined(Q_OS_BLACKBERRY) -static const char ppsServicePath[] = "/pps/services/locale/uom"; -static const size_t ppsBufferSize = 256; - -QQNXLocaleData::QQNXLocaleData() - :ppsNotifier(0) - ,ppsFd(-1) -{ - initialize(); - - // we cannot call this directly, because by the time this constructor is - // called, the event dispatcher has not yet been created, causing the - // subsequent call to QSocketNotifier constructor to fail. - QMetaObject::invokeMethod(this, "installSocketNotifier", Qt::QueuedConnection); -} - -QQNXLocaleData::~QQNXLocaleData() -{ - if (ppsFd != -1) - qt_safe_close(ppsFd); -} - -void QQNXLocaleData::updateMeasurementSystem() -{ - char buffer[ppsBufferSize]; - - errno = 0; - int bytes = qt_safe_read(ppsFd, buffer, ppsBufferSize - 1); - if (bytes == -1) { - qWarning("Failed to read Locale pps, errno=%d", errno); - return; - } - // ensure data is null terminated - buffer[bytes] = '\0'; - - pps_decoder_t ppsDecoder; - pps_decoder_initialize(&ppsDecoder, 0); - if (pps_decoder_parse_pps_str(&ppsDecoder, buffer) == PPS_DECODER_OK) { - pps_decoder_push(&ppsDecoder, 0); - const char *measurementBuff; - if (pps_decoder_get_string(&ppsDecoder, "uom", &measurementBuff) == PPS_DECODER_OK) { - if (qstrcmp(measurementBuff, "imperial") == 0) { - pps_decoder_cleanup(&ppsDecoder); - ppsMeasurement = QLocale::ImperialSystem; - return; - } - } - } - - pps_decoder_cleanup(&ppsDecoder); - ppsMeasurement = QLocale::MetricSystem; -} - -void QQNXLocaleData::initialize() -{ - errno = 0; - ppsFd = qt_safe_open(ppsServicePath, O_RDONLY); - if (ppsFd == -1) { - qWarning("Failed to open Locale pps, errno=%d", errno); - return; - } - - updateMeasurementSystem(); -} - -void QQNXLocaleData::installSocketNotifier() -{ - if (!QCoreApplication::instance() || ppsFd == -1) { - qWarning("QQNXLocaleData: Failed to create socket notifier, locale updates may not work."); - return; - } - - if (ppsNotifier) { - qWarning("QQNXLocaleData: socket notifier already created."); - return; - } - - ppsNotifier = new QSocketNotifier(ppsFd, QSocketNotifier::Read, this); - QObject::connect(ppsNotifier, SIGNAL(activated(int)), this, SLOT(updateMeasurementSystem())); -} -#endif - #ifndef QT_NO_SYSTEMLOCALE struct QSystemLocaleData { @@ -194,11 +103,7 @@ void QSystemLocaleData::readEnvironment() lc_messages = QLocale(QString::fromLatin1(lc_messages_var)); } - Q_GLOBAL_STATIC(QSystemLocaleData, qSystemLocaleData) -#if defined(Q_OS_BLACKBERRY) - Q_GLOBAL_STATIC(QQNXLocaleData, qqnxLocaleData) -#endif #endif @@ -230,9 +135,6 @@ QLocale QSystemLocale::fallbackUiLocale() const QVariant QSystemLocale::query(QueryType type, QVariant in) const { QSystemLocaleData *d = qSystemLocaleData(); -#if defined(Q_OS_BLACKBERRY) - QQNXLocaleData *qnxd = qqnxLocaleData(); -#endif if (type == LocaleChanged) { d->readEnvironment(); @@ -320,9 +222,6 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const return QLocale::MetricSystem; if (meas_locale.compare(QLatin1String("Other"), Qt::CaseInsensitive) == 0) return QLocale::MetricSystem; -#if defined(Q_OS_BLACKBERRY) - return qnxd->ppsMeasurement; -#endif return QVariant((int)QLocale(meas_locale).measurementSystem()); } case UILanguages: { diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index c6e12c59eb..bb152987e6 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -106,6 +106,10 @@ SOURCES += \ SOURCES += tools/qelapsedtimer_mac.cpp OBJECTIVE_SOURCES += tools/qlocale_mac.mm } +else:blackberry { + SOURCES += tools/qelapsedtimer_unix.cpp tools/qlocale_blackberry.cpp + HEADERS += tools/qlocale_blackberry.h +} else:unix:SOURCES += tools/qelapsedtimer_unix.cpp tools/qlocale_unix.cpp else:win32:SOURCES += tools/qelapsedtimer_win.cpp tools/qlocale_win.cpp else:integrity:SOURCES += tools/qelapsedtimer_unix.cpp tools/qlocale_unix.cpp -- cgit v1.2.3 From a8e933a74ce44283182b1dea1ec5a73afe6e85a8 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 14 Mar 2013 06:56:28 +0200 Subject: Fix build on MinGW, Win<7 /* broken by 26149d057a464ddafcc9694cfa94525c01a45231 */ Change-Id: I63f4d70e2a6fc1f8f1b302d188cf34d1abb0699c Reviewed-by: Friedemann Kleint Reviewed-by: Joerg Bornemann --- src/plugins/platforms/windows/qwindowsdialoghelpers.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp index 0530707479..5cc5230832 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp @@ -1059,12 +1059,12 @@ QString QWindowsNativeFileDialogBase::libraryItemDefaultSaveFolder(IShellItem *i #else // !Q_OS_WINCE && __IShellLibrary_INTERFACE_DEFINED__ -QStringList QWindowsNativeFileDialogBase::libraryItemPaths(IShellItem *) +QStringList QWindowsNativeFileDialogBase::libraryItemFolders(IShellItem *) { return QStringList(); } -QString QWindowsNativeFileDialogBase::libraryDefaultSaveFolder(IShellItem *) +QString QWindowsNativeFileDialogBase::libraryItemDefaultSaveFolder(IShellItem *) { return QString(); } -- cgit v1.2.3 From c20422af13fb30751eaa58e8755c7a9a7fd20a50 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Tue, 12 Mar 2013 18:37:07 +0200 Subject: Move Unicode script itemization code from text engine to UnicodeTools This is still the same trivial implementation with the only difference in that that it properly handles surrogate pairs and combining marks. This temporarily makes QTextEngine::itemize() insignificatly slower due to using intermediate buffer, until refactoring is done. Change-Id: I7987d6306b0b5cdb21b837968e292dd70abfe223 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/corelib/tools/qtextboundaryfinder.cpp | 39 +++++++++------------------ src/corelib/tools/qunicodetools.cpp | 45 +++++++++++++++++++++++++++++++ src/corelib/tools/qunicodetools_p.h | 3 +++ src/gui/text/qtextengine.cpp | 16 ++++++----- 4 files changed, 70 insertions(+), 33 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp index 51b4ece4b1..5e8aed579d 100644 --- a/src/corelib/tools/qtextboundaryfinder.cpp +++ b/src/corelib/tools/qtextboundaryfinder.cpp @@ -53,39 +53,24 @@ public: static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int length, QCharAttributes *attributes) { + const ushort *string = reinterpret_cast(chars); + QVarLengthArray scriptItems; + { + QVarLengthArray scripts(length); - const ushort *string = reinterpret_cast(chars); - const ushort *unicode = string; - // correctly assign script, isTab and isObject to the script analysis - const ushort *uc = unicode; - const ushort *e = uc + length; - uchar script = QChar::Script_Common; - uchar lastScript = QChar::Script_Common; - const ushort *start = uc; - while (uc < e) { - int s = QChar::script(*uc); - if (s != QChar::Script_Inherited) - script = s; - if (*uc == QChar::ObjectReplacementCharacter || *uc == QChar::LineSeparator || *uc == 9) - script = QChar::Script_Common; - if (script != lastScript) { - if (uc != start) { + QUnicodeTools::initScripts(string, length, scripts.data()); + + int start = 0; + for (int i = start + 1; i <= length; ++i) { + if (i == length || scripts[i] != scripts[start]) { QUnicodeTools::ScriptItem item; - item.position = start - string; - item.script = lastScript; + item.position = start; + item.script = scripts[start]; scriptItems.append(item); - start = uc; + start = i; } - lastScript = script; } - ++uc; - } - if (uc != start) { - QUnicodeTools::ScriptItem item; - item.position = start - string; - item.script = lastScript; - scriptItems.append(item); } QUnicodeTools::CharAttributeOptions options = 0; diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index 3102035684..4d5c978fd5 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -635,6 +635,51 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, } } + +// ---------------------------------------------------------------------------- +// +// The Unicode script property. See http://www.unicode.org/reports/tr24/ (some very old version) +// +// ---------------------------------------------------------------------------- + +Q_CORE_EXPORT void initScripts(const ushort *string, int length, uchar *scripts) +{ + int sor = 0; + int eor = -1; + uchar script = QChar::Script_Common; + for (int i = 0; i < length; ++i) { + eor = i; + uint ucs4 = string[i]; + if (QChar::isHighSurrogate(ucs4) && i + 1 < length) { + ushort low = string[i + 1]; + if (QChar::isLowSurrogate(low)) { + ucs4 = QChar::surrogateToUcs4(ucs4, low); + ++i; + } + } + + const QUnicodeTables::Properties *prop = QUnicodeTables::properties(ucs4); + + if (Q_LIKELY(prop->script == script || prop->script == QChar::Script_Inherited)) + continue; + + // Never break between a combining mark (gc= Mc, Mn or Me) and its base character. + // Thus, a combining mark — whatever its script property value is — should inherit + // the script property value of its base character. + static const int test = (FLAG(QChar::Mark_NonSpacing) | FLAG(QChar::Mark_SpacingCombining) | FLAG(QChar::Mark_Enclosing)); + if (Q_UNLIKELY(FLAG(prop->category) & test)) + continue; + + while (sor < eor) + scripts[sor++] = script; + + script = prop->script; + } + eor = length; + while (sor < eor) + scripts[sor++] = script; +} + } // namespace QUnicodeTools QT_END_NAMESPACE diff --git a/src/corelib/tools/qunicodetools_p.h b/src/corelib/tools/qunicodetools_p.h index 5a4f1659c4..5db3126159 100644 --- a/src/corelib/tools/qunicodetools_p.h +++ b/src/corelib/tools/qunicodetools_p.h @@ -96,6 +96,9 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, const ScriptItem *items, int numItems, QCharAttributes *attributes, CharAttributeOptions options = DefaultOptionsCompat); + +Q_CORE_EXPORT void initScripts(const ushort *string, int length, uchar *scripts); + } // namespace QUnicodeTools QT_END_NAMESPACE diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index b312eae93e..a0deeddb33 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1309,6 +1309,8 @@ void QTextEngine::itemize() const if (!length) return; + const ushort *string = reinterpret_cast(layoutData->string.unicode()); + bool ignore = ignoreBidi; bool rtl = isRightToLeft(); @@ -1342,9 +1344,15 @@ void QTextEngine::itemize() const layoutData->hasBidi = bidiItemize(const_cast(this), analysis, control); } - const ushort *uc = reinterpret_cast(layoutData->string.unicode()); + { + QVarLengthArray scripts(length); + QUnicodeTools::initScripts(string, length, scripts.data()); + for (int i = 0; i < length; ++i) + analysis[i].script = scripts.at(i); + } + + const ushort *uc = string; const ushort *e = uc + length; - uchar lastScript = QChar::Script_Common; while (uc < e) { switch (*uc) { case QChar::ObjectReplacementCharacter: @@ -1374,13 +1382,9 @@ void QTextEngine::itemize() const } // fall through default: - analysis->script = QChar::script(*uc); - if (analysis->script == QChar::Script_Inherited) - analysis->script = lastScript; analysis->flags = QScriptAnalysis::None; break; } - lastScript = analysis->script; analysis->script = hbscript_to_script(script_to_hbscript(analysis->script)); // retain the old behavior ++uc; ++analysis; -- cgit v1.2.3 From bd7ca33889139782f3f0063f93ca9c1f39501a17 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 6 Dec 2012 19:53:17 +0100 Subject: qfilesystemengine_mac.cpp is empty => purge Change-Id: I61c615343f45fe52adee36b6822322bda2b2ca4f Reviewed-by: Joerg Bornemann --- src/corelib/io/io.pri | 1 - src/corelib/io/qfilesystemengine_mac.cpp | 48 -------------------------------- src/tools/bootstrap/bootstrap.pro | 3 +- 3 files changed, 1 insertion(+), 51 deletions(-) delete mode 100644 src/corelib/io/qfilesystemengine_mac.cpp (limited to 'src') diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri index 3f100593bb..3688642bcb 100644 --- a/src/corelib/io/io.pri +++ b/src/corelib/io/io.pri @@ -118,7 +118,6 @@ win32 { io/qfilesystemiterator_unix.cpp \ !nacl:mac: { - SOURCES += io/qfilesystemengine_mac.cpp SOURCES += io/qsettings_mac.cpp } mac { diff --git a/src/corelib/io/qfilesystemengine_mac.cpp b/src/corelib/io/qfilesystemengine_mac.cpp deleted file mode 100644 index 65ae06d58d..0000000000 --- a/src/corelib/io/qfilesystemengine_mac.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qfilesystemengine_p.h" - -QT_BEGIN_NAMESPACE - -// Mac-specific implementations only! - -QT_END_NAMESPACE diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index ea1d087b59..888869d399 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -121,8 +121,7 @@ win32:SOURCES += ../../corelib/io/qfilesystemengine_win.cpp \ ../../corelib/plugin/qsystemlibrary.cpp \ mac { - SOURCES += ../../corelib/io/qfilesystemengine_mac.cpp \ - ../../corelib/io/qsettings_mac.cpp \ + SOURCES += ../../corelib/io/qsettings_mac.cpp \ ../../corelib/kernel/qcore_mac.cpp LIBS += -framework CoreServices } -- cgit v1.2.3 From 096e32d814ab7b15ed86fb731007c44736768e45 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 12 Mar 2013 19:38:01 +0100 Subject: simplify/fix QT_BOOTSTRAPPED-related #ifdefs don't test for building specific tools when we actually only want to know whether we are bootstrapping. so far, this was only redundant; with the upcoming change of not bootstrapping unnecessarily it would be outright broken. Change-Id: I7600d8ebb14a4194640c50035e35a04263f2ccce Reviewed-by: Joerg Bornemann --- src/corelib/kernel/qcore_mac_p.h | 2 +- src/corelib/thread/qbasicatomic.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qcore_mac_p.h b/src/corelib/kernel/qcore_mac_p.h index 35688f7463..4211a23e0f 100644 --- a/src/corelib/kernel/qcore_mac_p.h +++ b/src/corelib/kernel/qcore_mac_p.h @@ -57,7 +57,7 @@ # define __IMAGECAPTURE__ #endif -#if defined(QT_BUILD_QMAKE) || defined(QT_BOOTSTRAPPED) +#if defined(QT_BOOTSTRAPPED) #include #else #include diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h index 5c5d2637b3..b5a402857c 100644 --- a/src/corelib/thread/qbasicatomic.h +++ b/src/corelib/thread/qbasicatomic.h @@ -44,7 +44,7 @@ #ifndef QBASICATOMIC_H #define QBASICATOMIC_H -#if defined(QT_MOC) || defined(QT_BUILD_QMAKE) || defined(QT_RCC) || defined(QT_UIC) || defined(QT_BOOTSTRAPPED) +#if defined(QT_BOOTSTRAPPED) # include // Compiler dependent implementation -- cgit v1.2.3 From e6aba2f7cd02e5b268eb764765dc935bd8ba05a3 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 11 Mar 2013 20:29:27 +0100 Subject: re-enable QT_NO_LIBRARY support on Windows the exclusion came in with the original winCE port. the reason for this is not clear. Change-Id: I8cd59d27fcc292186e5eef3238f56bad2cf320c1 Reviewed-by: Joerg Bornemann --- src/corelib/io/qfilesystemengine_win.cpp | 2 ++ src/corelib/plugin/qlibrary.h | 6 ------ src/corelib/plugin/qlibrary_win.cpp | 7 +++---- src/corelib/plugin/qpluginloader.h | 5 ----- 4 files changed, 5 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp index 5bd9903da1..bee7689535 100644 --- a/src/corelib/io/qfilesystemengine_win.cpp +++ b/src/corelib/io/qfilesystemengine_win.cpp @@ -145,8 +145,10 @@ Q_CORE_EXPORT int qt_ntfs_permission_lookup = 0; static QString qfsPrivateCurrentDir = QLatin1String(""); // As none of the functions we try to resolve do exist on Windows CE // we use QT_NO_LIBRARY to shorten everything up a little bit. +#ifndef QT_NO_LIBRARY #define QT_NO_LIBRARY 1 #endif +#endif #if !defined(QT_NO_LIBRARY) QT_BEGIN_INCLUDE_NAMESPACE diff --git a/src/corelib/plugin/qlibrary.h b/src/corelib/plugin/qlibrary.h index 5c81e6af1a..865bb8c3e3 100644 --- a/src/corelib/plugin/qlibrary.h +++ b/src/corelib/plugin/qlibrary.h @@ -46,12 +46,6 @@ QT_BEGIN_NAMESPACE - -#if defined(QT_NO_LIBRARY) && defined(Q_OS_WIN) -#undef QT_NO_LIBRARY -#pragma message("QT_NO_LIBRARY is not supported on Windows") -#endif - #ifndef QT_NO_LIBRARY class QLibraryPrivate; diff --git a/src/corelib/plugin/qlibrary_win.cpp b/src/corelib/plugin/qlibrary_win.cpp index f066ff2df4..16445f1163 100644 --- a/src/corelib/plugin/qlibrary_win.cpp +++ b/src/corelib/plugin/qlibrary_win.cpp @@ -46,10 +46,7 @@ #include "qfileinfo.h" #include -#if defined(QT_NO_LIBRARY) && defined(Q_OS_WIN) -#undef QT_NO_LIBRARY -#pragma message("QT_NO_LIBRARY is not supported on Windows") -#endif +#ifndef QT_NO_LIBRARY #include @@ -166,3 +163,5 @@ QFunctionPointer QLibraryPrivate::resolve_sys(const char* symbol) return QFunctionPointer(address); } QT_END_NAMESPACE + +#endif // QT_NO_LIBRARY diff --git a/src/corelib/plugin/qpluginloader.h b/src/corelib/plugin/qpluginloader.h index 3d1d2dbe0b..8f8833e839 100644 --- a/src/corelib/plugin/qpluginloader.h +++ b/src/corelib/plugin/qpluginloader.h @@ -44,11 +44,6 @@ #include -#if defined(QT_NO_LIBRARY) && defined(Q_OS_WIN) -#undef QT_NO_LIBRARY -#pragma message("QT_NO_LIBRARY is not supported on Windows") -#endif - #ifndef QT_NO_LIBRARY QT_BEGIN_NAMESPACE -- cgit v1.2.3 From 59fc1102f304e3d103eaa5d9cd69acb7402efc28 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 6 Dec 2012 20:02:08 +0100 Subject: add QCoreApplication to bootstrap lib this required making it compile with QT_NO_QOBJECT. of course this disables anything related to threading and event processing. needed for bootstrapping qmldevtools (qmlmin, lupdate) Change-Id: I6f8bd3996ac7b6eee49a5b8a55143d358abe35ee Reviewed-by: Joerg Bornemann Reviewed-by: Oswald Buddenhagen --- src/corelib/kernel/qcoreapplication.cpp | 101 +++++++++++++++++++++++++--- src/corelib/kernel/qcoreapplication.h | 33 ++++++++- src/corelib/kernel/qcoreapplication_p.h | 46 +++++++++---- src/corelib/kernel/qcoreapplication_win.cpp | 8 ++- src/tools/bootstrap/bootstrap.pro | 3 + 5 files changed, 163 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index d89df92bdb..3540e3163d 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -42,9 +42,11 @@ #include "qcoreapplication.h" #include "qcoreapplication_p.h" +#ifndef QT_NO_QOBJECT #include "qabstracteventdispatcher.h" #include "qcoreevent.h" #include "qeventloop.h" +#endif #include "qcorecmdlineargs_p.h" #include #include @@ -55,10 +57,12 @@ #include #include #include +#ifndef QT_NO_QOBJECT #include #include #include #include +#endif #include #include #include @@ -66,6 +70,7 @@ #include #include +#ifndef QT_NO_QOBJECT #if defined(Q_OS_UNIX) # if defined(Q_OS_BLACKBERRY) # include "qeventdispatcher_blackberry_p.h" @@ -78,10 +83,10 @@ # include "qeventdispatcher_unix_p.h" # endif #endif - #ifdef Q_OS_WIN # include "qeventdispatcher_win_p.h" #endif +#endif // QT_NO_QOBJECT #ifdef Q_OS_MAC # include "qcore_mac_p.h" @@ -91,6 +96,7 @@ #ifdef Q_OS_UNIX # include +# include #endif #ifdef Q_OS_VXWORKS @@ -99,6 +105,7 @@ QT_BEGIN_NAMESPACE +#ifndef QT_NO_QOBJECT class QMutexUnlocker { public: @@ -113,6 +120,7 @@ private: QMutex *mtx; }; +#endif #if defined(Q_OS_WIN) || defined(Q_OS_MAC) extern QString qAppFileName(); @@ -183,12 +191,14 @@ void QCoreApplicationPrivate::processCommandLineArguments() // Support for introspection +#ifndef QT_NO_QOBJECT QSignalSpyCallbackSet Q_CORE_EXPORT qt_signal_spy_callback_set = { 0, 0, 0, 0 }; void qt_register_signal_spy_callbacks(const QSignalSpyCallbackSet &callback_set) { qt_signal_spy_callback_set = callback_set; } +#endif extern "C" void Q_CORE_EXPORT qt_startup_hook() { @@ -198,7 +208,9 @@ typedef QList QStartUpFuncList; Q_GLOBAL_STATIC(QStartUpFuncList, preRList) typedef QList QVFuncList; Q_GLOBAL_STATIC(QVFuncList, postRList) +#ifndef QT_NO_QOBJECT static QBasicMutex globalPreRoutinesMutex; +#endif /*! \internal @@ -269,12 +281,15 @@ void Q_CORE_EXPORT qt_call_post_routines() } +// initialized in qcoreapplication and in qtextstream autotest when setlocale is called. +static bool qt_locale_initialized = false; + +#ifndef QT_NO_QOBJECT + // app starting up if false bool QCoreApplicationPrivate::is_app_running = false; // app closing down if true bool QCoreApplicationPrivate::is_app_closing = false; -// initialized in qcoreapplication and in qtextstream autotest when setlocale is called. -static bool qt_locale_initialized = false; Q_CORE_EXPORT uint qGlobalPostedEventsCount() { @@ -282,14 +297,17 @@ Q_CORE_EXPORT uint qGlobalPostedEventsCount() return currentThreadData->postEventList.size() - currentThreadData->postEventList.startOffset; } -QCoreApplication *QCoreApplication::self = 0; QAbstractEventDispatcher *QCoreApplicationPrivate::eventDispatcher = 0; -uint QCoreApplicationPrivate::attribs = (1 << Qt::AA_SynthesizeMouseForUnhandledTouchEvents); #ifdef Q_OS_UNIX Qt::HANDLE qt_application_thread_id = 0; #endif +#endif // QT_NO_QOBJECT + +QCoreApplication *QCoreApplication::self = 0; +uint QCoreApplicationPrivate::attribs = (1 << Qt::AA_SynthesizeMouseForUnhandledTouchEvents); + struct QCoreApplicationData { QCoreApplicationData() { #ifndef QT_NO_LIBRARY @@ -341,20 +359,29 @@ struct QCoreApplicationData { Q_GLOBAL_STATIC(QCoreApplicationData, coreappdata) +#ifndef QT_NO_QOBJECT static bool quitLockRefEnabled = true; +#endif QCoreApplicationPrivate::QCoreApplicationPrivate(int &aargc, char **aargv, uint flags) - : QObjectPrivate() - , argc(aargc) + : +#ifndef QT_NO_QOBJECT + QObjectPrivate(), +#endif + argc(aargc) , argv(aargv) #ifdef Q_OS_WIN , origArgc(aargc) , origArgv(new char *[aargc]) #endif , application_type(0) +#ifndef QT_NO_QOBJECT , in_exec(false) , aboutToQuitEmitted(false) , threadData_clean(false) +#else + , q_ptr(0) +#endif { app_compile_version = flags & 0xffffff; static const char *const empty = ""; @@ -362,27 +389,35 @@ QCoreApplicationPrivate::QCoreApplicationPrivate(int &aargc, char **aargv, uint argc = 0; argv = (char **)∅ // ouch! careful with QCoreApplication::argv()! } +#ifdef Q_OS_WIN + qCopy(argv, argv + argc, origArgv); +#endif + +#ifndef QT_NO_QOBJECT QCoreApplicationPrivate::is_app_closing = false; -#if defined(Q_OS_UNIX) +# if defined(Q_OS_UNIX) qt_application_thread_id = QThread::currentThreadId(); -#elif defined(Q_OS_WIN) - qCopy(argv, argv + argc, origArgv); -#endif +# endif // note: this call to QThread::currentThread() may end up setting theMainThread! if (QThread::currentThread() != theMainThread) qWarning("WARNING: QApplication was not created in the main() thread."); +#endif } QCoreApplicationPrivate::~QCoreApplicationPrivate() { +#ifndef QT_NO_QOBJECT cleanupThreadData(); +#endif #ifdef Q_OS_WIN delete [] origArgv; #endif } +#ifndef QT_NO_QOBJECT + void QCoreApplicationPrivate::cleanupThreadData() { if (threadData && !threadData_clean) { @@ -455,6 +490,8 @@ void QCoreApplicationPrivate::checkReceiverThread(QObject *receiver) } #endif +#endif // QT_NO_QOBJECT + void QCoreApplicationPrivate::appendApplicationPathToLibraryPaths() { #ifndef QT_NO_LIBRARY @@ -576,13 +613,18 @@ void QCoreApplicationPrivate::initLocale() \internal */ QCoreApplication::QCoreApplication(QCoreApplicationPrivate &p) +#ifdef QT_NO_QOBJECT + : d_ptr(&p) +#else : QObject(p, 0) +#endif { init(); // note: it is the subclasses' job to call // QCoreApplicationPrivate::eventDispatcher->startingUp(); } +#ifndef QT_NO_QOBJECT /*! Flushes the platform specific event queues. @@ -599,6 +641,7 @@ void QCoreApplication::flush() if (self && self->d_func()->eventDispatcher) self->d_func()->eventDispatcher->flush(); } +#endif /*! Constructs a Qt kernel application. Kernel applications are @@ -619,16 +662,23 @@ QCoreApplication::QCoreApplication(int &argc, char **argv , int _internal #endif ) +#ifdef QT_NO_QOBJECT + : d_ptr(new QCoreApplicationPrivate(argc, argv, _internal)) +#else : QObject(*new QCoreApplicationPrivate(argc, argv, _internal)) +#endif { init(); +#ifndef QT_NO_QOBJECT QCoreApplicationPrivate::eventDispatcher->startingUp(); +#endif } // ### move to QCoreApplicationPrivate constructor? void QCoreApplication::init() { + d_ptr->q_ptr = this; Q_D(QCoreApplication); QCoreApplicationPrivate::initLocale(); @@ -636,6 +686,7 @@ void QCoreApplication::init() Q_ASSERT_X(!self, "QCoreApplication", "there should be only one application object"); QCoreApplication::self = this; +#ifndef QT_NO_QOBJECT // use the event dispatcher created by the app programmer (if any) if (!QCoreApplicationPrivate::eventDispatcher) QCoreApplicationPrivate::eventDispatcher = d->threadData->eventDispatcher; @@ -650,17 +701,20 @@ void QCoreApplication::init() } d->threadData->eventDispatcher = QCoreApplicationPrivate::eventDispatcher; +#endif #ifndef QT_NO_LIBRARY if (coreappdata()->app_libpaths) d->appendApplicationPathToLibraryPaths(); #endif +#ifndef QT_NO_QOBJECT #if defined(Q_OS_UNIX) && !(defined(QT_NO_PROCESS)) // Make sure the process manager thread object is created in the main // thread. QProcessPrivate::initializeProcessManager(); #endif +#endif #ifdef QT_EVAL extern void qt_core_eval_init(uint); @@ -681,8 +735,10 @@ QCoreApplication::~QCoreApplication() qt_call_post_routines(); self = 0; +#ifndef QT_NO_QOBJECT QCoreApplicationPrivate::is_app_closing = true; QCoreApplicationPrivate::is_app_running = false; +#endif #if !defined(QT_NO_THREAD) // Synchronize and stop the global thread pool threads. @@ -696,10 +752,12 @@ QCoreApplication::~QCoreApplication() globalThreadPool->waitForDone(); #endif +#ifndef QT_NO_QOBJECT d_func()->threadData->eventDispatcher = 0; if (QCoreApplicationPrivate::eventDispatcher) QCoreApplicationPrivate::eventDispatcher->closingDown(); QCoreApplicationPrivate::eventDispatcher = 0; +#endif #ifndef QT_NO_LIBRARY delete coreappdata()->app_libpaths; @@ -741,6 +799,8 @@ bool QCoreApplication::testAttribute(Qt::ApplicationAttribute attribute) } +#ifndef QT_NO_QOBJECT + /*! \property QCoreApplication::quitLockEnabled @@ -1603,6 +1663,8 @@ void QCoreApplication::quit() \sa quit() */ +#endif // QT_NO_QOBJECT + #ifndef QT_NO_TRANSLATION /*! Adds the translation file \a translationFile to the list of @@ -1644,8 +1706,11 @@ bool QCoreApplication::installTranslator(QTranslator *translationFile) return false; #endif +#ifndef QT_NO_QOBJECT QEvent ev(QEvent::LanguageChange); QCoreApplication::sendEvent(self, &ev); +#endif + return true; } @@ -1667,10 +1732,12 @@ bool QCoreApplication::removeTranslator(QTranslator *translationFile) return false; QCoreApplicationPrivate *d = self->d_func(); if (d->translators.removeAll(translationFile)) { +#ifndef QT_NO_QOBJECT if (!self->closingDown()) { QEvent ev(QEvent::LanguageChange); QCoreApplication::sendEvent(self, &ev); } +#endif return true; } return false; @@ -2058,8 +2125,10 @@ void QCoreApplication::setOrganizationName(const QString &orgName) if (coreappdata()->orgName == orgName) return; coreappdata()->orgName = orgName; +#ifndef QT_NO_QOBJECT if (QCoreApplication::self) emit QCoreApplication::self->organizationNameChanged(); +#endif } QString QCoreApplication::organizationName() @@ -2096,8 +2165,10 @@ void QCoreApplication::setOrganizationDomain(const QString &orgDomain) if (coreappdata()->orgDomain == orgDomain) return; coreappdata()->orgDomain = orgDomain; +#ifndef QT_NO_QOBJECT if (QCoreApplication::self) emit QCoreApplication::self->organizationDomainChanged(); +#endif } QString QCoreApplication::organizationDomain() @@ -2128,8 +2199,10 @@ void QCoreApplication::setApplicationName(const QString &application) if (coreappdata()->application == application) return; coreappdata()->application = application; +#ifndef QT_NO_QOBJECT if (QCoreApplication::self) emit QCoreApplication::self->applicationNameChanged(); +#endif } QString QCoreApplication::applicationName() @@ -2167,8 +2240,10 @@ void QCoreApplication::setApplicationVersion(const QString &version) if (coreappdata()->applicationVersion == version) return; coreappdata()->applicationVersion = version; +#ifndef QT_NO_QOBJECT if (QCoreApplication::self) emit QCoreApplication::self->applicationVersionChanged(); +#endif } QString QCoreApplication::applicationVersion() @@ -2317,6 +2392,8 @@ void QCoreApplication::removeLibraryPath(const QString &path) #endif //QT_NO_LIBRARY +#ifndef QT_NO_QOBJECT + /*! Installs an event filter \a filterObj for all native events received by the application in the main thread. @@ -2412,6 +2489,8 @@ void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatc mainThread->setEventDispatcher(eventDispatcher); } +#endif // QT_NO_QOBJECT + /*! \macro Q_COREAPP_STARTUP_FUNCTION(QtStartUpFunction ptr) \since 5.1 diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h index 9f9a1c14fd..ae17aeec0e 100644 --- a/src/corelib/kernel/qcoreapplication.h +++ b/src/corelib/kernel/qcoreapplication.h @@ -42,13 +42,21 @@ #ifndef QCOREAPPLICATION_H #define QCOREAPPLICATION_H +#include +#include +#ifndef QT_NO_QOBJECT #include #include #include +#else +#include +#endif +#ifndef QT_NO_QOBJECT #if defined(Q_OS_WIN) && !defined(tagMSG) typedef struct tagMSG MSG; #endif +#endif QT_BEGIN_NAMESPACE @@ -63,14 +71,19 @@ class QAbstractNativeEventFilter; #define qApp QCoreApplication::instance() -class Q_CORE_EXPORT QCoreApplication : public QObject +class Q_CORE_EXPORT QCoreApplication +#ifndef QT_NO_QOBJECT + : public QObject +#endif { +#ifndef QT_NO_QOBJECT Q_OBJECT Q_PROPERTY(QString applicationName READ applicationName WRITE setApplicationName NOTIFY applicationNameChanged) Q_PROPERTY(QString applicationVersion READ applicationVersion WRITE setApplicationVersion NOTIFY applicationVersionChanged) Q_PROPERTY(QString organizationName READ organizationName WRITE setOrganizationName NOTIFY organizationNameChanged) Q_PROPERTY(QString organizationDomain READ organizationDomain WRITE setOrganizationDomain NOTIFY organizationDomainChanged) Q_PROPERTY(bool quitLockEnabled READ isQuitLockEnabled WRITE setQuitLockEnabled) +#endif Q_DECLARE_PRIVATE(QCoreApplication) public: @@ -101,6 +114,7 @@ public: static QCoreApplication *instance() { return self; } +#ifndef QT_NO_QOBJECT static int exec(); static void processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents); static void processEvents(QEventLoop::ProcessEventsFlags flags, int maxtime); @@ -118,6 +132,7 @@ public: static bool startingUp(); static bool closingDown(); +#endif static QString applicationDirPath(); static QString applicationFilePath(); @@ -146,6 +161,7 @@ public: { return translate(context, key, disambiguation, n); } #endif +#ifndef QT_NO_QOBJECT static void flush(); void installNativeEventFilter(QAbstractNativeEventFilter *filterObj); @@ -173,13 +189,20 @@ protected: bool event(QEvent *); virtual bool compressEvent(QEvent *, QObject *receiver, QPostEventList *); +#endif // QT_NO_QOBJECT protected: QCoreApplication(QCoreApplicationPrivate &p); +#ifdef QT_NO_QOBJECT + QScopedPointer d_ptr; +#endif + private: +#ifndef QT_NO_QOBJECT static bool sendSpontaneousEvent(QObject *receiver, QEvent *event); bool notifyInternal(QObject *receiver, QEvent *event); +#endif void init(); @@ -187,7 +210,6 @@ private: Q_DISABLE_COPY(QCoreApplication) - friend class QEventDispatcherUNIXPrivate; friend class QApplication; friend class QApplicationPrivate; friend class QGuiApplication; @@ -196,17 +218,22 @@ private: friend class QWidget; friend class QWidgetWindow; friend class QWidgetPrivate; +#ifndef QT_NO_QOBJECT + friend class QEventDispatcherUNIXPrivate; friend class QCocoaEventDispatcherPrivate; friend bool qt_sendSpontaneousEvent(QObject*, QEvent*); +#endif friend Q_CORE_EXPORT QString qAppName(); friend class QClassFactory; }; +#ifndef QT_NO_QOBJECT inline bool QCoreApplication::sendEvent(QObject *receiver, QEvent *event) { if (event) event->spont = false; return self ? self->notifyInternal(receiver, event) : false; } inline bool QCoreApplication::sendSpontaneousEvent(QObject *receiver, QEvent *event) { if (event) event->spont = true; return self ? self->notifyInternal(receiver, event) : false; } +#endif #ifdef QT_NO_DEPRECATED # define QT_DECLARE_DEPRECATED_TR_FUNCTIONS(context) @@ -237,10 +264,12 @@ Q_CORE_EXPORT QString qAppName(); // get application name } \ Q_CONSTRUCTOR_FUNCTION(AFUNC ## _ctor_function) +#ifndef QT_NO_QOBJECT #if defined(Q_OS_WIN) && !defined(QT_NO_DEBUG_STREAM) Q_CORE_EXPORT QString decodeMSG(const MSG &); Q_CORE_EXPORT QDebug operator<<(QDebug, const MSG &); #endif +#endif QT_END_NAMESPACE diff --git a/src/corelib/kernel/qcoreapplication_p.h b/src/corelib/kernel/qcoreapplication_p.h index 36ba0663b7..563a3b2093 100644 --- a/src/corelib/kernel/qcoreapplication_p.h +++ b/src/corelib/kernel/qcoreapplication_p.h @@ -56,7 +56,9 @@ #include "QtCore/qcoreapplication.h" #include "QtCore/qtranslator.h" #include "QtCore/qsettings.h" +#ifndef QT_NO_QOBJECT #include "private/qobject_p.h" +#endif QT_BEGIN_NAMESPACE @@ -64,7 +66,10 @@ typedef QList QTranslatorList; class QAbstractEventDispatcher; -class Q_CORE_EXPORT QCoreApplicationPrivate : public QObjectPrivate +class Q_CORE_EXPORT QCoreApplicationPrivate +#ifndef QT_NO_QOBJECT + : public QObjectPrivate +#endif { Q_DECLARE_PUBLIC(QCoreApplication) @@ -77,23 +82,27 @@ public: QCoreApplicationPrivate(int &aargc, char **aargv, uint flags); ~QCoreApplicationPrivate(); + QString appName() const; + +#ifdef Q_OS_MAC + static QString macMenuBarName(); +#endif + + static void initLocale(); + + static bool checkInstance(const char *method); + +#ifndef QT_NO_QOBJECT bool sendThroughApplicationEventFilters(QObject *, QEvent *); bool sendThroughObjectEventFilters(QObject *, QEvent *); bool notify_helper(QObject *, QEvent *); - QString appName() const; virtual void createEventDispatcher(); static void removePostedEvent(QEvent *); #ifdef Q_OS_WIN static void removePostedTimerEvent(QObject *object, int timerId); #endif -#ifdef Q_OS_MAC - static QString macMenuBarName(); -#endif - - static void initLocale(); - QAtomicInt quitLockRef; void ref(); void deref(); @@ -104,12 +113,14 @@ public: static QThread *theMainThread; static QThread *mainThread(); - static bool checkInstance(const char *method); static void sendPostedEvents(QObject *receiver, int event_type, QThreadData *data); #if !defined (QT_NO_DEBUG) || defined (QT_MAC_FRAMEWORK_BUILD) void checkReceiverThread(QObject *receiver); #endif + void cleanupThreadData(); +#endif // QT_NO_QOBJECT + int &argc; char **argv; #ifdef Q_OS_WIN @@ -117,24 +128,27 @@ public: char **origArgv; // store unmodified arguments for QCoreApplication::arguments() #endif void appendApplicationPathToLibraryPaths(void); - void cleanupThreadData(); #ifndef QT_NO_TRANSLATION QTranslatorList translators; + + static bool isTranslatorInstalled(QTranslator *translator); #endif + uint application_type; - bool in_exec; - bool aboutToQuitEmitted; - bool threadData_clean; QString cachedApplicationDirPath; QString cachedApplicationFilePath; - static bool isTranslatorInstalled(QTranslator *translator); +#ifndef QT_NO_QOBJECT + bool in_exec; + bool aboutToQuitEmitted; + bool threadData_clean; static QAbstractEventDispatcher *eventDispatcher; static bool is_app_running; static bool is_app_closing; +#endif static uint attribs; static inline bool testAttribute(uint flag) { return attribs & (1 << flag); } @@ -143,6 +157,10 @@ public: void processCommandLineArguments(); QString qmljs_debug_arguments; // a string containing arguments for js/qml debugging. inline QString qmljsDebugArgumentsString() { return qmljs_debug_arguments; } + +#ifdef QT_NO_QOBJECT + QCoreApplication *q_ptr; +#endif }; QT_END_NAMESPACE diff --git a/src/corelib/kernel/qcoreapplication_win.cpp b/src/corelib/kernel/qcoreapplication_win.cpp index 3cb89e8fcd..93e45d3984 100644 --- a/src/corelib/kernel/qcoreapplication_win.cpp +++ b/src/corelib/kernel/qcoreapplication_win.cpp @@ -43,10 +43,12 @@ #include "qcoreapplication_p.h" #include "qstringlist.h" #include "qvector.h" -#include "qmutex.h" #include "qfileinfo.h" #include "qcorecmdlineargs_p.h" +#ifndef QT_NO_QOBJECT +#include "qmutex.h" #include +#endif #include #include @@ -157,6 +159,8 @@ void qWinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdParam, Q_UNUSED(prevInstance); } +#ifndef QT_NO_QOBJECT + void QCoreApplicationPrivate::removePostedTimerEvent(QObject *object, int timerId) { QThreadData *data = object->d_func()->threadData; @@ -996,4 +1000,6 @@ QDebug operator<<(QDebug dbg, const MSG &msg) } #endif +#endif // QT_NO_QOBJECT + QT_END_NAMESPACE diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index 888869d399..34ad46ec48 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -73,6 +73,7 @@ SOURCES += \ ../../corelib/io/qsettings.cpp \ ../../corelib/io/qtemporaryfile.cpp \ ../../corelib/io/qtextstream.cpp \ + ../../corelib/kernel/qcoreapplication.cpp \ ../../corelib/kernel/qcoreglobaldata.cpp \ ../../corelib/kernel/qmetatype.cpp \ ../../corelib/kernel/qvariant.cpp \ @@ -118,10 +119,12 @@ win32:SOURCES += ../../corelib/io/qfilesystemengine_win.cpp \ ../../corelib/io/qfilesystemiterator_win.cpp \ ../../corelib/io/qfsfileengine_win.cpp \ ../../corelib/io/qsettings_win.cpp \ + ../../corelib/kernel/qcoreapplication_win.cpp \ ../../corelib/plugin/qsystemlibrary.cpp \ mac { SOURCES += ../../corelib/io/qsettings_mac.cpp \ + ../../corelib/kernel/qcoreapplication_mac.cpp \ ../../corelib/kernel/qcore_mac.cpp LIBS += -framework CoreServices } -- cgit v1.2.3 From 1824ac4a2db324c94e03bdba4d369a4e7b2cc795 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 6 Dec 2012 19:57:03 +0100 Subject: add QStandardPaths to bootstrap lib it was already bootstrappable, but it was used only for configure.exe. needed for bootstrapping lupdate Change-Id: I0c2bf7db293dda47b3342dfe897a28b34383b1b4 Reviewed-by: Joerg Bornemann --- src/tools/bootstrap/bootstrap.pro | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src') diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index 34ad46ec48..1c39d1b7a5 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -73,6 +73,7 @@ SOURCES += \ ../../corelib/io/qsettings.cpp \ ../../corelib/io/qtemporaryfile.cpp \ ../../corelib/io/qtextstream.cpp \ + ../../corelib/io/qstandardpaths.cpp \ ../../corelib/kernel/qcoreapplication.cpp \ ../../corelib/kernel/qcoreglobaldata.cpp \ ../../corelib/kernel/qmetatype.cpp \ @@ -128,6 +129,18 @@ mac { ../../corelib/kernel/qcore_mac.cpp LIBS += -framework CoreServices } + +macx { + SOURCES += \ + ../../corelib/io/qstandardpaths_mac.cpp +} else:unix { + SOURCES += \ + ../../corelib/io/qstandardpaths_unix.cpp +} else { + SOURCES += \ + ../../corelib/io/qstandardpaths_win.cpp +} + *-g++*: QMAKE_CXXFLAGS += -ffunction-sections if(contains(QT_CONFIG, zlib)|cross_compile):include(../../3rdparty/zlib.pri) -- cgit v1.2.3 From ef6cf8ce726cbed8026f63b1a68288a29f6fec20 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 14 Mar 2013 11:14:15 +0100 Subject: the atspi bridge depends on dbus and qdbusxml2cpp Change-Id: Idad2fcfd33be16a5d4ab5e1a56fcc79707bd5039 Reviewed-by: Frederik Gladhorn --- src/src.pro | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/src.pro b/src/src.pro index 5d5a9ffa1f..2693a1f44d 100644 --- a/src/src.pro +++ b/src/src.pro @@ -98,6 +98,8 @@ win32:SUBDIRS += src_winmain SUBDIRS += src_network src_sql src_xml src_testlib contains(QT_CONFIG, dbus) { SUBDIRS += src_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml + contains(QT_CONFIG, accessibility-atspi-bridge): \ + src_platformsupport.depends += src_dbus src_tools_qdbusxml2cpp src_plugins.depends += src_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml } contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent -- cgit v1.2.3 From 578961829a267c8df0931db6618391cb3c3dde99 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 11 Mar 2013 10:32:28 +0100 Subject: normalize #includes we already have the syncqt'd include paths set, so use them. Change-Id: I9d0047a79b493dd8b65f0f5495f3592ce2e2fb1d Reviewed-by: Joerg Bornemann --- src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp | 10 +++++----- src/tools/qdbuscpp2xml/qdbuscpp2xml.pro | 3 +-- src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp | 4 ++-- src/tools/qdbusxml2cpp/qdbusxml2cpp.pro | 3 +-- 4 files changed, 9 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp b/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp index cdefd5bb37..a66757907d 100644 --- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp +++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp @@ -52,8 +52,8 @@ #include #include -#include "qdbusconnection.h" // for the Export* flags -#include "qdbusconnection_p.h" // for the qDBusCheckAsyncTag +#include // for the Export* flags +#include // for the qDBusCheckAsyncTag // copied from dbus-protocol.h: static const char docTypeHeader[] = @@ -64,9 +64,9 @@ static const char docTypeHeader[] = #define QCLASSINFO_DBUS_INTERFACE "D-Bus Interface" #define QCLASSINFO_DBUS_INTROSPECTION "D-Bus Introspection" -#include "qdbusmetatype_p.h" -#include "qdbusmetatype.h" -#include "qdbusutil_p.h" +#include +#include +#include #include "moc.h" #include "generator.h" diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro index 7fac7cfb99..8a5635a8c0 100644 --- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro +++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro @@ -7,8 +7,7 @@ DEFINES += QT_NO_CAST_FROM_ASCII INCLUDEPATH += $$QT_BUILD_TREE/include \ $$QT_BUILD_TREE/include/QtDBus \ $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION \ - $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION/QtDBus \ - $$QT_SOURCE_TREE/src/dbus + $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION/QtDBus QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp index ce3936c301..e6d77643de 100644 --- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp +++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp @@ -48,8 +48,8 @@ #include #include -#include "qdbusmetatype.h" -#include +#include +#include #include #include diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro index 98f51b3c44..5f05df1133 100644 --- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro +++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro @@ -5,8 +5,7 @@ DEFINES += QT_NO_CAST_FROM_ASCII INCLUDEPATH += $$QT_BUILD_TREE/include \ $$QT_BUILD_TREE/include/QtDBus \ $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION \ - $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION/QtDBus \ - $$QT_SOURCE_TREE/src/dbus + $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION/QtDBus QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS -- cgit v1.2.3 From 53571e02a1bb1c65ceb44444050af4526da0ff3a Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 11 Mar 2013 10:34:01 +0100 Subject: create bootstrap-dbus module this just factors out the common sources from the qdbus tools, to avoid double compilation, and to clean up the project files. Change-Id: I330d108ebffda4bc7c0e0e9ec00e51ddd48d5289 Reviewed-by: Joerg Bornemann --- src/src.pro | 10 ++++++--- src/tools/bootstrap-dbus/bootstrap-dbus.pro | 34 +++++++++++++++++++++++++++++ src/tools/qdbuscpp2xml/qdbuscpp2xml.pro | 21 ++++-------------- src/tools/qdbusxml2cpp/qdbusxml2cpp.pro | 19 ++-------------- 4 files changed, 47 insertions(+), 37 deletions(-) create mode 100644 src/tools/bootstrap-dbus/bootstrap-dbus.pro (limited to 'src') diff --git a/src/src.pro b/src/src.pro index 2693a1f44d..fd356f95fc 100644 --- a/src/src.pro +++ b/src/src.pro @@ -19,13 +19,17 @@ src_tools_qdoc.subdir = tools/qdoc src_tools_qdoc.target = sub-qdoc src_tools_qdoc.depends = src_tools_bootstrap +src_tools_bootstrap_dbus.subdir = tools/bootstrap-dbus +src_tools_bootstrap_dbus.target = sub-bootstrap_dbus +src_tools_bootstrap_dbus.depends = src_tools_bootstrap + src_tools_qdbusxml2cpp.subdir = tools/qdbusxml2cpp src_tools_qdbusxml2cpp.target = sub-qdbusxml2cpp -src_tools_qdbusxml2cpp.depends = src_tools_bootstrap +src_tools_qdbusxml2cpp.depends = src_tools_bootstrap_dbus src_tools_qdbuscpp2xml.subdir = tools/qdbuscpp2xml src_tools_qdbuscpp2xml.target = sub-qdbuscpp2xml -src_tools_qdbuscpp2xml.depends = src_tools_bootstrap +src_tools_qdbuscpp2xml.depends = src_tools_bootstrap_dbus src_winmain.subdir = $$PWD/winmain src_winmain.target = sub-winmain @@ -97,7 +101,7 @@ SUBDIRS += src_tools_bootstrap src_tools_moc src_tools_rcc src_corelib win32:SUBDIRS += src_winmain SUBDIRS += src_network src_sql src_xml src_testlib contains(QT_CONFIG, dbus) { - SUBDIRS += src_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml + SUBDIRS += src_dbus src_tools_bootstrap_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml contains(QT_CONFIG, accessibility-atspi-bridge): \ src_platformsupport.depends += src_dbus src_tools_qdbusxml2cpp src_plugins.depends += src_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml diff --git a/src/tools/bootstrap-dbus/bootstrap-dbus.pro b/src/tools/bootstrap-dbus/bootstrap-dbus.pro new file mode 100644 index 0000000000..63f7b38a73 --- /dev/null +++ b/src/tools/bootstrap-dbus/bootstrap-dbus.pro @@ -0,0 +1,34 @@ +option(host_build) + +MODULE = bootstrap_dbus +TARGET = QtBootstrapDBus +QT = bootstrap-private +CONFIG += no_module_headers internal_module +!build_pass: CONFIG += release + +DEFINES += \ + QT_NO_CAST_FROM_ASCII + +MODULE_PRIVATE_INCLUDES = \ + \$\$QT_MODULE_INCLUDE_BASE/QtDBus \ + \$\$QT_MODULE_INCLUDE_BASE/QtDBus/$$QT_VERSION \ + \$\$QT_MODULE_INCLUDE_BASE/QtDBus/$$QT_VERSION/QtDBus + +load(qt_module) + +QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS + +SOURCES = \ + ../../dbus/qdbusintrospection.cpp \ + ../../dbus/qdbusxmlparser.cpp \ + ../../dbus/qdbuserror.cpp \ + ../../dbus/qdbusutil.cpp \ + ../../dbus/qdbusmisc.cpp \ + ../../dbus/qdbusmetatype.cpp \ + ../../dbus/qdbusargument.cpp \ + ../../dbus/qdbusextratypes.cpp \ + ../../dbus/qdbus_symbols.cpp \ + ../../dbus/qdbusunixfiledescriptor.cpp + +lib.CONFIG = dummy_install +INSTALLS = lib diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro index 8a5635a8c0..96686e7cad 100644 --- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro +++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro @@ -1,23 +1,10 @@ option(host_build) - -include(../moc/moc.pri) - +QT += bootstrap_dbus-private DEFINES += QT_NO_CAST_FROM_ASCII - -INCLUDEPATH += $$QT_BUILD_TREE/include \ - $$QT_BUILD_TREE/include/QtDBus \ - $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION \ - $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION/QtDBus - QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS -SOURCES += qdbuscpp2xml.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusmetatype.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusutil.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusmisc.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusargument.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusextratypes.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbus_symbols.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusunixfiledescriptor.cpp +include(../moc/moc.pri) + +SOURCES += qdbuscpp2xml.cpp load(qt_tool) diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro index 5f05df1133..6174cc0c25 100644 --- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro +++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro @@ -1,23 +1,8 @@ option(host_build) - +QT += bootstrap_dbus-private DEFINES += QT_NO_CAST_FROM_ASCII - -INCLUDEPATH += $$QT_BUILD_TREE/include \ - $$QT_BUILD_TREE/include/QtDBus \ - $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION \ - $$QT_BUILD_TREE/include/QtDBus/$$QT_VERSION/QtDBus - QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS -SOURCES = qdbusxml2cpp.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusintrospection.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusxmlparser.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbuserror.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusutil.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusmetatype.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusargument.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusextratypes.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbus_symbols.cpp \ - $$QT_SOURCE_TREE/src/dbus/qdbusunixfiledescriptor.cpp +SOURCES = qdbusxml2cpp.cpp load(qt_tool) -- cgit v1.2.3 From d3d8ac354665687bd7c96e3f4b3c8b7e0d9c3172 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 8 Mar 2013 22:23:30 +0100 Subject: don't bootstrap tools when not necessary bootstrapping is only necessary if we are cross-compiling or have a circular build dependency. Change-Id: I17244457652ca9d4fc797043e57070c2ae3ee5d1 Reviewed-by: Joerg Bornemann --- src/dbus/qdbusconnection_p.h | 4 ++-- src/src.pro | 13 +++++++++---- src/tools/moc/moc.pro | 1 + src/tools/qdbuscpp2xml/qdbuscpp2xml.pro | 4 +++- src/tools/qdbusxml2cpp/qdbusxml2cpp.pro | 4 +++- src/tools/qdoc/qdoc.pro | 1 + src/tools/rcc/rcc.pro | 1 + 7 files changed, 20 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h index bef0b88f78..73c8dcf411 100644 --- a/src/dbus/qdbusconnection_p.h +++ b/src/dbus/qdbusconnection_p.h @@ -344,8 +344,8 @@ public: // in qdbusmisc.cpp extern int qDBusParametersForMethod(const QMetaMethod &mm, QVector &metaTypes); #endif // QT_BOOTSTRAPPED -extern int qDBusParametersForMethod(const QList ¶meters, QVector& metaTypes); -extern bool qDBusCheckAsyncTag(const char *tag); +extern Q_DBUS_EXPORT int qDBusParametersForMethod(const QList ¶meters, QVector& metaTypes); +extern Q_DBUS_EXPORT bool qDBusCheckAsyncTag(const char *tag); #ifndef QT_BOOTSTRAPPED extern bool qDBusInterfaceInObject(QObject *obj, const QString &interface_name); extern QString qDBusInterfaceFromMetaObject(const QMetaObject *mo); diff --git a/src/src.pro b/src/src.pro index fd356f95fc..f775736406 100644 --- a/src/src.pro +++ b/src/src.pro @@ -13,7 +13,8 @@ src_tools_rcc.depends = src_tools_bootstrap src_tools_uic.subdir = tools/uic src_tools_uic.target = sub-uic -src_tools_uic.depends = src_tools_bootstrap +force_bootstrap: src_tools_uic.depends = src_tools_bootstrap +else: src_tools_uic.depends = src_corelib src_tools_qdoc.subdir = tools/qdoc src_tools_qdoc.target = sub-qdoc @@ -25,11 +26,13 @@ src_tools_bootstrap_dbus.depends = src_tools_bootstrap src_tools_qdbusxml2cpp.subdir = tools/qdbusxml2cpp src_tools_qdbusxml2cpp.target = sub-qdbusxml2cpp -src_tools_qdbusxml2cpp.depends = src_tools_bootstrap_dbus +force_bootstrap: src_tools_qdbusxml2cpp.depends = src_tools_bootstrap_dbus +else: src_tools_qdbusxml2cpp.depends = src_dbus src_tools_qdbuscpp2xml.subdir = tools/qdbuscpp2xml src_tools_qdbuscpp2xml.target = sub-qdbuscpp2xml -src_tools_qdbuscpp2xml.depends = src_tools_bootstrap_dbus +force_bootstrap: src_tools_qdbuscpp2xml.depends = src_tools_bootstrap_dbus +else: src_tools_qdbuscpp2xml.depends = src_dbus src_winmain.subdir = $$PWD/winmain src_winmain.target = sub-winmain @@ -101,7 +104,9 @@ SUBDIRS += src_tools_bootstrap src_tools_moc src_tools_rcc src_corelib win32:SUBDIRS += src_winmain SUBDIRS += src_network src_sql src_xml src_testlib contains(QT_CONFIG, dbus) { - SUBDIRS += src_dbus src_tools_bootstrap_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml + SUBDIRS += src_dbus + force_bootstrap: SUBDIRS += src_tools_bootstrap_dbus + SUBDIRS += src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml contains(QT_CONFIG, accessibility-atspi-bridge): \ src_platformsupport.depends += src_dbus src_tools_qdbusxml2cpp src_plugins.depends += src_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml diff --git a/src/tools/moc/moc.pro b/src/tools/moc/moc.pro index 3a6fd2a02d..d56c2805eb 100644 --- a/src/tools/moc/moc.pro +++ b/src/tools/moc/moc.pro @@ -1,4 +1,5 @@ option(host_build) +CONFIG += force_bootstrap DEFINES += QT_MOC QT_NO_CAST_FROM_ASCII QT_NO_CAST_FROM_BYTEARRAY QT_NO_COMPRESS diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro index 96686e7cad..655158e457 100644 --- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro +++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro @@ -1,5 +1,7 @@ option(host_build) -QT += bootstrap_dbus-private +QT = core-private +force_bootstrap: QT += bootstrap_dbus-private +else: QT += dbus-private DEFINES += QT_NO_CAST_FROM_ASCII QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro index 6174cc0c25..dcc36c7913 100644 --- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro +++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro @@ -1,5 +1,7 @@ option(host_build) -QT += bootstrap_dbus-private +QT = core-private +force_bootstrap: QT += bootstrap_dbus-private +else: QT += dbus-private DEFINES += QT_NO_CAST_FROM_ASCII QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS diff --git a/src/tools/qdoc/qdoc.pro b/src/tools/qdoc/qdoc.pro index cd792e73e8..9db77b7b24 100644 --- a/src/tools/qdoc/qdoc.pro +++ b/src/tools/qdoc/qdoc.pro @@ -1,4 +1,5 @@ option(host_build) +CONFIG += force_bootstrap # because of weird QLibraryInfo::location() reference DEFINES += QDOC2_COMPAT \ QT_CRYPTOGRAPHICHASH_ONLY_SHA1 diff --git a/src/tools/rcc/rcc.pro b/src/tools/rcc/rcc.pro index f4ad2f63d7..354747db01 100644 --- a/src/tools/rcc/rcc.pro +++ b/src/tools/rcc/rcc.pro @@ -1,4 +1,5 @@ option(host_build) +CONFIG += force_bootstrap DEFINES += QT_RCC QT_NO_CAST_FROM_ASCII -- cgit v1.2.3 From 8977d2fbb4f8e64ed2aa4e7470ca1d3f7f387f7f Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 7 Mar 2013 19:01:34 +0100 Subject: update qml parser to current version from qtdeclarative Change-Id: Ic623614aa3c63197e44bf1ae04001997fe7deaac Reviewed-by: Martin Smith --- src/tools/qdoc/qdoc.pro | 2 +- src/tools/qdoc/qmlmarkupvisitor.cpp | 2 +- src/tools/qdoc/qmlmarkupvisitor.h | 2 +- src/tools/qdoc/qmlparser/parser.pri | 22 + src/tools/qdoc/qmlparser/qmlparser.pri | 19 - src/tools/qdoc/qmlparser/qqmljs.g | 171 ++- src/tools/qdoc/qmlparser/qqmljsast.cpp | 35 +- src/tools/qdoc/qmlparser/qqmljsast_p.h | 119 +- src/tools/qdoc/qmlparser/qqmljsastfwd_p.h | 13 +- src/tools/qdoc/qmlparser/qqmljsastvisitor_p.h | 12 +- src/tools/qdoc/qmlparser/qqmljsengine_p.cpp | 8 +- src/tools/qdoc/qmlparser/qqmljsengine_p.h | 4 +- src/tools/qdoc/qmlparser/qqmljsgrammar.cpp | 1751 +++++++++++++------------ src/tools/qdoc/qmlparser/qqmljsgrammar_p.h | 47 +- src/tools/qdoc/qmlparser/qqmljskeywords_p.h | 96 +- src/tools/qdoc/qmlparser/qqmljslexer.cpp | 573 +++++--- src/tools/qdoc/qmlparser/qqmljslexer_p.h | 28 +- src/tools/qdoc/qmlparser/qqmljsmemorypool_p.h | 1 - src/tools/qdoc/qmlparser/qqmljsparser.cpp | 453 ++++--- src/tools/qdoc/qmlparser/qqmljsparser_p.h | 24 +- 20 files changed, 1900 insertions(+), 1482 deletions(-) create mode 100644 src/tools/qdoc/qmlparser/parser.pri delete mode 100644 src/tools/qdoc/qmlparser/qmlparser.pri (limited to 'src') diff --git a/src/tools/qdoc/qdoc.pro b/src/tools/qdoc/qdoc.pro index 9db77b7b24..7664fa4f4d 100644 --- a/src/tools/qdoc/qdoc.pro +++ b/src/tools/qdoc/qdoc.pro @@ -71,7 +71,7 @@ SOURCES += atom.cpp \ ### QML/JS Parser ### -include(qmlparser/qmlparser.pri) +include(qmlparser/parser.pri) HEADERS += jscodemarker.h \ qmlcodemarker.h \ diff --git a/src/tools/qdoc/qmlmarkupvisitor.cpp b/src/tools/qdoc/qmlmarkupvisitor.cpp index 20cfeb1c4b..82836f02e8 100644 --- a/src/tools/qdoc/qmlmarkupvisitor.cpp +++ b/src/tools/qdoc/qmlmarkupvisitor.cpp @@ -407,7 +407,7 @@ bool QmlMarkupVisitor::visit(QQmlJS::AST::Elision *elision) return true; } -bool QmlMarkupVisitor::visit(QQmlJS::AST::PropertyNameAndValueList *list) +bool QmlMarkupVisitor::visit(QQmlJS::AST::PropertyNameAndValue *list) { QQmlJS::AST::Node::accept(list->name, this); addVerbatim(list->colonToken, list->colonToken); diff --git a/src/tools/qdoc/qmlmarkupvisitor.h b/src/tools/qdoc/qmlmarkupvisitor.h index 6829260e58..7510dfbbea 100644 --- a/src/tools/qdoc/qmlmarkupvisitor.h +++ b/src/tools/qdoc/qmlmarkupvisitor.h @@ -94,7 +94,7 @@ public: virtual bool visit(QQmlJS::AST::ElementList *); virtual bool visit(QQmlJS::AST::Elision *); - virtual bool visit(QQmlJS::AST::PropertyNameAndValueList *); + virtual bool visit(QQmlJS::AST::PropertyNameAndValue *); virtual bool visit(QQmlJS::AST::ArrayMemberExpression *); virtual bool visit(QQmlJS::AST::FieldMemberExpression *); virtual bool visit(QQmlJS::AST::NewMemberExpression *); diff --git a/src/tools/qdoc/qmlparser/parser.pri b/src/tools/qdoc/qmlparser/parser.pri new file mode 100644 index 0000000000..e5b8ae2749 --- /dev/null +++ b/src/tools/qdoc/qmlparser/parser.pri @@ -0,0 +1,22 @@ +HEADERS += \ + $$PWD/qqmljsast_p.h \ + $$PWD/qqmljsastfwd_p.h \ + $$PWD/qqmljsastvisitor_p.h \ + $$PWD/qqmljsengine_p.h \ + $$PWD/qqmljsgrammar_p.h \ + $$PWD/qqmljslexer_p.h \ + $$PWD/qqmljsmemorypool_p.h \ + $$PWD/qqmljsparser_p.h \ + $$PWD/qqmljsglobal_p.h \ + $$PWD/qqmljskeywords_p.h \ + +SOURCES += \ + $$PWD/qqmljsast.cpp \ + $$PWD/qqmljsastvisitor.cpp \ + $$PWD/qqmljsengine_p.cpp \ + $$PWD/qqmljsgrammar.cpp \ + $$PWD/qqmljslexer.cpp \ + $$PWD/qqmljsparser.cpp \ + +OTHER_FILES += \ + $$PWD/qqmljs.g diff --git a/src/tools/qdoc/qmlparser/qmlparser.pri b/src/tools/qdoc/qmlparser/qmlparser.pri deleted file mode 100644 index 6be85ba85a..0000000000 --- a/src/tools/qdoc/qmlparser/qmlparser.pri +++ /dev/null @@ -1,19 +0,0 @@ -HEADERS += \ - $$PWD/qqmljsast_p.h \ - $$PWD/qqmljsastfwd_p.h \ - $$PWD/qqmljsastvisitor_p.h \ - $$PWD/qqmljsengine_p.h \ - $$PWD/qqmljsgrammar_p.h \ - $$PWD/qqmljslexer_p.h \ - $$PWD/qqmljsmemorypool_p.h \ - $$PWD/qqmljsparser_p.h \ - $$PWD/qqmljsglobal_p.h \ - $$PWD/qqmljskeywords_p.h - -SOURCES += \ - $$PWD/qqmljsast.cpp \ - $$PWD/qqmljsastvisitor.cpp \ - $$PWD/qqmljsengine_p.cpp \ - $$PWD/qqmljsgrammar.cpp \ - $$PWD/qqmljslexer.cpp \ - $$PWD/qqmljsparser.cpp diff --git a/src/tools/qdoc/qmlparser/qqmljs.g b/src/tools/qdoc/qmlparser/qqmljs.g index bf1c5dd128..ff4f54374b 100644 --- a/src/tools/qdoc/qmlparser/qqmljs.g +++ b/src/tools/qdoc/qmlparser/qqmljs.g @@ -23,8 +23,8 @@ %parser QQmlJSGrammar %decl qqmljsparser_p.h -%impl qdeclarativejsparser.cpp -%expect 2 +%impl qqmljsparser.cpp +%expect 5 %expect-rr 2 %token T_AND "&" T_AND_AND "&&" T_AND_EQ "&=" @@ -60,12 +60,15 @@ %token T_RESERVED_WORD "reserved word" %token T_MULTILINE_STRING_LITERAL "multiline string literal" %token T_COMMENT "comment" +%token T_COMPATIBILITY_SEMICOLON --- context keywords. %token T_PUBLIC "public" %token T_IMPORT "import" %token T_AS "as" %token T_ON "on" +%token T_GET "get" +%token T_SET "set" %token T_ERROR @@ -78,7 +81,7 @@ %token T_FEED_JS_PROGRAM %nonassoc SHIFT_THERE -%nonassoc T_IDENTIFIER T_COLON T_SIGNAL T_PROPERTY T_READONLY +%nonassoc T_IDENTIFIER T_COLON T_SIGNAL T_PROPERTY T_READONLY T_ON T_SET T_GET %nonassoc REDUCE_HERE %start TopLevel @@ -124,16 +127,16 @@ ** ****************************************************************************/ -#include -#include - -#include - #include "qqmljsengine_p.h" #include "qqmljslexer_p.h" #include "qqmljsast_p.h" #include "qqmljsmemorypool_p.h" +#include +#include + +#include + ./ /:/**************************************************************************** @@ -190,20 +193,27 @@ // // -// This file is automatically generated from qmljs.g. -// Changes will be lost. +// W A R N I N G +// ------------- +// +// This file is automatically generated from qqmljs.g. +// Changes should be made to that file, not here. Any change to this file will +// be lost! +// +// To regenerate this file, run: +// qlalr --no-debug --no-lines --qt qqmljs.g // -#ifndef QDECLARATIVEJSPARSER_P_H -#define QDECLARATIVEJSPARSER_P_H +#ifndef QQMLJSPARSER_P_H +#define QQMLJSPARSER_P_H #include "qqmljsglobal_p.h" #include "qqmljsgrammar_p.h" #include "qqmljsast_p.h" #include "qqmljsengine_p.h" -#include -#include +#include +#include QT_QML_BEGIN_NAMESPACE @@ -232,7 +242,8 @@ public: AST::FunctionDeclaration *FunctionDeclaration; AST::Node *Node; AST::PropertyName *PropertyName; - AST::PropertyNameAndValueList *PropertyNameAndValueList; + AST::PropertyAssignment *PropertyAssignment; + AST::PropertyAssignmentList *PropertyAssignmentList; AST::SourceElement *SourceElement; AST::SourceElements *SourceElements; AST::Statement *Statement; @@ -380,11 +391,19 @@ protected: /. #include "qqmljsparser_p.h" -#include +#include + +// +// W A R N I N G +// ------------- // -// This file is automatically generated from qmljs.g. -// Changes will be lost. +// This file is automatically generated from qqmljs.g. +// Changes should be made to that file, not here. Any change to this file will +// be lost! +// +// To regenerate this file, run: +// qlalr --no-debug --no-lines --qt qqmljs.g // using namespace QQmlJS; @@ -413,6 +432,7 @@ Parser::Parser(Engine *engine): state_stack(0), location_stack(0), string_stack(0), + program(0), first_token(0), last_token(0) { @@ -835,6 +855,7 @@ UiParameterList: UiParameterList T_COMMA UiPropertyType JsIdentifier ; /. case $rule_number: { AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiParameterList, stringRef(3), stringRef(4)); + node->propertyTypeToken = loc(3); node->commaToken = loc(2); node->identifierToken = loc(4); sym(1).Node = node; @@ -1026,6 +1047,8 @@ JsIdentifier: T_PROPERTY ; JsIdentifier: T_SIGNAL ; JsIdentifier: T_READONLY ; JsIdentifier: T_ON ; +JsIdentifier: T_GET ; +JsIdentifier: T_SET ; -------------------------------------------------------------------------------------------------------- -- Expressions @@ -1202,13 +1225,13 @@ case $rule_number: { -- } break; -- ./ -PrimaryExpression: T_LBRACE PropertyNameAndValueListOpt T_RBRACE ; +PrimaryExpression: T_LBRACE PropertyAssignmentListOpt T_RBRACE ; /. case $rule_number: { AST::ObjectLiteral *node = 0; if (sym(2).Node) node = new (pool) AST::ObjectLiteral( - sym(2).PropertyNameAndValueList->finish ()); + sym(2).PropertyAssignmentList->finish ()); else node = new (pool) AST::ObjectLiteral(); node->lbraceToken = loc(1); @@ -1217,11 +1240,11 @@ case $rule_number: { } break; ./ -PrimaryExpression: T_LBRACE PropertyNameAndValueList T_COMMA T_RBRACE ; +PrimaryExpression: T_LBRACE PropertyAssignmentList T_COMMA T_RBRACE ; /. case $rule_number: { AST::ObjectLiteral *node = new (pool) AST::ObjectLiteral( - sym(2).PropertyNameAndValueList->finish ()); + sym(2).PropertyAssignmentList->finish ()); node->lbraceToken = loc(1); node->rbraceToken = loc(4); sym(1).Node = node; @@ -1313,40 +1336,62 @@ case $rule_number: { } break; ./ -PropertyNameAndValueList: PropertyName T_COLON AssignmentExpression ; +PropertyAssignment: PropertyName T_COLON AssignmentExpression ; /. case $rule_number: { - AST::PropertyNameAndValueList *node = new (pool) AST::PropertyNameAndValueList( + AST::PropertyNameAndValue *node = new (pool) AST::PropertyNameAndValue( sym(1).PropertyName, sym(3).Expression); node->colonToken = loc(2); sym(1).Node = node; } break; ./ -PropertyNameAndValueList: PropertyNameAndValueList T_COMMA PropertyName T_COLON AssignmentExpression ; +PropertyAssignment: T_GET PropertyName T_LPAREN T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ; /. case $rule_number: { - AST::PropertyNameAndValueList *node = new (pool) AST::PropertyNameAndValueList( - sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression); - node->commaToken = loc(2); - node->colonToken = loc(4); + AST::PropertyGetterSetter *node = new (pool) AST::PropertyGetterSetter( + sym(2).PropertyName, sym(6).FunctionBody); + node->getSetToken = loc(1); + node->lparenToken = loc(3); + node->rparenToken = loc(4); + node->lbraceToken = loc(5); + node->rbraceToken = loc(7); sym(1).Node = node; } break; ./ -PropertyName: T_IDENTIFIER %prec SHIFT_THERE ; +PropertyAssignment: T_SET PropertyName T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ; /. case $rule_number: { - AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1)); - node->propertyNameToken = loc(1); + AST::PropertyGetterSetter *node = new (pool) AST::PropertyGetterSetter( + sym(2).PropertyName, sym(4).FormalParameterList, sym(7).FunctionBody); + node->getSetToken = loc(1); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->lbraceToken = loc(6); + node->rbraceToken = loc(8); sym(1).Node = node; } break; ./ -PropertyName: T_SIGNAL ; -/.case $rule_number:./ +PropertyAssignmentList: PropertyAssignment ; +/. +case $rule_number: { + sym(1).Node = new (pool) AST::PropertyAssignmentList(sym(1).PropertyAssignment); +} break; +./ + +PropertyAssignmentList: PropertyAssignmentList T_COMMA PropertyAssignment ; +/. +case $rule_number: { + AST::PropertyAssignmentList *node = new (pool) AST::PropertyAssignmentList( + sym(1).PropertyAssignmentList, sym(3).PropertyAssignment); + node->commaToken = loc(2); + sym(1).Node = node; +} break; +./ -PropertyName: T_PROPERTY ; +PropertyName: JsIdentifier %prec SHIFT_THERE ; /. case $rule_number: { AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1)); @@ -2423,6 +2468,7 @@ case $rule_number: { IterationStatement: T_DO Statement T_WHILE T_LPAREN Expression T_RPAREN T_AUTOMATIC_SEMICOLON ; -- automatic semicolon +IterationStatement: T_DO Statement T_WHILE T_LPAREN Expression T_RPAREN T_COMPATIBILITY_SEMICOLON ; -- for JSC/V8 compatibility IterationStatement: T_DO Statement T_WHILE T_LPAREN Expression T_RPAREN T_SEMICOLON ; /. case $rule_number: { @@ -2651,20 +2697,7 @@ case $rule_number: { } break; ./ -LabelledStatement: T_SIGNAL T_COLON Statement ; -/.case $rule_number:./ - -LabelledStatement: T_PROPERTY T_COLON Statement ; -/. -case $rule_number: { - AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement); - node->identifierToken = loc(1); - node->colonToken = loc(2); - sym(1).Node = node; -} break; -./ - -LabelledStatement: T_IDENTIFIER T_COLON Statement ; +LabelledStatement: JsIdentifier T_COLON Statement ; /. case $rule_number: { AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement); @@ -2744,7 +2777,12 @@ case $rule_number: { } break; ./ -FunctionDeclaration: T_FUNCTION JsIdentifier T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ; +-- tell the parser to prefer function declarations to function expressions. +-- That is, the `Function' symbol is used to mark the start of a function +-- declaration. +Function: T_FUNCTION %prec REDUCE_HERE ; + +FunctionDeclaration: Function JsIdentifier T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ; /. case $rule_number: { AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody); @@ -2758,7 +2796,7 @@ case $rule_number: { } break; ./ -FunctionExpression: T_FUNCTION IdentifierOpt T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ; +FunctionExpression: T_FUNCTION JsIdentifier T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ; /. case $rule_number: { AST::FunctionExpression *node = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody); @@ -2773,6 +2811,19 @@ case $rule_number: { } break; ./ +FunctionExpression: T_FUNCTION T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ; +/. +case $rule_number: { + AST::FunctionExpression *node = new (pool) AST::FunctionExpression(QStringRef(), sym(3).FormalParameterList, sym(6).FunctionBody); + node->functionToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + node->lbraceToken = loc(5); + node->rbraceToken = loc(7); + sym(1).Node = node; +} break; +./ + FormalParameterList: JsIdentifier ; /. case $rule_number: { @@ -2859,23 +2910,14 @@ case $rule_number: { } break; ./ -IdentifierOpt: ; -/. -case $rule_number: { - stringRef(1) = QStringRef(); -} break; -./ - -IdentifierOpt: JsIdentifier ; - -PropertyNameAndValueListOpt: ; +PropertyAssignmentListOpt: ; /. case $rule_number: { sym(1).Node = 0; } break; ./ -PropertyNameAndValueListOpt: PropertyNameAndValueList ; +PropertyAssignmentListOpt: PropertyAssignmentList ; /. } // switch @@ -2887,7 +2929,8 @@ PropertyNameAndValueListOpt: PropertyNameAndValueList ; const int errorState = state_stack[tos]; // automatic insertion of `;' - if (yytoken != -1 && t_action(errorState, T_AUTOMATIC_SEMICOLON) && lexer->canInsertAutomaticSemicolon(yytoken)) { + if (yytoken != -1 && ((t_action(errorState, T_AUTOMATIC_SEMICOLON) && lexer->canInsertAutomaticSemicolon(yytoken)) + || t_action(errorState, T_COMPATIBILITY_SEMICOLON))) { SavedToken &tk = token_buffer[0]; tk.token = yytoken; tk.dval = yylval; @@ -3012,5 +3055,5 @@ QT_QML_END_NAMESPACE -#endif // QDECLARATIVEJSPARSER_P_H +#endif // QQMLJSPARSER_P_H :/ diff --git a/src/tools/qdoc/qmlparser/qqmljsast.cpp b/src/tools/qdoc/qmlparser/qqmljsast.cpp index 90ceeb9886..ea0df4a537 100644 --- a/src/tools/qdoc/qmlparser/qqmljsast.cpp +++ b/src/tools/qdoc/qmlparser/qqmljsast.cpp @@ -213,12 +213,32 @@ void Elision::accept0(Visitor *visitor) visitor->endVisit(this); } -void PropertyNameAndValueList::accept0(Visitor *visitor) +void PropertyNameAndValue::accept0(Visitor *visitor) { if (visitor->visit(this)) { - for (PropertyNameAndValueList *it = this; it; it = it->next) { - accept(it->name, visitor); - accept(it->value, visitor); + accept(name, visitor); + accept(value, visitor); + } + + visitor->endVisit(this); +} + +void PropertyGetterSetter::accept0(Visitor *visitor) +{ + if (visitor->visit(this)) { + accept(name, visitor); + accept(formals, visitor); + accept(functionBody, visitor); + } + + visitor->endVisit(this); +} + +void PropertyAssignmentList::accept0(Visitor *visitor) +{ + if (visitor->visit(this)) { + for (PropertyAssignmentList *it = this; it; it = it->next) { + accept(it->assignment, visitor); } } @@ -837,6 +857,13 @@ void UiObjectInitializer::accept0(Visitor *visitor) visitor->endVisit(this); } +void UiParameterList::accept0(Visitor *visitor) +{ + if (visitor->visit(this)) { + } + visitor->endVisit(this); +} + void UiObjectBinding::accept0(Visitor *visitor) { if (visitor->visit(this)) { diff --git a/src/tools/qdoc/qmlparser/qqmljsast_p.h b/src/tools/qdoc/qmlparser/qqmljsast_p.h index 03259ed614..01a872f1e8 100644 --- a/src/tools/qdoc/qmlparser/qqmljsast_p.h +++ b/src/tools/qdoc/qmlparser/qqmljsast_p.h @@ -57,7 +57,7 @@ #include "qqmljsglobal_p.h" #include "qqmljsmemorypool_p.h" -#include +#include QT_QML_BEGIN_NAMESPACE @@ -176,8 +176,10 @@ public: Kind_PreDecrementExpression, Kind_PreIncrementExpression, Kind_Program, + Kind_PropertyAssignmentList, + Kind_PropertyGetterSetter, Kind_PropertyName, - Kind_PropertyNameAndValueList, + Kind_PropertyNameAndValue, Kind_RegExpLiteral, Kind_ReturnStatement, Kind_SourceElement, @@ -487,7 +489,7 @@ public: ObjectLiteral(): properties (0) { kind = K; } - ObjectLiteral(PropertyNameAndValueList *plist): + ObjectLiteral(PropertyAssignmentList *plist): properties (plist) { kind = K; } virtual void accept0(Visitor *visitor); @@ -499,7 +501,7 @@ public: { return rbraceToken; } // attributes - PropertyNameAndValueList *properties; + PropertyAssignmentList *properties; SourceLocation lbraceToken; SourceLocation rbraceToken; }; @@ -603,50 +605,113 @@ public: SourceLocation propertyNameToken; }; -class QML_PARSER_EXPORT PropertyNameAndValueList: public Node +class QML_PARSER_EXPORT PropertyAssignment: public Node { public: - QQMLJS_DECLARE_AST_NODE(PropertyNameAndValueList) + PropertyAssignment() {} +}; - PropertyNameAndValueList(PropertyName *n, ExpressionNode *v): - name (n), value (v), next (this) - { kind = K; } +class QML_PARSER_EXPORT PropertyAssignmentList: public Node +{ +public: + QQMLJS_DECLARE_AST_NODE(PropertyAssignmentList) - PropertyNameAndValueList(PropertyNameAndValueList *previous, PropertyName *n, ExpressionNode *v): - name (n), value (v) + PropertyAssignmentList(PropertyAssignment *assignment) + : assignment(assignment) + , next(this) + { kind = K; } + + PropertyAssignmentList(PropertyAssignmentList *previous, PropertyAssignment *assignment) + : assignment(assignment) { kind = K; next = previous->next; previous->next = this; } + inline PropertyAssignmentList *finish () + { + PropertyAssignmentList *front = next; + next = 0; + return front; + } + virtual void accept0(Visitor *visitor); virtual SourceLocation firstSourceLocation() const - { return name->firstSourceLocation(); } + { return assignment->firstSourceLocation(); } virtual SourceLocation lastSourceLocation() const - { - if (next) - return next->lastSourceLocation(); - return value->lastSourceLocation(); - } + { return next ? next->lastSourceLocation() : assignment->lastSourceLocation(); } - inline PropertyNameAndValueList *finish () - { - PropertyNameAndValueList *front = next; - next = 0; - return front; - } +// attributes + PropertyAssignment *assignment; + PropertyAssignmentList *next; + SourceLocation commaToken; +}; + +class QML_PARSER_EXPORT PropertyNameAndValue: public PropertyAssignment +{ +public: + QQMLJS_DECLARE_AST_NODE(PropertyNameAndValue) + + PropertyNameAndValue(PropertyName *n, ExpressionNode *v) + : name(n), value(v) + { kind = K; } + + virtual void accept0(Visitor *visitor); + + virtual SourceLocation firstSourceLocation() const + { return name->firstSourceLocation(); } + + virtual SourceLocation lastSourceLocation() const + { return value->lastSourceLocation(); } // attributes PropertyName *name; - ExpressionNode *value; - PropertyNameAndValueList *next; SourceLocation colonToken; + ExpressionNode *value; SourceLocation commaToken; }; +class QML_PARSER_EXPORT PropertyGetterSetter: public PropertyAssignment +{ +public: + QQMLJS_DECLARE_AST_NODE(PropertyGetterSetter) + + enum Type { + Getter, + Setter + }; + + PropertyGetterSetter(PropertyName *n, FunctionBody *b) + : type(Getter), name(n), formals(0), functionBody (b) + { kind = K; } + + PropertyGetterSetter(PropertyName *n, FormalParameterList *f, FunctionBody *b) + : type(Setter), name(n), formals(f), functionBody (b) + { kind = K; } + + virtual void accept0(Visitor *visitor); + + virtual SourceLocation firstSourceLocation() const + { return getSetToken; } + + virtual SourceLocation lastSourceLocation() const + { return rbraceToken; } + +// attributes + Type type; + SourceLocation getSetToken; + PropertyName *name; + SourceLocation lparenToken; + FormalParameterList *formals; + SourceLocation rparenToken; + SourceLocation lbraceToken; + FunctionBody *functionBody; + SourceLocation rbraceToken; +}; + class QML_PARSER_EXPORT IdentifierPropertyName: public PropertyName { public: @@ -1642,7 +1707,7 @@ class QML_PARSER_EXPORT CaseBlock: public Node public: QQMLJS_DECLARE_AST_NODE(CaseBlock) - explicit CaseBlock(CaseClauses *c, DefaultClause *d = 0, CaseClauses *r = 0): + CaseBlock(CaseClauses *c, DefaultClause *d = 0, CaseClauses *r = 0): clauses (c), defaultClause (d), moreClauses (r) { kind = K; } @@ -2402,7 +2467,7 @@ public: previous->next = this; } - virtual void accept0(Visitor *) {} + virtual void accept0(Visitor *); virtual SourceLocation firstSourceLocation() const { return propertyTypeToken; } diff --git a/src/tools/qdoc/qmlparser/qqmljsastfwd_p.h b/src/tools/qdoc/qmlparser/qqmljsastfwd_p.h index 986ef1deae..fe5572c4b2 100644 --- a/src/tools/qdoc/qmlparser/qqmljsastfwd_p.h +++ b/src/tools/qdoc/qmlparser/qqmljsastfwd_p.h @@ -39,12 +39,12 @@ ** ****************************************************************************/ -#ifndef QQMLJSASTFWD_P_H -#define QQMLJSASTFWD_P_H +#ifndef QQMLJSAST_FWD_P_H +#define QQMLJSAST_FWD_P_H #include "qqmljsglobal_p.h" -#include +#include // // W A R N I N G @@ -64,7 +64,7 @@ namespace QQmlJS { namespace AST { class SourceLocation { public: - explicit SourceLocation(quint32 offset = 0, quint32 length = 0, quint32 line = 0, quint32 column = 0) + SourceLocation(quint32 offset = 0, quint32 length = 0, quint32 line = 0, quint32 column = 0) : offset(offset), length(length), startLine(line), startColumn(column) { } @@ -98,7 +98,9 @@ class ArrayLiteral; class ObjectLiteral; class ElementList; class Elision; -class PropertyNameAndValueList; +class PropertyAssignmentList; +class PropertyGetterSetter; +class PropertyNameAndValue; class PropertyName; class IdentifierPropertyName; class StringLiteralPropertyName; @@ -168,6 +170,7 @@ class UiProgram; class UiImportList; class UiImport; class UiPublicMember; +class UiParameterList; class UiObjectDefinition; class UiObjectInitializer; class UiObjectBinding; diff --git a/src/tools/qdoc/qmlparser/qqmljsastvisitor_p.h b/src/tools/qdoc/qmlparser/qqmljsastvisitor_p.h index 703e18a39d..ef022f617c 100644 --- a/src/tools/qdoc/qmlparser/qqmljsastvisitor_p.h +++ b/src/tools/qdoc/qmlparser/qqmljsastvisitor_p.h @@ -80,6 +80,7 @@ public: virtual bool visit(UiObjectBinding *) { return true; } virtual bool visit(UiScriptBinding *) { return true; } virtual bool visit(UiArrayBinding *) { return true; } + virtual bool visit(UiParameterList *) { return true; } virtual bool visit(UiObjectMemberList *) { return true; } virtual bool visit(UiArrayMemberList *) { return true; } virtual bool visit(UiQualifiedId *) { return true; } @@ -94,6 +95,7 @@ public: virtual void endVisit(UiObjectBinding *) {} virtual void endVisit(UiScriptBinding *) {} virtual void endVisit(UiArrayBinding *) {} + virtual void endVisit(UiParameterList *) {} virtual void endVisit(UiObjectMemberList *) {} virtual void endVisit(UiArrayMemberList *) {} virtual void endVisit(UiQualifiedId *) {} @@ -135,8 +137,14 @@ public: virtual bool visit(Elision *) { return true; } virtual void endVisit(Elision *) {} - virtual bool visit(PropertyNameAndValueList *) { return true; } - virtual void endVisit(PropertyNameAndValueList *) {} + virtual bool visit(PropertyAssignmentList *) { return true; } + virtual void endVisit(PropertyAssignmentList *) {} + + virtual bool visit(PropertyNameAndValue *) { return true; } + virtual void endVisit(PropertyNameAndValue *) {} + + virtual bool visit(PropertyGetterSetter *) { return true; } + virtual void endVisit(PropertyGetterSetter *) {} virtual bool visit(NestedExpression *) { return true; } virtual void endVisit(NestedExpression *) {} diff --git a/src/tools/qdoc/qmlparser/qqmljsengine_p.cpp b/src/tools/qdoc/qmlparser/qqmljsengine_p.cpp index 8db6ce1641..7dc3b6f6cb 100644 --- a/src/tools/qdoc/qmlparser/qqmljsengine_p.cpp +++ b/src/tools/qdoc/qmlparser/qqmljsengine_p.cpp @@ -42,15 +42,15 @@ #include "qqmljsengine_p.h" #include "qqmljsglobal_p.h" -#include -#include -#include +#include +#include +#include QT_QML_BEGIN_NAMESPACE namespace QQmlJS { -static int toDigit(char c) +static inline int toDigit(char c) { if ((c >= '0') && (c <= '9')) return c - '0'; diff --git a/src/tools/qdoc/qmlparser/qqmljsengine_p.h b/src/tools/qdoc/qmlparser/qqmljsengine_p.h index 6f1411e29a..4f58e7f8ea 100644 --- a/src/tools/qdoc/qmlparser/qqmljsengine_p.h +++ b/src/tools/qdoc/qmlparser/qqmljsengine_p.h @@ -57,8 +57,8 @@ #include "qqmljsastfwd_p.h" #include "qqmljsmemorypool_p.h" -#include -#include +#include +#include QT_QML_BEGIN_NAMESPACE diff --git a/src/tools/qdoc/qmlparser/qqmljsgrammar.cpp b/src/tools/qdoc/qmlparser/qqmljsgrammar.cpp index 26a29e0640..4a5672a796 100644 --- a/src/tools/qdoc/qmlparser/qqmljsgrammar.cpp +++ b/src/tools/qdoc/qmlparser/qqmljsgrammar.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtCore module of the Qt Toolkit. +** This file is part of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage @@ -53,46 +53,47 @@ const char *const QQmlJSGrammar::spell [] = { "||", "+", "+=", "++", "?", "}", "]", "%", "%=", "return", ")", ";", 0, "*", "*=", "string literal", "property", "signal", "readonly", "switch", "this", "throw", "~", "try", "typeof", "var", "void", "while", "with", "^", - "^=", "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "comment", "public", - "import", "as", "on", 0, 0, 0, 0, 0, 0, 0, - 0, 0}; + "^=", "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "comment", 0, + "public", "import", "as", "on", "get", "set", 0, 0, 0, 0, + 0, 0, 0, 0, 0}; const short QQmlJSGrammar::lhs [] = { - 102, 102, 102, 102, 102, 102, 103, 109, 109, 112, - 112, 114, 113, 113, 113, 113, 113, 113, 113, 113, - 116, 111, 110, 119, 119, 120, 120, 121, 121, 118, - 107, 107, 107, 107, 123, 123, 123, 123, 123, 123, - 123, 107, 131, 131, 131, 132, 132, 133, 133, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 117, 117, 117, 117, - 117, 136, 136, 136, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 136, 122, - 138, 138, 138, 138, 137, 137, 140, 140, 142, 142, - 142, 142, 142, 142, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 144, 144, 115, 115, 115, - 115, 115, 147, 147, 148, 148, 148, 148, 146, 146, - 149, 149, 150, 150, 151, 151, 151, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 153, 153, 153, - 153, 154, 154, 154, 155, 155, 155, 155, 156, 156, - 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, - 157, 158, 158, 158, 158, 158, 159, 159, 159, 159, - 159, 160, 160, 161, 161, 162, 162, 163, 163, 164, - 164, 165, 165, 166, 166, 167, 167, 168, 168, 169, - 169, 170, 170, 171, 171, 141, 141, 172, 172, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 105, 105, 174, 174, 175, 175, 176, 176, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 124, 185, 185, 184, 184, 135, - 135, 186, 186, 187, 187, 189, 189, 188, 190, 193, - 191, 191, 194, 192, 192, 125, 126, 126, 127, 127, - 177, 177, 177, 177, 177, 177, 177, 178, 178, 178, - 178, 179, 179, 179, 179, 180, 180, 128, 129, 195, - 195, 198, 198, 196, 196, 199, 197, 181, 181, 181, - 182, 182, 130, 130, 130, 200, 201, 183, 183, 134, - 145, 205, 205, 202, 202, 203, 203, 206, 108, 108, - 207, 207, 106, 106, 204, 204, 139, 139, 208}; + 105, 105, 105, 105, 105, 105, 106, 112, 112, 115, + 115, 117, 116, 116, 116, 116, 116, 116, 116, 116, + 119, 114, 113, 122, 122, 123, 123, 124, 124, 121, + 110, 110, 110, 110, 126, 126, 126, 126, 126, 126, + 126, 110, 134, 134, 134, 135, 135, 136, 136, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 120, 120, 120, 120, + 120, 120, 120, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 125, 141, 141, 141, 141, 140, 140, 145, 145, + 145, 143, 143, 146, 146, 146, 146, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 150, 150, + 118, 118, 118, 118, 118, 153, 153, 154, 154, 154, + 154, 152, 152, 155, 155, 156, 156, 157, 157, 157, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 159, 159, 159, 159, 160, 160, 160, 161, 161, 161, + 161, 162, 162, 162, 162, 162, 162, 162, 163, 163, + 163, 163, 163, 163, 164, 164, 164, 164, 164, 165, + 165, 165, 165, 165, 166, 166, 167, 167, 168, 168, + 169, 169, 170, 170, 171, 171, 172, 172, 173, 173, + 174, 174, 175, 175, 176, 176, 177, 177, 144, 144, + 178, 178, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 108, 108, 180, 180, 181, 181, + 182, 182, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 127, 191, 191, + 190, 190, 138, 138, 192, 192, 193, 193, 195, 195, + 194, 196, 199, 197, 197, 200, 198, 198, 128, 129, + 129, 130, 130, 183, 183, 183, 183, 183, 183, 183, + 183, 184, 184, 184, 184, 185, 185, 185, 185, 186, + 186, 131, 132, 201, 201, 204, 204, 202, 202, 205, + 203, 187, 188, 188, 133, 133, 133, 206, 207, 189, + 189, 208, 137, 151, 151, 209, 209, 148, 148, 147, + 147, 210, 111, 111, 211, 211, 109, 109, 142, 142, + 212}; const short QQmlJSGrammar::rhs [] = { 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, @@ -103,728 +104,759 @@ const short QQmlJSGrammar::rhs [] = { 6, 3, 3, 7, 7, 4, 4, 5, 5, 5, 6, 6, 10, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 3, 3, 4, 5, 3, 4, 3, 1, - 1, 2, 3, 4, 1, 2, 3, 5, 1, 1, + 1, 1, 1, 2, 3, 3, 4, 5, 3, 4, + 3, 1, 1, 2, 3, 4, 1, 2, 3, 7, + 8, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, - 3, 5, 1, 2, 4, 4, 4, 3, 0, 1, - 1, 3, 1, 1, 1, 2, 2, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 3, 3, - 3, 1, 3, 3, 1, 3, 3, 3, 1, 3, - 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, - 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, - 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, - 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, - 3, 1, 5, 1, 5, 1, 3, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 0, 1, 1, 3, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 2, 0, 1, 3, - 3, 1, 1, 1, 3, 1, 3, 2, 2, 2, - 0, 1, 2, 0, 1, 1, 2, 2, 7, 5, - 7, 7, 5, 9, 10, 7, 8, 2, 2, 3, - 3, 2, 2, 3, 3, 3, 3, 5, 5, 3, - 5, 1, 2, 0, 1, 4, 3, 3, 3, 3, - 3, 3, 3, 3, 4, 5, 2, 2, 2, 8, - 8, 1, 3, 0, 1, 0, 1, 1, 1, 1, - 1, 2, 1, 1, 0, 1, 0, 1, 2}; + 1, 1, 4, 3, 5, 1, 2, 4, 4, 4, + 3, 0, 1, 1, 3, 1, 1, 1, 2, 2, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, + 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, + 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, + 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 1, 5, 1, 5, 1, 3, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 0, 1, 1, 3, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, + 0, 1, 3, 3, 1, 1, 1, 3, 1, 3, + 2, 2, 2, 0, 1, 2, 0, 1, 1, 2, + 2, 7, 5, 7, 7, 7, 5, 9, 10, 7, + 8, 2, 2, 3, 3, 2, 2, 3, 3, 3, + 3, 5, 5, 3, 5, 1, 2, 0, 1, 4, + 3, 3, 3, 3, 3, 3, 4, 5, 2, 2, + 2, 1, 8, 8, 7, 1, 3, 0, 1, 0, + 1, 1, 1, 1, 1, 2, 1, 1, 0, 1, + 2}; const short QQmlJSGrammar::action_default [] = { - 0, 0, 22, 0, 0, 0, 22, 0, 175, 242, - 206, 214, 210, 154, 226, 202, 3, 139, 73, 155, - 218, 222, 143, 172, 153, 158, 138, 192, 179, 0, - 80, 81, 76, 345, 67, 347, 0, 0, 0, 0, - 78, 0, 0, 74, 77, 71, 0, 0, 68, 70, - 69, 79, 72, 0, 75, 0, 0, 168, 0, 0, - 155, 174, 157, 156, 0, 0, 0, 170, 171, 169, - 173, 0, 203, 0, 0, 0, 0, 193, 0, 0, - 0, 0, 0, 0, 183, 0, 0, 0, 177, 178, - 176, 181, 185, 184, 182, 180, 195, 194, 196, 0, - 211, 0, 207, 0, 0, 149, 136, 148, 137, 105, - 106, 107, 132, 108, 133, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 134, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 135, - 0, 0, 147, 243, 150, 0, 151, 0, 152, 146, - 0, 239, 232, 230, 237, 238, 236, 235, 241, 234, - 233, 231, 240, 227, 0, 215, 0, 0, 219, 0, - 0, 223, 0, 0, 149, 141, 0, 140, 0, 145, - 159, 0, 346, 334, 335, 0, 332, 0, 333, 0, - 336, 250, 257, 256, 264, 252, 0, 253, 337, 0, - 344, 254, 255, 260, 258, 341, 338, 343, 261, 0, - 272, 0, 0, 0, 0, 345, 67, 0, 347, 68, - 244, 286, 69, 0, 0, 0, 273, 0, 0, 262, - 263, 0, 251, 259, 287, 288, 331, 342, 0, 302, - 303, 304, 305, 0, 298, 299, 300, 301, 328, 329, - 0, 0, 0, 0, 0, 291, 292, 248, 246, 208, - 216, 212, 228, 204, 249, 0, 155, 220, 224, 197, - 186, 0, 0, 205, 0, 0, 0, 0, 198, 0, - 0, 0, 0, 0, 190, 188, 191, 189, 187, 200, - 199, 201, 0, 213, 0, 209, 0, 247, 155, 0, - 229, 244, 245, 0, 244, 0, 0, 294, 0, 0, - 0, 296, 0, 217, 0, 0, 221, 0, 0, 225, - 284, 0, 276, 285, 279, 0, 283, 0, 244, 277, - 0, 244, 0, 0, 295, 0, 0, 0, 297, 346, - 334, 0, 0, 336, 0, 330, 0, 320, 0, 0, - 0, 290, 0, 289, 0, 348, 0, 104, 266, 269, - 0, 105, 272, 108, 133, 110, 111, 76, 115, 116, - 67, 117, 120, 74, 77, 68, 244, 69, 79, 123, - 72, 125, 75, 127, 128, 273, 130, 131, 135, 0, - 97, 0, 0, 99, 103, 101, 88, 100, 102, 0, - 98, 87, 267, 265, 143, 144, 149, 0, 142, 0, - 319, 0, 306, 307, 0, 318, 0, 0, 0, 309, - 314, 312, 315, 0, 0, 313, 314, 0, 310, 0, - 311, 268, 317, 0, 268, 316, 0, 321, 322, 0, - 268, 323, 324, 0, 0, 325, 0, 0, 0, 326, - 327, 161, 160, 0, 0, 0, 293, 0, 0, 0, - 308, 281, 274, 0, 282, 278, 0, 280, 270, 0, - 271, 275, 91, 0, 0, 95, 82, 0, 84, 93, - 0, 85, 94, 96, 86, 92, 83, 0, 89, 165, - 163, 167, 164, 162, 166, 339, 6, 340, 4, 2, - 65, 90, 0, 0, 68, 70, 69, 31, 5, 0, - 66, 0, 45, 44, 43, 0, 0, 58, 0, 59, - 35, 36, 37, 38, 40, 41, 62, 39, 0, 45, - 0, 0, 0, 0, 0, 54, 0, 55, 0, 0, - 26, 0, 0, 63, 27, 0, 30, 28, 24, 0, - 29, 25, 0, 56, 0, 57, 143, 0, 60, 64, - 0, 0, 0, 0, 61, 0, 52, 46, 53, 47, - 0, 0, 0, 0, 49, 0, 50, 51, 48, 0, - 0, 143, 268, 0, 0, 42, 105, 272, 108, 133, - 110, 111, 76, 115, 116, 67, 117, 120, 74, 77, - 68, 244, 69, 79, 123, 72, 125, 75, 127, 128, - 273, 130, 131, 135, 0, 32, 33, 0, 34, 8, - 0, 10, 0, 9, 0, 1, 21, 12, 0, 13, - 0, 14, 0, 19, 20, 0, 15, 16, 0, 17, - 18, 11, 23, 7, 349}; + 0, 0, 22, 0, 0, 0, 22, 0, 178, 245, + 209, 217, 213, 157, 229, 205, 3, 142, 75, 158, + 221, 225, 146, 175, 156, 161, 141, 195, 182, 0, + 82, 83, 78, 0, 72, 67, 349, 0, 0, 0, + 0, 80, 0, 0, 76, 79, 71, 0, 0, 68, + 70, 73, 69, 81, 74, 0, 77, 0, 0, 171, + 0, 0, 158, 177, 160, 159, 0, 0, 0, 173, + 174, 172, 176, 0, 206, 0, 0, 0, 0, 196, + 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, + 180, 181, 179, 184, 188, 187, 185, 183, 198, 197, + 199, 0, 214, 0, 210, 0, 0, 152, 139, 151, + 140, 108, 109, 110, 135, 111, 136, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 137, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 138, 0, 0, 150, 246, 153, 0, 154, 0, + 155, 149, 0, 242, 235, 233, 240, 241, 239, 238, + 244, 237, 236, 234, 243, 230, 0, 218, 0, 0, + 222, 0, 0, 226, 0, 0, 152, 144, 0, 143, + 0, 148, 162, 0, 338, 338, 339, 0, 336, 0, + 337, 0, 340, 253, 260, 259, 267, 255, 0, 256, + 0, 341, 0, 348, 257, 258, 75, 263, 261, 345, + 342, 347, 264, 0, 275, 0, 0, 0, 0, 332, + 0, 349, 247, 289, 0, 0, 0, 276, 0, 0, + 265, 266, 0, 254, 262, 290, 291, 0, 338, 0, + 0, 340, 0, 333, 334, 0, 322, 346, 0, 306, + 307, 308, 309, 0, 302, 303, 304, 305, 330, 331, + 0, 0, 0, 0, 0, 294, 295, 296, 251, 249, + 211, 219, 215, 231, 207, 252, 0, 158, 223, 227, + 200, 189, 0, 0, 208, 0, 0, 0, 0, 201, + 0, 0, 0, 0, 0, 193, 191, 194, 192, 190, + 203, 202, 204, 0, 216, 0, 212, 0, 250, 158, + 0, 232, 247, 248, 0, 247, 0, 0, 298, 0, + 0, 0, 300, 0, 220, 0, 0, 224, 0, 0, + 228, 287, 0, 279, 288, 282, 0, 286, 0, 247, + 280, 0, 247, 0, 0, 299, 0, 0, 0, 301, + 0, 0, 0, 293, 0, 292, 75, 102, 350, 0, + 0, 107, 269, 272, 0, 108, 275, 111, 136, 113, + 114, 78, 118, 119, 72, 120, 123, 76, 79, 247, + 73, 81, 126, 74, 128, 77, 130, 131, 276, 133, + 134, 138, 0, 104, 103, 106, 90, 105, 89, 0, + 99, 270, 268, 0, 0, 0, 340, 0, 100, 146, + 147, 152, 0, 145, 0, 310, 311, 0, 338, 0, + 0, 340, 0, 101, 0, 0, 0, 313, 318, 316, + 319, 0, 0, 317, 318, 0, 314, 0, 315, 271, + 321, 0, 271, 320, 0, 323, 324, 0, 271, 325, + 326, 0, 0, 327, 0, 0, 0, 328, 329, 164, + 163, 0, 0, 0, 297, 0, 0, 0, 312, 284, + 277, 0, 285, 281, 0, 283, 273, 0, 274, 278, + 0, 0, 340, 0, 335, 93, 0, 0, 97, 84, + 0, 86, 95, 0, 87, 96, 98, 88, 94, 85, + 0, 91, 168, 166, 170, 167, 165, 169, 343, 6, + 344, 4, 2, 65, 92, 0, 0, 68, 70, 69, + 31, 5, 0, 66, 0, 45, 44, 43, 0, 0, + 58, 0, 59, 35, 36, 37, 38, 40, 41, 62, + 39, 0, 45, 0, 0, 0, 0, 0, 54, 0, + 55, 0, 0, 26, 0, 0, 63, 27, 0, 30, + 28, 24, 0, 29, 25, 0, 56, 0, 57, 146, + 0, 60, 64, 0, 0, 0, 0, 61, 0, 52, + 46, 53, 47, 0, 0, 0, 0, 49, 0, 50, + 51, 48, 0, 0, 146, 271, 0, 0, 42, 75, + 108, 275, 111, 136, 113, 114, 78, 118, 119, 120, + 123, 76, 79, 247, 81, 126, 74, 128, 77, 130, + 131, 276, 133, 134, 138, 0, 32, 33, 0, 34, + 8, 0, 10, 0, 9, 0, 1, 21, 12, 0, + 13, 0, 14, 0, 19, 20, 0, 15, 16, 0, + 17, 18, 11, 23, 7, 351}; const short QQmlJSGrammar::goto_default [] = { - 7, 625, 207, 196, 205, 508, 496, 624, 643, 495, - 623, 621, 626, 22, 622, 18, 507, 549, 539, 546, - 541, 526, 191, 195, 197, 201, 233, 208, 230, 530, - 570, 569, 200, 232, 26, 474, 473, 356, 355, 9, - 354, 357, 107, 17, 145, 24, 13, 144, 19, 25, - 57, 23, 8, 28, 27, 269, 15, 263, 10, 259, - 12, 261, 11, 260, 20, 267, 21, 268, 14, 262, - 258, 299, 411, 264, 265, 202, 193, 192, 204, 203, - 229, 194, 360, 359, 231, 463, 462, 321, 322, 465, - 324, 464, 323, 419, 423, 426, 422, 421, 441, 442, - 185, 199, 181, 184, 198, 206, 0}; + 7, 636, 211, 198, 209, 521, 509, 635, 654, 508, + 634, 632, 637, 22, 633, 18, 520, 562, 552, 559, + 554, 539, 193, 197, 199, 204, 234, 212, 231, 543, + 583, 582, 203, 233, 26, 487, 486, 359, 358, 9, + 357, 360, 202, 480, 361, 109, 17, 147, 24, 13, + 146, 19, 25, 59, 23, 8, 28, 27, 280, 15, + 274, 10, 270, 12, 272, 11, 271, 20, 278, 21, + 279, 14, 273, 269, 310, 414, 275, 276, 205, 195, + 194, 208, 207, 230, 196, 364, 363, 232, 471, 470, + 332, 333, 473, 335, 472, 334, 427, 431, 434, 430, + 429, 449, 450, 200, 186, 201, 210, 0}; const short QQmlJSGrammar::action_index [] = { - 404, 1275, 2411, 2411, 2509, 1000, 68, 92, 90, -102, - 88, 62, 60, 256, -102, 298, 86, -102, -102, 638, - 83, 134, 172, 219, -102, -102, -102, 454, 194, 1275, - -102, -102, -102, 381, -102, 2215, 1555, 1275, 1275, 1275, - -102, 790, 1275, -102, -102, -102, 1275, 1275, -102, -102, - -102, -102, -102, 1275, -102, 1275, 1275, -102, 1275, 1275, - 102, 217, -102, -102, 1275, 1275, 1275, -102, -102, -102, - 204, 1275, 304, 1275, 1275, 1275, 1275, 539, 1275, 1275, - 1275, 1275, 1275, 1275, 308, 1275, 1275, 1275, 103, 131, - 135, 308, 210, 225, 216, 308, 444, 390, 434, 1275, - 82, 1275, 100, 2117, 1275, 1275, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - 139, 1275, -102, -102, 91, 10, -102, 1275, -102, -102, - 1275, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, 1275, 26, 1275, 1275, 69, 66, - 1275, -102, 2117, 1275, 1275, -102, 97, -102, 44, -102, - -102, 67, -102, 297, 78, 24, -102, 291, -102, 36, - 2411, -102, -102, -102, -102, -102, 234, -102, -102, 12, - -102, -102, -102, -102, -102, -102, 2411, -102, -102, 464, - -102, 461, 115, 2509, 42, 381, 58, 46, 2705, 70, - 1275, -102, 74, 57, 1275, 65, -102, 59, 61, -102, - -102, 367, -102, -102, -102, -102, -102, -102, 106, -102, - -102, -102, -102, 87, -102, -102, -102, -102, -102, -102, - 56, 55, 1275, 99, 84, -102, -102, 1461, -102, 75, - 48, 52, -102, 306, 72, 53, 579, 77, 110, 370, - 230, 381, 1275, 286, 1275, 1275, 1275, 1275, 380, 1275, - 1275, 1275, 1275, 1275, 184, 169, 166, 190, 198, 460, - 363, 353, 1275, 50, 1275, 63, 1275, -102, 638, 1275, - -102, 1275, 64, 39, 1275, 30, 2509, -102, 1275, 173, - 2509, -102, 1275, 79, 1275, 1275, 81, 80, 1275, -102, - 71, 149, 32, -102, -102, 1275, -102, 381, 1275, -102, - 73, 1275, 76, 2509, -102, 1275, 142, 2509, -102, -16, - 381, -42, -12, 2411, -39, -102, 2509, -102, 1275, 154, - 2509, 14, 2509, -102, 20, 16, -32, -102, -102, 2509, - -51, 519, -4, 511, 136, 1275, 2509, -2, -35, 395, - -1, -27, 908, 4, 6, -102, 1370, -102, 0, -36, - 27, 1275, 47, 22, 1275, 45, 1275, 21, 17, 1275, - -102, 2313, 144, -102, -102, -102, -102, -102, -102, 1275, - -102, -102, -102, -102, 274, -102, 1275, -21, -102, 2509, - -102, 138, -102, -102, 2509, -102, 1275, 132, 5, -102, - 40, -102, 41, 101, 1275, -102, 38, 34, -102, -38, - -102, 2509, -102, 105, 2509, -102, 245, -102, -102, 96, - 2509, 11, -102, -7, -11, -102, 352, 8, 18, -102, - -102, -102, -102, 1275, 129, 2509, -102, 1275, 130, 2509, - -102, 49, -102, 226, -102, -102, 1275, -102, -102, 362, - -102, -102, -102, 107, 1837, -102, -102, 1649, -102, -102, - 1743, -102, -102, -102, -102, -102, -102, 114, -102, -102, - -102, -102, -102, -102, -102, -102, -102, 2411, -102, -102, - -102, 94, 9, 818, 189, -10, 31, -102, -102, 223, - -102, 191, -102, -102, -102, 300, 178, -102, 1928, -102, - -102, -102, -102, -102, -102, -102, -102, -102, 257, -25, - 381, 195, -22, 305, 240, -102, -6, -102, 818, 127, - -102, -18, 818, -102, -102, 1184, -102, -102, -102, 1092, - -102, -102, 237, -102, 1928, -102, 294, -8, -102, -102, - 176, 381, 19, 1928, -102, 165, -102, 174, -102, 2, - -52, 381, 183, 381, -102, 117, -102, -102, -102, 2019, - 880, 285, 2607, 1555, 3, -102, 522, 35, 453, 108, - 1275, 2509, 51, 23, 475, 54, -17, 700, 7, 43, - -102, 1370, -102, 28, -3, 33, 1275, 37, 15, 1275, - 25, 1275, 1, 13, 124, -102, -102, 29, -102, -102, - 728, -102, 250, -43, 627, -102, -102, 231, 372, -102, - 222, -102, 111, -102, -102, 381, -102, -102, 104, -102, - -102, -102, -102, -102, -102, + 235, 1289, 2663, 2663, 2562, 1005, 64, 90, 103, -105, + 88, 94, 79, 173, -105, 302, 69, -105, -105, 724, + 65, 135, 195, 239, -105, -105, -105, 367, 278, 1289, + -105, -105, -105, 485, -105, -105, 2360, 1772, 1289, 1289, + 1289, -105, 817, 1289, -105, -105, -105, 1289, 1289, -105, + -105, -105, -105, -105, -105, 1289, -105, 1289, 1289, -105, + 1289, 1289, 95, 207, -105, -105, 1289, 1289, 1289, -105, + -105, -105, 202, 1289, 300, 1289, 1289, 1289, 1289, 377, + 1289, 1289, 1289, 1289, 1289, 1289, 253, 1289, 1289, 1289, + 151, 147, 129, 196, 170, 199, 279, 270, 470, 470, + 387, 1289, 53, 1289, 80, 2158, 1289, 1289, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, 128, 1289, -105, -105, 74, 52, -105, 1289, + -105, -105, 1289, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, 1289, 51, 1289, 1289, + 77, 66, 1289, -105, 2158, 1289, 1289, -105, 125, -105, + 48, -105, -105, 47, 451, 374, 83, 87, -105, 397, + -105, 62, 2663, -105, -105, -105, -105, -105, 205, -105, + 415, -105, 68, -105, -105, -105, 86, -105, -105, -105, + 2663, -105, -105, 622, -105, 576, 102, 2562, 75, 89, + 81, 2865, 1289, -105, 70, 1289, 63, -105, 92, 93, + -105, -105, 546, -105, -105, -105, -105, 91, 546, 40, + 45, 2663, 49, -105, -105, 2562, -105, -105, 106, -105, + -105, -105, -105, 121, -105, -105, -105, -105, -105, -105, + 42, 44, 1289, 114, 222, -105, -105, -105, 1481, -105, + 84, 57, 56, -105, 388, 78, 54, 682, 82, 99, + 357, 247, 546, 1289, 295, 1289, 1289, 1289, 1289, 334, + 1289, 1289, 1289, 1289, 1289, 203, 217, 244, 263, 211, + 341, 319, 351, 1289, 56, 1289, 73, 1289, -105, 724, + 1289, -105, 1289, 67, 46, 1289, 61, 2562, -105, 1289, + 136, 2562, -105, 1289, 76, 1289, 1289, 85, 59, 1289, + -105, 71, 133, 72, -105, -105, 1289, -105, 546, 1289, + -105, -53, 1289, -60, 2562, -105, 1289, 143, 2562, -105, + 1289, 132, 2562, 8, 2562, -105, 7, -105, 12, -37, + 107, -105, -105, 2562, -33, 622, 22, 555, 115, 1289, + 2562, 23, -13, 502, 2259, -10, 817, 18, 6, 1387, + 2259, 0, 9, -6, 1289, -4, -23, 1289, 5, 1289, + -25, -27, 2461, -105, -105, -105, -105, -105, -105, 1289, + -105, -105, -105, -3, -1, 21, 2663, 1, -105, 218, + -105, 1289, 4, -105, 111, -105, -105, 26, 466, 16, + 38, 2663, 39, -105, 1289, 110, 37, -105, 55, -105, + 60, 116, 1289, -105, 58, 43, -105, -15, -105, 2562, + -105, 123, 2562, -105, 154, -105, -105, 96, 2562, 32, + -105, 3, 14, -105, 546, -11, 13, -105, -105, -105, + -105, 1289, 126, 2562, -105, 1289, 130, 2562, -105, 15, + -105, 301, -105, -105, 1289, -105, -105, 546, -105, -105, + -45, -12, 2663, -24, -105, -105, 204, 1578, -105, -105, + 1869, -105, -105, 1675, -105, -105, -105, -105, -105, -105, + 101, -105, -105, -105, -105, -105, -105, -105, -105, -105, + 2663, -105, -105, -105, 105, 2, 910, 206, -47, -2, + -105, -105, 246, -105, 214, -105, -105, -105, 364, 232, + -105, 1963, -105, -105, -105, -105, -105, -105, -105, -105, + -105, 191, 24, 394, 172, -18, 384, 215, -105, -30, + -105, 910, 149, -105, -16, 910, -105, -105, 1100, -105, + -105, -105, 1195, -105, -105, 225, -105, 1963, -105, 316, + -17, -105, -105, 269, 418, -5, 1963, -105, 184, -105, + 175, -105, 20, -9, 546, 182, 469, -105, 104, -105, + -105, -105, 2057, 910, 292, 2764, 1772, 10, -105, 35, + 622, 34, 525, 98, 1289, 2562, 50, 17, 536, 19, + 817, 31, 27, 1387, 28, 9, 29, 1289, 30, 11, + 1289, 41, 1289, 33, 36, 137, -105, -105, 25, -105, + -105, 910, -105, 268, -86, 910, -105, -105, 141, 546, + -105, 156, -105, 117, -105, -105, 546, -105, -105, 138, + -105, -105, -105, -105, -105, -105, - -107, 9, -103, 2, 5, 266, 1, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -39, - -107, -107, -107, -107, -107, -107, -107, -107, -107, 86, - -107, -107, -107, 8, -107, -107, -22, 19, 71, 174, - -107, 186, 171, -107, -107, -107, 184, 178, -107, -107, - -107, -107, -107, 144, -107, 124, 150, -107, 165, 161, - -107, -107, -107, -107, 156, 160, 157, -107, -107, -107, - -107, 147, -107, 142, 135, 179, 166, -107, 177, 170, - 117, 72, 134, 92, -107, 75, 94, 66, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, 181, - -107, 106, -107, 143, 78, 55, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -5, -107, -107, -107, -107, -107, 54, -107, -107, - 51, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, 114, -107, 113, 38, -107, -107, - 41, -107, 231, 63, 112, -107, -107, -107, -107, -107, - -107, -107, -107, 30, -107, -107, -107, 52, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, 36, -107, -107, 45, - -107, 42, -107, 40, -107, 80, -107, -107, 77, -107, - 88, -107, -107, -107, 83, 74, -107, -107, -107, -107, - -107, -10, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, 23, -107, -107, -107, -107, 100, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, 4, 223, -107, 230, 236, 222, 205, -107, 127, - 125, 115, 96, 102, -107, -107, -107, -107, -107, -107, - -107, -107, 234, -107, 215, -107, 199, -107, -107, 197, - -107, 190, -107, -107, 163, -107, 90, -107, 0, -107, - -1, -107, 203, -107, 189, 211, -107, -107, 195, -107, - -107, -107, -107, -107, -107, 191, -107, 98, 119, -107, - -107, 95, -107, 81, -107, 79, -107, 82, -107, -107, - 101, -107, -107, -16, -107, -107, 53, -107, 46, -107, - 57, -107, 59, -107, -107, -107, -107, -107, -107, 35, - -107, 33, -107, 39, -107, 89, 67, -107, -107, 58, - -107, -107, 84, -107, -107, -107, 73, -107, -107, -107, - -107, 65, -107, 43, 93, -107, 109, -107, -107, 49, - -107, 47, -107, -107, -107, -107, -107, -107, -107, 50, - -107, -107, -107, -107, -107, -107, 108, -107, -107, 61, - -107, -107, -107, -107, 62, -107, 68, -107, -107, -107, - -107, -107, -23, -107, 69, -107, -19, -107, -107, -107, - -107, 97, -107, -107, 99, -107, -107, -107, -107, -107, - 60, -61, -107, -107, 34, -107, 37, -107, 29, -107, - -107, -107, -107, 32, -107, 76, -107, 44, -107, 56, - -107, -107, -107, -107, -107, -107, 31, -107, -107, 116, - -107, -107, -107, -107, -6, -107, -107, 70, -107, -107, - 64, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, 193, -107, -107, - -107, -107, -107, 7, -107, -107, -107, -107, -107, -107, - -107, -20, -107, -107, -107, -7, -107, -107, 290, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -2, -25, -107, -15, -107, -107, -107, -107, 172, -107, - -107, -107, 287, -107, -107, 288, -107, -107, -107, 291, - -107, -107, -107, -107, 336, -107, -107, 20, -107, -107, - 15, 3, -107, 304, -107, -107, -107, 24, -107, -107, - -107, 28, 21, 26, -107, -107, -107, -107, -107, 320, - 104, -107, 13, 381, -3, -107, 6, -107, 10, -107, - 167, 22, -107, -107, 12, -107, -107, 87, -107, -107, - -107, 25, -107, -107, -107, -107, 11, -107, 14, 85, - -107, 121, -107, -107, -107, -107, -107, 27, -107, -107, - 17, -107, -107, 18, 91, -107, -107, -107, 16, -107, - -107, -107, -107, -107, -107, -4, -107, -107, -107, -107, - -107, -107, -107, -107, -107}; + -108, 0, 79, 128, 132, 301, 2, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -47, + -108, -108, -108, -108, -108, -108, -108, -108, -108, 51, + -108, -108, -108, -3, -108, -108, 8, -23, 12, 78, + 106, -108, 69, 74, -108, -108, -108, 195, 204, -108, + -108, -108, -108, -108, -108, 188, -108, 201, 200, -108, + 127, 129, -108, -108, -108, -108, 140, 137, 133, -108, + -108, -108, -108, 146, -108, 177, 168, 170, 167, -108, + 144, 152, 166, 158, 160, 131, -108, 194, 187, 207, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, 88, -108, 112, -108, 121, 90, -38, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, 32, -108, -108, -108, -108, -108, 26, + -108, -108, 27, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, 102, -108, 103, 41, + -108, -108, 37, -108, 250, 38, 83, -108, -108, -108, + -108, -108, -108, -108, 42, 126, -108, -108, -108, 40, + -108, -108, 43, -108, -108, -108, -108, -108, -108, -108, + 39, -108, -108, -108, -108, -108, -108, -108, -108, -108, + 225, -108, -108, 30, -108, 24, -108, 211, -108, 55, + -108, 77, 60, -108, -108, 66, 34, -108, -108, -108, + -108, -108, -8, -108, -108, -108, -108, -108, 153, -108, + -108, 164, -108, -108, -108, 241, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, 11, -108, -108, -108, -108, -108, 179, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, 19, 259, -108, 255, 228, 240, 246, -108, + 52, 63, 67, 65, 50, -108, -108, -108, -108, -108, + -108, -108, -108, 210, -108, 256, -108, 226, -108, -108, + 252, -108, 161, -108, -108, 268, -108, 197, -108, 5, + -108, 218, -108, 222, -108, 213, 249, -108, -108, 236, + -108, -108, -108, -108, -108, -108, 212, -108, 80, 87, + -108, -108, 86, -108, 98, -108, 61, -108, 245, -108, + 59, -108, 208, -108, 192, -108, -108, -108, -108, -108, + -108, -108, -108, 257, -108, 33, -108, 28, -108, 73, + 71, -108, -108, 36, 57, -108, 62, -108, -108, 46, + 70, -108, -108, -108, 49, -108, 45, 99, -108, 84, + -108, -108, 100, -108, -108, -108, -108, -108, -108, 21, + -108, -108, -108, -108, -108, -108, 118, -108, -108, -108, + -108, 81, -108, -108, -108, -108, -108, -108, 123, -108, + -108, 134, -108, -108, 56, -108, -108, -108, -108, -108, + -58, -108, 47, -108, -57, -108, -108, -108, -108, 265, + -108, -108, 374, -108, -108, -108, -108, -108, 94, -66, + -108, -108, 25, -108, 22, -108, 31, -108, -108, -108, + -108, 58, -108, 229, -108, 35, -108, 235, -108, -108, + -108, -108, -108, -108, 29, -108, -108, 186, -108, -108, + -108, -108, 162, -108, -108, -108, -108, 48, -108, -108, + 163, -108, -108, 44, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + 141, -108, -108, -108, -108, -108, -7, -108, -108, -108, + -108, -108, -108, -108, -19, -108, -108, -108, -6, -108, + -108, 334, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -15, -27, -108, -10, -108, -108, -108, + -108, 159, -108, -108, -108, 176, -108, -108, 319, -108, + -108, -108, 322, -108, -108, -108, -108, 469, -108, -108, + 10, -108, -108, 6, 16, -108, 342, -108, -108, -108, + 17, -108, -108, -108, 15, 3, 9, -108, -108, -108, + -108, -108, 358, 68, -108, 82, 310, 1, -108, -108, + -2, -108, 7, -108, 54, 76, -108, -108, 4, -108, + 64, -108, -108, 23, -108, -108, -108, 18, -108, -5, + 95, -108, 91, -108, -108, -108, -108, -108, -1, -108, + -108, 20, -108, -108, 14, 142, -108, -108, -108, 13, + -108, -108, -108, -108, -108, -108, -11, -108, -108, -108, + -108, -108, -108, -108, -108, -108}; const short QQmlJSGrammar::action_info [] = { - 416, 257, 533, -132, 403, -113, 346, -102, 575, 348, - 572, -121, 531, -103, -121, 545, 345, 430, 342, 348, - 340, 343, 440, 401, 391, 545, 563, 389, 538, 446, - 352, 444, -129, 416, -124, -102, 545, 453, 420, 408, - -124, 431, -132, 424, -126, 424, 424, 620, 440, 457, - -103, 440, -129, 457, -126, 440, 560, 453, -113, 257, - 565, 346, 545, 335, 272, 346, 466, 236, 448, 190, - 149, 164, 141, 170, 99, 511, 272, 409, 257, 312, - 296, 414, 348, 312, 189, 164, 187, 318, 325, 71, - 306, 252, 644, 416, 141, 453, 292, 457, 440, 147, - 304, 71, 443, 183, 179, 141, 0, 141, 0, 172, - 99, 427, 434, 141, 301, 477, 444, 0, 0, 0, - 0, 0, 141, 0, 0, 0, 0, 292, 173, 294, - 58, 294, 542, 251, 331, 542, 333, 141, 141, 101, - 141, 59, 0, 58, 62, 256, 255, 141, 247, 246, - 141, 399, 0, 177, 59, 63, 428, 327, 620, 254, - 314, 101, 141, 478, 315, 640, 639, 242, 241, 249, - 248, 58, 634, 633, 488, 58, 249, 248, 577, 576, - 615, 141, 59, 543, 166, 518, 59, 172, 167, 455, - 459, 85, 418, 86, 85, 142, 86, 249, 248, 413, - 412, 567, 337, 512, 87, 512, 173, 87, 174, 85, - 328, 86, 512, 0, 350, 85, 64, 86, 529, 85, - 512, 86, 87, 85, 512, 86, 568, 566, 87, 64, - 579, 64, 87, 310, 469, 85, 87, 86, 0, 519, - 517, 85, 141, 86, 554, 0, 172, 536, 87, 514, - 85, 514, 86, 141, 87, 85, 545, 86, 514, 0, - 513, 65, 513, 87, 514, 173, 514, 66, 87, 513, - 514, 103, 172, 0, 65, 513, 65, 513, 0, 0, - 66, 513, 66, 637, 636, 0, 0, 470, 468, 172, - 104, 173, 105, 406, 0, 235, 234, 630, 555, 553, - 172, 537, 535, 0, 274, 275, 438, 437, 173, 172, - 406, 631, 629, 635, 0, 580, 73, 74, -90, 173, - 34, 174, 73, 74, 274, 275, 34, -90, 173, 34, - 174, 276, 277, 85, 34, 86, 0, 0, 0, 0, - 0, 628, 0, 75, 76, 0, 87, 0, 0, 75, - 76, 276, 277, 0, 0, 0, 0, 48, 50, 49, - 0, 0, 0, 48, 50, 49, 48, 50, 49, 0, - 0, 48, 50, 49, 0, 0, 279, 280, 0, 0, - 0, 34, 0, 45, 0, 281, 279, 280, 282, 45, - 283, 34, 45, 279, 280, 281, 34, 45, 282, 0, - 283, 34, 281, 279, 280, 282, 0, 283, 0, 0, - 34, 0, 281, 78, 79, 282, 0, 283, 48, 50, - 49, 80, 81, 0, 34, 82, 0, 83, 48, 50, - 49, -345, 0, 48, 50, 49, 0, 0, 48, 50, - 49, 0, 0, 0, 45, 0, 0, 48, 50, 49, - 0, 0, 0, 0, 45, 0, 0, 78, 79, 45, - 0, 48, 50, 49, 45, 80, 81, 78, 79, 82, - 0, 83, 0, 45, 0, 80, 81, 78, 79, 82, - 0, 83, 34, 279, 280, 80, 81, 45, 0, 82, - 34, 83, 281, 34, 0, 282, 0, 283, 6, 5, - 4, 1, 3, 2, 34, 0, 0, 0, 0, 0, - 0, -345, 0, 0, 245, 244, 0, 0, 0, 48, - 50, 49, 245, 244, 0, 240, 239, 48, 50, 49, - 48, 50, 49, 0, 0, 0, 0, 0, 0, 0, - 34, 48, 50, 49, 0, 45, 0, 0, 34, 0, - 0, 34, 0, 45, 0, 0, 45, 0, 0, 0, - 0, 0, 78, 79, 0, 0, 0, 45, 0, 0, - 80, 81, 245, 244, 82, 0, 83, 48, 50, 49, - 240, 239, 151, 240, 239, 48, 50, 49, 48, 50, - 49, 0, 152, 0, 0, 0, 153, 0, 0, 0, - 0, 0, 0, 45, 0, 154, 0, 155, 0, 0, - 308, 45, 0, 0, 45, 0, 0, 0, 156, 0, - 157, 62, 0, 0, 0, 0, 0, 0, 158, 0, - 0, 159, 63, 0, 0, 0, 0, 160, 0, 30, - 31, 151, 0, 161, 0, 0, 0, 0, 0, 33, - 0, 152, 0, 0, 0, 153, 34, 0, 0, 162, - 35, 36, 0, 37, 154, 0, 155, 0, 0, 0, - 503, 0, 0, 0, 44, 0, 0, 156, 0, 157, - 62, 0, 0, 0, 0, 0, 0, 158, 0, 0, - 159, 63, 51, 48, 50, 49, 160, 52, 0, 0, - 0, 0, 161, 0, 0, 0, 0, 0, 43, 54, - 32, 0, 30, 31, 40, 0, 0, 0, 162, 45, - 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, - 0, 0, 0, 35, 36, 0, 37, 0, 0, 0, - 30, 31, 0, 41, 0, 0, 0, 44, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, - 0, 35, 36, 0, 37, 51, 48, 50, 49, 0, - 52, 503, 0, 0, 0, 44, 0, 0, 0, 0, - 0, 43, 54, 32, 0, 0, 0, 40, 0, 0, - 0, 0, 45, 51, 48, 50, 49, 0, 52, 0, - 0, 0, 30, 31, 0, 0, 0, 0, 0, 43, - 54, 32, 33, 0, 0, 40, 0, 0, 0, 34, - 45, 0, 0, 35, 36, 0, 37, 0, 0, 0, - 30, 31, 0, 41, 0, 0, 0, 44, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, - 0, 35, 36, 0, 37, 51, 48, 50, 49, 0, - 52, 503, 0, 0, 0, 44, 0, 0, 0, 0, - 0, 43, 54, 32, 0, 0, 0, 40, 0, 0, - 0, 0, 45, 51, 48, 50, 49, 0, 52, 0, - 0, 0, 30, 31, 0, 0, 0, 0, 0, 43, - 54, 32, 33, 0, 0, 40, 0, 0, 0, 34, - 45, 0, 0, 35, 36, 0, 37, 0, 0, 0, - 30, 31, 0, 503, 0, 0, 0, 44, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, - 0, 35, 36, 0, 37, 51, 48, 50, 49, 0, - 52, 41, 0, 0, 0, 44, 0, 0, 0, 0, - 0, 43, 54, 32, 0, 0, 0, 40, 0, 0, - 0, 0, 45, 51, 48, 50, 49, 0, 52, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, - 54, 32, 0, 0, 0, 40, 0, 0, 0, 0, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 502, 0, 30, 31, 0, 0, 0, 0, 0, 0, - 0, 0, 215, 0, 0, 0, 0, 0, 0, 34, - 0, 0, 0, 35, 36, 0, 37, 0, 0, 0, - 0, 0, 0, 503, 0, 0, 0, 44, 0, 0, + 344, -127, 576, -129, 551, 631, 546, -105, 342, 465, + 448, 461, -132, -106, 245, 481, 558, 558, 398, 573, + 392, 482, 402, 268, 354, -124, 350, 578, 585, -135, + -116, 484, 474, 404, -106, -105, -127, -129, -124, 454, + 438, -135, 245, 558, 448, 424, 448, 448, -132, 456, + 439, 588, 452, 268, 406, 350, 408, -116, 558, 405, + 432, 544, 418, 432, 413, 432, 329, 166, 524, 461, + 428, 421, 465, 172, 283, 143, 420, 143, 241, 166, + 262, 73, 149, 185, 323, 283, 307, 323, 336, 73, + 655, 189, 0, 245, 423, 192, 448, 0, 0, 101, + 240, 0, 451, 346, 243, 303, 424, 315, 181, 143, + 0, 268, 151, 0, 399, 312, 452, 350, 143, 261, + 174, 317, 143, 244, 303, 184, 435, 238, 461, 465, + 442, 143, 103, 143, 143, 305, 143, 64, 143, 175, + 143, 338, 101, 60, 143, 555, 0, 191, 65, 325, + 0, 143, 0, 326, 61, 631, 174, 555, 103, 259, + 258, 501, 143, 259, 258, 590, 589, 252, 251, 60, + 426, 436, 416, 415, 264, 175, 259, 258, 645, 644, + 61, 179, 257, 256, 144, 168, 463, 60, 105, 169, + 467, 60, 352, 626, 339, 87, 321, 88, 61, 651, + 650, 525, 61, 348, 525, 556, 174, 106, 89, 107, + 174, 525, 490, 143, 66, 446, 445, 648, 647, 66, + 580, 87, 549, 88, 87, 175, 88, 411, 87, 175, + 88, 176, 567, 174, 89, 542, 87, 89, 88, 531, + 0, 89, 87, 525, 88, 581, 579, 527, 646, 89, + 527, 66, 175, 592, 411, 89, 0, 527, 526, 67, + 491, 526, 0, 0, 67, 68, 236, 235, 526, 87, + 68, 88, 87, 0, 88, 0, 550, 548, 87, 558, + 88, 527, 89, 267, 265, 89, 568, 566, 87, 527, + 88, 89, 526, 532, 530, 87, 67, 88, 525, 0, + 526, 89, 68, 87, 87, 88, 88, 174, 89, 477, + 0, 266, 0, 285, 286, 641, 89, 89, 75, 76, + 75, 76, 0, 0, 0, -92, 175, 0, 176, 642, + 640, 174, 6, 5, 4, 1, 3, 2, 0, 593, + 287, 288, 290, 291, 527, 77, 78, 77, 78, -92, + 175, 292, 176, 0, 293, 526, 294, 290, 291, 0, + 639, 0, 478, 476, 290, 291, 292, 0, 0, 293, + 0, 294, 0, 292, 290, 291, 293, 0, 294, 0, + 290, 291, 0, 292, 0, 0, 293, 0, 294, 292, + 80, 81, 293, 35, 294, 0, 0, 0, 82, 83, + 80, 81, 84, 35, 85, 0, 285, 286, 82, 83, + 80, 81, 84, 35, 85, 0, 0, 0, 82, 83, + 0, 0, 84, 35, 85, 0, 35, 0, 0, 0, + 49, 52, 50, 287, 288, 0, 0, 0, 0, 0, + 49, 52, 50, 0, 35, 0, 0, 35, 0, 0, + 49, 52, 50, 0, 0, 0, 0, 46, 34, 51, + 49, 52, 50, 49, 52, 50, 0, 46, 34, 51, + 0, 0, 0, 0, 0, 0, 0, 46, 34, 51, + 35, 49, 52, 50, 49, 52, 50, 46, 34, 51, + 46, 34, 51, 80, 81, 35, 0, 0, 35, 0, + 0, 82, 83, 0, 0, 84, 0, 85, 46, 34, + 51, 46, 34, 51, 35, 0, 0, 49, 52, 50, + 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 35, 49, 52, 50, 49, 52, 50, 184, 0, + 0, 0, 0, 0, 46, 34, 51, 0, 0, 0, + 0, 49, 52, 50, 35, 0, 0, 0, 0, 46, + 34, 51, 46, 34, 51, 35, 0, 0, 49, 52, + 50, 0, 184, 0, 0, 35, 0, 0, 46, 34, + 51, 0, 0, 0, 35, 0, 255, 254, 0, 0, + 0, 49, 52, 50, 0, 46, 34, 51, 0, 0, + 0, 0, 49, 52, 50, 35, 0, 0, 0, 0, + 0, 0, 49, 52, 50, 0, 255, 254, 46, 34, + 51, 49, 52, 50, 0, 0, 0, 0, 0, 46, + 34, 51, 0, 0, 0, 0, 0, 255, 254, 46, + 34, 51, 49, 52, 50, 0, 0, 0, 46, 34, + 51, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, + 34, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 250, 249, 153, 0, 0, 49, 52, + 50, 0, 0, 0, 0, 154, 0, 0, 0, 155, + 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, + 157, 0, 0, 319, 0, 46, 34, 51, 0, 0, + 0, 158, 0, 159, 64, 0, 0, 153, 0, 0, + 0, 160, 0, 0, 161, 65, 0, 154, 0, 0, + 162, 155, 0, 0, 0, 0, 163, 0, 0, 0, + 156, 0, 157, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 164, 158, 0, 159, 64, 0, 0, 0, + 0, 0, 0, 160, 0, 0, 161, 65, 0, 0, + 0, 0, 162, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 504, 506, 505, 0, - 52, 0, 0, 0, 0, 226, 0, 0, 0, 0, - 0, 43, 54, 32, 210, 0, 0, 40, 0, 0, + 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 36, 37, 0, 38, 0, 0, 0, 0, 0, 0, + 42, 0, 0, 0, 45, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 49, 52, 50, 0, 54, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 44, 56, + 32, 0, 0, 0, 41, 0, 0, 0, 0, 0, + 46, 34, 51, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 30, 31, 0, 0, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 0, 0, 35, + 0, 0, 0, 36, 37, 0, 38, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 0, 45, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 53, 49, 52, 50, 0, + 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 44, 56, 32, 0, 0, 0, 41, 0, 0, + 0, 0, 0, 46, 34, 51, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 515, 0, 30, 31, 0, + 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 36, 37, + 0, 38, 0, 0, 0, 0, 0, 0, 516, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 502, 0, 30, 31, 0, 0, 0, 0, - 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, - 0, 34, 0, 0, 0, 35, 36, 0, 37, 0, - 0, 0, 0, 0, 0, 503, 0, 0, 0, 44, - 0, 0, 0, 0, 0, 0, 0, 550, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 504, 506, - 505, 0, 52, 0, 0, 0, 0, 226, 0, 0, - 0, 0, 0, 43, 54, 32, 210, 0, 0, 40, - 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 502, 0, 30, 31, 0, 0, - 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, - 0, 0, 0, 34, 0, 0, 0, 35, 36, 0, - 37, 0, 0, 0, 0, 0, 0, 503, 0, 0, - 0, 44, 0, 0, 0, 0, 0, 0, 0, 547, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 504, 506, 505, 0, 52, 0, 0, 0, 0, 226, - 0, 0, 0, 0, 0, 43, 54, 32, 210, 0, - 0, 40, 0, 0, 0, 0, 45, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 29, 30, 31, 0, - 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, - 0, 0, 0, 0, 34, 0, 0, 0, 35, 36, - 0, 37, 0, 0, 0, 38, 0, 39, 41, 42, - 0, 0, 44, 0, 0, 0, 46, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 48, 50, 49, 0, 52, 0, 53, 0, 55, - 0, 56, 0, 0, 0, 0, 43, 54, 32, 0, - 0, 0, 40, 0, 0, 0, 0, 45, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -122, 0, 0, - 0, 29, 30, 31, 0, 0, 0, 0, 0, 0, - 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, - 0, 0, 0, 35, 36, 0, 37, 0, 0, 0, - 38, 0, 39, 41, 42, 0, 0, 44, 0, 0, - 0, 46, 0, 47, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 48, 50, 49, 0, - 52, 0, 53, 0, 55, 0, 56, 0, 0, 0, - 0, 43, 54, 32, 0, 0, 0, 40, 0, 0, + 53, 517, 519, 518, 0, 54, 0, 0, 0, 0, + 227, 0, 0, 0, 0, 0, 44, 56, 32, 214, + 0, 0, 41, 0, 0, 0, 0, 0, 46, 34, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 515, 0, 30, 31, 0, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 0, 0, 35, + 0, 0, 0, 36, 37, 0, 38, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 0, 45, 0, 0, + 0, 0, 0, 0, 0, 560, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 53, 517, 519, 518, 0, + 54, 0, 0, 0, 0, 227, 0, 0, 0, 0, + 0, 44, 56, 32, 214, 0, 0, 41, 0, 0, + 0, 0, 0, 46, 34, 51, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 515, 0, 30, 31, 0, + 0, 0, 0, 0, 0, 0, 0, 219, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 36, 37, + 0, 38, 0, 0, 0, 0, 0, 0, 516, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, + 563, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 517, 519, 518, 0, 54, 0, 0, 0, 0, + 227, 0, 0, 0, 0, 0, 44, 56, 32, 214, + 0, 0, 41, 0, 0, 0, 0, 0, 46, 34, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 35, 0, + 0, 0, 36, 37, 0, 38, 0, 0, 0, 39, + 0, 40, 42, 43, 0, 0, 45, 0, 0, 0, + 47, 0, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 49, 52, 50, 0, 54, + 0, 55, 0, 57, 0, 58, 0, 0, 0, 0, + 44, 56, 32, 0, 0, 0, 41, 0, 0, 0, + 0, 0, 46, 34, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -125, 0, 0, 0, 29, 30, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 36, 37, 0, 38, 0, 0, 0, 39, 0, 40, + 42, 43, 0, 0, 45, 0, 0, 0, 47, 0, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 49, 52, 50, 0, 54, 0, 55, + 0, 57, 0, 58, 0, 0, 0, 0, 44, 56, + 32, 0, 0, 0, 41, 0, 0, 0, 0, 0, + 46, 34, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, - 34, 0, 0, 0, 35, 36, 0, 37, 0, 0, - 0, 38, 0, 39, 41, 42, 0, 0, 44, 0, - 0, 0, 46, 0, 47, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 48, 50, 49, - 0, 52, 0, 53, 0, 55, 271, 56, 0, 0, - 0, 0, 43, 54, 32, 0, 0, 0, 40, 0, - 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 475, 0, 0, 29, 30, 31, 0, + 35, 0, 0, 0, 36, 37, 0, 38, 0, 0, + 0, 39, 0, 40, 42, 43, 0, 0, 45, 0, + 0, 0, 47, 0, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 53, 49, 52, 50, + 0, 54, 0, 55, 0, 57, 282, 58, 0, 0, + 0, 0, 44, 56, 32, 0, 0, 0, 41, 0, + 0, 0, 0, 0, 46, 34, 51, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 496, 0, 0, 29, + 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 35, 0, 0, + 0, 36, 37, 0, 38, 0, 0, 0, 39, 0, + 40, 42, 43, 0, 0, 45, 0, 0, 0, 47, + 0, 48, 0, 0, 499, 0, 0, 0, 0, 0, + 0, 0, 0, 53, 49, 52, 50, 0, 54, 0, + 55, 0, 57, 0, 58, 0, 0, 0, 0, 44, + 56, 32, 0, 0, 0, 41, 0, 0, 0, 0, + 0, 46, 34, 51, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 496, 0, 0, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, - 0, 0, 0, 0, 34, 0, 0, 0, 35, 36, - 0, 37, 0, 0, 0, 38, 0, 39, 41, 42, - 0, 0, 44, 0, 0, 0, 46, 0, 47, 0, - 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 48, 50, 49, 0, 52, 0, 53, 0, 55, - 0, 56, 0, 0, 0, 0, 43, 54, 32, 0, - 0, 0, 40, 0, 0, 0, 0, 45, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 475, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 36, 37, + 0, 38, 0, 0, 0, 39, 0, 40, 42, 43, + 0, 0, 45, 0, 0, 0, 47, 0, 48, 0, + 0, 497, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 49, 52, 50, 0, 54, 0, 55, 0, 57, + 0, 58, 0, 0, 0, 0, 44, 56, 32, 0, + 0, 0, 41, 0, 0, 0, 0, 0, 46, 34, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 488, 0, 0, 29, 30, 31, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, + 0, 35, 0, 0, 0, 36, 37, 0, 38, 0, + 0, 0, 39, 0, 40, 42, 43, 0, 0, 45, + 0, 0, 0, 47, 0, 48, 0, 0, 489, 0, + 0, 0, 0, 0, 0, 0, 0, 53, 49, 52, + 50, 0, 54, 0, 55, 0, 57, 0, 58, 0, + 0, 0, 0, 44, 56, 32, 0, 0, 0, 41, + 0, 0, 0, 0, 0, 46, 34, 51, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 488, 0, 0, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, - 0, 0, 35, 36, 0, 37, 0, 0, 0, 38, - 0, 39, 41, 42, 0, 0, 44, 0, 0, 0, - 46, 0, 47, 0, 0, 481, 0, 0, 0, 0, - 0, 0, 0, 0, 51, 48, 50, 49, 0, 52, - 0, 53, 0, 55, 0, 56, 0, 0, 0, 0, - 43, 54, 32, 0, 0, 0, 40, 0, 0, 0, - 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 483, 0, 0, 29, 30, 31, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 35, 0, + 0, 0, 36, 37, 0, 38, 0, 0, 0, 39, + 0, 40, 42, 43, 0, 0, 45, 0, 0, 0, + 47, 0, 48, 0, 0, 494, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 49, 52, 50, 0, 54, + 0, 55, 0, 57, 0, 58, 0, 0, 0, 0, + 44, 56, 32, 0, 0, 0, 41, 0, 0, 0, + 0, 0, 46, 34, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, - 0, 0, 34, 0, 0, 0, 35, 36, 0, 37, - 0, 0, 0, 38, 0, 39, 41, 42, 0, 0, - 44, 0, 0, 0, 46, 0, 47, 0, 0, 484, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 48, - 50, 49, 0, 52, 0, 53, 0, 55, 0, 56, - 0, 0, 0, 0, 43, 54, 32, 0, 0, 0, - 40, 0, 0, 0, 0, 45, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 483, 0, 0, 29, 30, + 0, 0, 35, 220, 0, 0, 221, 37, 0, 38, + 0, 0, 0, 39, 0, 40, 42, 43, 0, 0, + 45, 0, 0, 0, 47, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 223, 0, 0, 0, 53, 49, + 52, 50, 224, 54, 0, 55, 226, 57, 0, 58, + 0, 229, 0, 0, 44, 56, 32, 0, 0, 0, + 41, 0, 0, 0, 0, 0, 46, 34, 51, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 33, - 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, - 35, 36, 0, 37, 0, 0, 0, 38, 0, 39, - 41, 42, 0, 0, 44, 0, 0, 0, 46, 0, - 47, 0, 0, 486, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 48, 50, 49, 0, 52, 0, 53, - 0, 55, 0, 56, 0, 0, 0, 0, 43, 54, - 32, 0, 0, 0, 40, 0, 0, 0, 0, 45, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, - 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 34, 217, 0, - 0, 218, 36, 0, 37, 0, 0, 0, 38, 0, - 39, 41, 42, 0, 0, 44, 0, 0, 0, 46, - 0, 47, 0, 0, 0, 0, 0, 0, 0, 221, - 0, 0, 0, 51, 48, 50, 49, 223, 52, 0, - 53, 225, 55, 0, 56, 0, 228, 0, 0, 43, - 54, 32, 0, 0, 0, 40, 0, 0, 0, 0, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 0, 0, 0, 34, 217, - 0, 0, 582, 583, 0, 37, 0, 0, 0, 38, - 0, 39, 41, 42, 0, 0, 44, 0, 0, 0, - 46, 0, 47, 0, 0, 0, 0, 0, 0, 0, - 221, 0, 0, 0, 51, 48, 50, 49, 223, 52, - 0, 53, 225, 55, 0, 56, 0, 228, 0, 0, - 43, 54, 32, 0, 0, 0, 40, 0, 0, 0, - 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 110, 111, 0, 0, 113, 115, 116, 0, - 0, 117, 0, 118, 0, 0, 0, 120, 121, 122, - 0, 0, 0, 0, 0, 0, 34, 123, 124, 125, + 0, 0, 0, 0, 0, 0, 35, 220, 0, 0, + 595, 596, 0, 38, 0, 0, 0, 39, 0, 40, + 42, 43, 0, 0, 45, 0, 0, 0, 47, 0, + 48, 0, 0, 0, 0, 0, 0, 0, 223, 0, + 0, 0, 53, 49, 52, 50, 224, 54, 0, 55, + 226, 57, 0, 58, 0, 229, 0, 0, 44, 56, + 32, 0, 0, 0, 41, 0, 0, 0, 0, 0, + 46, 34, 51, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 111, 112, 113, 0, 0, 115, 117, 118, + 0, 0, 119, 0, 120, 0, 0, 0, 122, 123, + 124, 0, 0, 0, 0, 0, 0, 35, 125, 126, + 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, + 0, 0, 0, 0, 49, 52, 50, 132, 133, 134, + 0, 136, 137, 138, 139, 140, 141, 0, 0, 129, + 135, 121, 114, 116, 130, 0, 0, 0, 0, 0, + 0, 46, 34, 51, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 111, 112, 113, 0, 0, 115, 117, + 118, 0, 0, 119, 0, 120, 0, 0, 0, 122, + 123, 124, 0, 0, 0, 0, 0, 0, 35, 125, + 126, 127, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 128, 0, 0, 0, 395, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 131, 0, + 0, 0, 0, 0, 397, 49, 52, 50, 132, 133, + 134, 0, 136, 137, 138, 139, 140, 141, 0, 0, + 129, 135, 121, 114, 116, 130, 0, 0, 0, 0, + 0, 0, 46, 34, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 111, 112, 113, 0, 0, 115, + 117, 118, 0, 0, 119, 0, 120, 0, 0, 0, + 122, 123, 124, 0, 0, 0, 0, 0, 0, 35, + 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 128, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 397, 49, 52, 50, 132, + 133, 134, 0, 136, 137, 138, 139, 140, 141, 0, + 0, 129, 135, 121, 114, 116, 130, 0, 0, 0, + 0, 0, 0, 46, 374, 380, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 111, 112, 113, 0, 0, + 115, 117, 118, 0, 0, 119, 0, 120, 0, 0, + 0, 122, 123, 124, 0, 0, 0, 0, 0, 0, + 35, 125, 126, 127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 0, 0, 0, 395, 0, + 0, 0, 0, 0, 0, 0, 396, 0, 0, 0, + 131, 0, 0, 0, 0, 0, 397, 49, 52, 50, + 132, 133, 134, 0, 136, 137, 138, 139, 140, 141, + 0, 0, 129, 135, 121, 114, 116, 130, 0, 0, + 0, 0, 0, 0, 46, 374, 380, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, + 0, 215, 0, 29, 30, 31, 217, 0, 0, 0, + 0, 0, 0, 218, 33, 0, 0, 0, 0, 0, + 0, 35, 220, 0, 0, 221, 37, 0, 38, 0, + 0, 0, 39, 0, 40, 42, 43, 0, 0, 45, + 0, 0, 0, 47, 0, 48, 0, 0, 0, 0, + 0, 222, 0, 223, 0, 0, 0, 53, 49, 52, + 50, 224, 54, 225, 55, 226, 57, 227, 58, 228, + 229, 0, 0, 44, 56, 32, 214, 216, 0, 41, + 0, 0, 0, 0, 0, 46, 34, 51, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 213, 0, 0, + 0, 0, 215, 0, 29, 30, 31, 217, 0, 0, + 0, 0, 0, 0, 218, 219, 0, 0, 0, 0, + 0, 0, 35, 220, 0, 0, 221, 37, 0, 38, + 0, 0, 0, 39, 0, 40, 42, 43, 0, 0, + 45, 0, 0, 0, 47, 0, 48, 0, 0, 0, + 0, 0, 222, 0, 223, 0, 0, 0, 53, 49, + 52, 50, 224, 54, 225, 55, 226, 57, 227, 58, + 228, 229, 0, 0, 44, 56, 32, 214, 216, 0, + 41, 0, 0, 0, 0, 0, 46, 34, 51, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 600, 112, + 113, 0, 0, 602, 117, 604, 30, 31, 605, 0, + 120, 0, 0, 0, 122, 607, 608, 0, 0, 0, + 0, 0, 0, 35, 609, 126, 127, 221, 37, 0, + 38, 0, 0, 0, 39, 0, 40, 610, 43, 0, + 0, 612, 0, 0, 0, 47, 0, 48, 0, 0, + 0, 0, 0, 613, 0, 223, 0, 0, 0, 614, + 49, 52, 50, 615, 616, 617, 55, 619, 620, 621, + 622, 623, 624, 0, 0, 611, 618, 606, 601, 603, + 130, 41, 0, 0, 0, 0, 0, 46, 374, 380, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 365, + 112, 113, 0, 0, 367, 117, 369, 30, 31, 370, + 0, 120, 0, 0, 0, 122, 372, 373, 0, 0, + 0, 0, 0, 0, 35, 375, 126, 127, 221, 37, + 0, 38, 0, 0, 0, 39, 0, 40, 376, 43, + 0, 0, 378, 0, 0, 0, 47, 0, 48, 0, + -271, 0, 0, 0, 379, 0, 223, 0, 0, 0, + 381, 49, 52, 50, 382, 383, 384, 55, 386, 387, + 388, 389, 390, 391, 0, 0, 377, 385, 371, 366, + 368, 130, 41, 0, 0, 0, 0, 0, 46, 374, + 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 565, 148, 545, 16, 649, 547, 541, 469, 320, 529, + 528, 630, 183, 248, 263, 500, 485, 447, 629, 183, + 627, 444, 253, 393, 587, 652, 313, 152, 643, 572, + 591, 575, 586, 638, 331, 574, 453, 455, 466, 253, + 437, 178, 433, 253, 0, 248, 584, 458, 248, 313, + 441, 183, 444, 457, 237, 190, 447, 188, 206, 425, + 400, 462, 351, 313, 347, 150, 165, 447, 475, 444, + 183, 145, 393, 260, 0, 409, 173, 409, 260, 362, + 171, 514, 409, 495, 362, 393, 206, 498, 628, 313, + 313, 206, 356, 142, 206, 331, 362, 599, 403, 0, + 345, 62, 62, 62, 182, 62, 299, 182, 295, 206, + 410, 417, 410, 206, 62, 393, 62, 410, 62, 296, + 148, 298, 148, 297, 62, 62, 182, 504, 412, 62, + 180, 502, 511, 206, 512, 62, 108, 460, 188, 62, + 394, 188, 62, 206, 460, 247, 62, 206, 459, 206, + 62, 102, 459, 62, 62, 514, 206, 62, 653, 503, + 407, 343, 341, 62, 313, 110, 419, 167, 188, 187, + 170, 340, 514, 104, 0, 553, 422, 206, 62, 206, + 62, 63, 62, 72, 62, 510, 71, 97, 62, 514, + 70, 62, 557, 69, 355, 62, 239, 62, 493, 318, + 86, 469, 492, 62, 483, 74, 242, 206, 93, 62, + 353, 62, 206, 260, 95, 0, 96, 62, 62, 62, + 322, 62, 94, 206, 100, 98, 206, 99, 62, 247, + 277, 464, 0, 206, 79, 281, 314, 468, 62, 62, + 206, 507, 91, 246, 206, 62, 62, 349, 505, 90, + 206, 62, 62, 460, 459, 62, 206, 506, 62, 401, + 206, 62, 92, 309, 62, 108, 281, 362, 281, 281, + 0, 313, 206, 62, 304, 479, 0, 309, 281, 62, + 206, 327, 281, 0, 281, 337, 300, 309, 324, 0, + 0, 62, 281, 0, 110, 177, 281, 62, 301, 308, + 309, 0, 281, 309, 302, 281, 62, 62, 281, 330, + 62, 281, 281, 289, 514, 281, 0, 0, 306, 284, + 0, 522, 328, 569, 561, 311, 553, 564, 625, 0, + 0, 0, 514, 513, 523, 514, 0, 0, 0, 522, + 0, 0, 522, 316, 0, 0, 0, 0, 0, 485, + 440, 513, 523, 0, 513, 523, 533, 534, 535, 536, + 540, 537, 538, 577, 533, 534, 535, 536, 540, 537, + 538, 594, 0, 0, 0, 0, 362, 0, 597, 598, + 533, 534, 535, 536, 540, 537, 538, 0, 0, 206, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 48, 50, 49, 130, 131, 132, 0, - 134, 135, 136, 137, 138, 139, 0, 0, 127, 133, - 119, 112, 114, 128, 0, 0, 0, 0, 0, 45, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, - 110, 111, 0, 0, 113, 115, 116, 0, 0, 117, - 0, 118, 0, 0, 0, 120, 121, 122, 0, 0, - 0, 0, 0, 0, 393, 123, 124, 125, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, - 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, - 398, 395, 397, 0, 130, 131, 132, 0, 134, 135, - 136, 137, 138, 139, 0, 0, 127, 133, 119, 112, - 114, 128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 109, 110, 111, - 0, 0, 113, 115, 116, 0, 0, 117, 0, 118, - 0, 0, 0, 120, 121, 122, 0, 0, 0, 0, - 0, 0, 393, 123, 124, 125, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, - 394, 0, 0, 0, 0, 0, 0, 0, 396, 0, - 0, 0, 129, 0, 0, 0, 0, 0, 398, 395, - 397, 0, 130, 131, 132, 0, 134, 135, 136, 137, - 138, 139, 0, 0, 127, 133, 119, 112, 114, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 209, 0, 0, 0, 0, - 211, 0, 29, 30, 31, 213, 0, 0, 0, 0, - 0, 0, 214, 215, 0, 0, 0, 0, 0, 0, - 216, 217, 0, 0, 218, 36, 0, 37, 0, 0, - 0, 38, 0, 39, 41, 42, 0, 0, 44, 0, - 0, 0, 46, 0, 47, 0, 0, 0, 0, 0, - 220, 0, 221, 0, 0, 0, 51, 219, 222, 49, - 223, 52, 224, 53, 225, 55, 226, 56, 227, 228, - 0, 0, 43, 54, 32, 210, 212, 0, 40, 0, - 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 209, 0, 0, 0, 0, 211, 0, - 29, 30, 31, 213, 0, 0, 0, 0, 0, 0, - 214, 33, 0, 0, 0, 0, 0, 0, 216, 217, - 0, 0, 218, 36, 0, 37, 0, 0, 0, 38, - 0, 39, 41, 42, 0, 0, 44, 0, 0, 0, - 46, 0, 47, 0, 0, 0, 0, 0, 220, 0, - 221, 0, 0, 0, 51, 219, 222, 49, 223, 52, - 224, 53, 225, 55, 226, 56, 227, 228, 0, 0, - 43, 54, 32, 210, 212, 0, 40, 0, 0, 0, - 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 586, 110, 111, 0, 0, 588, 115, 590, 30, - 31, 591, 0, 118, 0, 0, 0, 120, 593, 594, - 0, 0, 0, 0, 0, 0, 595, 596, 124, 125, - 218, 36, 0, 37, 0, 0, 0, 38, 0, 39, - 597, 42, 0, 0, 599, 0, 0, 0, 46, 0, - 47, 0, 0, 0, 0, 0, 601, 0, 221, 0, - 0, 0, 603, 600, 602, 49, 604, 605, 606, 53, - 608, 609, 610, 611, 612, 613, 0, 0, 598, 607, - 592, 587, 589, 128, 40, 0, 0, 0, 0, 45, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 110, 111, 0, 0, 363, 115, 365, 30, 31, 366, - 0, 118, 0, 0, 0, 120, 368, 369, 0, 0, - 0, 0, 0, 0, 370, 371, 124, 125, 218, 36, - 0, 37, 0, 0, 0, 38, 0, 39, 372, 42, - 0, 0, 374, 0, 0, 0, 46, 0, 47, 0, - -268, 0, 0, 0, 376, 0, 221, 0, 0, 0, - 378, 375, 377, 49, 379, 380, 381, 53, 383, 384, - 385, 386, 387, 388, 0, 0, 373, 382, 367, 362, - 364, 128, 40, 0, 0, 0, 0, 45, 0, 0, - 0, 0, 0, 0, 0, 0, 0, - - 534, 311, 497, 309, 532, 461, 498, 499, 516, 515, - 619, 638, 16, 552, 436, 358, 616, 472, 562, 320, - 528, 238, 487, 182, 250, 243, 253, 182, 302, 641, - 627, 632, 150, 485, 143, 454, 439, 402, 445, 559, - 237, 574, 250, 578, 561, 186, 618, 458, 238, 349, - 573, 449, 447, 571, 243, 347, 450, 243, 460, 351, - 238, 353, 358, 410, 415, 439, 176, 188, 436, 250, - 467, 417, 433, 182, 425, 429, 302, 169, 456, 358, - 171, 140, 336, 334, 338, 344, 436, 392, 390, 400, - 163, 302, 307, 148, 146, 339, 439, 404, 302, 358, - 404, 358, 0, 482, 501, 480, 0, 642, 0, 479, - 0, 0, 0, 320, 60, 0, 186, 501, 90, 60, - 60, 489, 302, 60, 617, 93, 0, 88, 0, 405, - 0, 461, 405, 60, 60, 451, 180, 60, 0, 180, - 60, 60, 60, 451, 60, 95, 89, 146, 266, 287, - 60, 146, 407, 270, 60, 288, 178, 60, 106, 452, - 0, 60, 60, 60, 102, 60, 302, 332, 286, 60, - 92, 452, 60, 60, 451, 60, 165, 168, 285, 432, - 284, 435, 60, 60, 108, 501, 329, 94, 540, 96, - 60, 330, 60, 302, 494, 60, 77, 237, 60, 404, - 452, 341, 471, 72, 60, 60, 67, 69, 60, 60, - 68, 0, 70, 60, 60, 60, 61, 180, 60, 60, - 98, 491, 60, 91, 490, 60, 60, 60, 493, 60, - 84, 405, 60, 97, 492, 305, 0, 60, 0, 298, - 0, 100, 270, 298, 270, 298, 106, 298, 270, 0, - 270, 60, 270, 60, 316, 0, 270, 0, 270, 298, - 291, 326, 303, 60, 270, 319, 313, 300, 270, 297, - 60, 60, 108, 175, 295, 270, 270, 290, 60, 501, - 273, 317, 60, 270, 60, 278, 509, 270, 0, 270, - 0, 289, 0, 548, 0, 293, 551, 0, 500, 510, - 501, 501, 0, 544, 501, 0, 0, 0, 509, 0, - 0, 509, 520, 521, 522, 523, 527, 524, 525, 0, - 500, 510, 0, 500, 510, 564, 520, 521, 522, 523, - 527, 524, 525, 581, 0, 0, 0, 0, 0, 0, - 584, 585, 520, 521, 522, 523, 527, 524, 525, 556, - 0, 0, 0, 0, 0, 0, 557, 558, 520, 521, - 522, 523, 527, 524, 525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 556, 0, 0, 540, 0, 614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 569, 0, 0, 0, 0, 0, 0, 570, + 571, 533, 534, 535, 536, 540, 537, 538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0}; const short QQmlJSGrammar::action_check [] = { - 36, 36, 24, 7, 55, 7, 7, 7, 60, 36, - 8, 7, 37, 7, 7, 33, 55, 55, 60, 36, - 36, 33, 33, 55, 8, 33, 7, 7, 34, 36, - 16, 20, 7, 36, 7, 7, 33, 36, 33, 60, - 7, 7, 7, 5, 7, 5, 5, 90, 33, 36, - 7, 33, 7, 36, 7, 33, 66, 36, 7, 36, - 29, 7, 33, 31, 1, 7, 17, 55, 60, 33, - 60, 2, 8, 7, 48, 66, 1, 7, 36, 2, - 8, 7, 36, 2, 60, 2, 8, 7, 17, 1, - 60, 36, 0, 36, 8, 36, 48, 36, 33, 8, - 61, 1, 6, 36, 60, 8, -1, 8, -1, 15, - 48, 10, 7, 8, 61, 8, 20, -1, -1, -1, - -1, -1, 8, -1, -1, -1, -1, 48, 34, 79, - 40, 79, 8, 77, 61, 8, 60, 8, 8, 79, - 8, 51, -1, 40, 42, 61, 62, 8, 61, 62, - 8, 7, -1, 56, 51, 53, 55, 8, 90, 60, - 50, 79, 8, 56, 54, 61, 62, 61, 62, 61, - 62, 40, 61, 62, 60, 40, 61, 62, 61, 62, - 56, 8, 51, 56, 50, 7, 51, 15, 54, 60, - 60, 25, 60, 27, 25, 56, 27, 61, 62, 61, - 62, 36, 60, 29, 38, 29, 34, 38, 36, 25, - 61, 27, 29, -1, 60, 25, 12, 27, 29, 25, - 29, 27, 38, 25, 29, 27, 61, 62, 38, 12, - 7, 12, 38, 60, 8, 25, 38, 27, -1, 61, - 62, 25, 8, 27, 7, -1, 15, 7, 38, 75, - 25, 75, 27, 8, 38, 25, 33, 27, 75, -1, - 86, 57, 86, 38, 75, 34, 75, 63, 38, 86, - 75, 15, 15, -1, 57, 86, 57, 86, -1, -1, - 63, 86, 63, 61, 62, -1, -1, 61, 62, 15, - 34, 34, 36, 36, -1, 61, 62, 47, 61, 62, - 15, 61, 62, -1, 18, 19, 61, 62, 34, 15, - 36, 61, 62, 91, -1, 92, 18, 19, 33, 34, - 29, 36, 18, 19, 18, 19, 29, 33, 34, 29, - 36, 45, 46, 25, 29, 27, -1, -1, -1, -1, - -1, 91, -1, 45, 46, -1, 38, -1, -1, 45, - 46, 45, 46, -1, -1, -1, -1, 66, 67, 68, - -1, -1, -1, 66, 67, 68, 66, 67, 68, -1, - -1, 66, 67, 68, -1, -1, 23, 24, -1, -1, - -1, 29, -1, 92, -1, 32, 23, 24, 35, 92, - 37, 29, 92, 23, 24, 32, 29, 92, 35, -1, - 37, 29, 32, 23, 24, 35, -1, 37, -1, -1, - 29, -1, 32, 23, 24, 35, -1, 37, 66, 67, - 68, 31, 32, -1, 29, 35, -1, 37, 66, 67, - 68, 36, -1, 66, 67, 68, -1, -1, 66, 67, - 68, -1, -1, -1, 92, -1, -1, 66, 67, 68, - -1, -1, -1, -1, 92, -1, -1, 23, 24, 92, - -1, 66, 67, 68, 92, 31, 32, 23, 24, 35, - -1, 37, -1, 92, -1, 31, 32, 23, 24, 35, - -1, 37, 29, 23, 24, 31, 32, 92, -1, 35, - 29, 37, 32, 29, -1, 35, -1, 37, 94, 95, - 96, 97, 98, 99, 29, -1, -1, -1, -1, -1, - -1, 36, -1, -1, 61, 62, -1, -1, -1, 66, - 67, 68, 61, 62, -1, 61, 62, 66, 67, 68, - 66, 67, 68, -1, -1, -1, -1, -1, -1, -1, - 29, 66, 67, 68, -1, 92, -1, -1, 29, -1, - -1, 29, -1, 92, -1, -1, 92, -1, -1, -1, - -1, -1, 23, 24, -1, -1, -1, 92, -1, -1, - 31, 32, 61, 62, 35, -1, 37, 66, 67, 68, - 61, 62, 3, 61, 62, 66, 67, 68, 66, 67, - 68, -1, 13, -1, -1, -1, 17, -1, -1, -1, - -1, -1, -1, 92, -1, 26, -1, 28, -1, -1, - 31, 92, -1, -1, 92, -1, -1, -1, 39, -1, - 41, 42, -1, -1, -1, -1, -1, -1, 49, -1, - -1, 52, 53, -1, -1, -1, -1, 58, -1, 12, - 13, 3, -1, 64, -1, -1, -1, -1, -1, 22, - -1, 13, -1, -1, -1, 17, 29, -1, -1, 80, - 33, 34, -1, 36, 26, -1, 28, -1, -1, -1, - 43, -1, -1, -1, 47, -1, -1, 39, -1, 41, - 42, -1, -1, -1, -1, -1, -1, 49, -1, -1, - 52, 53, 65, 66, 67, 68, 58, 70, -1, -1, - -1, -1, 64, -1, -1, -1, -1, -1, 81, 82, - 83, -1, 12, 13, 87, -1, -1, -1, 80, 92, + 60, 7, 7, 7, 34, 91, 24, 7, 61, 36, + 33, 36, 7, 7, 7, 60, 33, 33, 55, 66, + 8, 33, 55, 36, 16, 7, 36, 29, 8, 7, + 7, 55, 17, 36, 7, 7, 7, 7, 7, 36, + 55, 7, 7, 33, 33, 36, 33, 33, 7, 60, + 7, 60, 20, 36, 33, 36, 55, 7, 33, 60, + 5, 37, 36, 5, 60, 5, 7, 2, 66, 36, + 33, 33, 36, 7, 1, 8, 60, 8, 33, 2, + 36, 1, 8, 36, 2, 1, 8, 2, 17, 1, + 0, 8, -1, 7, 55, 33, 33, -1, -1, 48, + 60, -1, 6, 31, 55, 48, 36, 61, 60, 8, + -1, 36, 60, -1, 7, 61, 20, 36, 8, 77, + 15, 60, 8, 55, 48, 36, 10, 36, 36, 36, + 7, 8, 79, 8, 8, 79, 8, 42, 8, 34, + 8, 8, 48, 40, 8, 8, -1, 60, 53, 50, + -1, 8, -1, 54, 51, 91, 15, 8, 79, 61, + 62, 60, 8, 61, 62, 61, 62, 61, 62, 40, + 60, 55, 61, 62, 60, 34, 61, 62, 61, 62, + 51, 56, 61, 62, 56, 50, 60, 40, 15, 54, + 60, 40, 60, 56, 61, 25, 60, 27, 51, 61, + 62, 29, 51, 60, 29, 56, 15, 34, 38, 36, + 15, 29, 8, 8, 12, 61, 62, 61, 62, 12, + 36, 25, 7, 27, 25, 34, 27, 36, 25, 34, + 27, 36, 7, 15, 38, 29, 25, 38, 27, 7, + -1, 38, 25, 29, 27, 61, 62, 75, 92, 38, + 75, 12, 34, 7, 36, 38, -1, 75, 86, 57, + 56, 86, -1, -1, 57, 63, 61, 62, 86, 25, + 63, 27, 25, -1, 27, -1, 61, 62, 25, 33, + 27, 75, 38, 61, 62, 38, 61, 62, 25, 75, + 27, 38, 86, 61, 62, 25, 57, 27, 29, -1, + 86, 38, 63, 25, 25, 27, 27, 15, 38, 8, + -1, 89, -1, 18, 19, 47, 38, 38, 18, 19, + 18, 19, -1, -1, -1, 33, 34, -1, 36, 61, + 62, 15, 97, 98, 99, 100, 101, 102, -1, 93, + 45, 46, 23, 24, 75, 45, 46, 45, 46, 33, + 34, 32, 36, -1, 35, 86, 37, 23, 24, -1, + 92, -1, 61, 62, 23, 24, 32, -1, -1, 35, + -1, 37, -1, 32, 23, 24, 35, -1, 37, -1, + 23, 24, -1, 32, -1, -1, 35, -1, 37, 32, + 23, 24, 35, 29, 37, -1, -1, -1, 31, 32, + 23, 24, 35, 29, 37, -1, 18, 19, 31, 32, + 23, 24, 35, 29, 37, -1, -1, -1, 31, 32, + -1, -1, 35, 29, 37, -1, 29, -1, -1, -1, + 66, 67, 68, 45, 46, -1, -1, -1, -1, -1, + 66, 67, 68, -1, 29, -1, -1, 29, -1, -1, + 66, 67, 68, -1, -1, -1, -1, 93, 94, 95, + 66, 67, 68, 66, 67, 68, -1, 93, 94, 95, + -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, + 29, 66, 67, 68, 66, 67, 68, 93, 94, 95, + 93, 94, 95, 23, 24, 29, -1, -1, 29, -1, + -1, 31, 32, -1, -1, 35, -1, 37, 93, 94, + 95, 93, 94, 95, 29, -1, -1, 66, 67, 68, + -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 29, 66, 67, 68, 66, 67, 68, 36, -1, + -1, -1, -1, -1, 93, 94, 95, -1, -1, -1, + -1, 66, 67, 68, 29, -1, -1, -1, -1, 93, + 94, 95, 93, 94, 95, 29, -1, -1, 66, 67, + 68, -1, 36, -1, -1, 29, -1, -1, 93, 94, + 95, -1, -1, -1, 29, -1, 61, 62, -1, -1, + -1, 66, 67, 68, -1, 93, 94, 95, -1, -1, + -1, -1, 66, 67, 68, 29, -1, -1, -1, -1, + -1, -1, 66, 67, 68, -1, 61, 62, 93, 94, + 95, 66, 67, 68, -1, -1, -1, -1, -1, 93, + 94, 95, -1, -1, -1, -1, -1, 61, 62, 93, + 94, 95, 66, 67, 68, -1, -1, -1, 93, 94, + 95, 29, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 94, 95, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 61, 62, 3, -1, -1, 66, 67, + 68, -1, -1, -1, -1, 13, -1, -1, -1, 17, + -1, -1, -1, -1, -1, -1, -1, -1, 26, -1, + 28, -1, -1, 31, -1, 93, 94, 95, -1, -1, + -1, 39, -1, 41, 42, -1, -1, 3, -1, -1, + -1, 49, -1, -1, 52, 53, -1, 13, -1, -1, + 58, 17, -1, -1, -1, -1, 64, -1, -1, -1, + 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 80, 39, -1, 41, 42, -1, -1, -1, + -1, -1, -1, 49, -1, -1, 52, 53, -1, -1, + -1, -1, 58, -1, -1, -1, -1, -1, 64, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, + 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, + -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, + 33, 34, -1, 36, -1, -1, -1, -1, -1, -1, + 43, -1, -1, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 65, 66, 67, 68, -1, 70, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, + 83, -1, -1, -1, 87, -1, -1, -1, -1, -1, + 93, 94, 95, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, - 12, 13, -1, 43, -1, -1, -1, 47, -1, -1, - 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, - -1, 33, 34, -1, 36, 65, 66, 67, 68, -1, - 70, 43, -1, -1, -1, 47, -1, -1, -1, -1, - -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, - -1, -1, 92, 65, 66, 67, 68, -1, 70, -1, - -1, -1, 12, 13, -1, -1, -1, -1, -1, 81, - 82, 83, 22, -1, -1, 87, -1, -1, -1, 29, - 92, -1, -1, 33, 34, -1, 36, -1, -1, -1, - 12, 13, -1, 43, -1, -1, -1, 47, -1, -1, - 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, - -1, 33, 34, -1, 36, 65, 66, 67, 68, -1, - 70, 43, -1, -1, -1, 47, -1, -1, -1, -1, - -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, - -1, -1, 92, 65, 66, 67, 68, -1, 70, -1, - -1, -1, 12, 13, -1, -1, -1, -1, -1, 81, - 82, 83, 22, -1, -1, 87, -1, -1, -1, 29, - 92, -1, -1, 33, 34, -1, 36, -1, -1, -1, - 12, 13, -1, 43, -1, -1, -1, 47, -1, -1, - 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, - -1, 33, 34, -1, 36, 65, 66, 67, 68, -1, - 70, 43, -1, -1, -1, 47, -1, -1, -1, -1, + -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, + 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, - -1, -1, 92, 65, 66, 67, 68, -1, 70, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, - 82, 83, -1, -1, -1, 87, -1, -1, -1, -1, - 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, 94, 95, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 10, -1, 12, 13, -1, + -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, + -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, + -1, 36, -1, -1, -1, -1, -1, -1, 43, -1, + -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 65, 66, 67, 68, -1, 70, -1, -1, -1, -1, + 75, -1, -1, -1, -1, -1, 81, 82, 83, 84, + -1, -1, 87, -1, -1, -1, -1, -1, 93, 94, + 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, 87, -1, -1, - -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 10, -1, 12, 13, -1, -1, -1, -1, - -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, - -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, - -1, -1, -1, -1, -1, 43, -1, -1, -1, 47, - -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, - 68, -1, 70, -1, -1, -1, -1, 75, -1, -1, - -1, -1, -1, 81, 82, 83, 84, -1, -1, 87, - -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 10, -1, 12, 13, -1, -1, - -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, - -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, - 36, -1, -1, -1, -1, -1, -1, 43, -1, -1, - -1, 47, -1, -1, -1, -1, -1, -1, -1, 55, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, - 66, 67, 68, -1, 70, -1, -1, -1, -1, 75, - -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, - -1, 87, -1, -1, -1, -1, 92, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 11, 12, 13, -1, + -1, -1, -1, 93, 94, 95, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 10, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, - -1, 36, -1, -1, -1, 40, -1, 42, 43, 44, - -1, -1, 47, -1, -1, -1, 51, -1, 53, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 65, 66, 67, 68, -1, 70, -1, 72, -1, 74, - -1, 76, -1, -1, -1, -1, 81, 82, 83, -1, - -1, -1, 87, -1, -1, -1, -1, 92, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, - -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, - -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, - -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, - 40, -1, 42, 43, 44, -1, -1, 47, -1, -1, - -1, 51, -1, 53, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, - 70, -1, 72, -1, 74, -1, 76, -1, -1, -1, - -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, - -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, + -1, 36, -1, -1, -1, -1, -1, -1, 43, -1, + -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, + 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 65, 66, 67, 68, -1, 70, -1, -1, -1, -1, + 75, -1, -1, -1, -1, -1, 81, 82, 83, 84, + -1, -1, 87, -1, -1, -1, -1, -1, 93, 94, + 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, + -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, + -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, + -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, + 51, -1, 53, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, + -1, 72, -1, 74, -1, 76, -1, -1, -1, -1, + 81, 82, 83, -1, -1, -1, 87, -1, -1, -1, + -1, -1, 93, 94, 95, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 7, -1, -1, -1, 11, 12, + 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, + -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, + 33, 34, -1, 36, -1, -1, -1, 40, -1, 42, + 43, 44, -1, -1, 47, -1, -1, -1, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, + -1, 74, -1, 76, -1, -1, -1, -1, 81, 82, + 83, -1, -1, -1, 87, -1, -1, -1, -1, -1, + 93, 94, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, -1, @@ -833,7 +865,17 @@ const short QQmlJSGrammar::action_check [] = { -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, -1, 74, 75, 76, -1, -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, -1, - -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, 94, 95, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 8, -1, -1, 11, + 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, + 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, + -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, + 42, 43, 44, -1, -1, 47, -1, -1, -1, 51, + -1, 53, -1, -1, 56, -1, -1, -1, -1, -1, + -1, -1, -1, 65, 66, 67, 68, -1, 70, -1, + 72, -1, 74, -1, 76, -1, -1, -1, -1, 81, + 82, 83, -1, -1, -1, 87, -1, -1, -1, -1, + -1, 93, 94, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, @@ -842,7 +884,17 @@ const short QQmlJSGrammar::action_check [] = { -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, -1, 74, -1, 76, -1, -1, -1, -1, 81, 82, 83, -1, - -1, -1, 87, -1, -1, -1, -1, 92, -1, -1, + -1, -1, 87, -1, -1, -1, -1, -1, 93, 94, + 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 8, -1, -1, 11, 12, 13, -1, -1, -1, -1, + -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, + -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, + -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, + -1, -1, -1, 51, -1, 53, -1, -1, 56, -1, + -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, + 68, -1, 70, -1, 72, -1, 74, -1, 76, -1, + -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, + -1, -1, -1, -1, -1, 93, 94, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, @@ -852,102 +904,96 @@ const short QQmlJSGrammar::action_check [] = { -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, -1, 74, -1, 76, -1, -1, -1, -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, -1, - -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, + -1, -1, 93, 94, 95, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, - -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, + -1, -1, 29, 30, -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, 42, 43, 44, -1, -1, - 47, -1, -1, -1, 51, -1, 53, -1, -1, 56, - -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, - 67, 68, -1, 70, -1, 72, -1, 74, -1, 76, - -1, -1, -1, -1, 81, 82, 83, -1, -1, -1, - 87, -1, -1, -1, -1, 92, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8, -1, -1, 11, 12, + 47, -1, -1, -1, 51, -1, 53, -1, -1, -1, + -1, -1, -1, -1, 61, -1, -1, -1, 65, 66, + 67, 68, 69, 70, -1, 72, 73, 74, -1, 76, + -1, 78, -1, -1, 81, 82, 83, -1, -1, -1, + 87, -1, -1, -1, -1, -1, 93, 94, 95, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 22, - -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 29, 30, -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, 51, -1, - 53, -1, -1, 56, -1, -1, -1, -1, -1, -1, - -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, - -1, 74, -1, 76, -1, -1, -1, -1, 81, 82, - 83, -1, -1, -1, 87, -1, -1, -1, -1, 92, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, - 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, - 22, -1, -1, -1, -1, -1, -1, 29, 30, -1, - -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, - 42, 43, 44, -1, -1, 47, -1, -1, -1, 51, - -1, 53, -1, -1, -1, -1, -1, -1, -1, 61, - -1, -1, -1, 65, 66, 67, 68, 69, 70, -1, - 72, 73, 74, -1, 76, -1, 78, -1, -1, 81, - 82, 83, -1, -1, -1, 87, -1, -1, -1, -1, - 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, 22, -1, -1, -1, -1, -1, -1, 29, 30, - -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, - -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, - 51, -1, 53, -1, -1, -1, -1, -1, -1, -1, - 61, -1, -1, -1, 65, 66, 67, 68, 69, 70, - -1, 72, 73, 74, -1, 76, -1, 78, -1, -1, - 81, 82, 83, -1, -1, -1, 87, -1, -1, -1, - -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, - -1, 14, -1, 16, -1, -1, -1, 20, 21, 22, - -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, - -1, -1, -1, 66, 67, 68, 69, 70, 71, -1, - 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, - 83, 84, 85, 86, -1, -1, -1, -1, -1, 92, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, - 5, 6, -1, -1, 9, 10, 11, -1, -1, 14, - -1, 16, -1, -1, -1, 20, 21, 22, -1, -1, - -1, -1, -1, -1, 29, 30, 31, 32, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, - -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, - 65, 66, 67, -1, 69, 70, 71, -1, 73, 74, - 75, 76, 77, 78, -1, -1, 81, 82, 83, 84, - 85, 86, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4, 5, 6, - -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, - -1, -1, -1, 20, 21, 22, -1, -1, -1, -1, - -1, -1, 29, 30, 31, 32, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, - 47, -1, -1, -1, -1, -1, -1, -1, 55, -1, - -1, -1, 59, -1, -1, -1, -1, -1, 65, 66, - 67, -1, 69, 70, 71, -1, 73, 74, 75, 76, - 77, 78, -1, -1, 81, 82, 83, 84, 85, 86, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, - 9, -1, 11, 12, 13, 14, -1, -1, -1, -1, - -1, -1, 21, 22, -1, -1, -1, -1, -1, -1, - 29, 30, -1, -1, 33, 34, -1, 36, -1, -1, - -1, 40, -1, 42, 43, 44, -1, -1, 47, -1, - -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, - 59, -1, 61, -1, -1, -1, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - -1, -1, 81, 82, 83, 84, 85, -1, 87, -1, - -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4, -1, -1, -1, -1, 9, -1, - 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, + 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, -1, 65, 66, 67, 68, 69, 70, -1, 72, + 73, 74, -1, 76, -1, 78, -1, -1, 81, 82, + 83, -1, -1, -1, 87, -1, -1, -1, -1, -1, + 93, 94, 95, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, + -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, + 22, -1, -1, -1, -1, -1, -1, 29, 30, 31, + 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, + -1, -1, -1, -1, 66, 67, 68, 69, 70, 71, + -1, 73, 74, 75, 76, 77, 78, -1, -1, 81, + 82, 83, 84, 85, 86, -1, -1, -1, -1, -1, + -1, 93, 94, 95, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, + 11, -1, -1, 14, -1, 16, -1, -1, -1, 20, 21, 22, -1, -1, -1, -1, -1, -1, 29, 30, - -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, - -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, - 51, -1, 53, -1, -1, -1, -1, -1, 59, -1, - 61, -1, -1, -1, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, - 81, 82, 83, 84, 85, -1, 87, -1, -1, -1, - -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4, 5, 6, -1, -1, 9, 10, 11, 12, - 13, 14, -1, 16, -1, -1, -1, 20, 21, 22, - -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, - 33, 34, -1, 36, -1, -1, -1, 40, -1, 42, - 43, 44, -1, -1, 47, -1, -1, -1, 51, -1, - 53, -1, -1, -1, -1, -1, 59, -1, 61, -1, - -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, - 83, 84, 85, 86, 87, -1, -1, -1, -1, 92, + 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, + -1, -1, -1, -1, 65, 66, 67, 68, 69, 70, + 71, -1, 73, 74, 75, 76, 77, 78, -1, -1, + 81, 82, 83, 84, 85, 86, -1, -1, -1, -1, + -1, -1, 93, 94, 95, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4, 5, 6, -1, -1, 9, + 10, 11, -1, -1, 14, -1, 16, -1, -1, -1, + 20, 21, 22, -1, -1, -1, -1, -1, -1, 29, + 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, -1, -1, -1, 65, 66, 67, 68, 69, + 70, 71, -1, 73, 74, 75, 76, 77, 78, -1, + -1, 81, 82, 83, 84, 85, 86, -1, -1, -1, + -1, -1, -1, 93, 94, 95, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4, 5, 6, -1, -1, + 9, 10, 11, -1, -1, 14, -1, 16, -1, -1, + -1, 20, 21, 22, -1, -1, -1, -1, -1, -1, + 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 43, -1, -1, -1, 47, -1, + -1, -1, -1, -1, -1, -1, 55, -1, -1, -1, + 59, -1, -1, -1, -1, -1, 65, 66, 67, 68, + 69, 70, 71, -1, 73, 74, 75, 76, 77, 78, + -1, -1, 81, 82, 83, 84, 85, 86, -1, -1, + -1, -1, -1, -1, 93, 94, 95, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, + -1, 9, -1, 11, 12, 13, 14, -1, -1, -1, + -1, -1, -1, 21, 22, -1, -1, -1, -1, -1, + -1, 29, 30, -1, -1, 33, 34, -1, 36, -1, + -1, -1, 40, -1, 42, 43, 44, -1, -1, 47, + -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, + -1, 59, -1, 61, -1, -1, -1, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, -1, -1, 81, 82, 83, 84, 85, -1, 87, + -1, -1, -1, -1, -1, 93, 94, 95, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, + -1, -1, 9, -1, 11, 12, 13, 14, -1, -1, + -1, -1, -1, -1, 21, 22, -1, -1, -1, -1, + -1, -1, 29, 30, -1, -1, 33, 34, -1, 36, + -1, -1, -1, 40, -1, 42, 43, 44, -1, -1, + 47, -1, -1, -1, 51, -1, 53, -1, -1, -1, + -1, -1, 59, -1, 61, -1, -1, -1, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, -1, -1, 81, 82, 83, 84, 85, -1, + 87, -1, -1, -1, -1, -1, 93, 94, 95, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, + 6, -1, -1, 9, 10, 11, 12, 13, 14, -1, + 16, -1, -1, -1, 20, 21, 22, -1, -1, -1, + -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, + 36, -1, -1, -1, 40, -1, 42, 43, 44, -1, + -1, 47, -1, -1, -1, 51, -1, 53, -1, -1, + -1, -1, -1, 59, -1, 61, -1, -1, -1, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, -1, -1, 81, 82, 83, 84, 85, + 86, 87, -1, -1, -1, -1, -1, 93, 94, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, 6, -1, -1, 9, 10, 11, 12, 13, 14, -1, 16, -1, -1, -1, 20, 21, 22, -1, -1, @@ -957,57 +1003,66 @@ const short QQmlJSGrammar::action_check [] = { 55, -1, -1, -1, 59, -1, 61, -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, 83, 84, - 85, 86, 87, -1, -1, -1, -1, 92, -1, -1, - -1, -1, -1, -1, -1, -1, -1, + 85, 86, 87, -1, -1, -1, -1, -1, 93, 94, + 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 15, 2, 105, 3, 29, 15, 4, 2, 15, 29, - 9, 15, 3, 15, 3, 2, 19, 39, 15, 15, - 13, 15, 3, 15, 2, 15, 3, 15, 3, 11, - 13, 15, 71, 39, 39, 3, 22, 2, 99, 19, - 4, 15, 2, 15, 29, 15, 19, 3, 15, 3, - 29, 22, 15, 29, 15, 2, 22, 15, 2, 2, - 15, 2, 2, 2, 2, 22, 3, 15, 3, 2, - 39, 3, 3, 15, 97, 94, 3, 39, 2, 2, - 39, 3, 3, 2, 2, 101, 3, 40, 39, 39, - 39, 3, 2, 39, 39, 15, 22, 13, 3, 2, - 13, 2, -1, 39, 13, 35, -1, 16, -1, 39, - -1, -1, -1, 15, 48, -1, 15, 13, 52, 48, - 48, 50, 3, 48, 20, 53, -1, 52, -1, 45, - -1, 15, 45, 48, 48, 50, 50, 48, -1, 50, - 48, 48, 48, 50, 48, 53, 52, 39, 48, 53, - 48, 39, 44, 53, 48, 53, 44, 48, 15, 50, - -1, 48, 48, 48, 58, 48, 3, 72, 53, 48, - 53, 50, 48, 48, 50, 48, 62, 64, 53, 82, - 53, 82, 48, 48, 41, 13, 88, 53, 16, 54, - 48, 72, 48, 3, 50, 48, 54, 4, 48, 13, - 50, 100, 86, 56, 48, 48, 50, 50, 48, 48, - 50, -1, 51, 48, 48, 48, 51, 50, 48, 48, - 54, 50, 48, 53, 50, 48, 48, 48, 50, 48, - 53, 45, 48, 54, 50, 72, -1, 48, -1, 48, - -1, 60, 53, 48, 53, 48, 15, 48, 53, -1, - 53, 48, 53, 48, 65, -1, 53, -1, 53, 48, - 55, 70, 72, 48, 53, 70, 63, 70, 53, 70, - 48, 48, 41, 42, 59, 53, 53, 55, 48, 13, - 57, 70, 48, 53, 48, 55, 20, 53, -1, 53, - -1, 55, -1, 5, -1, 61, 5, -1, 32, 33, - 13, 13, -1, 16, 13, -1, -1, -1, 20, -1, - -1, 20, 22, 23, 24, 25, 26, 27, 28, -1, - 32, 33, -1, 32, 33, 21, 22, 23, 24, 25, - 26, 27, 28, 13, -1, -1, -1, -1, -1, -1, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 13, - -1, -1, -1, -1, -1, -1, 20, 21, 22, 23, - 24, 25, 26, 27, 28, -1, -1, -1, -1, -1, + 15, 39, 29, 3, 15, 15, 13, 15, 3, 15, + 29, 9, 15, 15, 3, 3, 39, 22, 19, 15, + 19, 3, 15, 15, 15, 11, 3, 74, 15, 19, + 15, 15, 29, 13, 15, 29, 102, 15, 3, 15, + 97, 3, 100, 15, -1, 15, 29, 22, 15, 3, + 3, 15, 3, 22, 15, 15, 22, 15, 15, 3, + 39, 3, 3, 3, 3, 39, 39, 22, 39, 3, + 15, 39, 15, 2, -1, 13, 39, 13, 2, 2, + 39, 13, 13, 39, 2, 15, 15, 39, 20, 3, + 3, 15, 15, 3, 15, 15, 2, 15, 41, -1, + 2, 51, 51, 51, 53, 51, 56, 53, 56, 15, + 48, 41, 48, 15, 51, 15, 51, 48, 51, 56, + 39, 56, 39, 56, 51, 51, 53, 53, 47, 51, + 47, 53, 4, 15, 2, 51, 15, 53, 15, 51, + 40, 15, 51, 15, 53, 4, 51, 15, 53, 15, + 51, 63, 53, 51, 51, 13, 15, 51, 16, 53, + 42, 75, 75, 51, 3, 44, 43, 65, 15, 43, + 67, 91, 13, 61, -1, 16, 42, 15, 51, 15, + 51, 54, 51, 54, 51, 106, 53, 56, 51, 13, + 53, 51, 16, 53, 2, 51, 43, 51, 35, 2, + 56, 15, 39, 51, 42, 59, 42, 15, 56, 51, + 2, 51, 15, 2, 56, -1, 56, 51, 51, 51, + 2, 51, 56, 15, 57, 57, 15, 57, 51, 4, + 51, 2, -1, 15, 57, 56, 75, 2, 51, 51, + 15, 53, 55, 2, 15, 51, 51, 2, 53, 55, + 15, 51, 51, 53, 53, 51, 15, 53, 51, 2, + 15, 51, 55, 51, 51, 15, 56, 2, 56, 56, + -1, 3, 15, 51, 64, 89, -1, 51, 56, 51, + 15, 68, 56, -1, 56, 73, 58, 51, 66, -1, + -1, 51, 56, -1, 44, 45, 56, 51, 58, 73, + 51, -1, 56, 51, 58, 56, 51, 51, 56, 73, + 51, 56, 56, 58, 13, 56, -1, -1, 62, 60, + -1, 20, 73, 13, 5, 73, 16, 5, 18, -1, + -1, -1, 13, 32, 33, 13, -1, -1, -1, 20, + -1, -1, 20, 75, -1, -1, -1, -1, -1, 39, + 85, 32, 33, -1, 32, 33, 22, 23, 24, 25, + 26, 27, 28, 21, 22, 23, 24, 25, 26, 27, + 28, 13, -1, -1, -1, -1, 2, -1, 20, 21, + 22, 23, 24, 25, 26, 27, 28, -1, -1, 15, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 13, -1, -1, 16, -1, 18, + -1, -1, 13, -1, -1, -1, -1, -1, -1, 20, + 21, 22, 23, 24, 25, 26, 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1}; + -1, -1, -1, -1, -1, -1, -1}; QT_END_NAMESPACE diff --git a/src/tools/qdoc/qmlparser/qqmljsgrammar_p.h b/src/tools/qdoc/qmlparser/qqmljsgrammar_p.h index 34da969175..9ef4695d69 100644 --- a/src/tools/qdoc/qmlparser/qqmljsgrammar_p.h +++ b/src/tools/qdoc/qmlparser/qqmljsgrammar_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtCore module of the Qt Toolkit. +** This file is part of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage @@ -63,12 +63,12 @@ class QQmlJSGrammar public: enum VariousConstants { EOF_SYMBOL = 0, - REDUCE_HERE = 101, - SHIFT_THERE = 100, + REDUCE_HERE = 104, + SHIFT_THERE = 103, T_AND = 1, T_AND_AND = 2, T_AND_EQ = 3, - T_AS = 91, + T_AS = 92, T_AUTOMATIC_SEMICOLON = 62, T_BREAK = 4, T_CASE = 5, @@ -76,6 +76,7 @@ public: T_COLON = 7, T_COMMA = 8, T_COMMENT = 88, + T_COMPATIBILITY_SEMICOLON = 89, T_CONST = 84, T_CONTINUE = 9, T_DEBUGGER = 85, @@ -89,18 +90,19 @@ public: T_EQ = 17, T_EQ_EQ = 18, T_EQ_EQ_EQ = 19, - T_ERROR = 93, + T_ERROR = 96, T_FALSE = 83, - T_FEED_JS_EXPRESSION = 97, - T_FEED_JS_PROGRAM = 99, - T_FEED_JS_SOURCE_ELEMENT = 98, - T_FEED_JS_STATEMENT = 96, - T_FEED_UI_OBJECT_MEMBER = 95, - T_FEED_UI_PROGRAM = 94, + T_FEED_JS_EXPRESSION = 100, + T_FEED_JS_PROGRAM = 102, + T_FEED_JS_SOURCE_ELEMENT = 101, + T_FEED_JS_STATEMENT = 99, + T_FEED_UI_OBJECT_MEMBER = 98, + T_FEED_UI_PROGRAM = 97, T_FINALLY = 20, T_FOR = 21, T_FUNCTION = 22, T_GE = 23, + T_GET = 94, T_GT = 24, T_GT_GT = 25, T_GT_GT_EQ = 26, @@ -108,7 +110,7 @@ public: T_GT_GT_GT_EQ = 28, T_IDENTIFIER = 29, T_IF = 30, - T_IMPORT = 90, + T_IMPORT = 91, T_IN = 31, T_INSTANCEOF = 32, T_LBRACE = 33, @@ -128,7 +130,7 @@ public: T_NOT_EQ_EQ = 46, T_NULL = 81, T_NUMERIC_LITERAL = 47, - T_ON = 92, + T_ON = 93, T_OR = 48, T_OR_EQ = 49, T_OR_OR = 50, @@ -136,7 +138,7 @@ public: T_PLUS_EQ = 52, T_PLUS_PLUS = 53, T_PROPERTY = 66, - T_PUBLIC = 89, + T_PUBLIC = 90, T_QUESTION = 54, T_RBRACE = 55, T_RBRACKET = 56, @@ -147,6 +149,7 @@ public: T_RETURN = 59, T_RPAREN = 60, T_SEMICOLON = 61, + T_SET = 95, T_SIGNAL = 67, T_STAR = 63, T_STAR_EQ = 64, @@ -165,15 +168,15 @@ public: T_XOR = 79, T_XOR_EQ = 80, - ACCEPT_STATE = 644, - RULE_COUNT = 349, - STATE_COUNT = 645, - TERMINAL_COUNT = 102, - NON_TERMINAL_COUNT = 107, + ACCEPT_STATE = 655, + RULE_COUNT = 351, + STATE_COUNT = 656, + TERMINAL_COUNT = 105, + NON_TERMINAL_COUNT = 108, - GOTO_INDEX_OFFSET = 645, - GOTO_INFO_OFFSET = 2807, - GOTO_CHECK_OFFSET = 2807 + GOTO_INDEX_OFFSET = 656, + GOTO_INFO_OFFSET = 2970, + GOTO_CHECK_OFFSET = 2970 }; static const char *const spell []; diff --git a/src/tools/qdoc/qmlparser/qqmljskeywords_p.h b/src/tools/qdoc/qmlparser/qqmljskeywords_p.h index 4bb39d077a..7fcf001303 100644 --- a/src/tools/qdoc/qmlparser/qqmljskeywords_p.h +++ b/src/tools/qdoc/qmlparser/qqmljskeywords_p.h @@ -53,10 +53,16 @@ // We mean it. // +#include "qqmljslexer_p.h" + +QT_QML_BEGIN_NAMESPACE + +namespace QQmlJS { + static inline int classify2(const QChar *s, bool qmlMode) { if (s[0].unicode() == 'a') { if (s[1].unicode() == 's') { - return qmlMode ? Lexer::T_AS : Lexer::T_RESERVED_WORD; + return qmlMode ? Lexer::T_AS : Lexer::T_IDENTIFIER; } } else if (s[0].unicode() == 'd') { @@ -74,13 +80,13 @@ static inline int classify2(const QChar *s, bool qmlMode) { } else if (qmlMode && s[0].unicode() == 'o') { if (s[1].unicode() == 'n') { - return Lexer::T_ON; + return qmlMode ? Lexer::T_ON : Lexer::T_IDENTIFIER; } } return Lexer::T_IDENTIFIER; } -static inline int classify3(const QChar *s, bool /*qmlMode*/) { +static inline int classify3(const QChar *s, bool qmlMode) { if (s[0].unicode() == 'f') { if (s[1].unicode() == 'o') { if (s[2].unicode() == 'r') { @@ -88,10 +94,17 @@ static inline int classify3(const QChar *s, bool /*qmlMode*/) { } } } + else if (s[0].unicode() == 'g') { + if (s[1].unicode() == 'e') { + if (s[2].unicode() == 't') { + return Lexer::T_GET; + } + } + } else if (s[0].unicode() == 'i') { if (s[1].unicode() == 'n') { if (s[2].unicode() == 't') { - return Lexer::T_INT; + return qmlMode ? int(Lexer::T_INT) : int(Lexer::T_IDENTIFIER); } } } @@ -102,6 +115,13 @@ static inline int classify3(const QChar *s, bool /*qmlMode*/) { } } } + else if (s[0].unicode() == 's') { + if (s[1].unicode() == 'e') { + if (s[2].unicode() == 't') { + return Lexer::T_SET; + } + } + } else if (s[0].unicode() == 't') { if (s[1].unicode() == 'r') { if (s[2].unicode() == 'y') { @@ -119,12 +139,12 @@ static inline int classify3(const QChar *s, bool /*qmlMode*/) { return Lexer::T_IDENTIFIER; } -static inline int classify4(const QChar *s, bool /*qmlMode*/) { +static inline int classify4(const QChar *s, bool qmlMode) { if (s[0].unicode() == 'b') { if (s[1].unicode() == 'y') { if (s[2].unicode() == 't') { if (s[3].unicode() == 'e') { - return Lexer::T_BYTE; + return qmlMode ? int(Lexer::T_BYTE) : int(Lexer::T_IDENTIFIER); } } } @@ -140,7 +160,7 @@ static inline int classify4(const QChar *s, bool /*qmlMode*/) { else if (s[1].unicode() == 'h') { if (s[2].unicode() == 'a') { if (s[3].unicode() == 'r') { - return Lexer::T_CHAR; + return qmlMode ? int(Lexer::T_CHAR) : int(Lexer::T_IDENTIFIER); } } } @@ -165,7 +185,7 @@ static inline int classify4(const QChar *s, bool /*qmlMode*/) { if (s[1].unicode() == 'o') { if (s[2].unicode() == 't') { if (s[3].unicode() == 'o') { - return Lexer::T_GOTO; + return qmlMode ? int(Lexer::T_GOTO) : int(Lexer::T_IDENTIFIER); } } } @@ -174,7 +194,7 @@ static inline int classify4(const QChar *s, bool /*qmlMode*/) { if (s[1].unicode() == 'o') { if (s[2].unicode() == 'n') { if (s[3].unicode() == 'g') { - return Lexer::T_LONG; + return qmlMode ? int(Lexer::T_LONG) : int(Lexer::T_IDENTIFIER); } } } @@ -225,7 +245,7 @@ static inline int classify4(const QChar *s, bool /*qmlMode*/) { return Lexer::T_IDENTIFIER; } -static inline int classify5(const QChar *s, bool /*qmlMode*/) { +static inline int classify5(const QChar *s, bool qmlMode) { if (s[0].unicode() == 'b') { if (s[1].unicode() == 'r') { if (s[2].unicode() == 'e') { @@ -260,7 +280,7 @@ static inline int classify5(const QChar *s, bool /*qmlMode*/) { if (s[2].unicode() == 'n') { if (s[3].unicode() == 's') { if (s[4].unicode() == 't') { - return Lexer::T_CONST; + return qmlMode ? int(Lexer::T_CONST) : int(Lexer::T_RESERVED_WORD); } } } @@ -280,7 +300,7 @@ static inline int classify5(const QChar *s, bool /*qmlMode*/) { if (s[2].unicode() == 'n') { if (s[3].unicode() == 'a') { if (s[4].unicode() == 'l') { - return Lexer::T_FINAL; + return qmlMode ? int(Lexer::T_FINAL) : int(Lexer::T_IDENTIFIER); } } } @@ -289,7 +309,7 @@ static inline int classify5(const QChar *s, bool /*qmlMode*/) { if (s[2].unicode() == 'o') { if (s[3].unicode() == 'a') { if (s[4].unicode() == 't') { - return Lexer::T_FLOAT; + return qmlMode ? int(Lexer::T_FLOAT) : int(Lexer::T_IDENTIFIER); } } } @@ -300,7 +320,7 @@ static inline int classify5(const QChar *s, bool /*qmlMode*/) { if (s[2].unicode() == 'o') { if (s[3].unicode() == 'r') { if (s[4].unicode() == 't') { - return Lexer::T_SHORT; + return qmlMode ? int(Lexer::T_SHORT) : int(Lexer::T_IDENTIFIER); } } } @@ -309,7 +329,7 @@ static inline int classify5(const QChar *s, bool /*qmlMode*/) { if (s[2].unicode() == 'p') { if (s[3].unicode() == 'e') { if (s[4].unicode() == 'r') { - return Lexer::T_SUPER; + return qmlMode ? int(Lexer::T_SUPER) : int(Lexer::T_RESERVED_WORD); } } } @@ -358,7 +378,7 @@ static inline int classify6(const QChar *s, bool qmlMode) { if (s[3].unicode() == 'b') { if (s[4].unicode() == 'l') { if (s[5].unicode() == 'e') { - return Lexer::T_DOUBLE; + return qmlMode ? int(Lexer::T_DOUBLE) : int(Lexer::T_IDENTIFIER); } } } @@ -384,7 +404,7 @@ static inline int classify6(const QChar *s, bool qmlMode) { if (s[3].unicode() == 'o') { if (s[4].unicode() == 'r') { if (s[5].unicode() == 't') { - return qmlMode ? Lexer::T_IMPORT : Lexer::T_RESERVED_WORD; + return qmlMode ? int(Lexer::T_IMPORT) : int(Lexer::T_RESERVED_WORD); } } } @@ -397,7 +417,7 @@ static inline int classify6(const QChar *s, bool qmlMode) { if (s[3].unicode() == 'i') { if (s[4].unicode() == 'v') { if (s[5].unicode() == 'e') { - return Lexer::T_NATIVE; + return qmlMode ? int(Lexer::T_NATIVE) : int(Lexer::T_IDENTIFIER); } } } @@ -410,7 +430,7 @@ static inline int classify6(const QChar *s, bool qmlMode) { if (s[3].unicode() == 'l') { if (s[4].unicode() == 'i') { if (s[5].unicode() == 'c') { - return qmlMode ? Lexer::T_PUBLIC : Lexer::T_RESERVED_WORD; + return qmlMode ? Lexer::T_PUBLIC : Lexer::T_IDENTIFIER; } } } @@ -447,7 +467,7 @@ static inline int classify6(const QChar *s, bool qmlMode) { if (s[3].unicode() == 't') { if (s[4].unicode() == 'i') { if (s[5].unicode() == 'c') { - return Lexer::T_STATIC; + return qmlMode ? int(Lexer::T_STATIC) : int(Lexer::T_IDENTIFIER); } } } @@ -471,7 +491,7 @@ static inline int classify6(const QChar *s, bool qmlMode) { if (s[3].unicode() == 'o') { if (s[4].unicode() == 'w') { if (s[5].unicode() == 's') { - return Lexer::T_THROWS; + return qmlMode ? int(Lexer::T_THROWS) : int(Lexer::T_IDENTIFIER); } } } @@ -492,7 +512,7 @@ static inline int classify6(const QChar *s, bool qmlMode) { return Lexer::T_IDENTIFIER; } -static inline int classify7(const QChar *s, bool /*qmlMode*/) { +static inline int classify7(const QChar *s, bool qmlMode) { if (s[0].unicode() == 'b') { if (s[1].unicode() == 'o') { if (s[2].unicode() == 'o') { @@ -500,7 +520,7 @@ static inline int classify7(const QChar *s, bool /*qmlMode*/) { if (s[4].unicode() == 'e') { if (s[5].unicode() == 'a') { if (s[6].unicode() == 'n') { - return Lexer::T_BOOLEAN; + return qmlMode ? int(Lexer::T_BOOLEAN) : int(Lexer::T_IDENTIFIER); } } } @@ -560,7 +580,7 @@ static inline int classify7(const QChar *s, bool /*qmlMode*/) { if (s[4].unicode() == 'a') { if (s[5].unicode() == 'g') { if (s[6].unicode() == 'e') { - return Lexer::T_PACKAGE; + return qmlMode ? int(Lexer::T_PACKAGE) : int(Lexer::T_IDENTIFIER); } } } @@ -573,7 +593,7 @@ static inline int classify7(const QChar *s, bool /*qmlMode*/) { if (s[4].unicode() == 'a') { if (s[5].unicode() == 't') { if (s[6].unicode() == 'e') { - return Lexer::T_PRIVATE; + return qmlMode ? int(Lexer::T_PRIVATE) : int(Lexer::T_IDENTIFIER); } } } @@ -593,7 +613,7 @@ static inline int classify8(const QChar *s, bool qmlMode) { if (s[5].unicode() == 'a') { if (s[6].unicode() == 'c') { if (s[7].unicode() == 't') { - return Lexer::T_ABSTRACT; + return qmlMode ? int(Lexer::T_ABSTRACT) : int(Lexer::T_IDENTIFIER); } } } @@ -661,7 +681,7 @@ static inline int classify8(const QChar *s, bool qmlMode) { if (s[5].unicode() == 'r') { if (s[6].unicode() == 't') { if (s[7].unicode() == 'y') { - return Lexer::T_PROPERTY; + return qmlMode ? Lexer::T_PROPERTY : Lexer::T_IDENTIFIER; } } } @@ -695,7 +715,7 @@ static inline int classify8(const QChar *s, bool qmlMode) { if (s[5].unicode() == 'i') { if (s[6].unicode() == 'l') { if (s[7].unicode() == 'e') { - return Lexer::T_VOLATILE; + return qmlMode ? int(Lexer::T_VOLATILE) : int(Lexer::T_IDENTIFIER); } } } @@ -707,7 +727,7 @@ static inline int classify8(const QChar *s, bool qmlMode) { return Lexer::T_IDENTIFIER; } -static inline int classify9(const QChar *s, bool /*qmlMode*/) { +static inline int classify9(const QChar *s, bool qmlMode) { if (s[0].unicode() == 'i') { if (s[1].unicode() == 'n') { if (s[2].unicode() == 't') { @@ -717,7 +737,7 @@ static inline int classify9(const QChar *s, bool /*qmlMode*/) { if (s[6].unicode() == 'a') { if (s[7].unicode() == 'c') { if (s[8].unicode() == 'e') { - return Lexer::T_INTERFACE; + return qmlMode ? int(Lexer::T_INTERFACE) : int(Lexer::T_IDENTIFIER); } } } @@ -736,7 +756,7 @@ static inline int classify9(const QChar *s, bool /*qmlMode*/) { if (s[6].unicode() == 't') { if (s[7].unicode() == 'e') { if (s[8].unicode() == 'd') { - return Lexer::T_PROTECTED; + return qmlMode ? int(Lexer::T_PROTECTED) : int(Lexer::T_IDENTIFIER); } } } @@ -755,7 +775,7 @@ static inline int classify9(const QChar *s, bool /*qmlMode*/) { if (s[6].unicode() == 'e') { if (s[7].unicode() == 'n') { if (s[8].unicode() == 't') { - return Lexer::T_TRANSIENT; + return qmlMode ? int(Lexer::T_TRANSIENT) : int(Lexer::T_IDENTIFIER); } } } @@ -768,7 +788,7 @@ static inline int classify9(const QChar *s, bool /*qmlMode*/) { return Lexer::T_IDENTIFIER; } -static inline int classify10(const QChar *s, bool /*qmlMode*/) { +static inline int classify10(const QChar *s, bool qmlMode) { if (s[0].unicode() == 'i') { if (s[1].unicode() == 'm') { if (s[2].unicode() == 'p') { @@ -779,7 +799,7 @@ static inline int classify10(const QChar *s, bool /*qmlMode*/) { if (s[7].unicode() == 'n') { if (s[8].unicode() == 't') { if (s[9].unicode() == 's') { - return Lexer::T_IMPLEMENTS; + return qmlMode ? int(Lexer::T_IMPLEMENTS) : int(Lexer::T_IDENTIFIER); } } } @@ -812,7 +832,7 @@ static inline int classify10(const QChar *s, bool /*qmlMode*/) { return Lexer::T_IDENTIFIER; } -static inline int classify12(const QChar *s, bool /*qmlMode*/) { +static inline int classify12(const QChar *s, bool qmlMode) { if (s[0].unicode() == 's') { if (s[1].unicode() == 'y') { if (s[2].unicode() == 'n') { @@ -825,7 +845,7 @@ static inline int classify12(const QChar *s, bool /*qmlMode*/) { if (s[9].unicode() == 'z') { if (s[10].unicode() == 'e') { if (s[11].unicode() == 'd') { - return Lexer::T_SYNCHRONIZED; + return qmlMode ? int(Lexer::T_SYNCHRONIZED) : int(Lexer::T_IDENTIFIER); } } } @@ -857,4 +877,8 @@ int Lexer::classify(const QChar *s, int n, bool qmlMode) { } // switch } +} // namespace QQmlJS + +QT_QML_END_NAMESPACE + #endif // QQMLJSKEYWORDS_P_H diff --git a/src/tools/qdoc/qmlparser/qqmljslexer.cpp b/src/tools/qdoc/qmlparser/qqmljslexer.cpp index e84629095b..edd85ec878 100644 --- a/src/tools/qdoc/qmlparser/qqmljslexer.cpp +++ b/src/tools/qdoc/qmlparser/qqmljslexer.cpp @@ -42,15 +42,11 @@ #include "qqmljslexer_p.h" #include "qqmljsengine_p.h" #include "qqmljsmemorypool_p.h" +#include "qqmljskeywords_p.h" -#ifdef QT_BOOTSTRAPPED -#define tr(x, y) QString(QLatin1String(y)) -#else -#include -#define tr(x, y) QCoreApplication::translate(x, y) -#endif -#include -#include +#include +#include +#include QT_BEGIN_NAMESPACE Q_CORE_EXPORT double qstrtod(const char *s00, char const **se, bool *ok); @@ -58,7 +54,7 @@ QT_END_NAMESPACE using namespace QQmlJS; -static inline int regExpFlagFromChar(QChar ch) +static int regExpFlagFromChar(const QChar &ch) { switch (ch.unicode()) { case 'g': return Lexer::RegExp_Global; @@ -141,6 +137,7 @@ void Lexer::setCode(const QString &code, int lineno, bool qmlMode) _tokenSpell = QStringRef(); _codePtr = code.unicode(); + _endPtr = _codePtr + code.length(); _lastLinePtr = _codePtr; _tokenLinePtr = _codePtr; _tokenStartPtr = _codePtr; @@ -171,14 +168,63 @@ void Lexer::setCode(const QString &code, int lineno, bool qmlMode) void Lexer::scanChar() { + unsigned sequenceLength = isLineTerminatorSequence(); _char = *_codePtr++; + if (sequenceLength == 2) + _char = *_codePtr++; - if (_char == QLatin1Char('\n')) { - _lastLinePtr = _codePtr; // points to the first character after the newline + if (unsigned sequenceLength = isLineTerminatorSequence()) { + _lastLinePtr = _codePtr + sequenceLength - 1; // points to the first character after the newline ++_currentLineNumber; } } +namespace { +inline bool isBinop(int tok) +{ + switch (tok) { + case Lexer::T_AND: + case Lexer::T_AND_AND: + case Lexer::T_AND_EQ: + case Lexer::T_DIVIDE_: + case Lexer::T_DIVIDE_EQ: + case Lexer::T_EQ: + case Lexer::T_EQ_EQ: + case Lexer::T_EQ_EQ_EQ: + case Lexer::T_GE: + case Lexer::T_GT: + case Lexer::T_GT_GT: + case Lexer::T_GT_GT_EQ: + case Lexer::T_GT_GT_GT: + case Lexer::T_GT_GT_GT_EQ: + case Lexer::T_LE: + case Lexer::T_LT: + case Lexer::T_LT_LT: + case Lexer::T_LT_LT_EQ: + case Lexer::T_MINUS: + case Lexer::T_MINUS_EQ: + case Lexer::T_NOT_EQ: + case Lexer::T_NOT_EQ_EQ: + case Lexer::T_OR: + case Lexer::T_OR_EQ: + case Lexer::T_OR_OR: + case Lexer::T_PLUS: + case Lexer::T_PLUS_EQ: + case Lexer::T_REMAINDER: + case Lexer::T_REMAINDER_EQ: + case Lexer::T_RETURN: + case Lexer::T_STAR: + case Lexer::T_STAR_EQ: + case Lexer::T_XOR: + case Lexer::T_XOR_EQ: + return true; + + default: + return false; + } +} +} // anonymous namespace + int Lexer::lex() { const int previousTokenKind = _tokenKind; @@ -195,9 +241,15 @@ int Lexer::lex() switch (_tokenKind) { case T_LBRACE: case T_SEMICOLON: + case T_QUESTION: case T_COLON: + case T_TILDE: _delimited = true; break; + default: + if (isBinop(_tokenKind)) + _delimited = true; + break; case T_IF: case T_FOR: @@ -277,6 +329,59 @@ QChar Lexer::decodeUnicodeEscapeCharacter(bool *ok) return QChar(); } +static inline bool isIdentifierStart(QChar ch) +{ + // fast path for ascii + if ((ch.unicode() >= 'a' && ch.unicode() <= 'z') || + (ch.unicode() >= 'A' && ch.unicode() <= 'Z') || + ch == '$' || ch == '_') + return true; + + switch (ch.category()) { + case QChar::Number_Letter: + case QChar::Letter_Uppercase: + case QChar::Letter_Lowercase: + case QChar::Letter_Titlecase: + case QChar::Letter_Modifier: + case QChar::Letter_Other: + return true; + default: + break; + } + return false; +} + +static bool isIdentifierPart(QChar ch) +{ + // fast path for ascii + if ((ch.unicode() >= 'a' && ch.unicode() <= 'z') || + (ch.unicode() >= 'A' && ch.unicode() <= 'Z') || + (ch.unicode() >= '0' && ch.unicode() <= '9') || + ch == '$' || ch == '_' || + ch.unicode() == 0x200c /* ZWNJ */ || ch.unicode() == 0x200d /* ZWJ */) + return true; + + switch (ch.category()) { + case QChar::Mark_NonSpacing: + case QChar::Mark_SpacingCombining: + + case QChar::Number_DecimalDigit: + case QChar::Number_Letter: + + case QChar::Letter_Uppercase: + case QChar::Letter_Lowercase: + case QChar::Letter_Titlecase: + case QChar::Letter_Modifier: + case QChar::Letter_Other: + + case QChar::Punctuation_Connector: + return true; + default: + break; + } + return false; +} + int Lexer::scanToken() { if (_stackToken != -1) { @@ -292,13 +397,13 @@ again: _tokenLinePtr = _lastLinePtr; while (_char.isSpace()) { - if (_char == QLatin1Char('\n')) { - _tokenLinePtr = _codePtr; + if (unsigned sequenceLength = isLineTerminatorSequence()) { + _tokenLinePtr = _codePtr + sequenceLength - 1; if (_restrictedKeyword) { // automatic semicolon insertion _tokenLine = _currentLineNumber; - _tokenStartPtr = _codePtr - 1; // ### TODO: insert it before the optional \r sequence. + _tokenStartPtr = _codePtr - 1; return T_SEMICOLON; } else { _terminator = true; @@ -312,7 +417,7 @@ again: _tokenStartPtr = _codePtr - 1; _tokenLine = _currentLineNumber; - if (_char.isNull()) + if (_codePtr > _endPtr) return EOF_SYMBOL; const QChar ch = _char; @@ -397,7 +502,7 @@ again: case '/': if (_char == QLatin1Char('*')) { scanChar(); - while (!_char.isNull()) { + while (_codePtr <= _endPtr) { if (_char == QLatin1Char('*')) { scanChar(); if (_char == QLatin1Char('/')) { @@ -415,7 +520,7 @@ again: } } } else if (_char == QLatin1Char('/')) { - while (!_char.isNull() && _char != QLatin1Char('\n')) { + while (_codePtr <= _endPtr && !isLineTerminator()) { scanChar(); } if (_engine) { @@ -469,7 +574,7 @@ again: if (end - begin != chars.size() - 1) { _errorCode = IllegalExponentIndicator; - _errorMessage = tr("QQmlParser", "Illegal syntax for exponential number"); + _errorMessage = QCoreApplication::translate("QQmlParser", "Illegal syntax for exponential number"); return T_ERROR; } @@ -557,8 +662,14 @@ again: const QChar *startCode = _codePtr; if (_engine) { - while (!_char.isNull()) { - if (_char == QLatin1Char('\n') || _char == QLatin1Char('\\')) { + while (_codePtr <= _endPtr) { + if (isLineTerminator()) { + if (qmlMode()) + break; + _errorCode = IllegalCharacter; + _errorMessage = QCoreApplication::translate("QQmlParser", "Stray newline in string literal"); + return T_ERROR; + } else if (_char == QLatin1Char('\\')) { break; } else if (_char == quote) { _tokenSpell = _engine->midRef(startCode - _code.unicode() - 1, _codePtr - startCode); @@ -573,13 +684,15 @@ again: _validTokenText = true; _tokenText.resize(0); startCode--; - while (startCode != _codePtr - 1) + while (startCode != _codePtr - 1) _tokenText += *startCode++; - while (! _char.isNull()) { - if (_char == QLatin1Char('\n')) { + while (_codePtr <= _endPtr) { + if (unsigned sequenceLength = isLineTerminatorSequence()) { multilineStringLiteral = true; _tokenText += _char; + if (sequenceLength == 2) + _tokenText += *_codePtr; scanChar(); } else if (_char == quote) { scanChar(); @@ -598,13 +711,15 @@ again: // unicode escape sequence case 'u': u = decodeUnicodeEscapeCharacter(&ok); - if (! ok) - u = _char; + if (! ok) { + _errorCode = IllegalUnicodeEscapeSequence; + _errorMessage = QCoreApplication::translate("QQmlParser", "Illegal unicode escape sequence"); + return T_ERROR; + } break; // hex escape sequence case 'x': - case 'X': if (isHexDigit(_codePtr[0]) && isHexDigit(_codePtr[1])) { scanChar(); @@ -632,33 +747,43 @@ again: case 'v': u = QLatin1Char('\v'); scanChar(); break; case '0': - if (! _codePtr[1].isDigit()) { + if (! _codePtr->isDigit()) { scanChar(); u = QLatin1Char('\0'); - } else { - // ### parse deprecated octal escape sequence ? - u = _char; + break; } - break; + // fall through + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + _errorCode = IllegalEscapeSequence; + _errorMessage = QCoreApplication::translate("QQmlParser", "Octal escape sequences are not allowed"); + return T_ERROR; case '\r': - while (_char == QLatin1Char('\r')) - scanChar(); - - if (_char == QLatin1Char('\n')) { - u = _char; - scanChar(); - } else { + if (isLineTerminatorSequence() == 2) { + _tokenText += QLatin1Char('\r'); u = QLatin1Char('\n'); + } else { + u = QLatin1Char('\r'); } - + scanChar(); break; case '\n': + case 0x2028u: + case 0x2029u: u = _char; scanChar(); break; + default: // non escape character u = _char; @@ -673,32 +798,43 @@ again: } _errorCode = UnclosedStringLiteral; - _errorMessage = tr("QQmlParser", "Unclosed string at end of line"); + _errorMessage = QCoreApplication::translate("QQmlParser", "Unclosed string at end of line"); return T_ERROR; } - - default: - if (ch.isLetter() || ch == QLatin1Char('$') || ch == QLatin1Char('_') || (ch == QLatin1Char('\\') && _char == QLatin1Char('u'))) { - bool identifierWithEscapeChars = false; - if (ch == QLatin1Char('\\')) { - identifierWithEscapeChars = true; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return scanNumber(ch); + + default: { + QChar c = ch; + bool identifierWithEscapeChars = false; + if (c == QLatin1Char('\\') && _char == QLatin1Char('u')) { + identifierWithEscapeChars = true; + bool ok = false; + c = decodeUnicodeEscapeCharacter(&ok); + if (! ok) { + _errorCode = IllegalUnicodeEscapeSequence; + _errorMessage = QCoreApplication::translate("QQmlParser", "Illegal unicode escape sequence"); + return T_ERROR; + } + } + if (isIdentifierStart(c)) { + if (identifierWithEscapeChars) { _tokenText.resize(0); - bool ok = false; - _tokenText += decodeUnicodeEscapeCharacter(&ok); + _tokenText += c; _validTokenText = true; - if (! ok) { - _errorCode = IllegalUnicodeEscapeSequence; - _errorMessage = tr("QQmlParser", "Illegal unicode escape sequence"); - return T_ERROR; - } } while (true) { - if (_char.isLetterOrNumber() || _char == QLatin1Char('$') || _char == QLatin1Char('_')) { - if (identifierWithEscapeChars) - _tokenText += _char; - - scanChar(); - } else if (_char == QLatin1Char('\\') && _codePtr[0] == QLatin1Char('u')) { + c = _char; + if (_char == QLatin1Char('\\') && _codePtr[0] == QLatin1Char('u')) { if (! identifierWithEscapeChars) { identifierWithEscapeChars = true; _tokenText.resize(0); @@ -708,142 +844,175 @@ again: scanChar(); // skip '\\' bool ok = false; - _tokenText += decodeUnicodeEscapeCharacter(&ok); + c = decodeUnicodeEscapeCharacter(&ok); if (! ok) { _errorCode = IllegalUnicodeEscapeSequence; - _errorMessage = tr("QQmlParser", "Illegal unicode escape sequence"); + _errorMessage = QCoreApplication::translate("QQmlParser", "Illegal unicode escape sequence"); return T_ERROR; } - } else { - _tokenLength = _codePtr - _tokenStartPtr - 1; + if (isIdentifierPart(c)) + _tokenText += c; + continue; + } else if (isIdentifierPart(c)) { + if (identifierWithEscapeChars) + _tokenText += c; + + scanChar(); + continue; + } - int kind = T_IDENTIFIER; + _tokenLength = _codePtr - _tokenStartPtr - 1; - if (! identifierWithEscapeChars) - kind = classify(_tokenStartPtr, _tokenLength, _qmlMode); + int kind = T_IDENTIFIER; - if (_engine) { - if (kind == T_IDENTIFIER && identifierWithEscapeChars) - _tokenSpell = _engine->newStringRef(_tokenText); - else - _tokenSpell = _engine->midRef(_tokenStartPtr - _code.unicode(), _tokenLength); - } + if (! identifierWithEscapeChars) + kind = classify(_tokenStartPtr, _tokenLength, _qmlMode); - return kind; + if (_engine) { + if (kind == T_IDENTIFIER && identifierWithEscapeChars) + _tokenSpell = _engine->newStringRef(_tokenText); + else + _tokenSpell = _engine->midRef(_tokenStartPtr - _code.unicode(), _tokenLength); } + + return kind; } - } else if (ch.isDigit()) { - if (ch != QLatin1Char('0')) { - double integer = ch.unicode() - '0'; - - QChar n = _char; - const QChar *code = _codePtr; - while (n.isDigit()) { - integer = integer * 10 + (n.unicode() - '0'); - n = *code++; - } + } + } - if (n != QLatin1Char('.') && n != QLatin1Char('e') && n != QLatin1Char('E')) { - if (code != _codePtr) { - _codePtr = code - 1; - scanChar(); - } - _tokenValue = integer; - return T_NUMERIC_LITERAL; - } + break; + } + + return T_ERROR; +} + +int Lexer::scanNumber(QChar ch) +{ + if (ch != QLatin1Char('0')) { + QByteArray buf; + buf.reserve(64); + buf += ch.toLatin1(); + + QChar n = _char; + const QChar *code = _codePtr; + while (n.isDigit()) { + buf += n.toLatin1(); + n = *code++; + } + + if (n != QLatin1Char('.') && n != QLatin1Char('e') && n != QLatin1Char('E')) { + if (code != _codePtr) { + _codePtr = code - 1; + scanChar(); } + buf.append('\0'); + _tokenValue = strtod(buf.constData(), 0); + return T_NUMERIC_LITERAL; + } + } else if (_char.isDigit() && !qmlMode()) { + _errorCode = IllegalCharacter; + _errorMessage = QCoreApplication::translate("QQmlParser", "Decimal numbers can't start with '0'"); + return T_ERROR; + } - QVarLengthArray chars; - chars.append(ch.unicode()); + QVarLengthArray chars; + chars.append(ch.unicode()); - if (ch == QLatin1Char('0') && (_char == QLatin1Char('x') || _char == QLatin1Char('X'))) { - // parse hex integer literal + if (ch == QLatin1Char('0') && (_char == QLatin1Char('x') || _char == QLatin1Char('X'))) { + ch = _char; // remember the x or X to use it in the error message below. - chars.append(_char.unicode()); - scanChar(); // consume `x' + // parse hex integer literal + chars.append(_char.unicode()); + scanChar(); // consume `x' - while (isHexDigit(_char)) { - chars.append(_char.unicode()); - scanChar(); - } + while (isHexDigit(_char)) { + chars.append(_char.unicode()); + scanChar(); + } - _tokenValue = integerFromString(chars.constData(), chars.size(), 16); - return T_NUMERIC_LITERAL; - } + if (chars.size() < 3) { + _errorCode = IllegalHexNumber; + _errorMessage = QCoreApplication::translate("QQmlParser", "At least one hexadecimal digit is required after '0%1'").arg(ch); + return T_ERROR; + } - // decimal integer literal - while (_char.isDigit()) { - chars.append(_char.unicode()); - scanChar(); // consume the digit - } + _tokenValue = integerFromString(chars.constData(), chars.size(), 16); + return T_NUMERIC_LITERAL; + } - if (_char == QLatin1Char('.')) { - chars.append(_char.unicode()); - scanChar(); // consume `.' + // decimal integer literal + while (_char.isDigit()) { + chars.append(_char.unicode()); + scanChar(); // consume the digit + } - while (_char.isDigit()) { - chars.append(_char.unicode()); - scanChar(); - } + if (_char == QLatin1Char('.')) { + chars.append(_char.unicode()); + scanChar(); // consume `.' - if (_char == QLatin1Char('e') || _char == QLatin1Char('E')) { - if (_codePtr[0].isDigit() || ((_codePtr[0] == QLatin1Char('+') || _codePtr[0] == QLatin1Char('-')) && - _codePtr[1].isDigit())) { + while (_char.isDigit()) { + chars.append(_char.unicode()); + scanChar(); + } - chars.append(_char.unicode()); - scanChar(); // consume `e' + if (_char == QLatin1Char('e') || _char == QLatin1Char('E')) { + if (_codePtr[0].isDigit() || ((_codePtr[0] == QLatin1Char('+') || _codePtr[0] == QLatin1Char('-')) && + _codePtr[1].isDigit())) { - if (_char == QLatin1Char('+') || _char == QLatin1Char('-')) { - chars.append(_char.unicode()); - scanChar(); // consume the sign - } + chars.append(_char.unicode()); + scanChar(); // consume `e' - while (_char.isDigit()) { - chars.append(_char.unicode()); - scanChar(); - } - } + if (_char == QLatin1Char('+') || _char == QLatin1Char('-')) { + chars.append(_char.unicode()); + scanChar(); // consume the sign } - } else if (_char == QLatin1Char('e') || _char == QLatin1Char('E')) { - if (_codePtr[0].isDigit() || ((_codePtr[0] == QLatin1Char('+') || _codePtr[0] == QLatin1Char('-')) && - _codePtr[1].isDigit())) { + while (_char.isDigit()) { chars.append(_char.unicode()); - scanChar(); // consume `e' + scanChar(); + } + } + } + } else if (_char == QLatin1Char('e') || _char == QLatin1Char('E')) { + if (_codePtr[0].isDigit() || ((_codePtr[0] == QLatin1Char('+') || _codePtr[0] == QLatin1Char('-')) && + _codePtr[1].isDigit())) { - if (_char == QLatin1Char('+') || _char == QLatin1Char('-')) { - chars.append(_char.unicode()); - scanChar(); // consume the sign - } + chars.append(_char.unicode()); + scanChar(); // consume `e' - while (_char.isDigit()) { - chars.append(_char.unicode()); - scanChar(); - } - } + if (_char == QLatin1Char('+') || _char == QLatin1Char('-')) { + chars.append(_char.unicode()); + scanChar(); // consume the sign } - chars.append('\0'); + while (_char.isDigit()) { + chars.append(_char.unicode()); + scanChar(); + } + } + } - const char *begin = chars.constData(); - const char *end = 0; - bool ok = false; + if (chars.length() == 1) { + // if we ended up with a single digit, then it was a '0' + _tokenValue = 0; + return T_NUMERIC_LITERAL; + } - _tokenValue = qstrtod(begin, &end, &ok); + chars.append('\0'); - if (end - begin != chars.size() - 1) { - _errorCode = IllegalExponentIndicator; - _errorMessage = tr("QQmlParser", "Illegal syntax for exponential number"); - return T_ERROR; - } + const char *begin = chars.constData(); + const char *end = 0; + bool ok = false; - return T_NUMERIC_LITERAL; - } + _tokenValue = qstrtod(begin, &end, &ok); - break; + if (end - begin != chars.size() - 1) { + _errorCode = IllegalExponentIndicator; + _errorMessage = QCoreApplication::translate("QQmlParser", "Illegal syntax for exponential number"); + return T_ERROR; } - return T_ERROR; + return T_NUMERIC_LITERAL; } bool Lexer::scanRegExp(RegExpBodyPrefix prefix) @@ -857,11 +1026,6 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) while (true) { switch (_char.unicode()) { - case 0: // eof - case '\n': case '\r': // line terminator - _errorMessage = tr("QQmlParser", "Unterminated regular expression literal"); - return false; - case '/': scanChar(); @@ -870,7 +1034,7 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) while (isIdentLetter(_char)) { int flag = regExpFlagFromChar(_char); if (flag == 0) { - _errorMessage = tr("QQmlParser", "Invalid regular expression flag '%0'") + _errorMessage = QCoreApplication::translate("QQmlParser", "Invalid regular expression flag '%0'") .arg(QChar(_char)); return false; } @@ -886,8 +1050,8 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) _tokenText += _char; scanChar(); - if (_char.isNull() || isLineTerminator()) { - _errorMessage = tr("QQmlParser", "Unterminated regular expression backslash sequence"); + if (_codePtr > _endPtr || isLineTerminator()) { + _errorMessage = QCoreApplication::translate("QQmlParser", "Unterminated regular expression backslash sequence"); return false; } @@ -900,7 +1064,7 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) _tokenText += _char; scanChar(); - while (! _char.isNull() && ! isLineTerminator()) { + while (_codePtr <= _endPtr && ! isLineTerminator()) { if (_char == QLatin1Char(']')) break; else if (_char == QLatin1Char('\\')) { @@ -908,8 +1072,8 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) _tokenText += _char; scanChar(); - if (_char.isNull() || isLineTerminator()) { - _errorMessage = tr("QQmlParser", "Unterminated regular expression backslash sequence"); + if (_codePtr > _endPtr || isLineTerminator()) { + _errorMessage = QCoreApplication::translate("QQmlParser", "Unterminated regular expression backslash sequence"); return false; } @@ -922,7 +1086,7 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) } if (_char != QLatin1Char(']')) { - _errorMessage = tr("QQmlParser", "Unterminated regular expression class"); + _errorMessage = QCoreApplication::translate("QQmlParser", "Unterminated regular expression class"); return false; } @@ -931,8 +1095,13 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) break; default: - _tokenText += _char; - scanChar(); + if (_codePtr > _endPtr || isLineTerminator()) { + _errorMessage = QCoreApplication::translate("QQmlParser", "Unterminated regular expression literal"); + return false; + } else { + _tokenText += _char; + scanChar(); + } } // switch } // while @@ -941,7 +1110,28 @@ bool Lexer::scanRegExp(RegExpBodyPrefix prefix) bool Lexer::isLineTerminator() const { - return (_char == QLatin1Char('\n') || _char == QLatin1Char('\r')); + const ushort unicode = _char.unicode(); + return unicode == 0x000Au + || unicode == 0x000Du + || unicode == 0x2028u + || unicode == 0x2029u; +} + +unsigned Lexer::isLineTerminatorSequence() const +{ + switch (_char.unicode()) { + case 0x000Au: + case 0x2028u: + case 0x2029u: + return 1; + case 0x000Du: + if (_codePtr->unicode() == 0x000Au) + return 2; + else + return 1; + default: + return 0; + } } bool Lexer::isIdentLetter(QChar ch) @@ -975,31 +1165,6 @@ bool Lexer::isOctalDigit(ushort c) return (c >= '0' && c <= '7'); } -int Lexer::tokenKind() const -{ - return _tokenKind; -} - -int Lexer::tokenOffset() const -{ - return _tokenStartPtr - _code.unicode(); -} - -int Lexer::tokenLength() const -{ - return _tokenLength; -} - -int Lexer::tokenStartLine() const -{ - return _tokenLine; -} - -int Lexer::tokenStartColumn() const -{ - return _tokenStartPtr - _tokenLinePtr + 1; -} - int Lexer::tokenEndLine() const { return _currentLineNumber; @@ -1010,16 +1175,6 @@ int Lexer::tokenEndColumn() const return _codePtr - _lastLinePtr; } -QStringRef Lexer::tokenSpell() const -{ - return _tokenSpell; -} - -double Lexer::tokenValue() const -{ - return _tokenValue; -} - QString Lexer::tokenText() const { if (_validTokenText) @@ -1144,7 +1299,7 @@ bool Lexer::scanDirectives(Directives *directives) // // recognize the mandatory `as' followed by the module name // - if (! (lex() == T_RESERVED_WORD && tokenText() == QLatin1String("as"))) + if (! (lex() == T_IDENTIFIER && tokenText() == QLatin1String("as"))) return false; // expected `as' if (lex() != T_IDENTIFIER) @@ -1167,5 +1322,3 @@ bool Lexer::scanDirectives(Directives *directives) return true; } - -#include "qqmljskeywords_p.h" diff --git a/src/tools/qdoc/qmlparser/qqmljslexer_p.h b/src/tools/qdoc/qmlparser/qqmljslexer_p.h index cb6ff6bcdf..e1b51da92b 100644 --- a/src/tools/qdoc/qmlparser/qqmljslexer_p.h +++ b/src/tools/qdoc/qmlparser/qqmljslexer_p.h @@ -55,8 +55,8 @@ #include "qqmljsglobal_p.h" #include "qqmljsgrammar_p.h" -#include "tr.h" -#include + +#include QT_QML_BEGIN_NAMESPACE @@ -88,8 +88,6 @@ public: class QML_PARSER_EXPORT Lexer: public QQmlJSGrammar { - Q_DECLARE_TR_FUNCTIONS(QDoc::QQmlJS::Lexer) - public: enum { T_ABSTRACT = T_RESERVED_WORD, @@ -107,7 +105,6 @@ public: T_IMPLEMENTS = T_RESERVED_WORD, T_INT = T_RESERVED_WORD, T_INTERFACE = T_RESERVED_WORD, - T_LET = T_RESERVED_WORD, T_LONG = T_RESERVED_WORD, T_NATIVE = T_RESERVED_WORD, T_PACKAGE = T_RESERVED_WORD, @@ -119,13 +116,13 @@ public: T_SYNCHRONIZED = T_RESERVED_WORD, T_THROWS = T_RESERVED_WORD, T_TRANSIENT = T_RESERVED_WORD, - T_VOLATILE = T_RESERVED_WORD, - T_YIELD = T_RESERVED_WORD + T_VOLATILE = T_RESERVED_WORD }; enum Error { NoError, IllegalCharacter, + IllegalHexNumber, UnclosedStringLiteral, IllegalEscapeSequence, IllegalUnicodeEscapeSequence, @@ -161,18 +158,18 @@ public: int regExpFlags() const { return _patternFlags; } QString regExpPattern() const { return _tokenText; } - int tokenKind() const; - int tokenOffset() const; - int tokenLength() const; + int tokenKind() const { return _tokenKind; } + int tokenOffset() const { return _tokenStartPtr - _code.unicode(); } + int tokenLength() const { return _tokenLength; } - int tokenStartLine() const; - int tokenStartColumn() const; + int tokenStartLine() const { return _tokenLine; } + int tokenStartColumn() const { return _tokenStartPtr - _tokenLinePtr + 1; } int tokenEndLine() const; int tokenEndColumn() const; - QStringRef tokenSpell() const; - double tokenValue() const; + inline QStringRef tokenSpell() const { return _tokenSpell; } + double tokenValue() const { return _tokenValue; } QString tokenText() const; Error errorCode() const; @@ -194,8 +191,10 @@ protected: private: inline void scanChar(); int scanToken(); + int scanNumber(QChar ch); bool isLineTerminator() const; + unsigned isLineTerminatorSequence() const; static bool isIdentLetter(QChar c); static bool isDecimalDigit(ushort c); static bool isHexDigit(QChar c); @@ -214,6 +213,7 @@ private: QStringRef _tokenSpell; const QChar *_codePtr; + const QChar *_endPtr; const QChar *_lastLinePtr; const QChar *_tokenLinePtr; const QChar *_tokenStartPtr; diff --git a/src/tools/qdoc/qmlparser/qqmljsmemorypool_p.h b/src/tools/qdoc/qmlparser/qqmljsmemorypool_p.h index 541966fd15..820ae8ed71 100644 --- a/src/tools/qdoc/qmlparser/qqmljsmemorypool_p.h +++ b/src/tools/qdoc/qmlparser/qqmljsmemorypool_p.h @@ -60,7 +60,6 @@ #include #include -#include QT_QML_BEGIN_NAMESPACE diff --git a/src/tools/qdoc/qmlparser/qqmljsparser.cpp b/src/tools/qdoc/qmlparser/qqmljsparser.cpp index b7f571aa62..a0fa7a4711 100644 --- a/src/tools/qdoc/qmlparser/qqmljsparser.cpp +++ b/src/tools/qdoc/qmlparser/qqmljsparser.cpp @@ -39,23 +39,31 @@ ** ****************************************************************************/ -#include - -#include - #include "qqmljsengine_p.h" #include "qqmljslexer_p.h" #include "qqmljsast_p.h" #include "qqmljsmemorypool_p.h" +#include +#include + +#include #include "qqmljsparser_p.h" -#include +#include + +// +// W A R N I N G +// ------------- +// +// This file is automatically generated from qqmljs.g. +// Changes should be made to that file, not here. Any change to this file will +// be lost! // -// This file is automatically generated from qmljs.g. -// Changes will be lost. +// To regenerate this file, run: +// qlalr --no-debug --no-lines --qt qqmljs.g // using namespace QQmlJS; @@ -84,6 +92,7 @@ Parser::Parser(Engine *engine): state_stack(0), location_stack(0), string_stack(0), + program(0), first_token(0), last_token(0) { @@ -384,6 +393,7 @@ case 47: { case 48: { AST::UiParameterList *node = new (pool) AST::UiParameterList(sym(1).UiParameterList, stringRef(3), stringRef(4)); + node->propertyTypeToken = loc(3); node->commaToken = loc(2); node->identifierToken = loc(4); sym(1).Node = node; @@ -527,49 +537,49 @@ case 65: { sym(1).Node = new (pool) AST::UiSourceElement(sym(1).Node); } break; -case 71: { +case 73: { AST::ThisExpression *node = new (pool) AST::ThisExpression(); node->thisToken = loc(1); sym(1).Node = node; } break; -case 72: { +case 74: { AST::IdentifierExpression *node = new (pool) AST::IdentifierExpression(stringRef(1)); node->identifierToken = loc(1); sym(1).Node = node; } break; -case 73: { +case 75: { AST::NullExpression *node = new (pool) AST::NullExpression(); node->nullToken = loc(1); sym(1).Node = node; } break; -case 74: { +case 76: { AST::TrueLiteral *node = new (pool) AST::TrueLiteral(); node->trueToken = loc(1); sym(1).Node = node; } break; -case 75: { +case 77: { AST::FalseLiteral *node = new (pool) AST::FalseLiteral(); node->falseToken = loc(1); sym(1).Node = node; } break; -case 76: { +case 78: { AST::NumericLiteral *node = new (pool) AST::NumericLiteral(sym(1).dval); node->literalToken = loc(1); sym(1).Node = node; } break; -case 77: -case 78: { +case 79: +case 80: { AST::StringLiteral *node = new (pool) AST::StringLiteral(stringRef(1)); node->literalToken = loc(1); sym(1).Node = node; } break; -case 79: { +case 81: { bool rx = lexer->scanRegExp(Lexer::NoPrefix); if (!rx) { diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage())); @@ -585,7 +595,7 @@ case 79: { sym(1).Node = node; } break; -case 80: { +case 82: { bool rx = lexer->scanRegExp(Lexer::EqualPrefix); if (!rx) { diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage())); @@ -601,28 +611,28 @@ case 80: { sym(1).Node = node; } break; -case 81: { +case 83: { AST::ArrayLiteral *node = new (pool) AST::ArrayLiteral((AST::Elision *) 0); node->lbracketToken = loc(1); node->rbracketToken = loc(2); sym(1).Node = node; } break; -case 82: { +case 84: { AST::ArrayLiteral *node = new (pool) AST::ArrayLiteral(sym(2).Elision->finish()); node->lbracketToken = loc(1); node->rbracketToken = loc(3); sym(1).Node = node; } break; -case 83: { +case 85: { AST::ArrayLiteral *node = new (pool) AST::ArrayLiteral(sym(2).ElementList->finish ()); node->lbracketToken = loc(1); node->rbracketToken = loc(3); sym(1).Node = node; } break; -case 84: { +case 86: { AST::ArrayLiteral *node = new (pool) AST::ArrayLiteral(sym(2).ElementList->finish (), (AST::Elision *) 0); node->lbracketToken = loc(1); @@ -631,7 +641,7 @@ case 84: { sym(1).Node = node; } break; -case 85: { +case 87: { AST::ArrayLiteral *node = new (pool) AST::ArrayLiteral(sym(2).ElementList->finish (), sym(4).Elision->finish()); node->lbracketToken = loc(1); @@ -640,11 +650,11 @@ case 85: { sym(1).Node = node; } break; -case 86: { +case 88: { AST::ObjectLiteral *node = 0; if (sym(2).Node) node = new (pool) AST::ObjectLiteral( - sym(2).PropertyNameAndValueList->finish ()); + sym(2).PropertyAssignmentList->finish ()); else node = new (pool) AST::ObjectLiteral(); node->lbraceToken = loc(1); @@ -652,22 +662,22 @@ case 86: { sym(1).Node = node; } break; -case 87: { +case 89: { AST::ObjectLiteral *node = new (pool) AST::ObjectLiteral( - sym(2).PropertyNameAndValueList->finish ()); + sym(2).PropertyAssignmentList->finish ()); node->lbraceToken = loc(1); node->rbraceToken = loc(4); sym(1).Node = node; } break; -case 88: { +case 90: { AST::NestedExpression *node = new (pool) AST::NestedExpression(sym(2).Expression); node->lparenToken = loc(1); node->rparenToken = loc(3); sym(1).Node = node; } break; -case 89: { +case 91: { if (AST::ArrayMemberExpression *mem = AST::cast(sym(1).Expression)) { diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Warning, mem->lbracketToken, QLatin1String("Ignored annotation"))); @@ -687,100 +697,119 @@ case 89: { } } break; -case 90: { +case 92: { sym(1).Node = new (pool) AST::ElementList((AST::Elision *) 0, sym(1).Expression); } break; -case 91: { +case 93: { sym(1).Node = new (pool) AST::ElementList(sym(1).Elision->finish(), sym(2).Expression); } break; -case 92: { +case 94: { AST::ElementList *node = new (pool) AST::ElementList(sym(1).ElementList, (AST::Elision *) 0, sym(3).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -case 93: { +case 95: { AST::ElementList *node = new (pool) AST::ElementList(sym(1).ElementList, sym(3).Elision->finish(), sym(4).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -case 94: { +case 96: { AST::Elision *node = new (pool) AST::Elision(); node->commaToken = loc(1); sym(1).Node = node; } break; -case 95: { +case 97: { AST::Elision *node = new (pool) AST::Elision(sym(1).Elision); node->commaToken = loc(2); sym(1).Node = node; } break; -case 96: { - AST::PropertyNameAndValueList *node = new (pool) AST::PropertyNameAndValueList( +case 98: { + AST::PropertyNameAndValue *node = new (pool) AST::PropertyNameAndValue( sym(1).PropertyName, sym(3).Expression); node->colonToken = loc(2); sym(1).Node = node; } break; -case 97: { - AST::PropertyNameAndValueList *node = new (pool) AST::PropertyNameAndValueList( - sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression); - node->commaToken = loc(2); - node->colonToken = loc(4); +case 99: { + AST::PropertyGetterSetter *node = new (pool) AST::PropertyGetterSetter( + sym(2).PropertyName, sym(6).FunctionBody); + node->getSetToken = loc(1); + node->lparenToken = loc(3); + node->rparenToken = loc(4); + node->lbraceToken = loc(5); + node->rbraceToken = loc(7); sym(1).Node = node; } break; -case 98: { - AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1)); - node->propertyNameToken = loc(1); +case 100: { + AST::PropertyGetterSetter *node = new (pool) AST::PropertyGetterSetter( + sym(2).PropertyName, sym(4).FormalParameterList, sym(7).FunctionBody); + node->getSetToken = loc(1); + node->lparenToken = loc(3); + node->rparenToken = loc(5); + node->lbraceToken = loc(6); + node->rbraceToken = loc(8); sym(1).Node = node; } break; -case 99: -case 100: { + +case 101: { + sym(1).Node = new (pool) AST::PropertyAssignmentList(sym(1).PropertyAssignment); +} break; + +case 102: { + AST::PropertyAssignmentList *node = new (pool) AST::PropertyAssignmentList( + sym(1).PropertyAssignmentList, sym(3).PropertyAssignment); + node->commaToken = loc(2); + sym(1).Node = node; +} break; + +case 103: { AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1)); node->propertyNameToken = loc(1); sym(1).Node = node; } break; -case 101: { +case 104: { AST::StringLiteralPropertyName *node = new (pool) AST::StringLiteralPropertyName(stringRef(1)); node->propertyNameToken = loc(1); sym(1).Node = node; } break; -case 102: { +case 105: { AST::NumericLiteralPropertyName *node = new (pool) AST::NumericLiteralPropertyName(sym(1).dval); node->propertyNameToken = loc(1); sym(1).Node = node; } break; -case 103: { +case 106: { AST::IdentifierPropertyName *node = new (pool) AST::IdentifierPropertyName(stringRef(1)); node->propertyNameToken = loc(1); sym(1).Node = node; } break; -case 139: { +case 142: { AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(3).Expression); node->lbracketToken = loc(2); node->rbracketToken = loc(4); sym(1).Node = node; } break; -case 140: { +case 143: { AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); node->dotToken = loc(2); node->identifierToken = loc(3); sym(1).Node = node; } break; -case 141: { +case 144: { AST::NewMemberExpression *node = new (pool) AST::NewMemberExpression(sym(2).Expression, sym(4).ArgumentList); node->newToken = loc(1); node->lparenToken = loc(3); @@ -788,384 +817,384 @@ case 141: { sym(1).Node = node; } break; -case 143: { +case 146: { AST::NewExpression *node = new (pool) AST::NewExpression(sym(2).Expression); node->newToken = loc(1); sym(1).Node = node; } break; -case 144: { +case 147: { AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(3).ArgumentList); node->lparenToken = loc(2); node->rparenToken = loc(4); sym(1).Node = node; } break; -case 145: { +case 148: { AST::CallExpression *node = new (pool) AST::CallExpression(sym(1).Expression, sym(3).ArgumentList); node->lparenToken = loc(2); node->rparenToken = loc(4); sym(1).Node = node; } break; -case 146: { +case 149: { AST::ArrayMemberExpression *node = new (pool) AST::ArrayMemberExpression(sym(1).Expression, sym(3).Expression); node->lbracketToken = loc(2); node->rbracketToken = loc(4); sym(1).Node = node; } break; -case 147: { +case 150: { AST::FieldMemberExpression *node = new (pool) AST::FieldMemberExpression(sym(1).Expression, stringRef(3)); node->dotToken = loc(2); node->identifierToken = loc(3); sym(1).Node = node; } break; -case 148: { +case 151: { sym(1).Node = 0; } break; -case 149: { +case 152: { sym(1).Node = sym(1).ArgumentList->finish(); } break; -case 150: { +case 153: { sym(1).Node = new (pool) AST::ArgumentList(sym(1).Expression); } break; -case 151: { +case 154: { AST::ArgumentList *node = new (pool) AST::ArgumentList(sym(1).ArgumentList, sym(3).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -case 155: { +case 158: { AST::PostIncrementExpression *node = new (pool) AST::PostIncrementExpression(sym(1).Expression); node->incrementToken = loc(2); sym(1).Node = node; } break; -case 156: { +case 159: { AST::PostDecrementExpression *node = new (pool) AST::PostDecrementExpression(sym(1).Expression); node->decrementToken = loc(2); sym(1).Node = node; } break; -case 158: { +case 161: { AST::DeleteExpression *node = new (pool) AST::DeleteExpression(sym(2).Expression); node->deleteToken = loc(1); sym(1).Node = node; } break; -case 159: { +case 162: { AST::VoidExpression *node = new (pool) AST::VoidExpression(sym(2).Expression); node->voidToken = loc(1); sym(1).Node = node; } break; -case 160: { +case 163: { AST::TypeOfExpression *node = new (pool) AST::TypeOfExpression(sym(2).Expression); node->typeofToken = loc(1); sym(1).Node = node; } break; -case 161: { +case 164: { AST::PreIncrementExpression *node = new (pool) AST::PreIncrementExpression(sym(2).Expression); node->incrementToken = loc(1); sym(1).Node = node; } break; -case 162: { +case 165: { AST::PreDecrementExpression *node = new (pool) AST::PreDecrementExpression(sym(2).Expression); node->decrementToken = loc(1); sym(1).Node = node; } break; -case 163: { +case 166: { AST::UnaryPlusExpression *node = new (pool) AST::UnaryPlusExpression(sym(2).Expression); node->plusToken = loc(1); sym(1).Node = node; } break; -case 164: { +case 167: { AST::UnaryMinusExpression *node = new (pool) AST::UnaryMinusExpression(sym(2).Expression); node->minusToken = loc(1); sym(1).Node = node; } break; -case 165: { +case 168: { AST::TildeExpression *node = new (pool) AST::TildeExpression(sym(2).Expression); node->tildeToken = loc(1); sym(1).Node = node; } break; -case 166: { +case 169: { AST::NotExpression *node = new (pool) AST::NotExpression(sym(2).Expression); node->notToken = loc(1); sym(1).Node = node; } break; -case 168: { +case 171: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Mul, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 169: { +case 172: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Div, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 170: { +case 173: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Mod, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 172: { +case 175: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Add, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 173: { +case 176: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Sub, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 175: { +case 178: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::LShift, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 176: { +case 179: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::RShift, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 177: { +case 180: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::URShift, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 179: { +case 182: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Lt, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 180: { +case 183: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Gt, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 181: { +case 184: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Le, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 182: { +case 185: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Ge, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 183: { +case 186: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::InstanceOf, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 184: { +case 187: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::In, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 186: { +case 189: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Lt, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 187: { +case 190: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Gt, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 188: { +case 191: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Le, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 189: { +case 192: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Ge, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 190: { +case 193: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::InstanceOf, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 192: { +case 195: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Equal, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 193: { +case 196: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::NotEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 194: { +case 197: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::StrictEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 195: { +case 198: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::StrictNotEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 197: { +case 200: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Equal, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 198: { +case 201: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::NotEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 199: { +case 202: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::StrictEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 200: { +case 203: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::StrictNotEqual, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 202: { +case 205: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitAnd, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 204: { +case 207: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitAnd, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 206: { +case 209: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitXor, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 208: { +case 211: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitXor, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 210: { +case 213: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitOr, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 212: { +case 215: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::BitOr, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 214: { +case 217: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::And, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 216: { +case 219: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::And, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 218: { +case 221: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Or, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 220: { +case 223: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, QSOperator::Or, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 222: { +case 225: { AST::ConditionalExpression *node = new (pool) AST::ConditionalExpression(sym(1).Expression, sym(3).Expression, sym(5).Expression); node->questionToken = loc(2); @@ -1173,7 +1202,7 @@ case 222: { sym(1).Node = node; } break; -case 224: { +case 227: { AST::ConditionalExpression *node = new (pool) AST::ConditionalExpression(sym(1).Expression, sym(3).Expression, sym(5).Expression); node->questionToken = loc(2); @@ -1181,112 +1210,112 @@ case 224: { sym(1).Node = node; } break; -case 226: { +case 229: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 228: { +case 231: { AST::BinaryExpression *node = new (pool) AST::BinaryExpression(sym(1).Expression, sym(2).ival, sym(3).Expression); node->operatorToken = loc(2); sym(1).Node = node; } break; -case 229: { +case 232: { sym(1).ival = QSOperator::Assign; } break; -case 230: { +case 233: { sym(1).ival = QSOperator::InplaceMul; } break; -case 231: { +case 234: { sym(1).ival = QSOperator::InplaceDiv; } break; -case 232: { +case 235: { sym(1).ival = QSOperator::InplaceMod; } break; -case 233: { +case 236: { sym(1).ival = QSOperator::InplaceAdd; } break; -case 234: { +case 237: { sym(1).ival = QSOperator::InplaceSub; } break; -case 235: { +case 238: { sym(1).ival = QSOperator::InplaceLeftShift; } break; -case 236: { +case 239: { sym(1).ival = QSOperator::InplaceRightShift; } break; -case 237: { +case 240: { sym(1).ival = QSOperator::InplaceURightShift; } break; -case 238: { +case 241: { sym(1).ival = QSOperator::InplaceAnd; } break; -case 239: { +case 242: { sym(1).ival = QSOperator::InplaceXor; } break; -case 240: { +case 243: { sym(1).ival = QSOperator::InplaceOr; } break; -case 242: { +case 245: { AST::Expression *node = new (pool) AST::Expression(sym(1).Expression, sym(3).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -case 243: { +case 246: { sym(1).Node = 0; } break; -case 246: { +case 249: { AST::Expression *node = new (pool) AST::Expression(sym(1).Expression, sym(3).Expression); node->commaToken = loc(2); sym(1).Node = node; } break; -case 247: { +case 250: { sym(1).Node = 0; } break; -case 264: { +case 267: { AST::Block *node = new (pool) AST::Block(sym(2).StatementList); node->lbraceToken = loc(1); node->rbraceToken = loc(3); sym(1).Node = node; } break; -case 265: { +case 268: { sym(1).Node = new (pool) AST::StatementList(sym(1).Statement); } break; -case 266: { +case 269: { sym(1).Node = new (pool) AST::StatementList(sym(1).StatementList, sym(2).Statement); } break; -case 267: { +case 270: { sym(1).Node = 0; } break; -case 268: { +case 271: { sym(1).Node = sym(1).StatementList->finish (); } break; -case 270: { +case 273: { AST::VariableStatement *node = new (pool) AST::VariableStatement( sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST)); node->declarationKindToken = loc(1); @@ -1294,76 +1323,76 @@ case 270: { sym(1).Node = node; } break; -case 271: { +case 274: { sym(1).ival = T_CONST; } break; -case 272: { +case 275: { sym(1).ival = T_VAR; } break; -case 273: { +case 276: { sym(1).Node = new (pool) AST::VariableDeclarationList(sym(1).VariableDeclaration); } break; -case 274: { +case 277: { AST::VariableDeclarationList *node = new (pool) AST::VariableDeclarationList( sym(1).VariableDeclarationList, sym(3).VariableDeclaration); node->commaToken = loc(2); sym(1).Node = node; } break; -case 275: { +case 278: { sym(1).Node = new (pool) AST::VariableDeclarationList(sym(1).VariableDeclaration); } break; -case 276: { +case 279: { sym(1).Node = new (pool) AST::VariableDeclarationList(sym(1).VariableDeclarationList, sym(3).VariableDeclaration); } break; -case 277: { +case 280: { AST::VariableDeclaration *node = new (pool) AST::VariableDeclaration(stringRef(1), sym(2).Expression); node->identifierToken = loc(1); sym(1).Node = node; } break; -case 278: { +case 281: { AST::VariableDeclaration *node = new (pool) AST::VariableDeclaration(stringRef(1), sym(2).Expression); node->identifierToken = loc(1); sym(1).Node = node; } break; -case 279: { +case 282: { // ### TODO: AST for initializer sym(1) = sym(2); } break; -case 280: { +case 283: { sym(1).Node = 0; } break; -case 282: { +case 285: { // ### TODO: AST for initializer sym(1) = sym(2); } break; -case 283: { +case 286: { sym(1).Node = 0; } break; -case 285: { +case 288: { AST::EmptyStatement *node = new (pool) AST::EmptyStatement(); node->semicolonToken = loc(1); sym(1).Node = node; } break; -case 287: { +case 290: { AST::ExpressionStatement *node = new (pool) AST::ExpressionStatement(sym(1).Expression); node->semicolonToken = loc(2); sym(1).Node = node; } break; -case 288: { +case 291: { AST::IfStatement *node = new (pool) AST::IfStatement(sym(3).Expression, sym(5).Statement, sym(7).Statement); node->ifToken = loc(1); node->lparenToken = loc(2); @@ -1372,7 +1401,7 @@ case 288: { sym(1).Node = node; } break; -case 289: { +case 292: { AST::IfStatement *node = new (pool) AST::IfStatement(sym(3).Expression, sym(5).Statement); node->ifToken = loc(1); node->lparenToken = loc(2); @@ -1380,7 +1409,7 @@ case 289: { sym(1).Node = node; } break; -case 291: { +case 295: { AST::DoWhileStatement *node = new (pool) AST::DoWhileStatement(sym(2).Statement, sym(5).Expression); node->doToken = loc(1); node->whileToken = loc(3); @@ -1390,7 +1419,7 @@ case 291: { sym(1).Node = node; } break; -case 292: { +case 296: { AST::WhileStatement *node = new (pool) AST::WhileStatement(sym(3).Expression, sym(5).Statement); node->whileToken = loc(1); node->lparenToken = loc(2); @@ -1398,7 +1427,7 @@ case 292: { sym(1).Node = node; } break; -case 293: { +case 297: { AST::ForStatement *node = new (pool) AST::ForStatement(sym(3).Expression, sym(5).Expression, sym(7).Expression, sym(9).Statement); node->forToken = loc(1); @@ -1409,7 +1438,7 @@ case 293: { sym(1).Node = node; } break; -case 294: { +case 298: { AST::LocalForStatement *node = new (pool) AST::LocalForStatement( sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression, sym(8).Expression, sym(10).Statement); @@ -1422,7 +1451,7 @@ case 294: { sym(1).Node = node; } break; -case 295: { +case 299: { AST:: ForEachStatement *node = new (pool) AST::ForEachStatement(sym(3).Expression, sym(5).Expression, sym(7).Statement); node->forToken = loc(1); @@ -1432,7 +1461,7 @@ case 295: { sym(1).Node = node; } break; -case 296: { +case 300: { AST::LocalForEachStatement *node = new (pool) AST::LocalForEachStatement( sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement); node->forToken = loc(1); @@ -1443,14 +1472,14 @@ case 296: { sym(1).Node = node; } break; -case 298: { +case 302: { AST::ContinueStatement *node = new (pool) AST::ContinueStatement(); node->continueToken = loc(1); node->semicolonToken = loc(2); sym(1).Node = node; } break; -case 300: { +case 304: { AST::ContinueStatement *node = new (pool) AST::ContinueStatement(stringRef(2)); node->continueToken = loc(1); node->identifierToken = loc(2); @@ -1458,14 +1487,14 @@ case 300: { sym(1).Node = node; } break; -case 302: { +case 306: { AST::BreakStatement *node = new (pool) AST::BreakStatement(QStringRef()); node->breakToken = loc(1); node->semicolonToken = loc(2); sym(1).Node = node; } break; -case 304: { +case 308: { AST::BreakStatement *node = new (pool) AST::BreakStatement(stringRef(2)); node->breakToken = loc(1); node->identifierToken = loc(2); @@ -1473,14 +1502,14 @@ case 304: { sym(1).Node = node; } break; -case 306: { +case 310: { AST::ReturnStatement *node = new (pool) AST::ReturnStatement(sym(2).Expression); node->returnToken = loc(1); node->semicolonToken = loc(3); sym(1).Node = node; } break; -case 307: { +case 311: { AST::WithStatement *node = new (pool) AST::WithStatement(sym(3).Expression, sym(5).Statement); node->withToken = loc(1); node->lparenToken = loc(2); @@ -1488,7 +1517,7 @@ case 307: { sym(1).Node = node; } break; -case 308: { +case 312: { AST::SwitchStatement *node = new (pool) AST::SwitchStatement(sym(3).Expression, sym(5).CaseBlock); node->switchToken = loc(1); node->lparenToken = loc(2); @@ -1496,90 +1525,83 @@ case 308: { sym(1).Node = node; } break; -case 309: { +case 313: { AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses); node->lbraceToken = loc(1); node->rbraceToken = loc(3); sym(1).Node = node; } break; -case 310: { +case 314: { AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses); node->lbraceToken = loc(1); node->rbraceToken = loc(5); sym(1).Node = node; } break; -case 311: { +case 315: { sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClause); } break; -case 312: { +case 316: { sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClauses, sym(2).CaseClause); } break; -case 313: { +case 317: { sym(1).Node = 0; } break; -case 314: { +case 318: { sym(1).Node = sym(1).CaseClauses->finish (); } break; -case 315: { +case 319: { AST::CaseClause *node = new (pool) AST::CaseClause(sym(2).Expression, sym(4).StatementList); node->caseToken = loc(1); node->colonToken = loc(3); sym(1).Node = node; } break; -case 316: { +case 320: { AST::DefaultClause *node = new (pool) AST::DefaultClause(sym(3).StatementList); node->defaultToken = loc(1); node->colonToken = loc(2); sym(1).Node = node; } break; -case 317: -case 318: { - AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement); - node->identifierToken = loc(1); - node->colonToken = loc(2); - sym(1).Node = node; -} break; -case 319: { +case 321: { AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement); node->identifierToken = loc(1); node->colonToken = loc(2); sym(1).Node = node; } break; -case 321: { +case 323: { AST::ThrowStatement *node = new (pool) AST::ThrowStatement(sym(2).Expression); node->throwToken = loc(1); node->semicolonToken = loc(3); sym(1).Node = node; } break; -case 322: { +case 324: { AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch); node->tryToken = loc(1); sym(1).Node = node; } break; -case 323: { +case 325: { AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Finally); node->tryToken = loc(1); sym(1).Node = node; } break; -case 324: { +case 326: { AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch, sym(4).Finally); node->tryToken = loc(1); sym(1).Node = node; } break; -case 325: { +case 327: { AST::Catch *node = new (pool) AST::Catch(stringRef(3), sym(5).Block); node->catchToken = loc(1); node->lparenToken = loc(2); @@ -1588,20 +1610,20 @@ case 325: { sym(1).Node = node; } break; -case 326: { +case 328: { AST::Finally *node = new (pool) AST::Finally(sym(2).Block); node->finallyToken = loc(1); sym(1).Node = node; } break; -case 328: { +case 330: { AST::DebuggerStatement *node = new (pool) AST::DebuggerStatement(); node->debuggerToken = loc(1); node->semicolonToken = loc(2); sym(1).Node = node; } break; -case 329: { +case 332: { AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody); node->functionToken = loc(1); node->identifierToken = loc(2); @@ -1612,7 +1634,7 @@ case 329: { sym(1).Node = node; } break; -case 330: { +case 333: { AST::FunctionExpression *node = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody); node->functionToken = loc(1); if (! stringRef(2).isNull()) @@ -1624,60 +1646,66 @@ case 330: { sym(1).Node = node; } break; -case 331: { +case 334: { + AST::FunctionExpression *node = new (pool) AST::FunctionExpression(QStringRef(), sym(3).FormalParameterList, sym(6).FunctionBody); + node->functionToken = loc(1); + node->lparenToken = loc(2); + node->rparenToken = loc(4); + node->lbraceToken = loc(5); + node->rbraceToken = loc(7); + sym(1).Node = node; +} break; + +case 335: { AST::FormalParameterList *node = new (pool) AST::FormalParameterList(stringRef(1)); node->identifierToken = loc(1); sym(1).Node = node; } break; -case 332: { +case 336: { AST::FormalParameterList *node = new (pool) AST::FormalParameterList(sym(1).FormalParameterList, stringRef(3)); node->commaToken = loc(2); node->identifierToken = loc(3); sym(1).Node = node; } break; -case 333: { +case 337: { sym(1).Node = 0; } break; -case 334: { +case 338: { sym(1).Node = sym(1).FormalParameterList->finish (); } break; -case 335: { +case 339: { sym(1).Node = 0; } break; -case 337: { +case 341: { sym(1).Node = new (pool) AST::FunctionBody(sym(1).SourceElements->finish ()); } break; -case 339: { +case 343: { sym(1).Node = new (pool) AST::Program(sym(1).SourceElements->finish ()); } break; -case 340: { +case 344: { sym(1).Node = new (pool) AST::SourceElements(sym(1).SourceElement); } break; -case 341: { +case 345: { sym(1).Node = new (pool) AST::SourceElements(sym(1).SourceElements, sym(2).SourceElement); } break; -case 342: { +case 346: { sym(1).Node = new (pool) AST::StatementSourceElement(sym(1).Statement); } break; -case 343: { +case 347: { sym(1).Node = new (pool) AST::FunctionSourceElement(sym(1).FunctionDeclaration); } break; -case 344: { - stringRef(1) = QStringRef(); -} break; - -case 346: { +case 348: { sym(1).Node = 0; } break; @@ -1690,7 +1718,8 @@ case 346: { const int errorState = state_stack[tos]; // automatic insertion of `;' - if (yytoken != -1 && t_action(errorState, T_AUTOMATIC_SEMICOLON) && lexer->canInsertAutomaticSemicolon(yytoken)) { + if (yytoken != -1 && ((t_action(errorState, T_AUTOMATIC_SEMICOLON) && lexer->canInsertAutomaticSemicolon(yytoken)) + || t_action(errorState, T_COMPATIBILITY_SEMICOLON))) { SavedToken &tk = token_buffer[0]; tk.token = yytoken; tk.dval = yylval; @@ -1702,7 +1731,7 @@ case 346: { yylloc.startColumn += yylloc.length; yylloc.length = 0; - //const QString msg = tr("QQmlParser", "Missing `;'"); + //const QString msg = qApp->translate("QQmlParser", "Missing `;'"); //diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Warning, yylloc, msg)); first_token = &token_buffer[0]; @@ -1732,9 +1761,9 @@ case 346: { QString msg; int token = token_buffer[0].token; if (token < 0 || token >= TERMINAL_COUNT) - msg = tr("QQmlParser", "Syntax error"); + msg = qApp->translate("QQmlParser", "Syntax error"); else - msg = tr("QQmlParser", "Unexpected token `%1'").arg(QLatin1String(spell[token])); + msg = qApp->translate("QQmlParser", "Unexpected token `%1'").arg(QLatin1String(spell[token])); diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); action = errorState; @@ -1762,7 +1791,7 @@ case 346: { for (int *tk = tokens; *tk != EOF_SYMBOL; ++tk) { int a = t_action(errorState, *tk); if (a > 0 && t_action(a, yytoken)) { - const QString msg = tr("QQmlParser", "Expected token `%1'").arg(QLatin1String(spell[*tk])); + const QString msg = qApp->translate("QQmlParser", "Expected token `%1'").arg(QLatin1String(spell[*tk])); diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); yytoken = *tk; @@ -1786,7 +1815,7 @@ case 346: { int a = t_action(errorState, tk); if (a > 0 && t_action(a, yytoken)) { - const QString msg = tr("QQmlParser", "Expected token `%1'").arg(QLatin1String(spell[tk])); + const QString msg = qApp->translate("QQmlParser", "Expected token `%1'").arg(QLatin1String(spell[tk])); diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); yytoken = tk; @@ -1799,7 +1828,7 @@ case 346: { } } - const QString msg = tr("QQmlParser", "Syntax error"); + const QString msg = qApp->translate("QQmlParser", "Syntax error"); diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); } diff --git a/src/tools/qdoc/qmlparser/qqmljsparser_p.h b/src/tools/qdoc/qmlparser/qqmljsparser_p.h index 9fe7428bc2..1b13690547 100644 --- a/src/tools/qdoc/qmlparser/qqmljsparser_p.h +++ b/src/tools/qdoc/qmlparser/qqmljsparser_p.h @@ -52,8 +52,15 @@ // // -// This file is automatically generated from qmljs.g. -// Changes will be lost. +// W A R N I N G +// ------------- +// +// This file is automatically generated from qqmljs.g. +// Changes should be made to that file, not here. Any change to this file will +// be lost! +// +// To regenerate this file, run: +// qlalr --no-debug --no-lines --qt qqmljs.g // #ifndef QQMLJSPARSER_P_H @@ -64,8 +71,8 @@ #include "qqmljsast_p.h" #include "qqmljsengine_p.h" -#include -#include +#include +#include QT_QML_BEGIN_NAMESPACE @@ -75,8 +82,6 @@ class Engine; class QML_PARSER_EXPORT Parser: protected QQmlJSGrammar { - Q_DECLARE_TR_FUNCTIONS(QDoc::QQmlJS::Parser) - public: union Value { int ival; @@ -96,7 +101,8 @@ public: AST::FunctionDeclaration *FunctionDeclaration; AST::Node *Node; AST::PropertyName *PropertyName; - AST::PropertyNameAndValueList *PropertyNameAndValueList; + AST::PropertyAssignment *PropertyAssignment; + AST::PropertyAssignmentList *PropertyAssignmentList; AST::SourceElement *SourceElement; AST::SourceElements *SourceElements; AST::Statement *Statement; @@ -239,9 +245,9 @@ protected: -#define J_SCRIPT_REGEXPLITERAL_RULE1 79 +#define J_SCRIPT_REGEXPLITERAL_RULE1 81 -#define J_SCRIPT_REGEXPLITERAL_RULE2 80 +#define J_SCRIPT_REGEXPLITERAL_RULE2 82 QT_QML_END_NAMESPACE -- cgit v1.2.3 From ee328adb2eb4d6e7baeda39db13f693628eaa0cf Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 14 Mar 2013 18:18:33 +0100 Subject: QTextEngine capitalization doesn't work with QRawFont The capitalization settings is attempted read via specialData->addFormats, but the QTextCharFormat there is reset when added, and should instead be accessed through specialData->addFormatIndices. Change-Id: I190c419f07c3f7e803ca1d44059e8f538216b9ab Reviewed-by: Pierre Rossi --- src/gui/text/qtextengine.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index a0deeddb33..f1a0804e68 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1435,9 +1435,10 @@ void QTextEngine::itemize() const int lastIndex = 0; for (int i = 0; i < specialData->addFormats.size(); ++i) { const QTextLayout::FormatRange &range = specialData->addFormats.at(i); - if (range.format.fontCapitalization()) { + QTextCharFormat format = formats()->charFormat(specialData->addFormatIndices.at(i)); + if (format.fontCapitalization()) { itemizer.generate(lastIndex, range.start - lastIndex, QFont::MixedCase); - itemizer.generate(range.start, range.length, range.format.fontCapitalization()); + itemizer.generate(range.start, range.length, format.fontCapitalization()); lastIndex = range.start + range.length; } } -- cgit v1.2.3 From 1a60bfdcd1260aad8e8daeb117d4526970aa8228 Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Thu, 7 Mar 2013 16:29:11 +0200 Subject: XCB: don't map hidden windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This bug was introduced by the XEMBED implementation (carried over from Qt4, but there it applied to QX11EmbedWidget only): the _XEMBED_INFO property is used to inform the *embedder* whether the embedded window should be mapped when embedded. Task-number: QTBUG-30084 Change-Id: I8d1c467874bdee3300a1b18b8174b2d62f498713 Reviewed-by: Samuel Rødal --- src/plugins/platforms/xcb/qxcbwindow.cpp | 18 ------------------ 1 file changed, 18 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index 27cd163c36..20d312216a 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -1781,24 +1781,6 @@ void QXcbWindow::handlePropertyNotifyEvent(const xcb_property_notify_event_t *ev } return; } - - const xcb_atom_t xEmbedInfoAtom = atom(QXcbAtom::_XEMBED_INFO); - if (event->atom == xEmbedInfoAtom) { - const xcb_get_property_cookie_t get_cookie = - xcb_get_property(xcb_connection(), 0, m_window, xEmbedInfoAtom, - XCB_ATOM_ANY, 0, 3); - - xcb_get_property_reply_t *reply = - xcb_get_property_reply(xcb_connection(), get_cookie, NULL); - if (reply && reply->length >= 2) { - const long *data = (const long *)xcb_get_property_value(reply); - if (data[1] & XEMBED_MAPPED) - Q_XCB_CALL(xcb_map_window(xcb_connection(), m_window)); - else - Q_XCB_CALL(xcb_unmap_window(xcb_connection(), m_window)); - } - free(reply); - } } void QXcbWindow::handleFocusInEvent(const xcb_focus_in_event_t *) -- cgit v1.2.3 From 379886d24b9b0a88930dc479db2217c15381814f Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Thu, 14 Mar 2013 17:11:52 +0000 Subject: Fix calling convention in ANGLE builds on Windows Desktop OpenGL builds on windows correctly define APIENTRY whereas at present the ES2 (ANGLE) builds do not. This leads to QOPENGLF_APIENTRY having the wrong calling convention. This fix is required for https://codereview.qt-project.org/#change,48660 but may also fix any random crashes that people may be seeing with other Qt-wrapped OpenGL functions in ANGLE builds. Change-Id: I8068c181d41be949d29168bd5ca1a181cc2245c7 Reviewed-by: Giuseppe D'Angelo Reviewed-by: Friedemann Kleint --- src/gui/opengl/qopengl.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h index 0613527333..c5bff90d2a 100644 --- a/src/gui/opengl/qopengl.h +++ b/src/gui/opengl/qopengl.h @@ -46,6 +46,11 @@ #include +// Windows always needs this to ensure that APIENTRY gets defined +#if defined(Q_OS_WIN) +# include +#endif + // Note: Mac OSX is a "controlled platform" for OpenGL ABI so we // use the system provided headers there. Controlled means that the // headers always match the actual driver implementation so there @@ -101,9 +106,6 @@ typedef GLfloat GLdouble; # endif # include # else -# if defined(Q_OS_WIN) -# include -# endif # define GL_GLEXT_LEGACY // Prevents GL/gl.h form #including system glext.h # include # include -- cgit v1.2.3 From d8bef6bb2e7523112781ad81e0268fa67b610c3b Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Fri, 15 Mar 2013 04:54:43 +0000 Subject: Add a minor convenience for calculating the distance to a point Change-Id: I312727bf6858ead6c30fe20bf3abc5afc73a3a14 Reviewed-by: Sean Harmer --- src/gui/math3d/qvector3d.cpp | 13 +++++++++++++ src/gui/math3d/qvector3d.h | 1 + 2 files changed, 14 insertions(+) (limited to 'src') diff --git a/src/gui/math3d/qvector3d.cpp b/src/gui/math3d/qvector3d.cpp index b3bf292f9b..5537562b61 100644 --- a/src/gui/math3d/qvector3d.cpp +++ b/src/gui/math3d/qvector3d.cpp @@ -347,6 +347,19 @@ QVector3D QVector3D::normal return crossProduct((v2 - v1), (v3 - v1)).normalized(); } +/*! + \since 5.1 + + Returns the distance from this vertex to a point defined by + the vertex \a point. + + \sa distanceToPlane(), distanceToLine() +*/ +float QVector3D::distanceToPoint(const QVector3D& point) const +{ + return (*this - point).length(); +} + /*! Returns the distance from this vertex to a plane defined by the vertex \a plane and a \a normal unit vector. The \a normal diff --git a/src/gui/math3d/qvector3d.h b/src/gui/math3d/qvector3d.h index 879b2125ea..49d9ca6bf8 100644 --- a/src/gui/math3d/qvector3d.h +++ b/src/gui/math3d/qvector3d.h @@ -97,6 +97,7 @@ public: static QVector3D normal (const QVector3D& v1, const QVector3D& v2, const QVector3D& v3); + float distanceToPoint(const QVector3D& point) const; float distanceToPlane(const QVector3D& plane, const QVector3D& normal) const; float distanceToPlane(const QVector3D& plane1, const QVector3D& plane2, const QVector3D& plane3) const; float distanceToLine(const QVector3D& point, const QVector3D& direction) const; -- cgit v1.2.3 From 583e9ef790cce4165e7d9b8aea83b25224c9ad0f Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 11 Mar 2013 18:11:12 -0700 Subject: Make the QDBusVirtualObject docs public. Better docs to come in a later commit. Change-Id: Iba538585e97aac779d226ef966a1a08c186c4c93 Reviewed-by: Frederik Gladhorn --- src/dbus/qdbusvirtualobject.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src') diff --git a/src/dbus/qdbusvirtualobject.cpp b/src/dbus/qdbusvirtualobject.cpp index 8f64d22643..d6d4f01a33 100644 --- a/src/dbus/qdbusvirtualobject.cpp +++ b/src/dbus/qdbusvirtualobject.cpp @@ -58,16 +58,14 @@ QT_END_NAMESPACE /*! - \internal \class QDBusVirtualObject \inmodule QtDBus - \since 4.8 + \since 5.1 \brief The QDBusVirtualObject class is used to handle several DBus paths with one class. */ /*! - \internal \fn bool QDBusVirtualObject::handleMessage(const QDBusMessage &message, const QDBusConnection &connection) = 0 This function needs to handle all messages to the path of the @@ -78,7 +76,6 @@ QT_END_NAMESPACE /*! - \internal \fn QString QDBusVirtualObject::introspect(const QString &path) const This function needs to handle the introspection of the -- cgit v1.2.3 From b36cdba33932eb798c35b852560782a7a4276c6c Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 21 Feb 2013 14:30:36 +0100 Subject: Long live QOpenGLDebug! MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Qt convenience classes for the GL_KHR_debug extension This allows the developer to 1) ask the GL for a log of the last generated messages; 2) emit Qt signals whenever the GL wants to tell us something. Change-Id: I830343a26714c51abb68ce1269163c145d1e2aac Reviewed-by: Samuel Rødal --- src/gui/opengl/opengl.pri | 6 +- src/gui/opengl/qopengldebug.cpp | 1806 +++++++++++++++++++++++++++++++++++++++ src/gui/opengl/qopengldebug.h | 220 +++++ 3 files changed, 2030 insertions(+), 2 deletions(-) create mode 100644 src/gui/opengl/qopengldebug.cpp create mode 100644 src/gui/opengl/qopengldebug.h (limited to 'src') diff --git a/src/gui/opengl/opengl.pri b/src/gui/opengl/opengl.pri index 6a5a6f018b..1eea007e16 100644 --- a/src/gui/opengl/opengl.pri +++ b/src/gui/opengl/opengl.pri @@ -30,7 +30,8 @@ contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2) { opengl/qrbtree_p.h \ opengl/qopenglversionfunctions.h \ opengl/qopenglversionfunctionsfactory_p.h \ - opengl/qopenglvertexarrayobject.h + opengl/qopenglvertexarrayobject.h \ + opengl/qopengldebug.h SOURCES += opengl/qopengl.cpp \ opengl/qopenglfunctions.cpp \ @@ -49,7 +50,8 @@ contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2) { opengl/qtriangulator.cpp \ opengl/qopenglversionfunctions.cpp \ opengl/qopenglversionfunctionsfactory.cpp \ - opengl/qopenglvertexarrayobject.cpp + opengl/qopenglvertexarrayobject.cpp \ + opengl/qopengldebug.cpp !contains(QT_CONFIG, opengles2) { HEADERS += opengl/qopenglfunctions_1_0.h \ diff --git a/src/gui/opengl/qopengldebug.cpp b/src/gui/opengl/qopengldebug.cpp new file mode 100644 index 0000000000..b01c44a1b4 --- /dev/null +++ b/src/gui/opengl/qopengldebug.cpp @@ -0,0 +1,1806 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include + +#include "qopengldebug.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QOpenGLDebugMessage + \brief The QOpenGLDebugMessage class wraps an OpenGL debug message. + \inmodule QtGui + \reentrant + \since 5.1 + \ingroup shared + \ingroup painting-3D + + Debug messages are usually created by the OpenGL server and then read by + OpenGL clients (either from the OpenGL internal debug log, or logged in real-time). + A debug message has a textual representation, a vendor-specific numeric id, + a source, a type and a severity. + + It's also possible for applications or third-party libraries and toolkits + to create and insert messages in the debug log. In order to do so, you can use + the createApplicationMessage() or the createThirdPartyMessage() static functions. + + \sa QOpenGLDebugLogger +*/ + +/*! + \class QOpenGLDebugLogger + \brief The QOpenGLDebugLogger enables logging of OpenGL debugging messages. + \inmodule QtGui + \since 5.1 + \ingroup painting-3D + + \tableofcontents + + \section1 Introduction + + OpenGL programming can be very error prone. Most of the time, a single + failing call to OpenGL can cause an entire portion of an application to + stop working, with nothing being drawn on the screen. + + The only way to be sure that no errors are being returned from the OpenGL + implementation is checking with \c{glGetError} after each and every API + call. Moreover, OpenGL errors stack up, therefore glGetError should always + be used in a loop like this: + + \code + + GLenum error = GL_NO_ERROR; + do { + error = glGetError(); + if (error != GL_NO_ERROR) + // handle the error + } while (error != GL_NO_ERROR); + + \endcode + + There are also many other information we are interested in (as application + developers), for instance performance issues, or warnings about using + deprecated APIs. Those kind of messages are not reported through the + ordinary OpenGL error reporting mechanisms. + + QOpenGLDebugLogger aims at addressing these issues by providing access to + the \e{OpenGL debug log}. If your OpenGL implementation supports it (by + exposing the \c{GL_KHR_debug} extension), messages from the OpenGL server + will be either logged in an internal OpenGL log, or passed in "real-time" + to listeners as they're generated from OpenGL. + + QOpenGLDebugLogger supports both these modes of operation. Refer to the + following sections to find out the differences between them. + + \section1 Creating an OpenGL debug context + + For efficiency reasons, OpenGL implementations are allowed not to create + any debug output at all, unless the OpenGL context is a debug context. In order + to create a debug context from Qt, you must set the QSurfaceFormat::DebugContext + format option on the QSurfaceFormat used to create the QOpenGLContext object: + + \code + + QSurfaceFormat format; + // asks for a OpenGL 3.2 debug context using the Core profile + format.setMajorVersion(3); + format.setMinorVersion(2); + format.setProfile(QSurfaceFormat::CoreProfile); + format.setOption(QSurfaceFormat::DebugContext); + + QOpenGLContext *context = new QOpenGLContext; + context->setFormat(format); + context->create(); + + \endcode + + Note that requesting a 3.2 OpenGL Core Profile is just for the example's + purposes; this class is not tied to any specific OpenGL or OpenGL ES + version, as it relies on the availability of the \c{GL_KHR_debug} extension + (see below). + + \section1 Creating and initializing a QOpenGLDebugLogger + + QOpenGLDebugLogger is a simple QObject-derived class. Just like all QObject + subclasses, you create an instance (and optionally specify a parent + object), and like the other OpenGL functions in Qt you \e{must} initialize + it before usage by calling initialize() whilst there is a current OpenGL context: + + \code + + QOpenGLContext *ctx = QOpenGLContext::currentContext(); + QOpenGLDebugLogger *logger = new QOpenGLDebugLogger(this); + + logger->initialize(); // initializes in the current context, i.e. ctx + + \endcode + + Note that the \c{GL_KHR_debug} extension \e{must} be available in the context + in order to access the messages logged by OpenGL. You can check the + presence of this extension by calling: + + \code + + ctx->hasExtension(QByteArrayLiteral("GL_KHR_debug")) + + \endcode + + where \c{ctx} is a valid QOpenGLContext. If the extension is not available, + initialize() will return false. + + \section1 Reading the internal OpenGL debug log + + OpenGL implementations keep an internal log of debug messages. Messages + stored in this log can be retrieved by using the loggedMessages() function: + + \code + + QList messages = logger->loggedMessages(); + foreach (const QOpenGLDebugMessage &message, messages) + qDebug() << message; + + \endcode + + The internal log has a limited size; when it fills up, older messages will + get discarded to make room for the new incoming messages. When you call + loggedMessages(), the internal log will be emptied as well. + + If you want to be sure not to lose any debug message, you must use real-time + logging instead of calling this function. However, debug messages might + still be generated in the timespan between context creation and activation + of real-time logging (or, in general, when the real-time logging is disabled). + + \section1 Real-time logging of messages + + It is also possible to receive a stream of debug messages from the OpenGL + server \e{as they are generated} by the implementation. In order to do so, + you need to connect a suitable slot to the messageLogged() signal, and + start logging by calling startLogging(): + + \code + + connect(logger, &QOpenGLDebugLogger::messageLogged, receiver, &LogHandler::handleLoggedMessage); + logger->startLogging(); + + \endcode + + Similarly, logging can be disabled at any time by calling the stopLogging() + function. + + Real-time logging can be either asynchronous or synchronous, depending on + the parameter passed to startLogging(). When logging in asynchronous mode + (the default, as it has a very small overhead), the OpenGL implementation + can generate messages at any time, and/or in an order which is different from the + order of the OpenGL commands which caused those messages to be logged. + The messages could also be generated from a thread that it's different from + the thread the context is currently bound to. This is because OpenGL + implementations are usually highly threaded and asynchronous, and therefore + no warranties are made about the relative order and the timings of the + debug messages. + + On the other hand, logging in synchronous mode has a high overhead, but + the OpenGL implementation guarantees that all the messages caused by a + certain command are received in order, before the command returns, + and from the same thread the OpenGL context is bound to. + + This means that when logging in synchronous mode you will be able to run + your OpenGL application in a debugger, put a breakpoint on a slot connected + to the messageLogged() signal, and see in the backtrace the exact call + that caused the logged message. This can be extremely useful to debug + an OpenGL problem. Note that if OpenGL rendering is happening in another + thread, you must force the signal/slot connection type to Qt::DirectConnection + in order to be able to see the actual backtrace. + + Refer to the LoggingMode enum documentation for more information about + logging modes. + + \note When real-time logging is enabled, debug messages will \e{not} be + inserted in the internal OpenGL debug log any more; messages already + present in the internal log will not be deleted, nor they will be emitted + through the messageLogged() signal. Since some messages might be generated + before real-time logging is started (and therefore be kept in the internal + OpenGL log), it is important to always check if it contains any message + after calling startLogging(). + + \section1 Inserting messages in the debug log + + It is possible for applications and libraries to insert custom messages in + the debug log, for instance for marking a group of related OpenGL commands + and therefore being then able to identify eventual messages coming from them. + + In order to do so, you can create a QOpenGLDebugMessage object by calling + \l{QOpenGLDebugMessage::}{createApplicationMessage()} or + \l{QOpenGLDebugMessage::}{createThirdPartyMessage()}, and then inserting it + into the log by calling logMessage(): + + \code + + QOpenGLDebugMessage message = + QOpenGLDebugMessage::createApplicationMessage(QStringLiteral("Custom message")); + + logger->logMessage(message); + + \endcode + + Note that OpenGL implementations have a vendor-specific limit to the length + of the messages that can be inserted in the debug log. You can retrieve + this length by calling the maximumMessageLength() method; messages longer + than the limit will automatically get truncated. + + \section1 Controlling the debug output + + QOpenGLDebugMessage is also able to apply filters to the debug messages, and + therefore limit the amount of messages logged. You can enable or disable + logging of messages by calling enableMessages() and disableMessages() + respectively. By default, all messages are logged. + + It is possible to enable or disable messages by selecting them by: + + \list + \li source, type and severity (and including all ids in the selection); + \li id, source and type (and including all severities in the selection). + \endlist + + Note that the "enabled" status for a given message is a property of the + (id, source, type, severity) tuple; the message attributes \e{do not} form + a hierarchy of any kind. You should be careful about the order of the calls + to enableMessages() and disableMessages(), as it will change which + messages will are enabled / disabled. + + It's not possible to filter by the message text itself; applications + have to do that on their own (in slots connected to the messageLogged() + signal, or after fetching the messages in the internal debug log + through loggedMessages()). + + In order to simplify the management of the enabled / disabled statuses, + QOpenGLDebugMessage also supports the concept of \c{debug groups}. A debug + group contains the group of enabled / disabled configurations of debug + messages. Moreover, debug groups are organized in a stack: it is possible + to push and pop groups by calling pushGroup() and popGroup() respectively. + (When an OpenGL context is created, there is already a group in the stack). + + The enableMessages() and disableMessages() functions will modify the + configuration in the current debug group, that is, the one at the top of + the debug groups stack. + + When a new group is pushed onto the debug groups stack, it will inherit + the configuration of the group that was previously on the top of the stack. + Vice versa, popping a debug group will restore the configuration of + the debug group that becomes the new top. + + Pushing (respectively popping) debug groups will also automatically generate + a debug message of type QOpenGLDebugMessage::GroupPushType (respectively + \l{QOpenGLDebugMessage::}{GroupPopType}). + + \sa QOpenGLDebugMessage +*/ + +/*! + \enum QOpenGLDebugMessage::Source + + The Source enum defines the source of the debug message. + + \value InvalidSource + The source of the message is invalid; this is the source of a + default-constructed QOpenGLDebugMessage object. + + \value APISource + The message was generated in response to OpenGL API calls. + + \value WindowSystemSource + The message was generated by the window system. + + \value ShaderCompilerSource + The message was generated by the shader compiler. + + \value ThirdPartySource + The message was generated by a third party, for instance an OpenGL + framework a or debugging toolkit. + + \value ApplicationSource + The message was generated by the application itself. + + \value OtherSource + The message was generated by a source not included in this + enumeration. + + \omitvalue LastSource + + \value AnySource + This value corresponds to a mask of all possible message sources. +*/ + +/*! + \enum QOpenGLDebugMessage::Type + + The Type enum defines the type of the debug message. + + \value InvalidType + The type of the message is invalid; this is the type of a + default-constructed QOpenGLDebugMessage object. + + \value ErrorType + The message represents an error. + + \value DeprecatedBehaviorType + The message represents an usage of deprecated behavior. + + \value UndefinedBehaviorType + The message represents an usage of undefined behavior. + + \value PortabilityType + The message represents an usage of vendor-specific behavior, + that might pose portability concerns. + + \value PerformanceType + The message represents a performance issue. + + \value OtherType + The message represents a type not included in this + enumeration. + + \value MarkerType + The message represents a marker in the debug log. + + \value GroupPushType + The message represents a debug group push operation. + + \value GroupPopType + The message represents a debug group pop operation. + + \omitvalue LastType + + \value AnyType + This value corresponds to a mask of all possible message types. +*/ + +/*! + \enum QOpenGLDebugMessage::Severity + + The Severity enum defines the severity of the debug message. + + \value InvalidSeverity + The severity of the message is invalid; this is the severity of a + default-constructed QOpenGLDebugMessage object. + + \value HighSeverity + The message has a high severity. + + \value MediumSeverity + The message has a medium severity. + + \value LowSeverity + The message has a low severity. + + \value NotificationSeverity + The message is a notification. + + \omitvalue LastSeverity + + \value AnySeverity + This value corresponds to a mask of all possible message severities. +*/ + +/*! + \property QOpenGLDebugLogger::loggingMode + + \brief the logging mode passed to startLogging(). + + Note that logging must have been started or the value of this property + will be meaningless. + + \sa startLogging(), isLogging() +*/ +/*! + \enum QOpenGLDebugLogger::LoggingMode + + The LoggingMode enum defines the logging mode of the logger object. + + \value AsynchronousLogging + Messages from the OpenGL server are logged asynchronously. This means + that messages can be logged some time after the corresponding OpenGL + actions that caused them, and even be received in an out-of-order + fashion, depending on the OpenGL implementation. This mode has a very low + performance penalty, as OpenGL implementations are heavily threaded + and asynchronous by nature. + + \value SynchronousLogging + Messages from the OpenGL server are logged synchronously and + sequentially. This has a severe performance hit, as OpenGL + implementations are very asynchronous by nature; but it's very useful + to debug OpenGL problems, as OpenGL guarantees that the messages + generated by a OpenGL command will be logged before the corresponding + command execution has returned. Therefore, you can install a breakpoint + on the messageLogged() signal and see in the backtrace which OpenGL + command caused it; the only caveat is that if you are using OpenGL from + multiple threads you may need to force direct connection when + connecting to the messageLogged() signal. +*/ + +// Under OSX (at least up to 10.8) we cannot include our copy of glext.h, +// but we use the system-wide one, which unfortunately lacks all the needed +// defines/typedefs. In order to make the code compile, we just add here +// the GL_KHR_debug defines. + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 + +#ifndef GL_DEBUG_OUTPUT_SYNCHRONOUS +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#endif +#ifndef GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#endif +#ifndef GL_DEBUG_CALLBACK_FUNCTION +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#endif +#ifndef GL_DEBUG_CALLBACK_USER_PARAM +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#endif +#ifndef GL_DEBUG_SOURCE_API +#define GL_DEBUG_SOURCE_API 0x8246 +#endif +#ifndef GL_DEBUG_SOURCE_WINDOW_SYSTEM +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#endif +#ifndef GL_DEBUG_SOURCE_SHADER_COMPILER +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#endif +#ifndef GL_DEBUG_SOURCE_THIRD_PARTY +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#endif +#ifndef GL_DEBUG_SOURCE_APPLICATION +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#endif +#ifndef GL_DEBUG_SOURCE_OTHER +#define GL_DEBUG_SOURCE_OTHER 0x824B +#endif +#ifndef GL_DEBUG_TYPE_ERROR +#define GL_DEBUG_TYPE_ERROR 0x824C +#endif +#ifndef GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#endif +#ifndef GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#endif +#ifndef GL_DEBUG_TYPE_PORTABILITY +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#endif +#ifndef GL_DEBUG_TYPE_PERFORMANCE +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#endif +#ifndef GL_DEBUG_TYPE_OTHER +#define GL_DEBUG_TYPE_OTHER 0x8251 +#endif +#ifndef GL_DEBUG_TYPE_MARKER +#define GL_DEBUG_TYPE_MARKER 0x8268 +#endif +#ifndef GL_DEBUG_TYPE_PUSH_GROUP +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#endif +#ifndef GL_DEBUG_TYPE_POP_GROUP +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#endif +#ifndef GL_DEBUG_SEVERITY_NOTIFICATION +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#endif +#ifndef GL_MAX_DEBUG_GROUP_STACK_DEPTH +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#endif +#ifndef GL_DEBUG_GROUP_STACK_DEPTH +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#endif +#ifndef GL_BUFFER +#define GL_BUFFER 0x82E0 +#endif +#ifndef GL_SHADER +#define GL_SHADER 0x82E1 +#endif +#ifndef GL_PROGRAM +#define GL_PROGRAM 0x82E2 +#endif +#ifndef GL_QUERY +#define GL_QUERY 0x82E3 +#endif +#ifndef GL_PROGRAM_PIPELINE +#define GL_PROGRAM_PIPELINE 0x82E4 +#endif +#ifndef GL_SAMPLER +#define GL_SAMPLER 0x82E6 +#endif +#ifndef GL_DISPLAY_LIST +#define GL_DISPLAY_LIST 0x82E7 +#endif +#ifndef GL_MAX_LABEL_LENGTH +#define GL_MAX_LABEL_LENGTH 0x82E8 +#endif +#ifndef GL_MAX_DEBUG_MESSAGE_LENGTH +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#endif +#ifndef GL_MAX_DEBUG_LOGGED_MESSAGES +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#endif +#ifndef GL_DEBUG_LOGGED_MESSAGES +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#endif +#ifndef GL_DEBUG_SEVERITY_HIGH +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#endif +#ifndef GL_DEBUG_SEVERITY_MEDIUM +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#endif +#ifndef GL_DEBUG_SEVERITY_LOW +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#endif +#ifndef GL_DEBUG_OUTPUT +#define GL_DEBUG_OUTPUT 0x92E0 +#endif +#ifndef GL_CONTEXT_FLAG_DEBUG_BIT +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#endif +#ifndef GL_STACK_OVERFLOW +#define GL_STACK_OVERFLOW 0x0503 +#endif +#ifndef GL_STACK_UNDERFLOW +#define GL_STACK_UNDERFLOW 0x0504 +#endif + +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); + +#endif /* GL_KHR_debug */ + + +/*! + \internal +*/ +static QOpenGLDebugMessage::Source qt_messageSourceFromGL(GLenum source) +{ + switch (source) { + case GL_DEBUG_SOURCE_API: + return QOpenGLDebugMessage::APISource; + case GL_DEBUG_SOURCE_WINDOW_SYSTEM: + return QOpenGLDebugMessage::WindowSystemSource; + case GL_DEBUG_SOURCE_SHADER_COMPILER: + return QOpenGLDebugMessage::ShaderCompilerSource; + case GL_DEBUG_SOURCE_THIRD_PARTY: + return QOpenGLDebugMessage::ThirdPartySource; + case GL_DEBUG_SOURCE_APPLICATION: + return QOpenGLDebugMessage::ApplicationSource; + case GL_DEBUG_SOURCE_OTHER: + return QOpenGLDebugMessage::OtherSource; + } + + Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown message source from GL"); + return QOpenGLDebugMessage::OtherSource; +} + +/*! + \internal +*/ +static GLenum qt_messageSourceToGL(QOpenGLDebugMessage::Source source) +{ + switch (source) { + case QOpenGLDebugMessage::InvalidSource: + break; + case QOpenGLDebugMessage::APISource: + return GL_DEBUG_SOURCE_API; + case QOpenGLDebugMessage::WindowSystemSource: + return GL_DEBUG_SOURCE_WINDOW_SYSTEM; + case QOpenGLDebugMessage::ShaderCompilerSource: + return GL_DEBUG_SOURCE_SHADER_COMPILER; + case QOpenGLDebugMessage::ThirdPartySource: + return GL_DEBUG_SOURCE_THIRD_PARTY; + case QOpenGLDebugMessage::ApplicationSource: + return GL_DEBUG_SOURCE_APPLICATION; + case QOpenGLDebugMessage::OtherSource: + return GL_DEBUG_SOURCE_OTHER; + case QOpenGLDebugMessage::AnySource: + break; + } + + Q_ASSERT_X(false, Q_FUNC_INFO, "Invalid message source"); + return GL_DEBUG_SOURCE_OTHER; +} + +/*! + \internal +*/ +static QString qt_messageSourceToString(QOpenGLDebugMessage::Source source) +{ + switch (source) { + case QOpenGLDebugMessage::InvalidSource: + return QStringLiteral("InvalidSource"); + case QOpenGLDebugMessage::APISource: + return QStringLiteral("APISource"); + case QOpenGLDebugMessage::WindowSystemSource: + return QStringLiteral("WindowSystemSource"); + case QOpenGLDebugMessage::ShaderCompilerSource: + return QStringLiteral("ShaderCompilerSource"); + case QOpenGLDebugMessage::ThirdPartySource: + return QStringLiteral("ThirdPartySource"); + case QOpenGLDebugMessage::ApplicationSource: + return QStringLiteral("ApplicationSource"); + case QOpenGLDebugMessage::OtherSource: + return QStringLiteral("OtherSource"); + case QOpenGLDebugMessage::AnySource: + return QStringLiteral("AnySource"); + } + + Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown message source"); + return QString(); +} + +/*! + \internal +*/ +static QOpenGLDebugMessage::Type qt_messageTypeFromGL(GLenum type) +{ + switch (type) { + case GL_DEBUG_TYPE_ERROR: + return QOpenGLDebugMessage::ErrorType; + case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: + return QOpenGLDebugMessage::DeprecatedBehaviorType; + case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: + return QOpenGLDebugMessage::UndefinedBehaviorType; + case GL_DEBUG_TYPE_PORTABILITY: + return QOpenGLDebugMessage::PortabilityType; + case GL_DEBUG_TYPE_PERFORMANCE: + return QOpenGLDebugMessage::PerformanceType; + case GL_DEBUG_TYPE_OTHER: + return QOpenGLDebugMessage::OtherType; + case GL_DEBUG_TYPE_MARKER: + return QOpenGLDebugMessage::MarkerType; + case GL_DEBUG_TYPE_PUSH_GROUP: + return QOpenGLDebugMessage::GroupPushType; + case GL_DEBUG_TYPE_POP_GROUP: + return QOpenGLDebugMessage::GroupPopType; + } + + Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown message type from GL"); + return QOpenGLDebugMessage::OtherType; +} + +/*! + \internal +*/ +static GLenum qt_messageTypeToGL(QOpenGLDebugMessage::Type type) +{ + switch (type) { + case QOpenGLDebugMessage::InvalidType: + break; + case QOpenGLDebugMessage::ErrorType: + return GL_DEBUG_TYPE_ERROR; + case QOpenGLDebugMessage::DeprecatedBehaviorType: + return GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR; + case QOpenGLDebugMessage::UndefinedBehaviorType: + return GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR; + case QOpenGLDebugMessage::PortabilityType: + return GL_DEBUG_TYPE_PORTABILITY; + case QOpenGLDebugMessage::PerformanceType: + return GL_DEBUG_TYPE_PERFORMANCE; + case QOpenGLDebugMessage::OtherType: + return GL_DEBUG_TYPE_OTHER; + case QOpenGLDebugMessage::MarkerType: + return GL_DEBUG_TYPE_MARKER; + case QOpenGLDebugMessage::GroupPushType: + return GL_DEBUG_TYPE_PUSH_GROUP; + case QOpenGLDebugMessage::GroupPopType: + return GL_DEBUG_TYPE_POP_GROUP; + case QOpenGLDebugMessage::AnyType: + break; + } + + Q_ASSERT_X(false, Q_FUNC_INFO, "Invalid message type"); + return GL_DEBUG_TYPE_OTHER; +} + +/*! + \internal +*/ +static QString qt_messageTypeToString(QOpenGLDebugMessage::Type type) +{ + switch (type) { + case QOpenGLDebugMessage::InvalidType: + return QStringLiteral("InvalidType"); + case QOpenGLDebugMessage::ErrorType: + return QStringLiteral("ErrorType"); + case QOpenGLDebugMessage::DeprecatedBehaviorType: + return QStringLiteral("DeprecatedBehaviorType"); + case QOpenGLDebugMessage::UndefinedBehaviorType: + return QStringLiteral("UndefinedBehaviorType"); + case QOpenGLDebugMessage::PortabilityType: + return QStringLiteral("PortabilityType"); + case QOpenGLDebugMessage::PerformanceType: + return QStringLiteral("PerformanceType"); + case QOpenGLDebugMessage::OtherType: + return QStringLiteral("OtherType"); + case QOpenGLDebugMessage::MarkerType: + return QStringLiteral("MarkerType"); + case QOpenGLDebugMessage::GroupPushType: + return QStringLiteral("GroupPushType"); + case QOpenGLDebugMessage::GroupPopType: + return QStringLiteral("GroupPopType"); + case QOpenGLDebugMessage::AnyType: + return QStringLiteral("AnyType"); + } + + Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown message type"); + return QString(); +} + +/*! + \internal +*/ +static QOpenGLDebugMessage::Severity qt_messageSeverityFromGL(GLenum severity) +{ + switch (severity) { + case GL_DEBUG_SEVERITY_HIGH: + return QOpenGLDebugMessage::HighSeverity; + case GL_DEBUG_SEVERITY_MEDIUM: + return QOpenGLDebugMessage::MediumSeverity; + case GL_DEBUG_SEVERITY_LOW: + return QOpenGLDebugMessage::LowSeverity; + case GL_DEBUG_SEVERITY_NOTIFICATION: + return QOpenGLDebugMessage::NotificationSeverity; + } + + Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown message severity from GL"); + return QOpenGLDebugMessage::NotificationSeverity; +} + +/*! + \internal +*/ +static GLenum qt_messageSeverityToGL(QOpenGLDebugMessage::Severity severity) +{ + switch (severity) { + case QOpenGLDebugMessage::InvalidSeverity: + break; + case QOpenGLDebugMessage::HighSeverity: + return GL_DEBUG_SEVERITY_HIGH; + case QOpenGLDebugMessage::MediumSeverity: + return GL_DEBUG_SEVERITY_MEDIUM; + case QOpenGLDebugMessage::LowSeverity: + return GL_DEBUG_SEVERITY_LOW; + case QOpenGLDebugMessage::NotificationSeverity: + return GL_DEBUG_SEVERITY_NOTIFICATION; + case QOpenGLDebugMessage::AnySeverity: + break; + } + + Q_ASSERT_X(false, Q_FUNC_INFO, "Invalid message severity"); + return GL_DEBUG_SEVERITY_NOTIFICATION; +} + +/*! + \internal +*/ +static QString qt_messageSeverityToString(QOpenGLDebugMessage::Severity severity) +{ + switch (severity) { + case QOpenGLDebugMessage::InvalidSeverity: + return QStringLiteral("InvalidSeverity"); + case QOpenGLDebugMessage::HighSeverity: + return QStringLiteral("HighSeverity"); + case QOpenGLDebugMessage::MediumSeverity: + return QStringLiteral("MediumSeverity"); + case QOpenGLDebugMessage::LowSeverity: + return QStringLiteral("LowSeverity"); + case QOpenGLDebugMessage::NotificationSeverity: + return QStringLiteral("NotificationSeverity"); + case QOpenGLDebugMessage::AnySeverity: + return QStringLiteral("AnySeverity"); + } + + Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown message severity"); + return QString(); +} + +class QOpenGLDebugMessagePrivate : public QSharedData +{ +public: + QOpenGLDebugMessagePrivate(); + + QString message; + GLuint id; + QOpenGLDebugMessage::Source source; + QOpenGLDebugMessage::Type type; + QOpenGLDebugMessage::Severity severity; +}; + +/*! + \internal +*/ +QOpenGLDebugMessagePrivate::QOpenGLDebugMessagePrivate() + : message(), + id(0), + source(QOpenGLDebugMessage::InvalidSource), + type(QOpenGLDebugMessage::InvalidType), + severity(QOpenGLDebugMessage::InvalidSeverity) +{ +} + + +/*! + Constructs a debug message with an empty message string, id set to 0, + source set to InvalidSource, type set to InvalidType, and severity set to + InvalidSeverity. + + \note This constructor should not be used to create a debug message; + instead, use the createApplicationMessage() or the createThirdPartyMessage() + static functions. + + \sa createApplicationMessage(), createThirdPartyMessage() +*/ +QOpenGLDebugMessage::QOpenGLDebugMessage() + : d(new QOpenGLDebugMessagePrivate) +{ +} + +/*! + Constructs a debug message as a copy of \a debugMessage. + + \sa operator=() +*/ +QOpenGLDebugMessage::QOpenGLDebugMessage(const QOpenGLDebugMessage &debugMessage) + : d(debugMessage.d) +{ +} + +/*! + Destroys this debug message. +*/ +QOpenGLDebugMessage::~QOpenGLDebugMessage() +{ +} + +/*! + Assigns the message \a debugMessage to this object, and returns a reference + to the copy. +*/ +QOpenGLDebugMessage &QOpenGLDebugMessage::operator=(const QOpenGLDebugMessage &debugMessage) +{ + d = debugMessage.d; + return *this; +} + +/*! + \fn void QOpenGLDebugMessage::swap(QOpenGLDebugMessage &debugMessage) + + Swaps the message \a debugMessage with this message. This operation is very + fast and never fails. +*/ + +/*! + Returns the source of the debug message. +*/ +QOpenGLDebugMessage::Source QOpenGLDebugMessage::source() const +{ + return d->source; +} + +/*! + Returns the type of the debug message. +*/ +QOpenGLDebugMessage::Type QOpenGLDebugMessage::type() const +{ + return d->type; +} + +/*! + Returns the severity of the debug message. +*/ +QOpenGLDebugMessage::Severity QOpenGLDebugMessage::severity() const +{ + return d->severity; +} + +/*! + Returns the id of the debug message. Ids are generally vendor-specific. +*/ +GLuint QOpenGLDebugMessage::id() const +{ + return d->id; +} + +/*! + Returns the textual message contained by this debug message. +*/ +QString QOpenGLDebugMessage::message() const +{ + return d->message; +} + +/*! + Constructs and returns a debug message with \a text as its text, \a id + as id, \a severity as severity, and \a type as type. The message source + will be set to ApplicationSource. + + \sa QOpenGLDebugLogger::logMessage(), createThirdPartyMessage() +*/ +QOpenGLDebugMessage QOpenGLDebugMessage::createApplicationMessage(const QString &text, + GLuint id, + QOpenGLDebugMessage::Severity severity, + QOpenGLDebugMessage::Type type) +{ + QOpenGLDebugMessage m; + m.d->message = text; + m.d->id = id; + m.d->severity = severity; + m.d->type = type; + m.d->source = ApplicationSource; + return m; +} + +/*! + Constructs and returns a debug message with \a text as its text, \a id + as id, \a severity as severity, and \a type as type. The message source + will be set to ThirdPartySource. + + \sa QOpenGLDebugLogger::logMessage(), createApplicationMessage() +*/ +QOpenGLDebugMessage QOpenGLDebugMessage::createThirdPartyMessage(const QString &text, + GLuint id, + QOpenGLDebugMessage::Severity severity, + QOpenGLDebugMessage::Type type) +{ + QOpenGLDebugMessage m; + m.d->message = text; + m.d->id = id; + m.d->severity = severity; + m.d->type = type; + m.d->source = ThirdPartySource; + return m; +} + +/*! + Returns true if this debug message is equal to \a debugMessage, or false + otherwise. Two debugging messages are equal if they have the same textual + message, the same id, the same source, the same type and the same severity. + + \sa operator!=() +*/ +bool QOpenGLDebugMessage::operator==(const QOpenGLDebugMessage &debugMessage) const +{ + return (d == debugMessage.d) + || (d->id == debugMessage.d->id + && d->source == debugMessage.d->source + && d->type == debugMessage.d->type + && d->severity == debugMessage.d->severity + && d->message == debugMessage.d->message); +} + +/*! + \fn bool QOpenGLDebugMessage::operator!=(const QOpenGLDebugMessage &debugMessage) const + + Returns true if this message is different from \a debugMessage, or false + otherwise. + + \sa operator==() +*/ + +#ifndef QT_NO_DEBUG_STREAM +/*! + \relates QOpenGLDebugMessage + + Writes the source \a source into the debug object \a debug for debugging + purposes. +*/ +QDebug operator<<(QDebug debug, QOpenGLDebugMessage::Source source) +{ + debug.nospace() << "QOpenGLDebugMessage::Source(" + << qt_messageSourceToString(source) + << ")"; + return debug.space(); +} + +/*! + \relates QOpenGLDebugMessage + + Writes the type \a type into the debug object \a debug for debugging + purposes. +*/ +QDebug operator<<(QDebug debug, QOpenGLDebugMessage::Type type) +{ + debug.nospace() << "QOpenGLDebugMessage::Type(" + << qt_messageTypeToString(type) + << ")"; + return debug.space(); +} + +/*! + \relates QOpenGLDebugMessage + + Writes the severity \a severity into the debug object \a debug for debugging + purposes. +*/ +QDebug operator<<(QDebug debug, QOpenGLDebugMessage::Severity severity) +{ + debug.nospace() << "QOpenGLDebugMessage::Severity(" + << qt_messageSeverityToString(severity) + << ")"; + return debug.space(); +} + +/*! + \relates QOpenGLDebugMessage + + Writes the message \a message into the debug object \a debug for debugging + purposes. +*/ +QDebug operator<<(QDebug debug, const QOpenGLDebugMessage &message) +{ + debug.nospace() << "QOpenGLDebugMessage(" + << qt_messageSourceToString(message.source()) << ", " + << message.id() << ", " + << message.message() << ", " + << qt_messageSeverityToString(message.severity()) << ", " + << qt_messageTypeToString(message.type()) << ")"; + return debug.space(); + +} +#endif // QT_NO_DEBUG_STREAM + +typedef void (QOPENGLF_APIENTRYP qt_glDebugMessageControl_t)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (QOPENGLF_APIENTRYP qt_glDebugMessageInsert_t)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (QOPENGLF_APIENTRYP qt_glDebugMessageCallback_t)(GLDEBUGPROC callback, const void *userParam); +typedef GLuint (QOPENGLF_APIENTRYP qt_glGetDebugMessageLog_t)(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (QOPENGLF_APIENTRYP qt_glPushDebugGroup_t)(GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (QOPENGLF_APIENTRYP qt_glPopDebugGroup_t)(); +typedef void (QOPENGLF_APIENTRYP qt_glGetPointerv_t)(GLenum pname, GLvoid **params); + +class QOpenGLDebugLoggerPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QOpenGLDebugLogger) +public: + QOpenGLDebugLoggerPrivate(); + + void handleMessage(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *rawMessage); + void controlDebugMessages(QOpenGLDebugMessage::Sources sources, + QOpenGLDebugMessage::Types types, + QOpenGLDebugMessage::Severities severities, + const QVector &ids, + const QByteArray &callerName, + bool enable); + void _q_contextAboutToBeDestroyed(); + + qt_glDebugMessageControl_t glDebugMessageControl; + qt_glDebugMessageInsert_t glDebugMessageInsert; + qt_glDebugMessageCallback_t glDebugMessageCallback; + qt_glGetDebugMessageLog_t glGetDebugMessageLog; + qt_glPushDebugGroup_t glPushDebugGroup; + qt_glPopDebugGroup_t glPopDebugGroup; + qt_glGetPointerv_t glGetPointerv; + + GLDEBUGPROC oldDebugCallbackFunction; + void *oldDebugCallbackParameter; + QOpenGLContext *context; + GLint maxMessageLength; + QOpenGLDebugLogger::LoggingMode loggingMode; + bool initialized : 1; + bool isLogging : 1; + bool debugWasEnabled : 1; + bool syncDebugWasEnabled : 1; +}; + +/*! + \internal +*/ +QOpenGLDebugLoggerPrivate::QOpenGLDebugLoggerPrivate() + : glDebugMessageControl(0), + glDebugMessageInsert(0), + glDebugMessageCallback(0), + glGetDebugMessageLog(0), + glPushDebugGroup(0), + glPopDebugGroup(0), + oldDebugCallbackFunction(0), + context(0), + maxMessageLength(0), + loggingMode(QOpenGLDebugLogger::AsynchronousLogging), + initialized(false), + isLogging(false), + debugWasEnabled(false), + syncDebugWasEnabled(false) +{ +} + +/*! + \internal +*/ +void QOpenGLDebugLoggerPrivate::handleMessage(GLenum source, + GLenum type, + GLuint id, + GLenum severity, + GLsizei length, + const GLchar *rawMessage) +{ + if (oldDebugCallbackFunction) + oldDebugCallbackFunction(source, type, id, severity, length, rawMessage, oldDebugCallbackParameter); + + QOpenGLDebugMessage message; + + QOpenGLDebugMessagePrivate *messagePrivate = message.d.data(); + messagePrivate->source = qt_messageSourceFromGL(source); + messagePrivate->type = qt_messageTypeFromGL(type); + messagePrivate->id = id; + messagePrivate->severity = qt_messageSeverityFromGL(severity); + // not passing the length to fromUtf8, as some bugged OpenGL drivers + // do not handle the length correctly. Just rely on the message to be NUL terminated. + messagePrivate->message = QString::fromUtf8(rawMessage); + + Q_Q(QOpenGLDebugLogger); + emit q->messageLogged(message); +} + +/*! + \internal +*/ +void QOpenGLDebugLoggerPrivate::controlDebugMessages(QOpenGLDebugMessage::Sources sources, + QOpenGLDebugMessage::Types types, + QOpenGLDebugMessage::Severities severities, + const QVector &ids, + const QByteArray &callerName, + bool enable) +{ + if (!initialized) { + qWarning("QOpenGLDebugLogger::%s(): object must be initialized before enabling/disabling messages", callerName.constData()); + return; + } + if (sources == QOpenGLDebugMessage::InvalidSource) { + qWarning("QOpenGLDebugLogger::%s(): invalid source specified", callerName.constData()); + return; + } + if (types == QOpenGLDebugMessage::InvalidType) { + qWarning("QOpenGLDebugLogger::%s(): invalid type specified", callerName.constData()); + return; + } + if (severities == QOpenGLDebugMessage::InvalidSeverity) { + qWarning("QOpenGLDebugLogger::%s(): invalid severity specified", callerName.constData()); + return; + } + + QVarLengthArray glSources; + QVarLengthArray glTypes; + QVarLengthArray glSeverities; + + if (ids.count() > 0) { + Q_ASSERT(severities == QOpenGLDebugMessage::AnySeverity); + + // The GL_KHR_debug extension says: + // + // - If is greater than zero, then is an array of + // message IDs for the specified combination of and . In + // this case, if or is DONT_CARE, or is not + // DONT_CARE, the error INVALID_OPERATION is generated. If is + // zero, the value if is ignored. + // + // This means we can't convert AnySource or AnyType into DONT_CARE, but we have to roll + // them into individual sources/types. + + if (sources == QOpenGLDebugMessage::AnySource) { + sources = QOpenGLDebugMessage::InvalidSource; + for (uint i = 1; i <= QOpenGLDebugMessage::LastSource; i = i << 1) + sources |= QOpenGLDebugMessage::Source(i); + } + + if (types == QOpenGLDebugMessage::AnyType) { + types = QOpenGLDebugMessage::InvalidType; + for (uint i = 1; i <= QOpenGLDebugMessage::LastType; i = i << 1) + types |= QOpenGLDebugMessage::Type(i); + } + } + +#define CONVERT_TO_GL_DEBUG_MESSAGE_CONTROL_PARAMETERS(type, source, target) \ + if (source == QOpenGLDebugMessage::Any ## type) { \ + target << GL_DONT_CARE; \ + } else { \ + for (uint i = 1; i <= QOpenGLDebugMessage::Last ## type; i = i << 1) \ + if (source.testFlag(QOpenGLDebugMessage:: type (i))) \ + target << qt_message ## type ## ToGL (QOpenGLDebugMessage:: type (i)); \ + } + + CONVERT_TO_GL_DEBUG_MESSAGE_CONTROL_PARAMETERS(Source, sources, glSources) + CONVERT_TO_GL_DEBUG_MESSAGE_CONTROL_PARAMETERS(Type, types, glTypes) + CONVERT_TO_GL_DEBUG_MESSAGE_CONTROL_PARAMETERS(Severity, severities, glSeverities) +#undef CONVERT_TO_GL_DEBUG_MESSAGE_CONTROL_PARAMETERS + + const GLsizei idCount = ids.count(); + // The GL_KHR_debug extension says that if idCount is 0, idPtr must be ignored. + // Unfortunately, some bugged drivers do NOT ignore it, so pass NULL in case. + const GLuint * const idPtr = idCount ? ids.constData() : 0; + + foreach (GLenum source, glSources) + foreach (GLenum type, glTypes) + foreach (GLenum severity, glSeverities) + glDebugMessageControl(source, type, severity, idCount, idPtr, GLboolean(enable)); +} + +/*! + \internal +*/ +void QOpenGLDebugLoggerPrivate::_q_contextAboutToBeDestroyed() +{ + Q_Q(QOpenGLDebugLogger); + q->stopLogging(); + initialized = false; +} + +extern "C" { +static void QOPENGLF_APIENTRY qt_opengl_debug_callback(GLenum source, + GLenum type, + GLuint id, + GLenum severity, + GLsizei length, + const GLchar *rawMessage, + GLvoid *userParam) +{ + QOpenGLDebugLoggerPrivate *loggerPrivate = static_cast(userParam); + loggerPrivate->handleMessage(source, type, id, severity, length, rawMessage); +} +} + +/*! + Constructs a new logger object with the given \a parent. + + \note The object must be initialized before logging can happen. + + \sa initialize() +*/ +QOpenGLDebugLogger::QOpenGLDebugLogger(QObject *parent) + : QObject(*new QOpenGLDebugLoggerPrivate, parent) +{ + // QOpenGLDebugMessage is going to be mostly used as an argument + // of a cross thread connection, therefore let's ease the life for the users + // and register the type for them. + qRegisterMetaType(); +} + +/*! + Destroys the logger object. +*/ +QOpenGLDebugLogger::~QOpenGLDebugLogger() +{ + stopLogging(); +} + +/*! + Initializes the object in the current OpenGL context. The context must + support the \c{GL_KHR_debug} extension for the initialization to succeed. + The object must be initialized before any logging can happen. + + It is safe to call this function multiple times from the same context. + + This function can also be used to change the context of a previously + initialized object; note that in this case the object must not be logging + when you call this function. + + Returns true if the logger is successfully initialized; false otherwise. + + \sa QOpenGLContext +*/ +bool QOpenGLDebugLogger::initialize() +{ + QOpenGLContext *context = QOpenGLContext::currentContext(); + if (!context) { + qWarning("QOpenGLDebugLogger::initialize(): no current OpenGL context found."); + return false; + } + + Q_D(QOpenGLDebugLogger); + if (d->context == context) { + // context is non-NULL, d->context is non NULL only on successful initialization. + Q_ASSERT(d->initialized); + return true; + } + + if (d->isLogging) { + qWarning("QOpenGLDebugLogger::initialize(): cannot initialize the object while logging. Please stop the logging first."); + return false; + } + + if (d->context) + disconnect(d->context, SIGNAL(aboutToBeDestroyed()), this, SLOT(_q_contextAboutToBeDestroyed())); + + d->initialized = false; + d->context = 0; + + if (!context->hasExtension(QByteArrayLiteral("GL_KHR_debug"))) + return false; + + d->context = context; + connect(d->context, SIGNAL(aboutToBeDestroyed()), this, SLOT(_q_contextAboutToBeDestroyed())); + +#define GET_DEBUG_PROC_ADDRESS(procName) \ + d->procName = reinterpret_cast< qt_ ## procName ## _t >( \ + d->context->getProcAddress(QByteArrayLiteral( #procName )) \ + ); + + GET_DEBUG_PROC_ADDRESS(glDebugMessageControl); + GET_DEBUG_PROC_ADDRESS(glDebugMessageInsert); + GET_DEBUG_PROC_ADDRESS(glDebugMessageCallback); + GET_DEBUG_PROC_ADDRESS(glGetDebugMessageLog); + GET_DEBUG_PROC_ADDRESS(glPushDebugGroup); + GET_DEBUG_PROC_ADDRESS(glPopDebugGroup); + GET_DEBUG_PROC_ADDRESS(glGetPointerv) +#undef GET_DEBUG_PROC_ADDRESS + + glGetIntegerv(GL_MAX_DEBUG_MESSAGE_LENGTH, &d->maxMessageLength); + +#ifndef QT_NO_DEBUG + if (!d->context->format().testOption(QSurfaceFormat::DebugContext)) { + qWarning("QOpenGLDebugLogger::initialize(): the current context is not a debug context:\n" + " this means that the GL may not generate any debug output at all.\n" + " To avoid this warning, try creating the context with the\n" + " QSurfaceFormat::DebugContext surface format option."); + } +#endif // QT_NO_DEBUG + + d->initialized = true; + return true; +} + +/*! + Returns true if this object is currently logging, false otherwise. + + \sa startLogging() +*/ +bool QOpenGLDebugLogger::isLogging() const +{ + Q_D(const QOpenGLDebugLogger); + return d->isLogging; +} + +/*! + Starts logging messages coming from the OpenGL server. When a new message + is received, the signal messageLogged() is emitted, carrying the logged + message as argument. + + \a loggingMode specifies whether the logging must be asynchronous (the default) + or synchronous. + + QOpenGLDebugLogger will record the values of \c{GL_DEBUG_OUTPUT} and + \c{GL_DEBUG_OUTPUT_SYNCHRONOUS} when logging is started, and set them back + when logging is stopped. Moreover, any user-defined OpenGL debug callback + installed when this function is invoked will be restored when logging is + stopped; QOpenGLDebugLogger will ensure that the pre-existing callback will + still be invoked when logging. + + \note It's not possible to change the logging mode without stopping and + starting logging again. This might change in a future version of Qt. + + \note The object must be initialized before logging can happen. + + \sa stopLogging(), initialize() +*/ +void QOpenGLDebugLogger::startLogging(QOpenGLDebugLogger::LoggingMode loggingMode) +{ + Q_D(QOpenGLDebugLogger); + if (!d->initialized) { + qWarning("QOpenGLDebugLogger::startLogging(): object must be initialized before logging can start"); + return; + } + if (d->isLogging) { + qWarning("QOpenGLDebugLogger::startLogging(): this object is already logging"); + return; + } + + d->isLogging = true; + d->loggingMode = loggingMode; + + d->glGetPointerv(GL_DEBUG_CALLBACK_FUNCTION, reinterpret_cast(&d->oldDebugCallbackFunction)); + d->glGetPointerv(GL_DEBUG_CALLBACK_USER_PARAM, &d->oldDebugCallbackParameter); + + d->glDebugMessageCallback(&qt_opengl_debug_callback, d); + + d->debugWasEnabled = glIsEnabled(GL_DEBUG_OUTPUT); + d->syncDebugWasEnabled = glIsEnabled(GL_DEBUG_OUTPUT_SYNCHRONOUS); + + if (d->loggingMode == SynchronousLogging) + glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); + else + glDisable(GL_DEBUG_OUTPUT_SYNCHRONOUS); + + glEnable(GL_DEBUG_OUTPUT); +} + +/*! + Returns the logging mode of the object. + + \sa startLogging() +*/ +QOpenGLDebugLogger::LoggingMode QOpenGLDebugLogger::loggingMode() const +{ + Q_D(const QOpenGLDebugLogger); + return d->loggingMode; +} + +/*! + Stops logging messages from the OpenGL server. + + \sa startLogging() +*/ +void QOpenGLDebugLogger::stopLogging() +{ + Q_D(QOpenGLDebugLogger); + if (!d->isLogging) + return; + + d->isLogging = false; + + d->glDebugMessageCallback(d->oldDebugCallbackFunction, d->oldDebugCallbackParameter); + + if (!d->debugWasEnabled) + glDisable(GL_DEBUG_OUTPUT); + + if (d->syncDebugWasEnabled) + glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); + else + glDisable(GL_DEBUG_OUTPUT_SYNCHRONOUS); +} + +/*! + Inserts the message \a debugMessage into the OpenGL debug log. This provides + a way for applications or libraries to insert custom messages that can + ease the debugging of OpenGL applications. + + \note \a debugMessage must have QOpenGLDebugMessage::ApplicationSource or + QOpenGLDebugMessage::ThirdPartySource as its source, and a valid + type and severity, otherwise it will not be inserted into the log. + + \note The object must be initialized before logging can happen. + + \sa initialize() +*/ +void QOpenGLDebugLogger::logMessage(const QOpenGLDebugMessage &debugMessage) +{ + Q_D(QOpenGLDebugLogger); + if (!d->initialized) { + qWarning("QOpenGLDebugLogger::logMessage(): object must be initialized before logging messages"); + return; + } + if (debugMessage.source() != QOpenGLDebugMessage::ApplicationSource + && debugMessage.source() != QOpenGLDebugMessage::ThirdPartySource) { + qWarning("QOpenGLDebugLogger::logMessage(): using a message source different from ApplicationSource\n" + " or ThirdPartySource is not supported by GL_KHR_debug. The message will not be logged."); + return; + } + if (debugMessage.type() == QOpenGLDebugMessage::InvalidType + || debugMessage.type() == QOpenGLDebugMessage::AnyType + || debugMessage.severity() == QOpenGLDebugMessage::InvalidSeverity + || debugMessage.severity() == QOpenGLDebugMessage::AnySeverity) { + qWarning("QOpenGLDebugLogger::logMessage(): the message has a non-valid type and/or severity. The message will not be logged."); + return; + } + + const GLenum source = qt_messageSourceToGL(debugMessage.source()); + const GLenum type = qt_messageTypeToGL(debugMessage.type()); + const GLenum severity = qt_messageSeverityToGL(debugMessage.severity()); + QByteArray rawMessage = debugMessage.message().toUtf8(); + rawMessage.append('\0'); + + if (rawMessage.length() > d->maxMessageLength) { + qWarning("QOpenGLDebugLogger::logMessage(): message too long, truncating it\n" + " (%d bytes long, but the GL accepts up to %d bytes)", rawMessage.length(), d->maxMessageLength); + rawMessage.resize(d->maxMessageLength - 1); + rawMessage.append('\0'); + } + + // Don't pass rawMessage.length(), as unfortunately bugged + // OpenGL drivers will eat the trailing NUL in the message. Just rely + // on the message being NUL terminated. + d->glDebugMessageInsert(source, + type, + debugMessage.id(), + severity, + -1, + rawMessage.constData()); +} + +/*! + Pushes a debug group with name \a name, id \a id, and source \a source onto + the debug groups stack. If the group is successfully pushed, OpenGL will + automatically log a message with message \a name, id \a id, source \a + source, type QOpenGLDebugMessage::GroupPushType and severity + QOpenGLDebugMessage::NotificationSeverity. + + The newly pushed group will inherit the same filtering settings of the + group that was on the top of the stack; that is, the filtering will not be + changed by pushing a new group. + + \note The \a source must either be QOpenGLDebugMessage::ApplicationSource or + QOpenGLDebugMessage::ThirdPartySource, otherwise the group will not be pushed. + + \note The object must be initialized before managing debug groups. + + \sa popGroup(), enableMessages(), disableMessages() +*/ +void QOpenGLDebugLogger::pushGroup(const QString &name, GLuint id, QOpenGLDebugMessage::Source source) +{ + Q_D(QOpenGLDebugLogger); + if (!d->initialized) { + qWarning("QOpenGLDebugLogger::pushGroup(): object must be initialized before pushing a debug group"); + return; + } + if (source != QOpenGLDebugMessage::ApplicationSource + && source != QOpenGLDebugMessage::ThirdPartySource) { + qWarning("QOpenGLDebugLogger::pushGroup(): using a source different from ApplicationSource\n" + " or ThirdPartySource is not supported by GL_KHR_debug. The group will not be pushed."); + return; + } + + QByteArray rawName = name.toUtf8(); + rawName.append('\0'); + if (rawName.length() > d->maxMessageLength) { + qWarning("QOpenGLDebugLogger::pushGroup(): group name too long, truncating it\n" + " (%d bytes long, but the GL accepts up to %d bytes)", rawName.length(), d->maxMessageLength); + rawName.resize(d->maxMessageLength - 1); + rawName.append('\0'); + } + + // Don't pass rawMessage.length(), as unfortunately bugged + // OpenGL drivers will eat the trailing NUL in the name. Just rely + // on the name being NUL terminated. + d->glPushDebugGroup(qt_messageSourceToGL(source), id, -1, rawName.constData()); +} + +/*! + Pops the topmost debug group from the debug groups stack. If the group is + successfully popped, OpenGL will automatically log a message with message, + id and source matching those of the popped group, type + QOpenGLDebugMessage::GroupPopType and severity + QOpenGLDebugMessage::NotificationSeverity. + + Popping a debug group will restore the message filtering settings of the + group that becomes the top of the debug groups stack. + + \note The object must be initialized before managing debug groups. + + \sa pushGroup() +*/ +void QOpenGLDebugLogger::popGroup() +{ + Q_D(QOpenGLDebugLogger); + if (!d->initialized) { + qWarning("QOpenGLDebugLogger::pushGroup(): object must be initialized before popping a debug group"); + return; + } + + d->glPopDebugGroup(); +} + +/*! + Enables the logging of messages from the given \a sources, of the given \a + types and with the given \a severities and any message id. + + The logging will be enabled in the current control group. + + \sa disableMessages(), pushGroup(), popGroup() +*/ +void QOpenGLDebugLogger::enableMessages(QOpenGLDebugMessage::Sources sources, + QOpenGLDebugMessage::Types types, + QOpenGLDebugMessage::Severities severities) +{ + Q_D(QOpenGLDebugLogger); + d->controlDebugMessages(sources, + types, + severities, + QVector(), + QByteArrayLiteral("enableMessages"), + true); +} + +/*! + Enables the logging of messages with the given \a ids, from the given \a + sources and of the given \a types and any severity. + + The logging will be enabled in the current control group. + + \sa disableMessages(), pushGroup(), popGroup() +*/ +void QOpenGLDebugLogger::enableMessages(const QVector &ids, + QOpenGLDebugMessage::Sources sources, + QOpenGLDebugMessage::Types types) +{ + Q_D(QOpenGLDebugLogger); + d->controlDebugMessages(sources, + types, + QOpenGLDebugMessage::AnySeverity, + ids, + QByteArrayLiteral("enableMessages"), + true); +} + +/*! + Disables the logging of messages with the given \a sources, of the given \a + types and with the given \a severities and any message id. + + The logging will be disabled in the current control group. + + \sa enableMessages(), pushGroup(), popGroup() +*/ +void QOpenGLDebugLogger::disableMessages(QOpenGLDebugMessage::Sources sources, + QOpenGLDebugMessage::Types types, + QOpenGLDebugMessage::Severities severities) +{ + Q_D(QOpenGLDebugLogger); + d->controlDebugMessages(sources, + types, + severities, + QVector(), + QByteArrayLiteral("disableMessages"), + false); +} + +/*! + Disables the logging of messages with the given \a ids, from the given \a + sources and of the given \a types and any severity. + + The logging will be disabled in the current control group. + + \sa enableMessages(), pushGroup(), popGroup() +*/ +void QOpenGLDebugLogger::disableMessages(const QVector &ids, + QOpenGLDebugMessage::Sources sources, + QOpenGLDebugMessage::Types types) +{ + Q_D(QOpenGLDebugLogger); + d->controlDebugMessages(sources, + types, + QOpenGLDebugMessage::AnySeverity, + ids, + QByteArrayLiteral("disableMessages"), + false); +} + +/*! + Reads all the available messages in the OpenGL internal debug log and + returns them. Moreover, this function will clear the internal debug log, + so that subsequent invocations will not return messages that were + already returned. + + \sa startLogging() +*/ +QList QOpenGLDebugLogger::loggedMessages() const +{ + Q_D(const QOpenGLDebugLogger); + if (!d->initialized) { + qWarning("QOpenGLDebugLogger::loggedMessages(): object must be initialized before reading logged messages"); + return QList(); + } + + static const GLuint maxMessageCount = 128; + GLuint messagesRead; + GLenum messageSources[maxMessageCount]; + GLenum messageTypes[maxMessageCount]; + GLuint messageIds[maxMessageCount]; + GLenum messageSeverities[maxMessageCount]; + GLsizei messageLengths[maxMessageCount]; + + QByteArray messagesBuffer; + messagesBuffer.resize(maxMessageCount * d->maxMessageLength); + + QList messages; + do { + messagesRead = d->glGetDebugMessageLog(maxMessageCount, + GLsizei(messagesBuffer.size()), + messageSources, + messageTypes, + messageIds, + messageSeverities, + messageLengths, + messagesBuffer.data()); + + const char *messagesBufferPtr = messagesBuffer.constData(); + for (GLuint i = 0; i < messagesRead; ++i) { + QOpenGLDebugMessage message; + + QOpenGLDebugMessagePrivate *messagePrivate = message.d.data(); + messagePrivate->source = qt_messageSourceFromGL(messageSources[i]); + messagePrivate->type = qt_messageTypeFromGL(messageTypes[i]); + messagePrivate->id = messageIds[i]; + messagePrivate->severity = qt_messageSeverityFromGL(messageSeverities[i]); + messagePrivate->message = QString::fromUtf8(messagesBufferPtr, messageLengths[i] - 1); + + messagesBufferPtr += messageLengths[i]; + messages << message; + } + } while (messagesRead == maxMessageCount); + + return messages; +} + +/*! + \fn void QOpenGLDebugLogger::messageLogged(const QOpenGLDebugMessage &debugMessage) + + This signal is emitted when a debug message (wrapped by the \a debugMessage + argument) is logged from the OpenGL server. + + Depending on the OpenGL implementation, this signal can be emitted + from other threads than the one(s) the receiver(s) lives in, and even + different from the thread the QOpenGLContext in which this object has + been initialized lives in. Moreover, the signal could be emitted from + multiple threads at the same time. This is normally not a problem, + as Qt will utilize a queued connection for cross-thread signal emissions, + but if you force the connection type to Direct then you must be aware of + the potential races in the slots connected to this signal. + + If logging have been started in SynchronousLogging mode, OpenGL guarantees + that this signal will be emitted from the same thread the QOpenGLContext + has been bound to, and no concurrent invocations will ever happen. + + \note Logging must have been started, or this signal will not be emitted. + + \sa startLogging() +*/ + +/*! + Returns the maximum supported length, in bytes, for the text of the messages + passed to logMessage(). This is also the maximum length of a debug group + name, as pushing or popping groups will automatically log a message with + the debug group name as the message text. + + If a message text is too long, it will be automatically truncated by + QOpenGLDebugLogger. + + \note Message texts are encoded in UTF-8 when they get passed to OpenGL, so + their size in bytes does not usually match the amount of UTF-16 code units, + as returned f.i. by QString::length(). (It does if the message contains + 7-bit ASCII only data, which is typical for debug messages.) +*/ +qint64 QOpenGLDebugLogger::maximumMessageLength() const +{ + Q_D(const QOpenGLDebugLogger); + if (!d->initialized) { + qWarning("QOpenGLDebugLogger::maximumMessageLength(): object must be initialized before reading the maximum message length"); + return -1; + } + return d->maxMessageLength; +} + + +QT_END_NAMESPACE + +#include "moc_qopengldebug.cpp" diff --git a/src/gui/opengl/qopengldebug.h b/src/gui/opengl/qopengldebug.h new file mode 100644 index 0000000000..5f0c1a52db --- /dev/null +++ b/src/gui/opengl/qopengldebug.h @@ -0,0 +1,220 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLDEBUG_H +#define QOPENGLDEBUG_H + +#include + +#ifndef QT_NO_OPENGL + +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QOpenGLDebugLogger; +class QOpenGLDebugLoggerPrivate; +class QOpenGLDebugMessagePrivate; + +class Q_GUI_EXPORT QOpenGLDebugMessage +{ +public: + enum Source { + InvalidSource = 0x00000000, + APISource = 0x00000001, + WindowSystemSource = 0x00000002, + ShaderCompilerSource = 0x00000004, + ThirdPartySource = 0x00000008, + ApplicationSource = 0x00000010, + OtherSource = 0x00000020, + LastSource = OtherSource, // private API + AnySource = 0xffffffff + }; + Q_DECLARE_FLAGS(Sources, Source) + + enum Type { + InvalidType = 0x00000000, + ErrorType = 0x00000001, + DeprecatedBehaviorType = 0x00000002, + UndefinedBehaviorType = 0x00000004, + PortabilityType = 0x00000008, + PerformanceType = 0x00000010, + OtherType = 0x00000020, + MarkerType = 0x00000040, + GroupPushType = 0x00000080, + GroupPopType = 0x00000100, + LastType = GroupPopType, // private API + AnyType = 0xffffffff + }; + Q_DECLARE_FLAGS(Types, Type) + + enum Severity { + InvalidSeverity = 0x00000000, + HighSeverity = 0x00000001, + MediumSeverity = 0x00000002, + LowSeverity = 0x00000004, + NotificationSeverity = 0x00000008, + LastSeverity = NotificationSeverity, // private API + AnySeverity = 0xffffffff + }; + Q_DECLARE_FLAGS(Severities, Severity) + + QOpenGLDebugMessage(); + QOpenGLDebugMessage(const QOpenGLDebugMessage &debugMessage); + ~QOpenGLDebugMessage(); + + QOpenGLDebugMessage &operator=(const QOpenGLDebugMessage &debugMessage); +#ifdef Q_COMPILER_RVALUE_REFS + inline QOpenGLDebugMessage &operator=(QOpenGLDebugMessage &&debugMessage) + { d.swap(debugMessage.d); return *this; } +#endif + inline void swap(QOpenGLDebugMessage &debugMessage) { d.swap(debugMessage.d); } + + Source source() const; + Type type() const; + Severity severity() const; + GLuint id() const; + QString message() const; + + static QOpenGLDebugMessage createApplicationMessage(const QString &text, + GLuint id = 0, + Severity severity = NotificationSeverity, + Type type = OtherType); + static QOpenGLDebugMessage createThirdPartyMessage(const QString &text, + GLuint id = 0, + Severity severity = NotificationSeverity, + Type type = OtherType); + + bool operator==(const QOpenGLDebugMessage &debugMessage) const; + inline bool operator!=(const QOpenGLDebugMessage &debugMessage) const { return !operator==(debugMessage); } + +private: + friend class QOpenGLDebugLogger; + friend class QOpenGLDebugLoggerPrivate; + QSharedDataPointer d; +}; + +Q_DECLARE_SHARED(QOpenGLDebugMessage) +Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLDebugMessage::Sources) +Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLDebugMessage::Types) +Q_DECLARE_OPERATORS_FOR_FLAGS(QOpenGLDebugMessage::Severities) + +#ifndef QT_NO_DEBUG_STREAM +Q_GUI_EXPORT QDebug operator<<(QDebug debug, const QOpenGLDebugMessage &message); +Q_GUI_EXPORT QDebug operator<<(QDebug debug, QOpenGLDebugMessage::Source source); +Q_GUI_EXPORT QDebug operator<<(QDebug debug, QOpenGLDebugMessage::Type type); +Q_GUI_EXPORT QDebug operator<<(QDebug debug, QOpenGLDebugMessage::Severity severity); +#endif + +class QOpenGLDebugLoggerPrivate; + +class Q_GUI_EXPORT QOpenGLDebugLogger : public QObject +{ + Q_OBJECT + Q_ENUMS(LoggingMode) + Q_PROPERTY(LoggingMode loggingMode READ loggingMode) + +public: + enum LoggingMode { + AsynchronousLogging, + SynchronousLogging + }; + + explicit QOpenGLDebugLogger(QObject *parent = 0); + ~QOpenGLDebugLogger(); + + bool initialize(); + + bool isLogging() const; + LoggingMode loggingMode() const; + + qint64 maximumMessageLength() const; + + void pushGroup(const QString &name, + GLuint id = 0, + QOpenGLDebugMessage::Source source = QOpenGLDebugMessage::ApplicationSource); + void popGroup(); + + void enableMessages(QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, + QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType, + QOpenGLDebugMessage::Severities severities = QOpenGLDebugMessage::AnySeverity); + + void enableMessages(const QVector &ids, + QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, + QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType); + + void disableMessages(QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, + QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType, + QOpenGLDebugMessage::Severities severities = QOpenGLDebugMessage::AnySeverity); + + void disableMessages(const QVector &ids, + QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, + QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType); + + QList loggedMessages() const; + +public Q_SLOTS: + void logMessage(const QOpenGLDebugMessage &debugMessage); + void startLogging(LoggingMode loggingMode = AsynchronousLogging); + void stopLogging(); + +Q_SIGNALS: + void messageLogged(const QOpenGLDebugMessage &debugMessage); + +private: + Q_DISABLE_COPY(QOpenGLDebugLogger) + Q_DECLARE_PRIVATE(QOpenGLDebugLogger) + Q_PRIVATE_SLOT(d_func(), void _q_contextAboutToBeDestroyed()) +}; + +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QOpenGLDebugMessage) + +#endif // QT_NO_OPENGL + +#endif // QOPENGLDEBUG_H -- cgit v1.2.3 From 898e701b4aa67f04fb29bf61fd7326f5c18bec7b Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 8 Mar 2013 21:45:43 +0100 Subject: bring bootstrapped QT magic from qt_tool to qt_module project files of bootstrapped modules can, just like those of bootstrapped tools, benefit from automatic adjustment of QT (and CONFIG). Change-Id: I83815e69a2b105caaee0c2e2602828f8eb425eef Reviewed-by: Joerg Bornemann --- src/tools/bootstrap-dbus/bootstrap-dbus.pro | 4 +--- src/tools/bootstrap/bootstrap.pro | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/tools/bootstrap-dbus/bootstrap-dbus.pro b/src/tools/bootstrap-dbus/bootstrap-dbus.pro index 63f7b38a73..6af70efda7 100644 --- a/src/tools/bootstrap-dbus/bootstrap-dbus.pro +++ b/src/tools/bootstrap-dbus/bootstrap-dbus.pro @@ -2,9 +2,7 @@ option(host_build) MODULE = bootstrap_dbus TARGET = QtBootstrapDBus -QT = bootstrap-private -CONFIG += no_module_headers internal_module -!build_pass: CONFIG += release +CONFIG += no_module_headers internal_module force_bootstrap DEFINES += \ QT_NO_CAST_FROM_ASCII diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index 1c39d1b7a5..8b69c715d2 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -2,8 +2,7 @@ option(host_build) TARGET = QtBootstrap QT = -CONFIG += internal_module -!build_pass: CONFIG += release +CONFIG += internal_module force_bootstrap # otherwise mingw headers do not declare common functions like putenv win32-g++*:QMAKE_CXXFLAGS_CXX11 = -std=gnu++0x -- cgit v1.2.3 From b11317a64339f5a4bcffc8234ecaf15c7fb416f2 Mon Sep 17 00:00:00 2001 From: Axel Waggershauser Date: Fri, 15 Mar 2013 00:42:15 +0100 Subject: Whitespace cleanup: remove trailing whitespace Remove all trailing whitespace from the following list of files: *.cpp *.h *.conf *.qdoc *.pro *.pri *.mm *.rc *.pl *.qps *.xpm *.txt *README excluding 3rdparty, test-data and auto generated code. Note A): the only non 3rdparty c++-files that still have trailing whitespace after this change are: * src/corelib/codecs/cp949codetbl_p.h * src/corelib/codecs/qjpunicode.cpp * src/corelib/codecs/qbig5codec.cpp * src/corelib/xml/qxmlstream_p.h * src/tools/qdoc/qmlparser/qqmljsgrammar.cpp * src/tools/uic/ui4.cpp * tests/auto/other/qtokenautomaton/tokenizers/* * tests/benchmarks/corelib/tools/qstring/data.cpp * util/lexgen/tokenizer.cpp Note B): in about 30 files some overlapping 'leading tab' and 'TAB character in non-leading whitespace' issues have been fixed to make the sanity bot happy. Plus some general ws-fixes here and there as asked for during review. Change-Id: Ia713113c34d82442d6ce4d93d8b1cf545075d11d Reviewed-by: Oswald Buddenhagen --- src/concurrent/qtconcurrentfilter.cpp | 2 +- src/concurrent/qtconcurrentmap.cpp | 6 +- src/concurrent/qtconcurrentmapkernel.h | 2 +- src/concurrent/qtconcurrentreducekernel.h | 2 +- src/concurrent/qtconcurrentrun.cpp | 52 ++++----- .../animation/qsequentialanimationgroup.cpp | 4 +- src/corelib/animation/qvariantanimation.cpp | 4 +- src/corelib/arch/qatomic_ia64.h | 34 +++--- src/corelib/arch/sparc/arch.pri | 2 +- src/corelib/arch/sparc/qatomic_sparc.cpp | 2 +- src/corelib/codecs/qeuckrcodec.cpp | 4 +- src/corelib/codecs/qiconvcodec.cpp | 2 +- src/corelib/codecs/qjpunicode.cpp | 6 +- .../snippets/code/src_corelib_global_qglobal.cpp | 4 +- .../src_corelib_thread_qwaitcondition_unix.cpp | 2 +- .../snippets/code/src_corelib_tools_qbytearray.cpp | 2 +- src/corelib/doc/snippets/fileinfo/main.cpp | 6 +- src/corelib/doc/snippets/qstring/main.cpp | 2 +- src/corelib/doc/snippets/sharedemployee/employee.h | 10 +- .../doc/snippets/signalmapper/filereader.cpp | 4 +- .../doc/snippets/statemachine/eventtest.cpp | 4 +- src/corelib/doc/snippets/statemachine/main4.cpp | 2 +- src/corelib/doc/snippets/streaming/main.cpp | 4 +- src/corelib/doc/snippets/timers/timers.cpp | 2 +- src/corelib/doc/src/objectmodel/object.qdoc | 4 +- src/corelib/doc/src/objectmodel/properties.qdoc | 6 +- .../doc/src/objectmodel/signalsandslots.qdoc | 4 +- src/corelib/global/qfeatures.h | 2 +- src/corelib/global/qfeatures.txt | 8 +- src/corelib/global/qglobal.h | 2 +- src/corelib/io/qdatastream.cpp | 2 +- src/corelib/io/qfilesystemwatcher_win.cpp | 2 +- src/corelib/io/qiodevice.cpp | 2 +- src/corelib/io/qresource_p.h | 2 +- src/corelib/io/qsettings.cpp | 12 +- src/corelib/io/qsettings_win.cpp | 2 +- src/corelib/kernel/qfunctions_nacl.h | 2 +- src/corelib/kernel/qmath.qdoc | 6 +- src/corelib/kernel/qmetaobject.cpp | 10 +- src/corelib/kernel/qobject.cpp | 8 +- src/corelib/kernel/qsystemerror_p.h | 6 +- src/corelib/kernel/qsystemsemaphore_win.cpp | 2 +- src/corelib/kernel/qvariant_p.h | 2 +- src/corelib/plugin/quuid.cpp | 12 +- src/corelib/statemachine/qstatemachine_p.h | 8 +- src/corelib/thread/qatomic.cpp | 2 +- src/corelib/thread/qexception.cpp | 4 +- src/corelib/thread/qfuture.qdoc | 2 +- src/corelib/thread/qfutureinterface.cpp | 2 +- src/corelib/thread/qfutureinterface.h | 2 +- src/corelib/thread/qfuturesynchronizer.h | 2 +- src/corelib/thread/qreadwritelock.cpp | 2 +- src/corelib/thread/qresultstore.cpp | 8 +- src/corelib/thread/qresultstore.h | 2 +- src/corelib/thread/qrunnable.cpp | 2 +- src/corelib/thread/qthread.cpp | 6 +- src/corelib/thread/qthreadpool.cpp | 14 +-- src/corelib/tools/qalgorithms.qdoc | 20 ++-- src/corelib/tools/qbitarray.cpp | 6 +- src/corelib/tools/qbytearray.cpp | 32 +++--- src/corelib/tools/qcontiguouscache.cpp | 4 +- src/corelib/tools/qcryptographichash.cpp | 4 +- src/corelib/tools/qhash.cpp | 2 +- src/corelib/tools/qiterator.qdoc | 24 ++-- src/corelib/tools/qline.cpp | 6 +- src/corelib/tools/qmargins.cpp | 2 +- src/corelib/tools/qpair.qdoc | 2 +- src/corelib/tools/qregexp.cpp | 2 +- src/corelib/tools/qringbuffer_p.h | 2 +- src/corelib/tools/qset.qdoc | 20 ++-- src/corelib/tools/qshareddata.cpp | 6 +- src/corelib/tools/qtextboundaryfinder.cpp | 2 +- src/corelib/tools/qvector.cpp | 2 +- src/corelib/xml/qxmlutils.cpp | 2 +- src/dbus/qdbusabstractinterface.cpp | 2 +- src/dbus/qdbuserror.cpp | 2 +- src/dbus/qdbusintrospection_p.h | 2 +- src/dbus/qdbusmetaobject.cpp | 18 +-- src/dbus/qdbusmetatype.cpp | 6 +- .../snippets/textdocument-tables/mainwindow.cpp | 2 +- .../doc/snippets/textdocument-texttable/main.cpp | 2 +- src/gui/doc/src/paintsystem.qdoc | 10 +- src/gui/doc/src/qtgui.qdoc | 2 +- src/gui/image/qimageiohandler.cpp | 2 +- src/gui/image/qmovie.cpp | 14 +-- src/gui/image/qxbmhandler.cpp | 2 +- src/gui/kernel/qclipboard.cpp | 14 +-- src/gui/kernel/qcursor.h | 2 +- src/gui/kernel/qkeysequence.cpp | 20 ++-- src/gui/opengl/qopengl2pexvertexarray_p.h | 6 +- src/gui/opengl/qopengles2ext.h | 68 +++++------ src/gui/opengl/qopenglext.h | 6 +- src/gui/opengl/qtriangulator.cpp | 10 +- src/gui/painting/qcolor.cpp | 2 +- src/gui/painting/qcolor.h | 4 +- src/gui/painting/qcssutil_p.h | 2 +- src/gui/painting/qemulationpaintengine_p.h | 6 +- src/gui/painting/qpaintbuffer.cpp | 6 +- src/gui/painting/qtextureglyphcache.cpp | 2 +- src/gui/text/qabstracttextdocumentlayout.cpp | 2 +- src/gui/text/qcssparser.cpp | 8 +- src/gui/text/qstatictext.cpp | 22 ++-- src/gui/text/qstatictext.h | 2 +- src/gui/text/qstatictext_p.h | 2 +- src/gui/text/qsyntaxhighlighter.cpp | 2 +- src/gui/text/qtextdocument.cpp | 4 +- src/gui/text/qtextlayout.cpp | 4 +- src/gui/text/qtextobject.cpp | 2 +- src/gui/text/qtextodfwriter.cpp | 14 +-- src/gui/text/qtextoption.cpp | 2 +- src/gui/text/qtexttable.cpp | 6 +- src/network/access/qhttpnetworkconnection.cpp | 2 +- .../access/qhttpnetworkconnectionchannel_p.h | 2 +- .../access/qnetworkaccessdebugpipebackend.cpp | 2 +- src/network/access/qnetworkaccessmanager.cpp | 18 +-- src/network/bearer/qnetworkconfigmanager.cpp | 2 +- src/network/bearer/qnetworksession.cpp | 108 +++++++++--------- src/network/bearer/qnetworksession_p.h | 2 +- .../code/src_network_socket_qabstractsocket.cpp | 2 +- src/network/doc/snippets/network/tcpwait.cpp | 8 +- src/network/kernel/qauthenticator.h | 2 +- src/network/kernel/qhostaddress.cpp | 2 +- src/network/kernel/qnetworkinterface.h | 2 +- src/network/kernel/qnetworkinterface_unix.cpp | 4 +- src/network/kernel/qnetworkinterface_win.cpp | 2 +- src/network/kernel/qnetworkinterface_win_p.h | 32 +++--- src/network/socket/qnativesocketengine_win.cpp | 2 +- src/network/socket/qtcpsocket.cpp | 2 +- src/network/ssl/qssl.cpp | 2 +- src/network/ssl/qsslcipher.cpp | 2 +- src/network/ssl/qsslerror.cpp | 4 +- src/network/ssl/qsslerror.h | 2 +- src/network/ssl/qsslsocket.cpp | 16 +-- src/opengl/doc/src/qtopengl-examples.qdoc | 2 +- src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h | 6 +- src/plugins/bearer/connman/qconnmanengine.cpp | 2 +- .../bearer/connman/qconnmanservice_linux.cpp | 4 +- .../bearer/connman/qconnmanservice_linux_p.h | 2 +- .../bearer/networkmanager/qnetworkmanagerservice.h | 84 +++++++------- src/plugins/bearer/qnetworksession_impl.h | 2 +- src/plugins/imageformats/ico/qicohandler.cpp | 2 +- src/plugins/imageformats/ico/qicohandler.h | 6 +- .../platforms/cocoa/qcocoaeventdispatcher.mm | 36 +++--- src/plugins/platforms/xcb/qxcbcursor.cpp | 2 +- src/printsupport/doc/snippets/widgetprinting.cpp | 2 +- src/printsupport/doc/src/qtprintsupport-index.qdoc | 4 +- src/sql/doc/snippets/code/doc_src_sql-driver.cpp | 2 +- src/sql/doc/src/qsqldatatype-table.qdoc | 2 +- src/sql/doc/src/sql-driver.qdoc | 4 +- src/sql/doc/src/sql-programming.qdoc | 14 +-- src/sql/drivers/mysql/qsql_mysql.cpp | 10 +- src/sql/drivers/oci/qsql_oci.cpp | 4 +- src/sql/drivers/sqlite/qsql_sqlite.cpp | 2 +- src/sql/drivers/sqlite2/qsql_sqlite2.cpp | 4 +- src/sql/kernel/qsqlquery.cpp | 14 +-- src/sql/models/qsqlquerymodel_p.h | 2 +- src/sql/models/qsqlrelationaltablemodel.cpp | 2 +- src/testlib/qsignalspy.qdoc | 2 +- src/testlib/qtestevent.qdoc | 2 +- src/tools/moc/utils.h | 4 +- src/tools/rcc/main.cpp | 4 +- src/tools/rcc/rcc.h | 4 +- src/tools/uic/cpp/cppwriteincludes.cpp | 6 +- src/tools/uic/driver.cpp | 2 +- src/widgets/accessible/qaccessiblewidget.cpp | 2 +- src/widgets/dialogs/qprogressdialog.cpp | 4 +- src/widgets/dialogs/qwizard_win.cpp | 10 +- .../code/src_gui_itemviews_qdatawidgetmapper.cpp | 2 +- src/widgets/doc/snippets/customviewstyle.cpp | 2 +- src/widgets/doc/snippets/javastyle.cpp | 20 ++-- src/widgets/doc/snippets/layouts/layouts.cpp | 6 +- src/widgets/doc/snippets/mainwindowsnippet.cpp | 8 +- src/widgets/doc/snippets/mdiareasnippets.cpp | 2 +- src/widgets/doc/snippets/myscrollarea.cpp | 2 +- .../doc/snippets/qtablewidget-using/mainwindow.cpp | 2 +- src/widgets/doc/snippets/simplemodel-use/main.cpp | 2 +- src/widgets/doc/snippets/stringlistmodel/model.cpp | 4 +- src/widgets/doc/snippets/timeline/main.cpp | 8 +- src/widgets/doc/src/model-view-programming.qdoc | 2 +- src/widgets/doc/src/widgets-and-layouts/focus.qdoc | 6 +- .../doc/src/widgets-and-layouts/layout.qdoc | 14 +-- .../doc/src/windows-and-dialogs/dialogs.qdoc | 4 +- .../doc/src/windows-and-dialogs/mainwindow.qdoc | 2 +- src/widgets/graphicsview/qgraphicslayout_p.cpp | 2 +- src/widgets/kernel/qboxlayout.cpp | 6 +- src/widgets/kernel/qdesktopwidget.qdoc | 8 +- src/widgets/kernel/qgesture.cpp | 2 +- src/widgets/kernel/qlayout.cpp | 2 +- src/widgets/kernel/qlayoutitem.cpp | 34 +++--- src/widgets/kernel/qwidget.cpp | 4 +- src/widgets/kernel/qwidget_qpa.cpp | 2 +- src/widgets/kernel/qwidgetaction.h | 4 +- src/widgets/kernel/qwidgetaction_p.h | 2 +- src/widgets/statemachine/qguistatemachine.cpp | 2 +- src/widgets/styles/qcommonstyle.cpp | 2 +- src/widgets/styles/qcommonstyle.h | 2 +- src/widgets/styles/qdrawutil.cpp | 4 +- src/widgets/styles/qgtkstyle.cpp | 4 +- src/widgets/styles/qmacstyle.qdoc | 38 +++---- src/widgets/styles/qmacstyle_mac.mm | 12 +- src/widgets/styles/qproxystyle.cpp | 2 +- src/widgets/styles/qstyle.cpp | 2 +- src/widgets/styles/qstyleoption.cpp | 20 ++-- src/widgets/styles/qwindowsmobilestyle.cpp | 124 ++++++++++----------- src/widgets/styles/qwindowsvistastyle.cpp | 28 ++--- src/widgets/util/qcolormap.qdoc | 2 +- src/widgets/util/qcompleter.cpp | 2 +- src/widgets/util/qscroller.cpp | 2 +- src/widgets/util/qscrollerproperties.cpp | 2 +- src/widgets/util/qsystemtrayicon.cpp | 2 +- src/widgets/util/qsystemtrayicon_win.cpp | 4 +- src/widgets/util/qsystemtrayicon_wince.cpp | 2 +- src/widgets/util/qundostack.cpp | 6 +- src/widgets/widgets/qabstractbutton.cpp | 2 +- src/widgets/widgets/qabstractscrollarea.cpp | 2 +- src/widgets/widgets/qabstractslider.cpp | 2 +- src/widgets/widgets/qabstractslider_p.h | 2 +- src/widgets/widgets/qbuttongroup.cpp | 4 +- src/widgets/widgets/qcalendarwidget.cpp | 2 +- src/widgets/widgets/qcombobox_p.h | 4 +- src/widgets/widgets/qdockarealayout.cpp | 2 +- src/widgets/widgets/qeffects.cpp | 4 +- src/widgets/widgets/qgroupbox.cpp | 4 +- src/widgets/widgets/qgroupbox.h | 2 +- src/widgets/widgets/qlineedit.cpp | 6 +- src/widgets/widgets/qlineedit_p.cpp | 2 +- src/widgets/widgets/qmaccocoaviewcontainer_mac.mm | 2 +- src/widgets/widgets/qmenu_wince.cpp | 24 ++-- src/widgets/widgets/qmenu_wince.rc | 32 +++--- src/widgets/widgets/qpushbutton.h | 2 +- src/widgets/widgets/qscrollarea.cpp | 2 +- src/widgets/widgets/qsplashscreen.cpp | 2 +- src/widgets/widgets/qsplitter.cpp | 2 +- src/widgets/widgets/qstatusbar.cpp | 6 +- src/widgets/widgets/qtoolbararealayout.cpp | 4 +- src/widgets/widgets/qtoolbararealayout_p.h | 4 +- src/widgets/widgets/qtoolbarlayout.cpp | 2 +- src/widgets/widgets/widgets.pri | 2 +- src/xml/sax/qxml.cpp | 4 +- 239 files changed, 875 insertions(+), 875 deletions(-) (limited to 'src') diff --git a/src/concurrent/qtconcurrentfilter.cpp b/src/concurrent/qtconcurrentfilter.cpp index 72362b7d8a..ef0229a695 100644 --- a/src/concurrent/qtconcurrentfilter.cpp +++ b/src/concurrent/qtconcurrentfilter.cpp @@ -148,7 +148,7 @@ QtConcurrent::filter(), QtConcurrent::filtered(), and QtConcurrent::filteredReduced() accept function objects, which can be used to - add state to a function call. The result_type typedef must define the + add state to a function call. The result_type typedef must define the result type of the function call operator: \snippet code/src_concurrent_qtconcurrentfilter.cpp 13 diff --git a/src/concurrent/qtconcurrentmap.cpp b/src/concurrent/qtconcurrentmap.cpp index 2dba3779ff..9718baf48f 100644 --- a/src/concurrent/qtconcurrentmap.cpp +++ b/src/concurrent/qtconcurrentmap.cpp @@ -56,7 +56,7 @@ /*! \enum QtConcurrent::ReduceOption - This enum specifies the order of which results from the map or filter + This enum specifies the order of which results from the map or filter function are passed to the reduce function. \value UnorderedReduce Reduction is done in an arbitrary order. @@ -197,7 +197,7 @@ QtConcurrent::map(), QtConcurrent::mapped(), and QtConcurrent::mappedReduced() accept function objects, which can be used to - add state to a function call. The result_type typedef must define the + add state to a function call. The result_type typedef must define the result type of the function call operator: \snippet code/src_concurrent_qtconcurrentmap.cpp 14 @@ -347,7 +347,7 @@ Calls \a function once for each item from \a begin to \a end and returns a container with the results. Specify the type of container as the a template argument, like this: - + \code QList ints = QtConcurrent::blockingMapped >(beginIterator, endIterator, fn); \endcode diff --git a/src/concurrent/qtconcurrentmapkernel.h b/src/concurrent/qtconcurrentmapkernel.h index b456c42285..6817cd3e29 100644 --- a/src/concurrent/qtconcurrentmapkernel.h +++ b/src/concurrent/qtconcurrentmapkernel.h @@ -80,7 +80,7 @@ public: runIteration(it, i, 0); advance(it, 1); } - + return false; } }; diff --git a/src/concurrent/qtconcurrentreducekernel.h b/src/concurrent/qtconcurrentreducekernel.h index a4a626d6c9..dcf4b92319 100644 --- a/src/concurrent/qtconcurrentreducekernel.h +++ b/src/concurrent/qtconcurrentreducekernel.h @@ -139,7 +139,7 @@ class ReduceKernel public: ReduceKernel(ReduceOptions _reduceOptions) - : reduceOptions(_reduceOptions), progress(0), resultsMapSize(0), + : reduceOptions(_reduceOptions), progress(0), resultsMapSize(0), threadCount(QThreadPool::globalInstance()->maxThreadCount()) { } diff --git a/src/concurrent/qtconcurrentrun.cpp b/src/concurrent/qtconcurrentrun.cpp index 880441cfc3..4ab1399c0c 100644 --- a/src/concurrent/qtconcurrentrun.cpp +++ b/src/concurrent/qtconcurrentrun.cpp @@ -47,63 +47,63 @@ separate thread. \ingroup thread - + This function is a part of the \l {Concurrent Programming}{Qt Concurrent} framework. The QtConcurrent::run() function runs a function in a separate thread. The return value of the function is made available through the QFuture API. - + \section1 Running a Function in a Separate Thread - + To run a function in another thread, use QtConcurrent::run(): - + \snippet code/src_concurrent_qtconcurrentrun.cpp 0 - + This will run \e aFunction in a separate thread obtained from the default QThreadPool. You can use the QFuture and QFutureWatcher classes to monitor the status of the function. - + \section1 Passing Arguments to the Function Passing arguments to the function is done by adding them to the QtConcurrent::run() call immediately after the function name. For example: - + \snippet code/src_concurrent_qtconcurrentrun.cpp 1 - + A copy of each argument is made at the point where QtConcurrent::run() is called, and these values are passed to the thread when it begins executing the function. Changes made to the arguments after calling QtConcurrent::run() are \e not visible to the thread. - + \section1 Returning Values from the Function - + Any return value from the function is available via QFuture: - + \snippet code/src_concurrent_qtconcurrentrun.cpp 2 - + As documented above, passing arguments is done like this: - + \snippet code/src_concurrent_qtconcurrentrun.cpp 3 - + Note that the QFuture::result() function blocks and waits for the result to become available. Use QFutureWatcher to get notification when the function has finished execution and the result is available. - + \section1 Additional API Features - + \section2 Using Member Functions - + QtConcurrent::run() also accepts pointers to member functions. The first argument must be either a const reference or a pointer to an instance of the class. Passing by const reference is useful when calling const member functions; passing by pointer is useful for calling non-const member functions that modify the instance. - + For example, calling QByteArray::split() (a const member function) in a separate thread is done like this: - + \snippet code/src_concurrent_qtconcurrentrun.cpp 4 - + Calling a non-const member function is done like this: \snippet code/src_concurrent_qtconcurrentrun.cpp 5 @@ -115,17 +115,17 @@ \l{http://www.boost.org/libs/bind/bind.html}{Boost} or \l{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf} {C++ TR1 Library Extensions}. - + You can use boost::bind() or std::tr1::bind() to \e bind a number of arguments to a function when called. There are number of reasons for doing this: - + \list \li To call a function that takes more than 5 arguments. \li To simplify calling a function with constant arguments. \li Changing the order of arguments. \endlist - + See the documentation for the relevant functions for details on how to use the bind API. @@ -137,14 +137,14 @@ /*! \fn QFuture QtConcurrent::run(Function function, ...); \relates - + Runs \a function in a separate thread. The thread is taken from the global QThreadPool. Note that the function may not run immediately; the function will only be run when a thread is available. - + T is the same type as the return value of \a function. Non-void return values can be accessed via the QFuture::result() function. - + Note that the QFuture returned by QtConcurrent::run() does not support canceling, pausing, or progress reporting. The QFuture returned can only be used to query for the running/finished status and the return value of diff --git a/src/corelib/animation/qsequentialanimationgroup.cpp b/src/corelib/animation/qsequentialanimationgroup.cpp index 2fbb844367..42debea782 100644 --- a/src/corelib/animation/qsequentialanimationgroup.cpp +++ b/src/corelib/animation/qsequentialanimationgroup.cpp @@ -266,8 +266,8 @@ QSequentialAnimationGroup::~QSequentialAnimationGroup() /*! Adds a pause of \a msecs to this animation group. - The pause is considered as a special type of animation, thus - \l{QAnimationGroup::animationCount()}{animationCount} will be + The pause is considered as a special type of animation, thus + \l{QAnimationGroup::animationCount()}{animationCount} will be increased by one. \sa insertPause(), QAnimationGroup::addAnimation() diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp index 72a7c7264a..f69d9dd8de 100644 --- a/src/corelib/animation/qvariantanimation.cpp +++ b/src/corelib/animation/qvariantanimation.cpp @@ -222,7 +222,7 @@ void QVariantAnimationPrivate::updateInterpolator() interpolator = getInterpolator(type); else interpolator = 0; - + //we make sure that the interpolator is always set to something if (!interpolator) interpolator = &defaultInterpolator; @@ -252,7 +252,7 @@ void QVariantAnimationPrivate::recalculateCurrentInterval(bool force/*=false*/) qMakePair(progress, QVariant()), animationValueLessThan); if (it == keyValues.constBegin()) { - //the item pointed to by it is the start element in the range + //the item pointed to by it is the start element in the range if (it->first == 0 && keyValues.count() > 1) { currentInterval.start = *it; currentInterval.end = *(it+1); diff --git a/src/corelib/arch/qatomic_ia64.h b/src/corelib/arch/qatomic_ia64.h index d4b187ffea..ed72036076 100644 --- a/src/corelib/arch/qatomic_ia64.h +++ b/src/corelib/arch/qatomic_ia64.h @@ -219,28 +219,28 @@ inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue) inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue) { register int expectedValueCopy = expectedValue; - return (static_cast(_InterlockedCompareExchange(&_q_value, - newValue, - expectedValueCopy)) - == expectedValue); + return (static_cast(_InterlockedCompareExchange(&_q_value, + newValue, + expectedValueCopy)) + == expectedValue); } inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue) { register int expectedValueCopy = expectedValue; - return (static_cast(_InterlockedCompareExchange_acq(reinterpret_cast(&_q_value), - newValue, - expectedValueCopy)) - == expectedValue); + return (static_cast(_InterlockedCompareExchange_acq(reinterpret_cast(&_q_value), + newValue, + expectedValueCopy)) + == expectedValue); } inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue) { register int expectedValueCopy = expectedValue; - return (static_cast(_InterlockedCompareExchange_rel(reinterpret_cast(&_q_value), - newValue, - expectedValueCopy)) - == expectedValue); + return (static_cast(_InterlockedCompareExchange_rel(reinterpret_cast(&_q_value), + newValue, + expectedValueCopy)) + == expectedValue); } inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd) @@ -286,10 +286,10 @@ template Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetRelaxed(T *expectedValue, T *newValue) { register T *expectedValueCopy = expectedValue; - return (_InterlockedCompareExchangePointer(reinterpret_cast(&_q_value), - newValue, - expectedValueCopy) - == expectedValue); + return (_InterlockedCompareExchangePointer(reinterpret_cast(&_q_value), + newValue, + expectedValueCopy) + == expectedValue); } template @@ -301,7 +301,7 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer::testAndSetAcquire(T *expectedValu }; x = &_q_value; register T *expectedValueCopy = expectedValue; - return (_InterlockedCompareExchange64_acq(p, quintptr(newValue), quintptr(expectedValueCopy)) + return (_InterlockedCompareExchange64_acq(p, quintptr(newValue), quintptr(expectedValueCopy)) == quintptr(expectedValue)); } diff --git a/src/corelib/arch/sparc/arch.pri b/src/corelib/arch/sparc/arch.pri index b3ca399640..a201c83c6a 100644 --- a/src/corelib/arch/sparc/arch.pri +++ b/src/corelib/arch/sparc/arch.pri @@ -3,7 +3,7 @@ # *-64* { SOURCES += $$PWD/qatomic64.s -} +} else { SOURCES += $$PWD/qatomic32.s \ $$PWD/qatomic_sparc.cpp diff --git a/src/corelib/arch/sparc/qatomic_sparc.cpp b/src/corelib/arch/sparc/qatomic_sparc.cpp index d0a9eb8d29..8ea270e90a 100644 --- a/src/corelib/arch/sparc/qatomic_sparc.cpp +++ b/src/corelib/arch/sparc/qatomic_sparc.cpp @@ -60,7 +60,7 @@ Q_CORE_EXPORT int q_atomic_lock_int(volatile int *addr) sched_yield(); returnValue = *addr; } while (returnValue == INT_MIN); - + // try again returnValue = q_atomic_trylock_int(addr); } while (returnValue == INT_MIN); diff --git a/src/corelib/codecs/qeuckrcodec.cpp b/src/corelib/codecs/qeuckrcodec.cpp index a6d75666d5..20ba1e85d6 100644 --- a/src/corelib/codecs/qeuckrcodec.cpp +++ b/src/corelib/codecs/qeuckrcodec.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -// Most of the cp949 code was originally written by Joon-Kyu Park, and is included +// Most of the cp949 code was originally written by Joon-Kyu Park, and is included // in Qt with the author's permission and the grateful thanks of the Qt team. /*! \class QEucKrCodec @@ -3405,7 +3405,7 @@ QByteArray QCP949Codec::convertFromUnicode(const QChar *uc, int len, ConverterSt row = internal_code / 178; column = internal_code % 178; } - else { + else { // code between a1-fe internal_code -= 3008; row = internal_code / 84; diff --git a/src/corelib/codecs/qiconvcodec.cpp b/src/corelib/codecs/qiconvcodec.cpp index 01b90fe527..60b13ac4e1 100644 --- a/src/corelib/codecs/qiconvcodec.cpp +++ b/src/corelib/codecs/qiconvcodec.cpp @@ -374,7 +374,7 @@ QByteArray QIconvCodec::convertFromUnicode(const QChar *uc, int len, ConverterSt delete temporaryState; return QString(uc, len).toLatin1(); } - + size_t outBytesLeft = len; QByteArray ba(outBytesLeft, Qt::Uninitialized); outBytes = ba.data(); diff --git a/src/corelib/codecs/qjpunicode.cpp b/src/corelib/codecs/qjpunicode.cpp index 95ffe11f75..9513621dfe 100644 --- a/src/corelib/codecs/qjpunicode.cpp +++ b/src/corelib/codecs/qjpunicode.cpp @@ -10537,7 +10537,7 @@ static unsigned short const sjis208ibmvdc_unicode[] = { uint QJpUnicodeConv::sjisibmvdcToUnicode(uint h, uint l) const { - if (((rule & IBM_VDC) || (rule & Microsoft_CP932)) && IsSjisIBMVDCChar1(h)) + if (((rule & IBM_VDC) || (rule & Microsoft_CP932)) && IsSjisIBMVDCChar1(h)) return sjis208ibmvdc_unicode[((h - 0x00fa)*189 + (l-0x0040))]; else return 0; @@ -10632,9 +10632,9 @@ static unsigned short const cp932_ed_ee_unicode[] = { uint QJpUnicodeConv::cp932ToUnicode(uint h, uint l) const { if (rule & Microsoft_CP932) { - if (h == 0x0087 && (l >= 0x0040 && l <= 0x009c)) + if (h == 0x0087 && (l >= 0x0040 && l <= 0x009c)) return cp932_87_unicode[l-0x0040]; - else if ((h == 0x00ed || h == 0x00ee) && (l >= 0x0040 && l <= 0x00fc)) + else if ((h == 0x00ed || h == 0x00ee) && (l >= 0x0040 && l <= 0x00fc)) return cp932_ed_ee_unicode[((h - 0x00ed)*189 + (l-0x0040))]; } return 0; diff --git a/src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp b/src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp index 7d7d71ac50..59f05592be 100644 --- a/src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp @@ -501,7 +501,7 @@ namespace QT_NAMESPACE { //! [43] class MyClass : public QObject { - + private: Q_DISABLE_COPY(MyClass) }; @@ -511,7 +511,7 @@ class MyClass : public QObject //! [44] class MyClass : public QObject { - + private: MyClass(const MyClass &); MyClass &operator=(const MyClass &); diff --git a/src/corelib/doc/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp b/src/corelib/doc/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp index de1a7cea19..92a6e77866 100644 --- a/src/corelib/doc/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp @@ -84,6 +84,6 @@ forever { mutex.lock(); } keyPressed.wakeAll(); - mutex.unlock(); + mutex.unlock(); } //! [3] diff --git a/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp b/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp index 7e221cfaab..4f8c4c095e 100644 --- a/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp @@ -405,7 +405,7 @@ QString tmp = "test"; QByteArray text = tmp.toLocal8Bit(); char *data = new char[text.size()] strcpy(data, text.data()); -delete [] data; +delete [] data; //! [46] //! [47] diff --git a/src/corelib/doc/snippets/fileinfo/main.cpp b/src/corelib/doc/snippets/fileinfo/main.cpp index 57d7e32cb5..50acdb2550 100644 --- a/src/corelib/doc/snippets/fileinfo/main.cpp +++ b/src/corelib/doc/snippets/fileinfo/main.cpp @@ -54,12 +54,12 @@ int main(int argc, char *argv[]) QFileInfo fileInfo1("~/examples/191697/."); QFileInfo fileInfo2("~/examples/191697/.."); QFileInfo fileInfo3("~/examples/191697/main.cpp"); -//! [0] -//! [1] +//! [0] +//! [1] QFileInfo fileInfo4("."); QFileInfo fileInfo5(".."); QFileInfo fileInfo6("main.cpp"); -//! [1] +//! [1] qDebug() << fileInfo1.fileName(); qDebug() << fileInfo2.fileName(); diff --git a/src/corelib/doc/snippets/qstring/main.cpp b/src/corelib/doc/snippets/qstring/main.cpp index 6ee3088138..bf45a31c29 100644 --- a/src/corelib/doc/snippets/qstring/main.cpp +++ b/src/corelib/doc/snippets/qstring/main.cpp @@ -552,7 +552,7 @@ void Widget::replaceFunction() //! [86] QString equis = "xxxxxx"; equis.replace("xx", "x"); - // equis == "xxx" + // equis == "xxx" //! [86] //! [87] diff --git a/src/corelib/doc/snippets/sharedemployee/employee.h b/src/corelib/doc/snippets/sharedemployee/employee.h index 8025015a2e..2df1f71c51 100644 --- a/src/corelib/doc/snippets/sharedemployee/employee.h +++ b/src/corelib/doc/snippets/sharedemployee/employee.h @@ -69,11 +69,11 @@ class Employee setName(name); } //! [2] //! [7] - Employee(const Employee &other) - : d (other.d) - { - } -//! [7] + Employee(const Employee &other) + : d (other.d) + { + } +//! [7] //! [3] void setId(int id) { d->id = id; } //! [3] //! [4] diff --git a/src/corelib/doc/snippets/signalmapper/filereader.cpp b/src/corelib/doc/snippets/signalmapper/filereader.cpp index 42660b9551..cb83ea9362 100644 --- a/src/corelib/doc/snippets/signalmapper/filereader.cpp +++ b/src/corelib/doc/snippets/signalmapper/filereader.cpp @@ -73,7 +73,7 @@ FileReader::FileReader(QWidget *parent) /* //! [2] //slower due to signature normalization at runtime - + connect(signalMapper, SIGNAL(mapped(const QString &)), this, SLOT(readFile(const QString &))); //! [2] @@ -93,7 +93,7 @@ FileReader::FileReader(QWidget *parent) void FileReader::readFile(const QString &filename) { QFile file(filename); - + if (!file.open(QIODevice::ReadOnly)) { QMessageBox::information(this, tr("Unable to open file"), file.errorString()); diff --git a/src/corelib/doc/snippets/statemachine/eventtest.cpp b/src/corelib/doc/snippets/statemachine/eventtest.cpp index c83e92ab77..7454344680 100644 --- a/src/corelib/doc/snippets/statemachine/eventtest.cpp +++ b/src/corelib/doc/snippets/statemachine/eventtest.cpp @@ -55,11 +55,11 @@ protected: if (wrappedEvent->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast(wrappedEvent); // Do your event test - } + } } return false; } -//![0] +//![0] void onTransition(QEvent *event) { diff --git a/src/corelib/doc/snippets/statemachine/main4.cpp b/src/corelib/doc/snippets/statemachine/main4.cpp index f1ecabd535..19b40a10b4 100644 --- a/src/corelib/doc/snippets/statemachine/main4.cpp +++ b/src/corelib/doc/snippets/statemachine/main4.cpp @@ -69,7 +69,7 @@ protected: StringEvent *se = static_cast(e); return (m_value == se->value); } - + virtual void onTransition(QEvent *) {} private: diff --git a/src/corelib/doc/snippets/streaming/main.cpp b/src/corelib/doc/snippets/streaming/main.cpp index 66808a5a6b..673df075ee 100644 --- a/src/corelib/doc/snippets/streaming/main.cpp +++ b/src/corelib/doc/snippets/streaming/main.cpp @@ -85,12 +85,12 @@ int main(int argc, char *argv[]) QByteArray byteArray; QDataStream stream(&byteArray, QIODevice::WriteOnly); stream << m; - + // display qDebug() << m.id << m.releaseDate << m.title; Movie m2; - + int id2; QString title2; QDate date2; diff --git a/src/corelib/doc/snippets/timers/timers.cpp b/src/corelib/doc/snippets/timers/timers.cpp index 4d74e7cc27..8257bf57a7 100644 --- a/src/corelib/doc/snippets/timers/timers.cpp +++ b/src/corelib/doc/snippets/timers/timers.cpp @@ -74,5 +74,5 @@ Foo::Foo() int main() { - + } diff --git a/src/corelib/doc/src/objectmodel/object.qdoc b/src/corelib/doc/src/objectmodel/object.qdoc index 1d33c14d0f..89a781da39 100644 --- a/src/corelib/doc/src/objectmodel/object.qdoc +++ b/src/corelib/doc/src/objectmodel/object.qdoc @@ -71,7 +71,7 @@ \section1 Important Classes These classes form the basis of the Qt Object Model. - + \annotatedlist objectmodel \target Identity vs Value @@ -108,7 +108,7 @@ at runtime that are not declared in the C++ class. If we copy a Qt Object, should the copy include the properties that were added to the original? - + \endlist For these reasons, Qt Objects should be treated as identities, not diff --git a/src/corelib/doc/src/objectmodel/properties.qdoc b/src/corelib/doc/src/objectmodel/properties.qdoc index 37f54621a1..721b98c0f7 100644 --- a/src/corelib/doc/src/objectmodel/properties.qdoc +++ b/src/corelib/doc/src/objectmodel/properties.qdoc @@ -62,7 +62,7 @@ A property behaves like a class data member, but it has additional features accessible through the \l {Meta-Object System}. - \list + \list \li A \c READ accessor function is required if no \c MEMBER variable was specified. It is for reading the property value. Ideally, a const function @@ -130,7 +130,7 @@ gets and sets a widget's \c USER property. \li The presence of the \c CONSTANT attibute indicates that the property - value is constant. For a given object instance, the READ method of a + value is constant. For a given object instance, the READ method of a constant property must return the same value every time it is called. This constant value may be different for different instances of the object. A constant property cannot have a WRITE method or a NOTIFY signal. @@ -272,7 +272,7 @@ Q_DECLARE_METATYPE() macro so that their values can be stored in QVariant objects. This makes them suitable for use with both static properties declared using the Q_PROPERTY() macro in class - definitions and dynamic properties created at run-time. + definitions and dynamic properties created at run-time. \sa Q_DECLARE_METATYPE(), QMetaType, QVariant diff --git a/src/corelib/doc/src/objectmodel/signalsandslots.qdoc b/src/corelib/doc/src/objectmodel/signalsandslots.qdoc index d897c4b9a7..4e285f2966 100644 --- a/src/corelib/doc/src/objectmodel/signalsandslots.qdoc +++ b/src/corelib/doc/src/objectmodel/signalsandslots.qdoc @@ -365,7 +365,7 @@ arguments can have default values. Consider QObject::destroyed(): \code - void destroyed(QObject* = 0); + void destroyed(QObject* = 0); \endcode When a QObject is deleted, it emits this QObject::destroyed() @@ -434,7 +434,7 @@ handle each signal differently. Suppose you have three push buttons that determine which file you - will open: "Tax File", "Accounts File", or "Report File". + will open: "Tax File", "Accounts File", or "Report File". In order to open the correct file, you use QSignalMapper::setMapping() to map all the clicked() signals to a QSignalMapper object. Then you connect diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h index a751f9af56..daf853b916 100644 --- a/src/corelib/global/qfeatures.h +++ b/src/corelib/global/qfeatures.h @@ -238,7 +238,7 @@ // QWheelEvent //#define QT_NO_WHEELEVENT -// +// //#define QT_NO_XMLSTREAM // Animation diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt index c27463897f..43db585643 100644 --- a/src/corelib/global/qfeatures.txt +++ b/src/corelib/global/qfeatures.txt @@ -325,7 +325,7 @@ SeeAlso: ??? Feature: COMBOBOX Description: Supports comboboxes presenting a list of options to the user. Section: Widgets -Requires: LINEEDIT STANDARDITEMMODEL LISTVIEW +Requires: LINEEDIT STANDARDITEMMODEL LISTVIEW Name: QComboBox SeeAlso: ??? @@ -516,7 +516,7 @@ SeeAlso: ??? Feature: WHATSTHIS Description: Supports displaying "What's this" help. Section: Widgets -Requires: TOOLBUTTON +Requires: TOOLBUTTON Name: QWhatsThis SeeAlso: ??? @@ -636,7 +636,7 @@ SeeAlso: ??? Feature: DIRMODEL Description: Supports a data model for the local filesystem. Section: ItemViews -Requires: ITEMVIEWS FILESYSTEMMODEL +Requires: ITEMVIEWS FILESYSTEMMODEL Name: QDirModel SeeAlso: ??? @@ -1030,7 +1030,7 @@ SeeAlso: ??? Feature: SYSTEMTRAYICON Description: Provides an icon for an application in the system tray. Section: Utilities -Requires: +Requires: Name: QSystemTrayIcon SeeAlso: ??? diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 233743f3ce..c45ad12e99 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -470,7 +470,7 @@ typedef qptrdiff qintptr; # else # define QT_ENSURE_STACK_ALIGNED_FOR_SSE # endif -# define QT_WIN_CALLBACK CALLBACK QT_ENSURE_STACK_ALIGNED_FOR_SSE +# define QT_WIN_CALLBACK CALLBACK QT_ENSURE_STACK_ALIGNED_FOR_SSE #endif typedef int QNoImplicitBoolCast; diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp index 8f788ac355..5f5e9a8b72 100644 --- a/src/corelib/io/qdatastream.cpp +++ b/src/corelib/io/qdatastream.cpp @@ -743,7 +743,7 @@ QDataStream &QDataStream::operator>>(bool &i) */ QDataStream &QDataStream::operator>>(float &f) -{ +{ if (version() >= QDataStream::Qt_4_6 && floatingPointPrecision() == QDataStream::DoublePrecision) { double d; diff --git a/src/corelib/io/qfilesystemwatcher_win.cpp b/src/corelib/io/qfilesystemwatcher_win.cpp index fa0711461c..6ac6a3fbd9 100644 --- a/src/corelib/io/qfilesystemwatcher_win.cpp +++ b/src/corelib/io/qfilesystemwatcher_win.cpp @@ -207,7 +207,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths, this, SIGNAL(fileChanged(QString,bool))); connect(thread, SIGNAL(directoryChanged(QString,bool)), this, SIGNAL(directoryChanged(QString,bool))); - + thread->msg = '@'; thread->start(); threads.append(thread); diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index 4df9c6b911..c8a3f86137 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -1372,7 +1372,7 @@ qint64 QIODevice::write(const char *data, qint64 maxSize) \since 4.5 \overload - + Writes data from a zero-terminated string of 8-bit characters to the device. Returns the number of bytes that were actually written, or -1 if an error occurred. This is equivalent to diff --git a/src/corelib/io/qresource_p.h b/src/corelib/io/qresource_p.h index 3fdaa41206..d632ac70be 100644 --- a/src/corelib/io/qresource_p.h +++ b/src/corelib/io/qresource_p.h @@ -109,7 +109,7 @@ public: virtual Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames); virtual Iterator *endEntryList(); - + bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0); bool supportsExtension(Extension extension) const; }; diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index d7b100ba3c..a0904fea24 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -1074,7 +1074,7 @@ static void initDefaultPaths(QMutexLocker *locker) QString systemPath; locker->unlock(); - + /* QLibraryInfo::location() uses QSettings, so in order to avoid a dead-lock, we can't hold the global mutex while @@ -3198,7 +3198,7 @@ bool QSettings::isWritable() const } /*! - + Sets the value of setting \a key to \a value. If the \a key already exists, the previous value is overwritten. @@ -3465,7 +3465,7 @@ void QSettings::setPath(Format format, Scope scope, const QString &path) \typedef QSettings::SettingsMap Typedef for QMap. - + \sa registerFormat() */ @@ -3477,8 +3477,8 @@ void QSettings::setPath(Format format, Scope scope, const QString &path) \snippet code/src_corelib_io_qsettings.cpp 27 \c ReadFunc is used in \c registerFormat() as a pointer to a function - that reads a set of key/value pairs. \c ReadFunc should read all the - options in one pass, and return all the settings in the \c SettingsMap + that reads a set of key/value pairs. \c ReadFunc should read all the + options in one pass, and return all the settings in the \c SettingsMap container, which is initially empty. \sa WriteFunc, registerFormat() @@ -3491,7 +3491,7 @@ void QSettings::setPath(Format format, Scope scope, const QString &path) \snippet code/src_corelib_io_qsettings.cpp 28 - \c WriteFunc is used in \c registerFormat() as a pointer to a function + \c WriteFunc is used in \c registerFormat() as a pointer to a function that writes a set of key/value pairs. \c WriteFunc is only called once, so you need to output the settings in one go. diff --git a/src/corelib/io/qsettings_win.cpp b/src/corelib/io/qsettings_win.cpp index bd127e621e..9ce14f1851 100644 --- a/src/corelib/io/qsettings_win.cpp +++ b/src/corelib/io/qsettings_win.cpp @@ -569,7 +569,7 @@ QWinSettingsPrivate::~QWinSettingsPrivate() { if (deleteWriteHandleOnExit && writeHandle() != 0) { #if defined(Q_OS_WINCE) - remove(regList.at(0).key()); + remove(regList.at(0).key()); #else QString emptyKey; DWORD res = RegDeleteKey(writeHandle(), reinterpret_cast(emptyKey.utf16())); diff --git a/src/corelib/kernel/qfunctions_nacl.h b/src/corelib/kernel/qfunctions_nacl.h index bc44a21cb8..f40807a0d9 100644 --- a/src/corelib/kernel/qfunctions_nacl.h +++ b/src/corelib/kernel/qfunctions_nacl.h @@ -67,7 +67,7 @@ int pthread_cancel(pthread_t thread); int pthread_attr_setinheritsched(pthread_attr_t *attr, int inheritsched); -int pthread_attr_getinheritsched(const pthread_attr_t *attr, +int pthread_attr_getinheritsched(const pthread_attr_t *attr, int *inheritsched); // event dispatcher, select diff --git a/src/corelib/kernel/qmath.qdoc b/src/corelib/kernel/qmath.qdoc index 448b167662..06d8db9277 100644 --- a/src/corelib/kernel/qmath.qdoc +++ b/src/corelib/kernel/qmath.qdoc @@ -25,7 +25,7 @@ ** ****************************************************************************/ -/*! +/*! \headerfile \title Math Functions \ingroup funclists @@ -35,11 +35,11 @@ /*! \fn int qCeil(qreal v) - Return the ceiling of the value \a v. + Return the ceiling of the value \a v. The ceiling is the smallest integer that is not less than \a v. For example, if \a v is 41.2, then the ceiling is 42. - + \relates \sa qFloor() */ diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 14d96e96fd..4399349352 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -1001,7 +1001,7 @@ int QMetaObject::indexOfProperty(const char *name) const Q_ASSERT(priv(this->d.data)->revision >= 3); if (priv(this->d.data)->flags & DynamicMetaObject) { - QAbstractDynamicMetaObject *me = + QAbstractDynamicMetaObject *me = const_cast(static_cast(this)); return me->createProperty(name, 0); @@ -2041,8 +2041,8 @@ QMetaMethod QMetaMethod::fromSignalImpl(const QMetaObject *metaObject, void **si \snippet code/src_corelib_kernel_qmetaobject.cpp 8 - QMetaObject::normalizedSignature() is used here to ensure that the format - of the signature is what invoke() expects. E.g. extra whitespace is + QMetaObject::normalizedSignature() is used here to ensure that the format + of the signature is what invoke() expects. E.g. extra whitespace is removed. If the "compute" slot does not take exactly one QString, one int @@ -2970,7 +2970,7 @@ QMetaMethod QMetaProperty::notifySignal() const { int id = notifySignalIndex(); if (id != -1) - return mobj->method(id); + return mobj->method(id); else return QMetaMethod(); } @@ -2978,7 +2978,7 @@ QMetaMethod QMetaProperty::notifySignal() const /*! \since 4.6 - Returns the index of the property change notifying signal if one was + Returns the index of the property change notifying signal if one was specified, otherwise returns -1. \sa hasNotifySignal() diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 3e578b36d7..a60deefe90 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -927,7 +927,7 @@ QObjectPrivate::Connection::~Connection() \relates QObject Returns the given \a object cast to type T if the object is of type - T (or of a subclass); otherwise returns 0. If \a object is 0 then + T (or of a subclass); otherwise returns 0. If \a object is 0 then it will also return 0. The class T must inherit (directly or indirectly) QObject and be @@ -3089,8 +3089,8 @@ bool QMetaObject::disconnect(const QObject *sender, int signal_index, /*! \internal -Disconnect a single signal connection. If QMetaObject::connect() has been called -multiple times for the same sender, signal_index, receiver and method_index only +Disconnect a single signal connection. If QMetaObject::connect() has been called +multiple times for the same sender, signal_index, receiver and method_index only one of these connections will be removed. */ bool QMetaObject::disconnectOne(const QObject *sender, int signal_index, @@ -3368,7 +3368,7 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i return; if (sender->d_func()->declarativeData && QAbstractDeclarativeData::signalEmitted) - QAbstractDeclarativeData::signalEmitted(sender->d_func()->declarativeData, sender, + QAbstractDeclarativeData::signalEmitted(sender->d_func()->declarativeData, sender, signal_index, argv); void *empty_argv[] = { 0 }; diff --git a/src/corelib/kernel/qsystemerror_p.h b/src/corelib/kernel/qsystemerror_p.h index 94bfb5deb4..4b46011129 100644 --- a/src/corelib/kernel/qsystemerror_p.h +++ b/src/corelib/kernel/qsystemerror_p.h @@ -66,14 +66,14 @@ public: StandardLibraryError, NativeError }; - + inline QSystemError(int error, ErrorScope scope); inline QSystemError(); - + QString toString(); inline ErrorScope scope(); inline int error(); - + //data members int errorCode; ErrorScope errorScope; diff --git a/src/corelib/kernel/qsystemsemaphore_win.cpp b/src/corelib/kernel/qsystemsemaphore_win.cpp index 6b064c1d52..835a9fde5b 100644 --- a/src/corelib/kernel/qsystemsemaphore_win.cpp +++ b/src/corelib/kernel/qsystemsemaphore_win.cpp @@ -46,7 +46,7 @@ #include QT_BEGIN_NAMESPACE - + #ifndef QT_NO_SYSTEMSEMAPHORE QSystemSemaphorePrivate::QSystemSemaphorePrivate() : diff --git a/src/corelib/kernel/qvariant_p.h b/src/corelib/kernel/qvariant_p.h index e7940e0039..04b9d92f55 100644 --- a/src/corelib/kernel/qvariant_p.h +++ b/src/corelib/kernel/qvariant_p.h @@ -150,7 +150,7 @@ inline void v_construct(QVariant::Private *x, const T &t) template inline void v_clear(QVariant::Private *d, T* = 0) { - + if (!QVariantIntegrator::CanUseInternalSpace) { //now we need to cast //because QVariant::PrivateShared doesn't have a virtual destructor diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp index 4ccf449ae2..4de83c62ee 100644 --- a/src/corelib/plugin/quuid.cpp +++ b/src/corelib/plugin/quuid.cpp @@ -279,7 +279,7 @@ static QUuid createFromName(const QUuid &ns, const QByteArray &baseData, QCrypto The field layouts for the DCE versions listed in the table above are specified in the \l{http://www.ietf.org/rfc/rfc4122.txt} {Network Working Group UUID Specification}. - + Most platforms provide a tool for generating new UUIDs, e.g. \c uuidgen and \c guidgen. You can also use createUuid(). UUIDs generated by createUuid() are of the random type. Their @@ -534,23 +534,23 @@ QUuid QUuid::fromRfc4122(const QByteArray &bytes) \header \li Field # \li Source - + \row \li 1 \li data1 - + \row \li 2 \li data2 - + \row \li 3 \li data3 - + \row \li 4 \li data4[0] .. data4[1] - + \row \li 5 \li data4[2] .. data4[7] diff --git a/src/corelib/statemachine/qstatemachine_p.h b/src/corelib/statemachine/qstatemachine_p.h index dae3cb1988..a661d105cf 100644 --- a/src/corelib/statemachine/qstatemachine_p.h +++ b/src/corelib/statemachine/qstatemachine_p.h @@ -185,7 +185,7 @@ public: void unregisterTransition(QAbstractTransition *transition); void unregisterAllTransitions(); void handleTransitionSignal(QObject *sender, int signalIndex, - void **args); + void **args); void postInternalEvent(QEvent *e); void postExternalEvent(QEvent *e); @@ -195,7 +195,7 @@ public: bool isExternalEventQueueEmpty(); void processEvents(EventProcessingMode processingMode); void cancelAllDelayedEvents(); - + #ifndef QT_NO_PROPERTIES typedef QPair, QByteArray> RestorableId; QHash > registeredRestorablesForState; @@ -235,7 +235,7 @@ public: bool animated; QPair, QList > - initializeAnimation(QAbstractAnimation *abstractAnimation, + initializeAnimation(QAbstractAnimation *abstractAnimation, const QPropertyAssignment &prop); QHash > animationsForState; @@ -274,7 +274,7 @@ public: QHash delayedEvents; QHash timerIdToDelayedEventId; QMutex delayedEventsMutex; - + typedef QEvent* (*f_cloneEvent)(QEvent*); struct Handler { f_cloneEvent cloneEvent; diff --git a/src/corelib/thread/qatomic.cpp b/src/corelib/thread/qatomic.cpp index 1c83f23df0..11623f80dc 100644 --- a/src/corelib/thread/qatomic.cpp +++ b/src/corelib/thread/qatomic.cpp @@ -49,7 +49,7 @@ For atomic operations on pointers, see the QAtomicPointer class. - An \e atomic operation is a complex operation that completes without interruption. + An \e atomic operation is a complex operation that completes without interruption. The QAtomicInt class provides atomic reference counting, test-and-set, fetch-and-store, and fetch-and-add for integers. diff --git a/src/corelib/thread/qexception.cpp b/src/corelib/thread/qexception.cpp index 263f7d19fe..0c17399d33 100644 --- a/src/corelib/thread/qexception.cpp +++ b/src/corelib/thread/qexception.cpp @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE -/*! +/*! \class QException \inmodule QtCore \brief The QException class provides a base class for exceptions that can transferred across threads. @@ -91,7 +91,7 @@ QT_BEGIN_NAMESPACE \snippet code/src_corelib_thread_qexception.cpp 3 */ -/*! +/*! \class QUnhandledException \inmodule QtCore diff --git a/src/corelib/thread/qfuture.qdoc b/src/corelib/thread/qfuture.qdoc index 4ab28e81b2..421e683c4a 100644 --- a/src/corelib/thread/qfuture.qdoc +++ b/src/corelib/thread/qfuture.qdoc @@ -58,7 +58,7 @@ use the isResultReadyAt() function to determine if a result is ready or not. For QFuture objects that report more than one result, the resultCount() function returns the number of continuous results. This - means that it is always safe to iterate through the results from 0 to + means that it is always safe to iterate through the results from 0 to resultCount(). QFuture provides a \l{Java-style iterators}{Java-style iterator} diff --git a/src/corelib/thread/qfutureinterface.cpp b/src/corelib/thread/qfutureinterface.cpp index f5590d95f8..0f7d04a7c5 100644 --- a/src/corelib/thread/qfutureinterface.cpp +++ b/src/corelib/thread/qfutureinterface.cpp @@ -288,7 +288,7 @@ void QFutureInterfaceBase::waitForResult(int resultIndex) return; lock.unlock(); - // To avoid deadlocks and reduce the number of threads used, try to + // To avoid deadlocks and reduce the number of threads used, try to // run the runnable in the current thread. QThreadPool::globalInstance()->d_func()->stealRunnable(d->runnable); diff --git a/src/corelib/thread/qfutureinterface.h b/src/corelib/thread/qfutureinterface.h index d2d58a9332..e0a59697a1 100644 --- a/src/corelib/thread/qfutureinterface.h +++ b/src/corelib/thread/qfutureinterface.h @@ -234,7 +234,7 @@ inline void QFutureInterface::reportResults(const QVector &_results, int b this->reportResultsReady(resultCountBefore, store.count()); } else { const int insertIndex = store.addResults(beginIndex, &_results, count); - this->reportResultsReady(insertIndex, insertIndex + _results.count()); + this->reportResultsReady(insertIndex, insertIndex + _results.count()); } } diff --git a/src/corelib/thread/qfuturesynchronizer.h b/src/corelib/thread/qfuturesynchronizer.h index 426bb42b0d..39dbfc52a8 100644 --- a/src/corelib/thread/qfuturesynchronizer.h +++ b/src/corelib/thread/qfuturesynchronizer.h @@ -80,7 +80,7 @@ public: m_futures[i].cancel(); } } - + for (int i = 0; i < m_futures.count(); ++i) { m_futures[i].waitForFinished(); } diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp index b6bb22b314..0de826fddf 100644 --- a/src/corelib/thread/qreadwritelock.cpp +++ b/src/corelib/thread/qreadwritelock.cpp @@ -93,7 +93,7 @@ QT_BEGIN_NAMESPACE \sa QReadLocker, QWriteLocker, QMutex, QSemaphore */ -/*! +/*! \enum QReadWriteLock::RecursionMode \since 4.4 diff --git a/src/corelib/thread/qresultstore.cpp b/src/corelib/thread/qresultstore.cpp index 940fd45027..65c2437064 100644 --- a/src/corelib/thread/qresultstore.cpp +++ b/src/corelib/thread/qresultstore.cpp @@ -97,7 +97,7 @@ bool ResultIteratorBase::canIncrementVectorIndex() const return (m_vectorIndex + 1 < mapIterator.value().m_count); } -ResultStoreBase::ResultStoreBase() +ResultStoreBase::ResultStoreBase() : insertIndex(0), resultCount(0), m_filterMode(false), filteredResults(0) { } void ResultStoreBase::setFilterMode(bool enable) @@ -148,7 +148,7 @@ void ResultStoreBase::syncPendingResults() // check if we can insert any of the pending results: QMap::iterator it = pendingResults.begin(); while (it != pendingResults.end()) { - int index = it.key(); + int index = it.key(); if (index != resultCount + filteredResults) break; @@ -165,7 +165,7 @@ int ResultStoreBase::addResult(int index, const void *result) return insertResultItem(index, resultItem); } -int ResultStoreBase::addResults(int index, const void *results, int vectorSize, int totalCount) +int ResultStoreBase::addResults(int index, const void *results, int vectorSize, int totalCount) { if (m_filterMode == false || vectorSize == totalCount) { ResultItem resultItem(results, vectorSize); @@ -218,7 +218,7 @@ ResultIteratorBase ResultStoreBase::resultAt(int index) const } const int vectorIndex = index - it.key(); - + if (vectorIndex >= it.value().count()) return ResultIteratorBase(m_results.end()); else if (it.value().isVector() == false && vectorIndex != 0) diff --git a/src/corelib/thread/qresultstore.h b/src/corelib/thread/qresultstore.h index c14146656a..11ce23936d 100644 --- a/src/corelib/thread/qresultstore.h +++ b/src/corelib/thread/qresultstore.h @@ -148,7 +148,7 @@ protected: bool m_filterMode; QMap pendingResults; int filteredResults; - + }; template diff --git a/src/corelib/thread/qrunnable.cpp b/src/corelib/thread/qrunnable.cpp index eed716af37..e271582b9b 100644 --- a/src/corelib/thread/qrunnable.cpp +++ b/src/corelib/thread/qrunnable.cpp @@ -57,7 +57,7 @@ change the auto-deletion flag. QThreadPool supports executing the same QRunnable more than once - by calling QThreadPool::tryStart(this) from within the run() function. + by calling QThreadPool::tryStart(this) from within the run() function. If autoDelete is enabled the QRunnable will be deleted when the last thread exits the run function. Calling QThreadPool::start() multiple times with the same QRunnable when autoDelete is enabled diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp index 79199c97e0..dd4d4e74ae 100644 --- a/src/corelib/thread/qthread.cpp +++ b/src/corelib/thread/qthread.cpp @@ -524,9 +524,9 @@ int QThread::exec() Note that unlike the C library function of the same name, this function \e does return to the caller -- it is event processing - that stops. - - No QEventLoops will be started anymore in this thread until + that stops. + + No QEventLoops will be started anymore in this thread until QThread::exec() has been called again. If the eventloop in QThread::exec() is not running then the next call to QThread::exec() will also return immediately. diff --git a/src/corelib/thread/qthreadpool.cpp b/src/corelib/thread/qthreadpool.cpp index 2b099706ff..1616fb9fab 100644 --- a/src/corelib/thread/qthreadpool.cpp +++ b/src/corelib/thread/qthreadpool.cpp @@ -133,7 +133,7 @@ void QThreadPoolThread::run() // wait for work, exiting after the expiry timeout is reached expired = !manager->runnableReady.wait(locker.mutex(), manager->expiryTimeout); ++manager->activeThreads; - + if (expired) --manager->waitingThreads; } @@ -223,7 +223,7 @@ void QThreadPoolPrivate::enqueueTask(QRunnable *runnable, int priority) int QThreadPoolPrivate::activeThreadCount() const { - // To improve scalability this function is called without holding + // To improve scalability this function is called without holding // the mutex lock -- keep it thread-safe. return (allThreads.count() - expiredThreads.count() @@ -301,7 +301,7 @@ bool QThreadPoolPrivate::waitForDone(int msecs) QElapsedTimer timer; timer.start(); int t; - while (!(queue.isEmpty() && activeThreads == 0) && + while (!(queue.isEmpty() && activeThreads == 0) && ((t = msecs - timer.elapsed()) > 0)) noActiveThreads.wait(locker.mutex(), t); } @@ -367,11 +367,11 @@ void QThreadPoolPrivate::stealRunnable(QRunnable *runnable) \snippet code/src_corelib_concurrent_qthreadpool.cpp 0 - QThreadPool deletes the QRunnable automatically by default. Use + QThreadPool deletes the QRunnable automatically by default. Use QRunnable::setAutoDelete() to change the auto-deletion flag. QThreadPool supports executing the same QRunnable more than once - by calling tryStart(this) from within QRunnable::run(). + by calling tryStart(this) from within QRunnable::run(). If autoDelete is enabled the QRunnable will be deleted when the last thread exits the run function. Calling start() multiple times with the same QRunnable when autoDelete is enabled @@ -595,8 +595,8 @@ void QThreadPool::releaseThread() } /*! - Waits up to \a msecs milliseconds for all threads to exit and removes all - threads from the thread pool. Returns true if all threads were removed; + Waits up to \a msecs milliseconds for all threads to exit and removes all + threads from the thread pool. Returns true if all threads were removed; otherwise it returns false. If \a msecs is -1 (the default), the timeout is ignored (waits for the last thread to exit). */ diff --git a/src/corelib/tools/qalgorithms.qdoc b/src/corelib/tools/qalgorithms.qdoc index b4558722cb..cc544af868 100644 --- a/src/corelib/tools/qalgorithms.qdoc +++ b/src/corelib/tools/qalgorithms.qdoc @@ -70,7 +70,7 @@ \snippet code/doc_src_qalgorithms.cpp 1 Different algorithms can have different requirements for the - iterators they accept. For example, qFill() accepts two + iterators they accept. For example, qFill() accepts two \l {forward iterators}. The iterator types required are specified for each algorithm. If an iterator of the wrong type is passed (for example, if QList::ConstIterator is passed as an \l {output @@ -369,7 +369,7 @@ of \a value in the variable passed as a reference in argument \a n. This is the same as qSort(\a{container}.begin(), \a{container}.end()); */ -/*! +/*! \fn void qStableSort(RandomAccessIterator begin, RandomAccessIterator end) \relates @@ -393,7 +393,7 @@ of \a value in the variable passed as a reference in argument \a n. \sa qSort(), {random access iterators} */ -/*! +/*! \fn void qStableSort(RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan) \relates @@ -406,7 +406,7 @@ of \a value in the variable passed as a reference in argument \a n. in case-insensitive alphabetical order: \snippet code/doc_src_qalgorithms.cpp 16 - + Note that earlier versions of Qt allowed using a lessThan function that took its arguments by non-const reference. From 4.3 and on this is no longer possible, the arguments has to be passed by const reference or value. @@ -423,7 +423,7 @@ of \a value in the variable passed as a reference in argument \a n. property is often useful when sorting user-visible data. */ -/*! +/*! \fn void qStableSort(Container &container) \relates @@ -470,7 +470,7 @@ of \a value in the variable passed as a reference in argument \a n. specified by the \a lessThan object. */ -/*! +/*! \fn void qLowerBound(const Container &container, const T &value) \relates @@ -520,7 +520,7 @@ of \a value in the variable passed as a reference in argument \a n. specified by the \a lessThan object. */ -/*! +/*! \fn void qUpperBound(const Container &container, const T &value) \relates @@ -568,7 +568,7 @@ of \a value in the variable passed as a reference in argument \a n. specified by the \a lessThan object. */ -/*! +/*! \fn void qBinaryFind(const Container &container, const T &value) \relates @@ -578,7 +578,7 @@ of \a value in the variable passed as a reference in argument \a n. */ -/*! +/*! \fn void qDeleteAll(ForwardIterator begin, ForwardIterator end) \relates @@ -601,7 +601,7 @@ of \a value in the variable passed as a reference in argument \a n. \sa {forward iterators} */ -/*! +/*! \fn void qDeleteAll(const Container &c) \relates diff --git a/src/corelib/tools/qbitarray.cpp b/src/corelib/tools/qbitarray.cpp index 66ae7d21c2..2b459b2b1b 100644 --- a/src/corelib/tools/qbitarray.cpp +++ b/src/corelib/tools/qbitarray.cpp @@ -173,7 +173,7 @@ int QBitArray::count(bool on) const while (len >= 24) { quint32 v = quint32(bits[0]) | (quint32(bits[1]) << 8) | (quint32(bits[2]) << 16); quint32 c = ((v & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; - c += (((v & 0xfff000) >> 12) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; + c += (((v & 0xfff000) >> 12) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; len -= 24; bits += 3; numBits += int(c); @@ -467,7 +467,7 @@ QBitArray &QBitArray::operator&=(const QBitArray &other) resize(qMax(size(), other.size())); uchar *a1 = reinterpret_cast(d.data()) + 1; const uchar *a2 = reinterpret_cast(other.d.constData()) + 1; - int n = other.d.size() -1 ; + int n = other.d.size() -1 ; int p = d.size() - 1 - n; while (n-- > 0) *a1++ &= *a2++; @@ -496,7 +496,7 @@ QBitArray &QBitArray::operator|=(const QBitArray &other) resize(qMax(size(), other.size())); uchar *a1 = reinterpret_cast(d.data()) + 1; const uchar *a2 = reinterpret_cast(other.d.constData()) + 1; - int n = other.d.size() - 1; + int n = other.d.size() - 1; while (n-- > 0) *a1++ |= *a2++; return *this; diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp index 950d291986..dc3f5f3be9 100644 --- a/src/corelib/tools/qbytearray.cpp +++ b/src/corelib/tools/qbytearray.cpp @@ -397,7 +397,7 @@ static const quint16 crc_tbl[16] = { 0xc60c, 0xd68d, 0xe70e, 0xf78f }; -/*! +/*! \relates QByteArray Returns the CRC-16 checksum of the first \a len bytes of \a data. @@ -422,7 +422,7 @@ quint16 qChecksum(const char *data, uint len) return ~crc & 0xffff; } -/*! +/*! \fn QByteArray qCompress(const QByteArray& data, int compressionLevel) \relates QByteArray @@ -1370,7 +1370,7 @@ QByteArray::QByteArray(int size, char ch) } /*! - \internal + \internal Constructs a byte array of size \a size with uninitialized contents. */ @@ -1904,7 +1904,7 @@ QByteArray &QByteArray::replace(const QByteArray &before, const QByteArray &afte QByteArray aft = after; if (after.d == d) aft.detach(); - + return replace(before.constData(), before.size(), aft.constData(), aft.size()); } @@ -1921,7 +1921,7 @@ QByteArray &QByteArray::replace(const char *c, const QByteArray &after) QByteArray aft = after; if (after.d == d) aft.detach(); - + return replace(c, qstrlen(c), aft.constData(), aft.size()); } @@ -1954,7 +1954,7 @@ QByteArray &QByteArray::replace(const char *before, int bsize, const char *after memcpy(copy, before, bsize); b = copy; } - + QByteArrayMatcher matcher(before, bsize); int index = 0; int len = d->size; @@ -2044,8 +2044,8 @@ QByteArray &QByteArray::replace(const char *before, int bsize, const char *after ::free((char *)a); if (b != before) ::free((char *)b); - - + + return *this; } @@ -2274,7 +2274,7 @@ int QByteArray::indexOf(const char *c, int from) const const int ol = qstrlen(c); if (ol == 1) return indexOf(*c, from); - + const int l = d->size; if (from > d->size || ol + from > l) return -1; @@ -3580,7 +3580,7 @@ QByteArray QByteArray::toBase64() const return tmp; } -/*! +/*! \fn QByteArray &QByteArray::setNum(int n, int base) Sets the byte array to the printed value of \a n in base \a base (10 @@ -3597,21 +3597,21 @@ QByteArray QByteArray::toBase64() const \sa number(), toInt() */ -/*! +/*! \fn QByteArray &QByteArray::setNum(uint n, int base) \overload \sa toUInt() */ -/*! +/*! \fn QByteArray &QByteArray::setNum(short n, int base) \overload \sa toShort() */ -/*! +/*! \fn QByteArray &QByteArray::setNum(ushort n, int base) \overload @@ -3677,7 +3677,7 @@ QByteArray &QByteArray::setNum(qulonglong n, int base) return *this; } -/*! +/*! \overload Sets the byte array to the printed value of \a n, formatted in format @@ -3736,7 +3736,7 @@ QByteArray &QByteArray::setNum(double n, char f, int prec) return *this; } -/*! +/*! \fn QByteArray &QByteArray::setNum(float n, char f, int prec) \overload @@ -3806,7 +3806,7 @@ QByteArray QByteArray::number(qulonglong n, int base) return s; } -/*! +/*! \overload Returns a byte array that contains the printed value of \a n, diff --git a/src/corelib/tools/qcontiguouscache.cpp b/src/corelib/tools/qcontiguouscache.cpp index bfef234ae4..b92c4d3fe9 100644 --- a/src/corelib/tools/qcontiguouscache.cpp +++ b/src/corelib/tools/qcontiguouscache.cpp @@ -313,8 +313,8 @@ MyRecord record(int row) const In most cases it is better to use either at() or insert(). - \note This non-const overload of operator[] requires QContiguousCache - to make a deep copy. Use at() for read-only access to a non-const + \note This non-const overload of operator[] requires QContiguousCache + to make a deep copy. Use at() for read-only access to a non-const QContiguousCache. \sa insert(), at() diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp index fdf2d1a620..32f5f0b33a 100644 --- a/src/corelib/tools/qcryptographichash.cpp +++ b/src/corelib/tools/qcryptographichash.cpp @@ -308,7 +308,7 @@ void QCryptographicHash::addData(const char *data, int length) sha3Update(&d->sha3Context, reinterpret_cast(data), length*8); break; #endif - } + } d->result.clear(); } @@ -350,7 +350,7 @@ bool QCryptographicHash::addData(QIODevice* device) */ QByteArray QCryptographicHash::result() const { - if (!d->result.isEmpty()) + if (!d->result.isEmpty()) return d->result; switch (d->method) { diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp index b8cd076cb6..ed756cbeb6 100644 --- a/src/corelib/tools/qhash.cpp +++ b/src/corelib/tools/qhash.cpp @@ -574,7 +574,7 @@ void QHashData::checkSanity() \fn uint qHash(const QPair &key, uint seed = 0) \since 5.0 \relates QHash - + Returns the hash value for the \a key, using \a seed to seed the calculation. Types \c T1 and \c T2 must be supported by qHash(). diff --git a/src/corelib/tools/qiterator.qdoc b/src/corelib/tools/qiterator.qdoc index 798d25e050..25914967a9 100644 --- a/src/corelib/tools/qiterator.qdoc +++ b/src/corelib/tools/qiterator.qdoc @@ -25,7 +25,7 @@ ** ****************************************************************************/ -/*! +/*! \class QListIterator \inmodule QtCore @@ -78,7 +78,7 @@ \sa QMutableListIterator, QList::const_iterator */ -/*! +/*! \class QLinkedListIterator \inmodule QtCore @@ -126,7 +126,7 @@ \sa QMutableLinkedListIterator, QLinkedList::const_iterator */ -/*! +/*! \class QVectorIterator \inmodule QtCore \brief The QVectorIterator class provides a Java-style const iterator for QVector and QStack. @@ -178,7 +178,7 @@ \sa QMutableVectorIterator, QVector::const_iterator */ -/*! +/*! \class QSetIterator \inmodule QtCore \brief The QSetIterator class provides a Java-style const iterator for QSet. @@ -225,7 +225,7 @@ \sa QMutableSetIterator, QSet::const_iterator */ -/*! +/*! \class QMutableListIterator \inmodule QtCore @@ -291,7 +291,7 @@ \sa QListIterator, QList::iterator */ -/*! +/*! \class QMutableLinkedListIterator \inmodule QtCore @@ -352,7 +352,7 @@ \sa QLinkedListIterator, QLinkedList::iterator */ -/*! +/*! \class QMutableVectorIterator \inmodule QtCore @@ -418,7 +418,7 @@ \sa QVectorIterator, QVector::iterator */ -/*! +/*! \class QMutableSetIterator \inmodule QtCore \since 4.2 @@ -869,7 +869,7 @@ \sa remove(), setValue() */ -/*! +/*! \class QMapIterator \inmodule QtCore @@ -921,7 +921,7 @@ \sa QMutableMapIterator, QMap::const_iterator */ -/*! +/*! \class QHashIterator \inmodule QtCore @@ -973,7 +973,7 @@ \sa QMutableHashIterator, QHash::const_iterator */ -/*! +/*! \class QMutableMapIterator \inmodule QtCore @@ -1038,7 +1038,7 @@ \sa QMapIterator, QMap::iterator */ -/*! +/*! \class QMutableHashIterator \inmodule QtCore diff --git a/src/corelib/tools/qline.cpp b/src/corelib/tools/qline.cpp index 5d8368e930..3fb958fae6 100644 --- a/src/corelib/tools/qline.cpp +++ b/src/corelib/tools/qline.cpp @@ -374,7 +374,7 @@ QDataStream &operator>>(QDataStream &stream, QLine &line) \value UnboundedIntersection The two lines intersect, but not within the range defined by their lengths. This will be the case - if the lines are not parallel. + if the lines are not parallel. intersect() will also return this value if the intersect point is within the start and end point of only one of the lines. @@ -499,9 +499,9 @@ QDataStream &operator>>(QDataStream &stream, QLine &line) Sets the length of the line to the given \a length. QLineF will move the end point - p2() - of the line to give the line its new length. - + If the line is a null line, the length will remain zero regardless - of the length specified. + of the length specified. \sa length(), isNull() */ diff --git a/src/corelib/tools/qmargins.cpp b/src/corelib/tools/qmargins.cpp index 6e7b541110..2cdc3f3f03 100644 --- a/src/corelib/tools/qmargins.cpp +++ b/src/corelib/tools/qmargins.cpp @@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE \ingroup painting \since 4.6 - \brief The QMargins class defines the four margins of a rectangle. + \brief The QMargins class defines the four margins of a rectangle. QMargin defines a set of four margins; left, top, right and bottom, that describe the size of the borders surrounding a rectangle. diff --git a/src/corelib/tools/qpair.qdoc b/src/corelib/tools/qpair.qdoc index 55353dc258..b0caf1aaf0 100644 --- a/src/corelib/tools/qpair.qdoc +++ b/src/corelib/tools/qpair.qdoc @@ -31,7 +31,7 @@ \brief The QPair class is a template class that stores a pair of items. \ingroup tools - + QPair\ can be used in your application if the STL \c pair type is not available. It stores one value of type T1 and one value of type T2. It can be used as a return value for a diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp index cbb3580024..83e87ff637 100644 --- a/src/corelib/tools/qregexp.cpp +++ b/src/corelib/tools/qregexp.cpp @@ -298,7 +298,7 @@ int qFindString(const QChar *haystack, int haystackLen, int from, Square brackets mean match any character contained in the square brackets. The character set abbreviations described above can appear in a character set in square brackets. Except for the - character set abbreviations and the following two exceptions, + character set abbreviations and the following two exceptions, characters do not have special meanings in square brackets. \table diff --git a/src/corelib/tools/qringbuffer_p.h b/src/corelib/tools/qringbuffer_p.h index 9c952fea21..b17c6d2f40 100644 --- a/src/corelib/tools/qringbuffer_p.h +++ b/src/corelib/tools/qringbuffer_p.h @@ -375,7 +375,7 @@ public: --tailBuffer; } bufferSize -= qba.length(); - return qba; + return qba; } // append a new buffer to the end diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc index cd90b4949b..c1351943e1 100644 --- a/src/corelib/tools/qset.qdoc +++ b/src/corelib/tools/qset.qdoc @@ -130,7 +130,7 @@ \fn QSet &QSet::operator=(const QSet &other) Assigns the \a other set to this set and returns a reference to - this set. + this set. */ /*! @@ -306,7 +306,7 @@ Returns a non-const iterator positioned at the item \a value in the set. If the set contains no item \a value, the function - returns end(). + returns end(). */ /*! \fn QSet::const_iterator QSet::constFind(const T &value) const @@ -351,7 +351,7 @@ \overload Returns a non-const \l{STL-style iterators}{STL-style iterator} positioned at the first - item in the set. + item in the set. */ /*! \fn QSet::const_iterator QSet::cbegin() const @@ -496,7 +496,7 @@ /*! \fn QSet &QSet::subtract(const QSet &other) - Removes all items from this set that are contained in the + Removes all items from this set that are contained in the \a other set. Returns a reference to this set. \sa operator-=(), unite(), intersect() @@ -506,7 +506,7 @@ \fn bool QSet::empty() const Returns true if the set is empty. This function is provided - for STL compatibility. It is equivalent to isEmpty(). + for STL compatibility. It is equivalent to isEmpty(). */ /*! @@ -529,7 +529,7 @@ /*! \fn QSet &QSet::operator-=(const T &value) - Removes the occurrence of item \a value from the set, if + Removes the occurrence of item \a value from the set, if it is found, and returns a reference to the set. If the \a value is not contained the set, nothing is removed. @@ -559,7 +559,7 @@ \overload Same as intersect(\e{other}), if we consider \e{other} to be a set - that contains the singleton \a value. + that contains the singleton \a value. */ @@ -575,7 +575,7 @@ \fn QSet QSet::operator|(const QSet &other) const \fn QSet QSet::operator+(const QSet &other) const - Returns a new QSet that is the union of this set and the + Returns a new QSet that is the union of this set and the \a other set. \sa unite(), operator|=(), operator&(), operator-() @@ -622,7 +622,7 @@ iterators are slightly faster, and can improve code readability. QSet\::iterator allows you to iterate over a QSet\ and - modify it as you go (using QSet::erase()). However, + modify it as you go (using QSet::erase()). However, The default QSet::iterator constructor creates an uninitialized iterator. You must initialize it using a function like @@ -701,7 +701,7 @@ \sa QSet::begin(), QSet::end() */ -/*! +/*! \fn QSet::iterator::iterator(typename Hash::iterator i) \fn QSet::const_iterator::const_iterator(typename Hash::const_iterator i) diff --git a/src/corelib/tools/qshareddata.cpp b/src/corelib/tools/qshareddata.cpp index 8205560781..cee0c1d450 100644 --- a/src/corelib/tools/qshareddata.cpp +++ b/src/corelib/tools/qshareddata.cpp @@ -43,7 +43,7 @@ QT_BEGIN_NAMESPACE -/*! +/*! \class QSharedData \inmodule QtCore \brief The QSharedData class is a base class for shared data objects. @@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE \a other is ignored. */ -/*! +/*! \class QSharedDataPointer \inmodule QtCore \brief The QSharedDataPointer class represents a pointer to an implicitly shared object. @@ -395,7 +395,7 @@ QT_BEGIN_NAMESPACE return the proper polymorphic type. */ -/*! +/*! \class QExplicitlySharedDataPointer \inmodule QtCore \brief The QExplicitlySharedDataPointer class represents a pointer to an explicitly shared object. diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp index 5e8aed579d..eb861b7289 100644 --- a/src/corelib/tools/qtextboundaryfinder.cpp +++ b/src/corelib/tools/qtextboundaryfinder.cpp @@ -84,7 +84,7 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int QUnicodeTools::initCharAttributes(string, length, scriptItems.data(), scriptItems.count(), attributes, options); } -/*! +/*! \class QTextBoundaryFinder \inmodule QtCore diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp index e72c1964a2..725cf894c6 100644 --- a/src/corelib/tools/qvector.cpp +++ b/src/corelib/tools/qvector.cpp @@ -435,7 +435,7 @@ Same as at(\a i). */ -/*! +/*! \fn void QVector::append(const T &value) Inserts \a value at the end of the vector. diff --git a/src/corelib/xml/qxmlutils.cpp b/src/corelib/xml/qxmlutils.cpp index 52921919eb..d175d554cc 100644 --- a/src/corelib/xml/qxmlutils.cpp +++ b/src/corelib/xml/qxmlutils.cpp @@ -70,7 +70,7 @@ bool QXmlUtils::rangeContains(RangeIter begin, RangeIter end, const QChar c) // check the first two ranges "manually" as characters in that // range are checked very often and we avoid the binary search below. - + if (cp <= begin->max) return cp >= begin->min; diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp index 2a8681d1d7..22fe4a5fd8 100644 --- a/src/dbus/qdbusabstractinterface.cpp +++ b/src/dbus/qdbusabstractinterface.cpp @@ -513,7 +513,7 @@ QDBusPendingCall QDBusAbstractInterface::asyncCallWithArgumentList(const QString not indicate that the executed call succeeded. If it fails, the \a errorMethod is called. If the queueing failed, this function returns false and no slot will be called. - + The \a returnMethod must have as its parameters the types returned by the function call. Optionally, it may have a QDBusMessage parameter as its last or only parameter. The \a errorMethod must diff --git a/src/dbus/qdbuserror.cpp b/src/dbus/qdbuserror.cpp index d578bf7d76..f486c19fdc 100644 --- a/src/dbus/qdbuserror.cpp +++ b/src/dbus/qdbuserror.cpp @@ -72,7 +72,7 @@ for ($j = 0; $j < $i; ++$j) { } print "0\n};\n"; ===== PERL SCRIPT ==== - + * The input data is as follows: other org.freedesktop.DBus.Error.Failed diff --git a/src/dbus/qdbusintrospection_p.h b/src/dbus/qdbusintrospection_p.h index a9f3773acc..b892ed95f1 100644 --- a/src/dbus/qdbusintrospection_p.h +++ b/src/dbus/qdbusintrospection_p.h @@ -97,7 +97,7 @@ public: inline bool operator==(const Argument& other) const { return name == other.name && type == other.type; } }; - + struct Method { QString name; diff --git a/src/dbus/qdbusmetaobject.cpp b/src/dbus/qdbusmetaobject.cpp index f3bd7c28ba..799c66f6f9 100644 --- a/src/dbus/qdbusmetaobject.cpp +++ b/src/dbus/qdbusmetaobject.cpp @@ -77,7 +77,7 @@ private: QVarLengthArray outputTypes; int flags; }; - + struct Property { QByteArray typeName; QByteArray signature; @@ -92,14 +92,14 @@ private: QMap signals_; QMap methods; QMap properties; - + const QDBusIntrospection::Interface *data; QString interface; Type findType(const QByteArray &signature, const QDBusIntrospection::Annotations &annotations, const char *direction = "Out", int id = -1); - + void parseMethods(); void parseSignals(); void parseProperties(); @@ -258,7 +258,7 @@ void QDBusMetaObjectGenerator::parseMethods() mm.inputTypes.append(type.id); mm.parameterNames.append(arg.name.toLatin1()); - + prototype.append(type.name); prototype.append(','); } @@ -331,7 +331,7 @@ void QDBusMetaObjectGenerator::parseSignals() mm.inputTypes.append(type.id); mm.parameterNames.append(arg.name.toLatin1()); - + prototype.append(type.name); prototype.append(','); } @@ -361,7 +361,7 @@ void QDBusMetaObjectGenerator::parseProperties() Type type = findType(p.type.toLatin1(), p.annotations); if (type.id == QVariant::Invalid) continue; - + QByteArray name = p.name.toLatin1(); mp.signature = p.type.toLatin1(); mp.type = type.id; @@ -564,7 +564,7 @@ void QDBusMetaObjectGenerator::writeWithoutXml(const QString &interface) char *stringdata = new char[name.length() + 1]; stringdata[name.length()] = '\0'; - + d.data = reinterpret_cast(header); d.relatedMetaObjects = 0; d.static_metacall = 0; @@ -615,7 +615,7 @@ QDBusMetaObject *QDBusMetaObject::createMetaObject(const QString &interface, con if (we) return we; // still nothing? - + if (parsed.isEmpty()) { // object didn't return introspection we = new QDBusMetaObject; @@ -627,7 +627,7 @@ QDBusMetaObject *QDBusMetaObject::createMetaObject(const QString &interface, con // merge all interfaces it = parsed.constBegin(); QDBusIntrospection::Interface merged = *it.value().constData(); - + for (++it; it != end; ++it) { merged.annotations.unite(it.value()->annotations); merged.methods.unite(it.value()->methods); diff --git a/src/dbus/qdbusmetatype.cpp b/src/dbus/qdbusmetatype.cpp index ff5818d684..804e80699a 100644 --- a/src/dbus/qdbusmetatype.cpp +++ b/src/dbus/qdbusmetatype.cpp @@ -318,10 +318,10 @@ int QDBusMetaType::signatureToType(const char *signature) case DBUS_TYPE_UINT16: return QMetaType::UShort; - + case DBUS_TYPE_INT32: return QVariant::Int; - + case DBUS_TYPE_UINT32: return QVariant::UInt; @@ -375,7 +375,7 @@ int QDBusMetaType::signatureToType(const char *signature) /*! \fn QDBusMetaType::typeToSignature(int type) - \internal + \internal Returns the D-Bus signature equivalent to the supplied meta type id \a type. diff --git a/src/gui/doc/snippets/textdocument-tables/mainwindow.cpp b/src/gui/doc/snippets/textdocument-tables/mainwindow.cpp index 443f5407e0..1169254253 100644 --- a/src/gui/doc/snippets/textdocument-tables/mainwindow.cpp +++ b/src/gui/doc/snippets/textdocument-tables/mainwindow.cpp @@ -87,7 +87,7 @@ MainWindow::MainWindow() int row; QTextTableCell cell; QTextCursor cellCursor; - + QTextCharFormat charFormat; charFormat.setForeground(Qt::black); diff --git a/src/gui/doc/snippets/textdocument-texttable/main.cpp b/src/gui/doc/snippets/textdocument-texttable/main.cpp index 0024d8592b..f82b5235cf 100644 --- a/src/gui/doc/snippets/textdocument-texttable/main.cpp +++ b/src/gui/doc/snippets/textdocument-texttable/main.cpp @@ -56,7 +56,7 @@ int main(int argc, char * argv[]) tableFormat.setCellSpacing(2); QTextTable *table = cursor.insertTable(rows, columns); table->setFormat(tableFormat); - + QTextCharFormat boldFormat; boldFormat.setFontWeight(QFont::Bold); diff --git a/src/gui/doc/src/paintsystem.qdoc b/src/gui/doc/src/paintsystem.qdoc index 7857a160ac..cd208e9e18 100644 --- a/src/gui/doc/src/paintsystem.qdoc +++ b/src/gui/doc/src/paintsystem.qdoc @@ -50,7 +50,7 @@ \ingroup qt-graphics \ingroup frameworks-technologies \ingroup qt-basic-concepts - + Qt's paint system enables painting on screen and print devices using the same API, and is primarily based on the QPainter, @@ -70,7 +70,7 @@ same painting pipeline making it easy to add support for new features and providing default implementations for unsupported ones. - + \section1 Topics \list \li \l{Classes for Painting} @@ -126,7 +126,7 @@ in a platform-independent way. Another benefit is that the painting can be performed in another thread than the current GUI thread. - + \row \li \b Pixmap The QPixmap class is an off-screen image representation which is @@ -175,7 +175,7 @@ actually be able to draw on the device, this paint engine must be a custom paint engine created by deriving from the QPaintEngine class. - + \endtable */ @@ -183,7 +183,7 @@ /*! \page paintsystem-drawing.html \title Drawing and Filling - + \previouspage Paint Devices and Backends \contentspage The Paint System \nextpage Coordinate System diff --git a/src/gui/doc/src/qtgui.qdoc b/src/gui/doc/src/qtgui.qdoc index aa44dcfad5..201bb03a14 100644 --- a/src/gui/doc/src/qtgui.qdoc +++ b/src/gui/doc/src/qtgui.qdoc @@ -62,7 +62,7 @@ For application developers writing user interfaces, Qt provides higher level API's, like Qt Quick, that are much more suitable - than the enablers found in the Qt GUI module. + than the enablers found in the Qt GUI module. \section1 Getting started diff --git a/src/gui/image/qimageiohandler.cpp b/src/gui/image/qimageiohandler.cpp index f770458127..055ace9985 100644 --- a/src/gui/image/qimageiohandler.cpp +++ b/src/gui/image/qimageiohandler.cpp @@ -433,7 +433,7 @@ bool QImageIOHandler::supportsOption(ImageOption option) const the sequence number of the current image in the animation. If this function is called before any image is read(), -1 is returned. The number of the first image in the sequence is 0. - + If the image format does not support animation, 0 is returned. \sa read() diff --git a/src/gui/image/qmovie.cpp b/src/gui/image/qmovie.cpp index e137af2231..ae526f5ba7 100644 --- a/src/gui/image/qmovie.cpp +++ b/src/gui/image/qmovie.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -/*! +/*! \class QMovie \inmodule QtGui @@ -150,7 +150,7 @@ copy of the frame. */ -/*! +/*! \fn void QMovie::stateChanged(QMovie::MovieState state) This signal is emitted every time the state of the movie changes. The new @@ -203,23 +203,23 @@ public: inline QFrameInfo(bool endMark) : pixmap(QPixmap()), delay(QMOVIE_INVALID_DELAY), endMark(endMark) { } - + inline QFrameInfo() : pixmap(QPixmap()), delay(QMOVIE_INVALID_DELAY), endMark(false) { } - + inline QFrameInfo(const QPixmap &pixmap, int delay) : pixmap(pixmap), delay(delay), endMark(false) { } - + inline bool isValid() { return endMark || !(pixmap.isNull() && (delay == QMOVIE_INVALID_DELAY)); } - + inline bool isEndMarker() { return endMark; } - + static inline QFrameInfo endMarker() { return QFrameInfo(true); } }; diff --git a/src/gui/image/qxbmhandler.cpp b/src/gui/image/qxbmhandler.cpp index 0e1ecfa299..498f6ce767 100644 --- a/src/gui/image/qxbmhandler.cpp +++ b/src/gui/image/qxbmhandler.cpp @@ -302,7 +302,7 @@ bool QXbmHandler::read(QImage *image) { if (state == Error) return false; - + if (state == Ready && !readHeader()) { state = Error; return false; diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp index 79da6471b8..f0b1f16ba2 100644 --- a/src/gui/kernel/qclipboard.cpp +++ b/src/gui/kernel/qclipboard.cpp @@ -226,7 +226,7 @@ QClipboard::~QClipboard() the global clipboard. \value Selection indicates that data should be stored and retrieved from - the global mouse selection. Support for \c Selection is provided only on + the global mouse selection. Support for \c Selection is provided only on systems with a global mouse selection (e.g. X11). \value FindBuffer indicates that data should be stored and retrieved from @@ -344,7 +344,7 @@ void QClipboard::setText(const QString &text, Mode mode) clipboard is used. If \a mode is QClipboard::Clipboard, the image is retrieved from the global clipboard. If \a mode is QClipboard::Selection, the image is retrieved from the global - mouse selection. + mouse selection. \sa setImage(), pixmap(), mimeData(), QImage::isNull() */ @@ -459,7 +459,7 @@ void QClipboard::setPixmap(const QPixmap &pixmap, Mode mode) \sa mimeData() */ -/*! +/*! \fn void QClipboard::clear(Mode mode) Clear the clipboard contents. @@ -467,7 +467,7 @@ void QClipboard::setPixmap(const QPixmap &pixmap, Mode mode) clipboard is used. If \a mode is QClipboard::Clipboard, this function clears the global clipboard contents. If \a mode is QClipboard::Selection, this function clears the global mouse - selection contents. If \a mode is QClipboard::FindBuffer, this + selection contents. If \a mode is QClipboard::FindBuffer, this function clears the search string buffer. \sa QClipboard::Mode, supportsSelection() @@ -521,21 +521,21 @@ bool QClipboard::ownsFindBuffer() const return ownsMode(FindBuffer); } -/*! +/*! \internal \fn bool QClipboard::supportsMode(Mode mode) const; Returns true if the clipboard supports the clipboard mode speacified by \a mode; otherwise returns false. */ -/*! +/*! \internal \fn bool QClipboard::ownsMode(Mode mode) const; Returns true if the clipboard supports the clipboard data speacified by \a mode; otherwise returns false. */ -/*! +/*! \internal Emits the appropriate changed signal for \a mode. */ diff --git a/src/gui/kernel/qcursor.h b/src/gui/kernel/qcursor.h index 016a0ef798..0bf4cc7bf9 100644 --- a/src/gui/kernel/qcursor.h +++ b/src/gui/kernel/qcursor.h @@ -107,7 +107,7 @@ public: static void setPos(QScreen *screen, int x, int y); inline static void setPos(const QPoint &p) { setPos(p.x(), p.y()); } inline static void setPos(QScreen *screen, const QPoint &p) { setPos(screen, p.x(), p.y()); } - + private: QCursorData *d; }; diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp index cc0ecdf388..66eb1d58ed 100644 --- a/src/gui/kernel/qkeysequence.cpp +++ b/src/gui/kernel/qkeysequence.cpp @@ -878,7 +878,7 @@ const uint QKeySequencePrivate::numberOfKeyBindings = sizeof(QKeySequencePrivate \value SelectPreviousPage Extend selection to previous page. \value SelectPreviousWord Extend selection to previous word. \value SelectStartOfBlock Extend selection to the start of a text block. This shortcut is only used on OS X. - \value SelectStartOfDocument Extend selection to start of document. + \value SelectStartOfDocument Extend selection to start of document. \value SelectStartOfLine Extend selection to start of line. \value Underline Underline text. \value Undo Undo. @@ -892,10 +892,10 @@ const uint QKeySequencePrivate::numberOfKeyBindings = sizeof(QKeySequencePrivate /*! \since 4.2 - Constructs a QKeySequence object for the given \a key. - The result will depend on the currently running platform. + Constructs a QKeySequence object for the given \a key. + The result will depend on the currently running platform. - The resulting object will be based on the first element in the + The resulting object will be based on the first element in the list of key bindings for the \a key. */ QKeySequence::QKeySequence(StandardKey key) @@ -903,7 +903,7 @@ QKeySequence::QKeySequence(StandardKey key) const QList bindings = keyBindings(key); //pick only the first/primary shortcut from current bindings if (bindings.size() > 0) { - d = bindings.first().d; + d = bindings.first().d; d->ref.ref(); } else @@ -991,8 +991,8 @@ static inline int maybeSwapShortcut(int shortcut) \since 4.2 Returns a list of key bindings for the given \a key. - The result of calling this function will vary based on the target platform. - The first element of the list indicates the primary shortcut for the given platform. + The result of calling this function will vary based on the target platform. + The first element of the list indicates the primary shortcut for the given platform. If the result contains more than one result, these can be considered alternative shortcuts on the same platform for the given \a key. */ @@ -1509,9 +1509,9 @@ QKeySequence::SequenceMatch QKeySequence::matches(const QKeySequence &seq) const \obsolete - Use toString() instead. - - Returns the key sequence as a QString. This is equivalent to + Use toString() instead. + + Returns the key sequence as a QString. This is equivalent to calling toString(QKeySequence::NativeText). Note that the result is not platform independent. */ diff --git a/src/gui/opengl/qopengl2pexvertexarray_p.h b/src/gui/opengl/qopengl2pexvertexarray_p.h index fa0ad47e7f..03a3ba5d24 100644 --- a/src/gui/opengl/qopengl2pexvertexarray_p.h +++ b/src/gui/opengl/qopengl2pexvertexarray_p.h @@ -104,20 +104,20 @@ public: maxX(-2e10), maxY(-2e10), minX(2e10), minY(2e10), boundingRectDirty(true) { } - + inline void addRect(const QRectF &rect) { qreal top = rect.top(); qreal left = rect.left(); qreal bottom = rect.bottom(); qreal right = rect.right(); - + vertexArray << QOpenGLPoint(left, top) << QOpenGLPoint(right, top) << QOpenGLPoint(right, bottom) << QOpenGLPoint(right, bottom) << QOpenGLPoint(left, bottom) - << QOpenGLPoint(left, top); + << QOpenGLPoint(left, top); } inline void addQuad(const QRectF &rect) diff --git a/src/gui/opengl/qopengles2ext.h b/src/gui/opengl/qopengles2ext.h index be7d6f3290..5926d5bbd5 100644 --- a/src/gui/opengl/qopengles2ext.h +++ b/src/gui/opengl/qopengles2ext.h @@ -100,23 +100,23 @@ typedef void* GLeglImageOES; #endif /* GL_OES_required_internalformat */ -#ifndef GL_OES_required_internalformat +#ifndef GL_OES_required_internalformat #define GL_ALPHA8_OES 0x803C #define GL_DEPTH_COMPONENT16_OES 0x81A5 -/* reuse GL_DEPTH_COMPONENT24_OES */ -/* reuse GL_DEPTH24_STENCIL8_OES */ -/* reuse GL_DEPTH_COMPONENT32_OES */ +/* reuse GL_DEPTH_COMPONENT24_OES */ +/* reuse GL_DEPTH24_STENCIL8_OES */ +/* reuse GL_DEPTH_COMPONENT32_OES */ #define GL_LUMINANCE4_ALPHA4_OES 0x8043 #define GL_LUMINANCE8_ALPHA8_OES 0x8045 #define GL_LUMINANCE8_OES 0x8040 #define GL_RGBA4_OES 0x8056 #define GL_RGB5_A1_OES 0x8057 #define GL_RGB565_OES 0x8D62 -/* reuse GL_RGB8_OES */ -/* reuse GL_RGBA8_OES */ +/* reuse GL_RGB8_OES */ +/* reuse GL_RGBA8_OES */ /* reuse GL_RGB10_EXT */ /* reuse GL_RGB10_A2_EXT */ -#endif +#endif /* GL_OES_rgb8_rgba8 */ #ifndef GL_OES_rgb8_rgba8 @@ -216,9 +216,9 @@ typedef void (GL_APIENTRYP GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLen #define GL_SHADER 0x82E1 #define GL_PROGRAM 0x82E2 #define GL_QUERY 0x82E3 -/* PROGRAM_PIPELINE only in GL */ +/* PROGRAM_PIPELINE only in GL */ #define GL_SAMPLER 0x82E6 -/* DISPLAY_LIST only in GL */ +/* DISPLAY_LIST only in GL */ #define GL_MAX_LABEL_LENGTH 0x82E8 #define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 #define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 @@ -328,12 +328,12 @@ typedef void (GL_APIENTRYP GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLen #endif /* GL_ANGLE_instanced_arrays */ -#ifndef GL_ANGLE_instanced_arrays +#ifndef GL_ANGLE_instanced_arrays #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE #endif /* GL_ANGLE_pack_reverse_row_order */ -#ifndef GL_ANGLE_pack_reverse_row_order +#ifndef GL_ANGLE_pack_reverse_row_order #define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 #endif @@ -343,23 +343,23 @@ typedef void (GL_APIENTRYP GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLen #endif /* GL_ANGLE_texture_compression_dxt3 */ -#ifndef GL_ANGLE_texture_compression_dxt3 +#ifndef GL_ANGLE_texture_compression_dxt3 #define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 #endif /* GL_ANGLE_texture_compression_dxt5 */ -#ifndef GL_ANGLE_texture_compression_dxt5 +#ifndef GL_ANGLE_texture_compression_dxt5 #define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 #endif /* GL_ANGLE_texture_usage */ -#ifndef GL_ANGLE_texture_usage +#ifndef GL_ANGLE_texture_usage #define GL_TEXTURE_USAGE_ANGLE 0x93A2 #define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 #endif /* GL_ANGLE_translated_shader_source */ -#ifndef GL_ANGLE_translated_shader_source +#ifndef GL_ANGLE_translated_shader_source #define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 #endif @@ -369,7 +369,7 @@ typedef void (GL_APIENTRYP GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLen /* GL_APPLE_copy_texture_levels */ /* No new tokens introduced by this extension. */ - + /* GL_APPLE_framebuffer_multisample */ #ifndef GL_APPLE_framebuffer_multisample #define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB @@ -394,9 +394,9 @@ typedef void (GL_APIENTRYP GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLen #ifndef __gl3_h_ /* These types are defined with reference to * in the Apple extension spec, but here we use the Khronos - * portable types in khrplatform.h, and assume those types + * portable types in khrplatform.h, and assume those types * are always defined. - * If any other extensions using these types are defined, + * If any other extensions using these types are defined, * the typedefs must move out of this block and be shared. */ typedef khronos_int64_t GLint64; @@ -502,7 +502,7 @@ typedef struct __GLsync *GLsync; /* GL_EXT_multisampled_render_to_texture */ #ifndef GL_EXT_multisampled_render_to_texture #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C -/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */ +/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */ #define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 #define GL_MAX_SAMPLES_EXT 0x8D57 @@ -610,10 +610,10 @@ typedef struct __GLsync *GLsync; /* GL_EXT_texture_storage */ #ifndef GL_EXT_texture_storage #define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F -#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA8_EXT 0x803C #define GL_LUMINANCE8_EXT 0x8040 #define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_RGBA32F_EXT 0x8814 +#define GL_RGBA32F_EXT 0x8814 #define GL_RGB32F_EXT 0x8815 #define GL_ALPHA32F_EXT 0x8816 #define GL_LUMINANCE32F_EXT 0x8818 @@ -623,12 +623,12 @@ typedef struct __GLsync *GLsync; #define GL_ALPHA16F_EXT 0x881C #define GL_LUMINANCE16F_EXT 0x881E #define GL_LUMINANCE_ALPHA16F_EXT 0x881F -#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_A2_EXT 0x8059 #define GL_RGB10_EXT 0x8052 #define GL_BGRA8_EXT 0x93A1 #define GL_R8_EXT 0x8229 #define GL_RG8_EXT 0x822B -#define GL_R32F_EXT 0x822E +#define GL_R32F_EXT 0x822E #define GL_RG32F_EXT 0x8230 #define GL_R16F_EXT 0x822D #define GL_RG16F_EXT 0x822F @@ -785,7 +785,7 @@ typedef struct __GLsync *GLsync; #ifndef GL_NV_framebuffer_blit #define GL_READ_FRAMEBUFFER_NV 0x8CA8 #define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 #define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA #endif @@ -824,10 +824,10 @@ typedef struct __GLsync *GLsync; /* GL_NV_shadow_samplers_array */ #ifndef GL_NV_shadow_samplers_array #define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 -#endif - +#endif + /* GL_NV_shadow_samplers_cube */ -#ifndef GL_NV_shadow_samplers_cube +#ifndef GL_NV_shadow_samplers_cube #define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 #endif @@ -1162,7 +1162,7 @@ GL_APICALL void GL_APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GL GL_APICALL void GL_APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label); GL_APICALL void GL_APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); GL_APICALL void GL_APIENTRY glGetPointerv (GLenum pname, void **params); -#endif +#endif typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); @@ -1256,7 +1256,7 @@ GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); #endif -#ifndef GL_ANGLE_instanced_arrays +#ifndef GL_ANGLE_instanced_arrays #define GL_ANGLE_instanced_arrays 1 #ifdef GL_GLEXT_PROTOTYPES GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); @@ -1269,7 +1269,7 @@ typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLu #endif /* GL_ANGLE_pack_reverse_row_order */ -#ifndef GL_ANGLE_pack_reverse_row_order +#ifndef GL_ANGLE_pack_reverse_row_order #define GL_ANGLE_pack_reverse_row_order 1 #endif @@ -1279,21 +1279,21 @@ typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLu #endif /* GL_ANGLE_texture_compression_dxt3 */ -#ifndef GL_ANGLE_texture_compression_dxt3 +#ifndef GL_ANGLE_texture_compression_dxt3 #define GL_ANGLE_texture_compression_dxt3 1 #endif /* GL_ANGLE_texture_compression_dxt5 */ -#ifndef GL_ANGLE_texture_compression_dxt5 +#ifndef GL_ANGLE_texture_compression_dxt5 #define GL_ANGLE_texture_compression_dxt5 1 #endif /* GL_ANGLE_texture_usage */ -#ifndef GL_ANGLE_texture_usage +#ifndef GL_ANGLE_texture_usage #define GL_ANGLE_texture_usage 1 #endif -#ifndef GL_ANGLE_translated_shader_source +#ifndef GL_ANGLE_translated_shader_source #define GL_ANGLE_translated_shader_source 1 #ifdef GL_GLEXT_PROTOTYPES GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); diff --git a/src/gui/opengl/qopenglext.h b/src/gui/opengl/qopenglext.h index e65578caee..dfdb8249d9 100644 --- a/src/gui/opengl/qopenglext.h +++ b/src/gui/opengl/qopenglext.h @@ -13,7 +13,7 @@ extern "C" { /* ** Copyright (c) 2007-2012 The Khronos Group Inc. -** +** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the ** "Materials"), to deal in the Materials without restriction, including @@ -21,10 +21,10 @@ extern "C" { ** distribute, sublicense, and/or sell copies of the Materials, and to ** permit persons to whom the Materials are furnished to do so, subject to ** the following conditions: -** +** ** The above copyright notice and this permission notice shall be included ** in all copies or substantial portions of the Materials. -** +** ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. diff --git a/src/gui/opengl/qtriangulator.cpp b/src/gui/opengl/qtriangulator.cpp index 83c7c93fdf..d3c80e264f 100644 --- a/src/gui/opengl/qtriangulator.cpp +++ b/src/gui/opengl/qtriangulator.cpp @@ -370,7 +370,7 @@ bool QIntersectionPoint::isOnLine(const QPodPoint &u, const QPodPoint &v) const if (((q.x < 0) == (q.y < 0)) != ((p.x < 0) == (p.y < 0))) return false; // 'p + offset' and 'q' pass through different quadrants. - + // Move all coordinates into the first quadrant. quint64 nx, ny; if (p.x < 0) @@ -991,7 +991,7 @@ void QTriangulator::ComplexToSimple::initEdges() if (first != m_edges.size()) m_edges.last().to = m_edges.at(first).from; for (int i = 0; i < m_edges.size(); ++i) { - m_edges.at(i).originallyPointingUp = m_edges.at(i).pointingUp = + m_edges.at(i).originallyPointingUp = m_edges.at(i).pointingUp = m_parent->m_vertices.at(m_edges.at(i).to) < m_parent->m_vertices.at(m_edges.at(i).from); } } @@ -1646,7 +1646,7 @@ QTriangulator::ComplexToSimple::DebugDialog::DebugDialog(ComplexToSimple *par QDataBuffer &vertices = m_parent->m_parent->m_vertices; if (vertices.isEmpty()) return; - + int minX, maxX, minY, maxY; minX = maxX = vertices.at(0).x; minY = maxY = vertices.at(0).y; @@ -1671,7 +1671,7 @@ void QTriangulator::ComplexToSimple::DebugDialog::paintEvent(QPaintEvent *) QDataBuffer &vertices = m_parent->m_parent->m_vertices; if (vertices.isEmpty()) return; - + qreal halfPointSize = qMin(m_window.width(), m_window.height()) / 300.0; p.setWindow(m_window.toRect()); @@ -1725,7 +1725,7 @@ void QTriangulator::ComplexToSimple::DebugDialog::paintEvent(QPaintEvent *) } u += q; v += q; - p.drawLine(u.x, u.y, v.x, v.y); + p.drawLine(u.x, u.y, v.x, v.y); } } diff --git a/src/gui/painting/qcolor.cpp b/src/gui/painting/qcolor.cpp index 7eec60ed12..12ca84d8d1 100644 --- a/src/gui/painting/qcolor.cpp +++ b/src/gui/painting/qcolor.cpp @@ -1572,7 +1572,7 @@ QColor QColor::toRgb() const // achromatic case color.ct.argb.red = color.ct.argb.green = color.ct.argb.blue = ct.ahsl.lightness; } else if (ct.ahsl.lightness == 0) { - // lightness 0 + // lightness 0 color.ct.argb.red = color.ct.argb.green = color.ct.argb.blue = 0; } else { // chromatic case diff --git a/src/gui/painting/qcolor.h b/src/gui/painting/qcolor.h index 5bd879ed63..ef3503e8d8 100644 --- a/src/gui/painting/qcolor.h +++ b/src/gui/painting/qcolor.h @@ -266,10 +266,10 @@ inline QColor::QColor(const QColor &acolor) inline bool QColor::isValid() const { return cspec != Invalid; } -inline QColor QColor::lighter(int f) const +inline QColor QColor::lighter(int f) const { return light(f); } -inline QColor QColor::darker(int f) const +inline QColor QColor::darker(int f) const { return dark(f); } QT_END_NAMESPACE diff --git a/src/gui/painting/qcssutil_p.h b/src/gui/painting/qcssutil_p.h index 38e45ae7c9..7888b9edf1 100644 --- a/src/gui/painting/qcssutil_p.h +++ b/src/gui/painting/qcssutil_p.h @@ -78,7 +78,7 @@ extern void Q_GUI_EXPORT qNormalizeRadii(const QRect &br, const QSize *radii, QSize *tlr, QSize *trr, QSize *blr, QSize *brr); QT_END_NAMESPACE - + #endif //QT_NO_CSSPARSER #endif // QCSSUTIL_P_H diff --git a/src/gui/painting/qemulationpaintengine_p.h b/src/gui/painting/qemulationpaintengine_p.h index 72093a3612..db2d51e53a 100644 --- a/src/gui/painting/qemulationpaintengine_p.h +++ b/src/gui/painting/qemulationpaintengine_p.h @@ -62,10 +62,10 @@ class QEmulationPaintEngine : public QPaintEngineEx { public: QEmulationPaintEngine(QPaintEngineEx *engine); - + virtual bool begin(QPaintDevice *pdev); virtual bool end(); - + virtual Type type() const; virtual QPainterState *createState(QPainterState *orig) const; @@ -78,7 +78,7 @@ public: virtual void drawStaticTextItem(QStaticTextItem *item); virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s); virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags); - + virtual void clipEnabledChanged(); virtual void penChanged(); virtual void brushChanged(); diff --git a/src/gui/painting/qpaintbuffer.cpp b/src/gui/painting/qpaintbuffer.cpp index be446c86eb..bb0c441b40 100644 --- a/src/gui/painting/qpaintbuffer.cpp +++ b/src/gui/painting/qpaintbuffer.cpp @@ -1731,12 +1731,12 @@ void QPainterReplayer::process(const QPaintBufferCommand &cmd) #endif painter->setClipRegion(region, Qt::ClipOperation(cmd.extra)); break; } - + #if !defined(QT_NO_RAWFONT) case QPaintBufferPrivate::Cmd_DrawStaticText: { - + QVariantList variants(d->variants.at(cmd.offset).value()); - + QFont font = variants.at(0).value(); QVector glyphIndexes; diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp index 8769aeaba9..81c9c676ba 100644 --- a/src/gui/painting/qtextureglyphcache.cpp +++ b/src/gui/painting/qtextureglyphcache.cpp @@ -158,7 +158,7 @@ bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const metrics.yoff.toReal(), metrics.x.toReal(), metrics.y.toReal()); -#endif +#endif GlyphAndSubPixelPosition key(glyph, subPixelPosition); int glyph_width = metrics.width.ceil().toInt(); int glyph_height = metrics.height.ceil().toInt(); diff --git a/src/gui/text/qabstracttextdocumentlayout.cpp b/src/gui/text/qabstracttextdocumentlayout.cpp index eaca605652..b7b8e919ad 100644 --- a/src/gui/text/qabstracttextdocumentlayout.cpp +++ b/src/gui/text/qabstracttextdocumentlayout.cpp @@ -183,7 +183,7 @@ QT_BEGIN_NAMESPACE This signal is emitted when the specified \a block has been updated. Subclasses of QAbstractTextDocumentLayout should emit this signal when - the layout of \a block has changed in order to repaint. + the layout of \a block has changed in order to repaint. */ /*! diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp index 5f610e3fb7..1264330873 100644 --- a/src/gui/text/qcssparser.cpp +++ b/src/gui/text/qcssparser.cpp @@ -537,7 +537,7 @@ QSize ValueExtractor::sizeValue(const Declaration &decl) lengthValueFromData(qvariant_cast(v.at(1)), f)); } - LengthData x[2] = { {0, LengthData::None }, {0, LengthData::None} }; + LengthData x[2] = { {0, LengthData::None }, {0, LengthData::None} }; if (decl.d->values.count() > 0) x[0] = lengthValue(decl.d->values.at(0)); if (decl.d->values.count() > 1) @@ -917,7 +917,7 @@ void ValueExtractor::borderValue(const Declaration &decl, int *width, QCss::Bord if (decl.d->values.isEmpty()) return; - + BorderData data; data.width.number = 0; data.width.unit = LengthData::None; @@ -1465,7 +1465,7 @@ QRect Declaration::rectValue() const { if (d->values.count() != 1) return QRect(); - + if (d->parsed.isValid()) return qvariant_cast(d->parsed); @@ -1934,7 +1934,7 @@ QVector StyleSelector::styleRulesForNode(NodePtr node) return rules; QMap weightedRules; // (spec, rule) that will be sorted below - + //prune using indexed stylesheet for (int sheetIdx = 0; sheetIdx < styleSheets.count(); ++sheetIdx) { const StyleSheet &styleSheet = styleSheets.at(sheetIdx); diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp index 2c1683f416..cd88e3bbe4 100644 --- a/src/gui/text/qstatictext.cpp +++ b/src/gui/text/qstatictext.cpp @@ -60,8 +60,8 @@ QT_BEGIN_NAMESPACE \mainclass QStaticText provides a way to cache layout data for a block of text so that it can be drawn - more efficiently than by using QPainter::drawText() in which the layout information is - recalculated with every call. + more efficiently than by using QPainter::drawText() in which the layout information is + recalculated with every call. The class primarily provides an optimization for cases where the text, its font and the transformations on the painter are static over several paint events. If the text or its layout @@ -97,8 +97,8 @@ QT_BEGIN_NAMESPACE \endcode The QStaticText class can be used to mimic the behavior of QPainter::drawText() to a specific - point with no boundaries, and also when QPainter::drawText() is called with a bounding - rectangle. + point with no boundaries, and also when QPainter::drawText() is called with a bounding + rectangle. If a bounding rectangle is not required, create a QStaticText object without setting a preferred text width. The text will then occupy a single line. @@ -151,7 +151,7 @@ QT_BEGIN_NAMESPACE /*! Constructs an empty QStaticText */ -QStaticText::QStaticText() +QStaticText::QStaticText() : data(new QStaticTextPrivate) { } @@ -161,7 +161,7 @@ QStaticText::QStaticText() */ QStaticText::QStaticText(const QString &text) : data(new QStaticTextPrivate) -{ +{ data->text = text; data->invalidate(); } @@ -169,7 +169,7 @@ QStaticText::QStaticText(const QString &text) /*! Constructs a QStaticText object which is a copy of \a other. */ -QStaticText::QStaticText(const QStaticText &other) +QStaticText::QStaticText(const QStaticText &other) { data = other.data; } @@ -186,7 +186,7 @@ QStaticText::~QStaticText() \internal */ void QStaticText::detach() -{ +{ if (data->ref.load() != 1) data.detach(); } @@ -219,7 +219,7 @@ void QStaticText::prepare(const QTransform &matrix, const QFont &font) Assigns \a other to this QStaticText. */ QStaticText &QStaticText::operator=(const QStaticText &other) -{ +{ data = other.data; return *this; } @@ -300,7 +300,7 @@ Qt::TextFormat QStaticText::textFormat() const \sa setText() */ -QString QStaticText::text() const +QString QStaticText::text() const { return data->text; } @@ -651,7 +651,7 @@ void QStaticTextPrivate::paintText(const QPointF &topLeftPosition, QPainter *p) .arg(QString::number(color.blue(), 16), 2, QLatin1Char('0'))); #endif document.setDefaultFont(font); - document.setDocumentMargin(0.0); + document.setDocumentMargin(0.0); #ifndef QT_NO_TEXTHTMLPARSER document.setHtml(text); #else diff --git a/src/gui/text/qstatictext.h b/src/gui/text/qstatictext.h index 60fa82712b..e41c475495 100644 --- a/src/gui/text/qstatictext.h +++ b/src/gui/text/qstatictext.h @@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE class QStaticTextPrivate; class Q_GUI_EXPORT QStaticText -{ +{ public: enum PerformanceHint { ModerateCaching, diff --git a/src/gui/text/qstatictext_p.h b/src/gui/text/qstatictext_p.h index 1434c54417..4451f27b27 100644 --- a/src/gui/text/qstatictext_p.h +++ b/src/gui/text/qstatictext_p.h @@ -77,7 +77,7 @@ public: class Q_GUI_EXPORT QStaticTextItem { -public: +public: QStaticTextItem() : chars(0), numChars(0), useBackendOptimizations(false), userDataNeedsUpdate(0), m_fontEngine(0), m_userData(0) {} diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp index e8e1c81dab..784aeb9a71 100644 --- a/src/gui/text/qsyntaxhighlighter.cpp +++ b/src/gui/text/qsyntaxhighlighter.cpp @@ -380,7 +380,7 @@ void QSyntaxHighlighter::rehighlight() \since 4.6 Reapplies the highlighting to the given QTextBlock \a block. - + \sa rehighlight() */ void QSyntaxHighlighter::rehighlightBlock(const QTextBlock &block) diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp index 34133c5e07..b83af30f7f 100644 --- a/src/gui/text/qtextdocument.cpp +++ b/src/gui/text/qtextdocument.cpp @@ -416,12 +416,12 @@ void QTextDocument::redo(QTextCursor *cursor) } /*! \enum QTextDocument::Stacks - + \value UndoStack The undo stack. \value RedoStack The redo stack. \value UndoAndRedoStacks Both the undo and redo stacks. */ - + /*! \since 4.7 Clears the stacks specified by \a stacksToClear. diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp index 833e4c5037..50908f9908 100644 --- a/src/gui/text/qtextlayout.cpp +++ b/src/gui/text/qtextlayout.cpp @@ -1022,7 +1022,7 @@ static inline QRectF clipIfValid(const QRectF &rect, const QRectF &clip) */ #if !defined(QT_NO_RAWFONT) QList QTextLayout::glyphRuns(int from, int length) const -{ +{ if (from < 0) from = 0; if (length < 0) @@ -1651,7 +1651,7 @@ namespace { } inline glyph_t currentGlyph() const - { + { Q_ASSERT(currentPosition > 0); Q_ASSERT(logClusters[currentPosition - 1] < glyphs.numGlyphs); diff --git a/src/gui/text/qtextobject.cpp b/src/gui/text/qtextobject.cpp index 80ed2f023f..8465dcdaad 100644 --- a/src/gui/text/qtextobject.cpp +++ b/src/gui/text/qtextobject.cpp @@ -636,7 +636,7 @@ QTextFrame::iterator QTextFrame::begin() const /*! Returns an iterator pointing to the position past the last document element inside the frame. - Please see the document \l{STL-Style Iterators} for more information. + Please see the document \l{STL-Style Iterators} for more information. \sa begin() */ QTextFrame::iterator QTextFrame::end() const diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp index d83dc98e22..1572648d7f 100644 --- a/src/gui/text/qtextodfwriter.cpp +++ b/src/gui/text/qtextodfwriter.cpp @@ -677,13 +677,13 @@ void QTextOdfWriter::writeFrameFormat(QXmlStreamWriter &writer, QTextFrameFormat writer.writeEndElement(); // style // TODO consider putting the following properties in a qt-namespace. -// Position position () const -// qreal border () const -// QBrush borderBrush () const -// BorderStyle borderStyle () const -// qreal padding () const -// QTextLength width () const -// QTextLength height () const +// Position position () const +// qreal border () const +// QBrush borderBrush () const +// BorderStyle borderStyle () const +// qreal padding () const +// QTextLength width () const +// QTextLength height () const // PageBreakFlags pageBreakPolicy () const } diff --git a/src/gui/text/qtextoption.cpp b/src/gui/text/qtextoption.cpp index 7b5d20bc5c..c939020457 100644 --- a/src/gui/text/qtextoption.cpp +++ b/src/gui/text/qtextoption.cpp @@ -394,7 +394,7 @@ QList QTextOption::tabs() const /*! \fn Tab::Tab(qreal pos, TabType tabType, QChar delim = QChar()) - + Creates a tab with the given position, tab type, and delimiter (\a pos, \a tabType, \a delim). diff --git a/src/gui/text/qtexttable.cpp b/src/gui/text/qtexttable.cpp index 0c9ec6203e..a56f8060e0 100644 --- a/src/gui/text/qtexttable.cpp +++ b/src/gui/text/qtexttable.cpp @@ -535,11 +535,11 @@ void QTextTablePrivate::update() const Rows and columns within a QTextTable can be merged and split using the mergeCells() and splitCell() functions. However, only cells that span multiple rows or columns can be split. (Merging or splitting does not increase or decrease - the number of rows and columns.) + the number of rows and columns.) Note that if you have merged multiple columns and rows into one cell, you will not - be able to split the merged cell into new cells spanning over more than one row - or column. To be able to split cells spanning over several rows and columns you + be able to split the merged cell into new cells spanning over more than one row + or column. To be able to split cells spanning over several rows and columns you need to do this over several iterations. \table 80% diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index 509f8b3251..a279990f4c 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -923,7 +923,7 @@ void QHttpNetworkConnectionPrivate::_q_startNextRequest() fillPipeline(channels[i].socket); // If there is not already any connected channels we need to connect a new one. - // We do not pair the channel with the request until we know if it is + // We do not pair the channel with the request until we know if it is // connected or not. This is to reuse connected channels before we connect new once. int queuedRequest = highPriorityQueue.count() + lowPriorityQueue.count(); for (int i = 0; i < channelCount; ++i) { diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h index 3577d76df5..c8138b5453 100644 --- a/src/network/access/qhttpnetworkconnectionchannel_p.h +++ b/src/network/access/qhttpnetworkconnectionchannel_p.h @@ -146,7 +146,7 @@ public: QHttpNetworkConnectionChannel(); QAbstractSocket::NetworkLayerProtocol networkLayerPreference; - + void setConnection(QHttpNetworkConnection *c); QPointer connection; diff --git a/src/network/access/qnetworkaccessdebugpipebackend.cpp b/src/network/access/qnetworkaccessdebugpipebackend.cpp index d9d3200564..b6c04dddea 100644 --- a/src/network/access/qnetworkaccessdebugpipebackend.cpp +++ b/src/network/access/qnetworkaccessdebugpipebackend.cpp @@ -143,7 +143,7 @@ void QNetworkAccessDebugPipeBackend::pushFromSocketToDownstream() buffer.resize(ReadBufferSize); qint64 haveRead = socket.read(buffer.data(), ReadBufferSize); - + if (haveRead == -1) { hasDownloadFinished = true; // this ensures a good last downloadProgress is emitted diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 123b354131..83cb729589 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -672,8 +672,8 @@ QNetworkReply *QNetworkAccessManager::head(const QNetworkRequest &request) /*! Posts a request to obtain the contents of the target \a request - and returns a new QNetworkReply object opened for reading which emits the - \l{QIODevice::readyRead()}{readyRead()} signal whenever new data + and returns a new QNetworkReply object opened for reading which emits the + \l{QIODevice::readyRead()}{readyRead()} signal whenever new data arrives. The contents as well as associated headers will be downloaded. @@ -687,11 +687,11 @@ QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request) /*! Sends an HTTP POST request to the destination specified by \a request - and returns a new QNetworkReply object opened for reading that will - contain the reply sent by the server. The contents of the \a data + and returns a new QNetworkReply object opened for reading that will + contain the reply sent by the server. The contents of the \a data device will be uploaded to the server. - \a data must be open for reading and must remain valid until the + \a data must be open for reading and must remain valid until the finished() signal is emitted for this reply. \note Sending a POST request on protocols other than HTTP and @@ -707,7 +707,7 @@ QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QIODe /*! \overload - Sends the contents of the \a data byte array to the destination + Sends the contents of the \a data byte array to the destination specified by \a request. */ QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, const QByteArray &data) @@ -770,8 +770,8 @@ QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QHttpM this reply. Whether anything will be available for reading from the returned - object is protocol dependent. For HTTP, the server may send a - small HTML page indicating the upload was successful (or not). + object is protocol dependent. For HTTP, the server may send a + small HTML page indicating the upload was successful (or not). Other protocols will probably have content in their replies. \note For HTTP, this request will send a PUT request, which most servers @@ -807,7 +807,7 @@ QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, const Sends a request to delete the resource identified by the URL of \a request. - \note This feature is currently available for HTTP only, performing an + \note This feature is currently available for HTTP only, performing an HTTP DELETE request. \sa get(), post(), put(), sendCustomRequest() diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp index ec8d7894fa..49d6babb10 100644 --- a/src/network/bearer/qnetworkconfigmanager.cpp +++ b/src/network/bearer/qnetworkconfigmanager.cpp @@ -134,7 +134,7 @@ QNetworkConfigurationManagerPrivate *qNetworkConfigurationManagerPrivate() \sa QNetworkConfiguration */ -/*! +/*! \fn void QNetworkConfigurationManager::configurationAdded(const QNetworkConfiguration &config) This signal is emitted whenever a new network configuration is added to the system. The new diff --git a/src/network/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp index f06a2d0df4..cca95fce8c 100644 --- a/src/network/bearer/qnetworksession.cpp +++ b/src/network/bearer/qnetworksession.cpp @@ -66,37 +66,37 @@ QT_BEGIN_NAMESPACE \ingroup network A QNetworkSession enables control over the system's network interfaces. The session's configuration - parameter are determined via the QNetworkConfiguration object to which it is bound. Depending on the + parameter are determined via the QNetworkConfiguration object to which it is bound. Depending on the type of the session (single access point or service network) a session may be linked to one or more - network interfaces. By means of \l{open()}{opening} and \l{close()}{closing} of network sessions - a developer can start and stop the systems network interfaces. If the configuration represents + network interfaces. By means of \l{open()}{opening} and \l{close()}{closing} of network sessions + a developer can start and stop the systems network interfaces. If the configuration represents multiple access points (see \l QNetworkConfiguration::ServiceNetwork) more advanced features such as roaming may be supported. - QNetworkSession supports session management within the same process and depending on the platform's - capabilities may support out-of-process sessions. If the same + QNetworkSession supports session management within the same process and depending on the platform's + capabilities may support out-of-process sessions. If the same network configuration is used by multiple open sessions the underlying network interface is only terminated once the last session has been closed. \section1 Roaming - Applications may connect to the preferredConfigurationChanged() signal in order to - receive notifications when a more suitable access point becomes available. + Applications may connect to the preferredConfigurationChanged() signal in order to + receive notifications when a more suitable access point becomes available. In response to this signal the application must either initiate the roaming via migrate() - or ignore() the new access point. Once the session has roamed the - newConfigurationActivated() signal is emitted. The application may now test the + or ignore() the new access point. Once the session has roamed the + newConfigurationActivated() signal is emitted. The application may now test the carrier and must either accept() or reject() it. The session will return to the previous access point if the roaming was rejected. The subsequent state diagram depicts the required state transitions. - + \image roaming-states.png - Some platforms may distinguish forced roaming and application level roaming (ALR). - ALR implies that the application controls (via migrate(), ignore(), accept() and reject()) + Some platforms may distinguish forced roaming and application level roaming (ALR). + ALR implies that the application controls (via migrate(), ignore(), accept() and reject()) whether a network session can roam from one access point to the next. Such control is useful if the application maintains stateful socket connections and wants to control the transition from - one interface to the next. Forced roaming implies that the system automatically roams to the next network without + one interface to the next. Forced roaming implies that the system automatically roams to the next network without consulting the application. This has the advantage that the application can make use of roaming features - without actually being aware of it. It is expected that the application detects that the underlying + without actually being aware of it. It is expected that the application detects that the underlying socket is broken and automatically reconnects via the new network link. If the platform supports both modes of roaming, an application indicates its preference @@ -105,7 +105,7 @@ QT_BEGIN_NAMESPACE level roaming. If the client does not connect to the preferredConfigurationChanged(), forced roaming is used. If forced roaming is not supported the network session will not roam by default. - Some applications may want to suppress any form of roaming altogether. Possible use cases may be + Some applications may want to suppress any form of roaming altogether. Possible use cases may be high priority downloads or remote services which cannot handle a roaming enabled client. Clients can suppress roaming by connecting to the preferredConfigurationChanged() signal and answer each signal emission with ignore(). @@ -120,19 +120,19 @@ QT_BEGIN_NAMESPACE single access point configuration the state of the session is the same as the state of the associated network interface. - \value Invalid The session is invalid due to an invalid configuration. This may - happen due to a removed access point or a configuration that was + \value Invalid The session is invalid due to an invalid configuration. This may + happen due to a removed access point or a configuration that was invalid to begin with. \value NotAvailable The session is based on a defined but not yet discovered QNetworkConfiguration (see \l QNetworkConfiguration::StateFlag). \value Connecting The network session is being established. \value Connected The network session is connected. If the current process wishes to use this session - it has to register its interest by calling open(). A network session + it has to register its interest by calling open(). A network session is considered to be ready for socket operations if it isOpen() and connected. \value Closing The network session is in the process of being shut down. \value Disconnected The network session is not connected. The associated QNetworkConfiguration has the state QNetworkConfiguration::Discovered. - \value Roaming The network session is roaming from one access point to another + \value Roaming The network session is roaming from one access point to another access point. */ @@ -194,16 +194,16 @@ QT_BEGIN_NAMESPACE If the roaming process is non-seamless the IP address will change which means that a socket becomes invalid. However seamless mobility can ensure that the local IP address does not change. This is achieved by using a virtual IP address which is bound to the actual - link address. During the roaming process the virtual address is attached to the new link + link address. During the roaming process the virtual address is attached to the new link address. - Some platforms may support the concept of Forced Roaming and Application Level Roaming (ALR). - Forced roaming implies that the platform may simply roam to a new configuration without + Some platforms may support the concept of Forced Roaming and Application Level Roaming (ALR). + Forced roaming implies that the platform may simply roam to a new configuration without consulting applications. It is up to the application to detect the link layer loss and reestablish - its sockets. In contrast ALR provides the opportunity to prevent the system from roaming. + its sockets. In contrast ALR provides the opportunity to prevent the system from roaming. If this session is based on a configuration that supports roaming the application can choose - whether it wants to be consulted (ALR use case) by connecting to this signal. For as long as this signal - connection remains the session remains registered as a roaming stakeholder; otherwise roaming will + whether it wants to be consulted (ALR use case) by connecting to this signal. For as long as this signal + connection remains the session remains registered as a roaming stakeholder; otherwise roaming will be enforced by the platform. \sa migrate(), ignore(), QNetworkConfiguration::isRoamingAvailable() @@ -214,7 +214,7 @@ QT_BEGIN_NAMESPACE This signal is emitted once the session has roamed to the new access point. The application may reopen its socket and test the suitability of the new network link. - Subsequently it must either accept() or reject() the new access point. + Subsequently it must either accept() or reject() the new access point. \sa accept(), reject() */ @@ -222,8 +222,8 @@ QT_BEGIN_NAMESPACE /*! \fn void QNetworkSession::opened() - This signal is emitted when the network session has been opened. - + This signal is emitted when the network session has been opened. + The underlying network interface will not be shut down as long as the session remains open. Note that this feature is dependent on \l{QNetworkConfigurationManager::SystemSessionSupport}{system wide session support}. */ @@ -292,12 +292,12 @@ QNetworkSession::~QNetworkSession() The system will not terminate a network interface until the session reference counter reaches zero. Therefore an open session allows an application to register its use of the interface. - As a result of calling open() the interface will be started if it is not connected/up yet. + As a result of calling open() the interface will be started if it is not connected/up yet. Some platforms may not provide support for out-of-process sessions. On such platforms the session - counter ignores any sessions held by another process. The platform capabilities can be + counter ignores any sessions held by another process. The platform capabilities can be detected via QNetworkConfigurationManager::capabilities(). - Note that this call is asynchronous. Depending on the outcome of this call the results can be enquired + Note that this call is asynchronous. Depending on the outcome of this call the results can be enquired by connecting to the stateChanged(), opened() or error() signals. It is not a requirement to open a session in order to monitor the underlying network interface. @@ -361,10 +361,10 @@ bool QNetworkSession::waitForOpened(int msecs) \l Disconnected if the current session was the last open session. If the platform does not support out-of-process sessions calling this function does not stop the - interface. In this case \l{stop()} has to be used to force a shut down. + interface. In this case \l{stop()} has to be used to force a shut down. The platform capabilities can be detected via QNetworkConfigurationManager::capabilities(). - Note that this call is asynchronous. Depending on the outcome of this call the results can be enquired + Note that this call is asynchronous. Depending on the outcome of this call the results can be enquired by connecting to the stateChanged(), opened() or error() signals. \sa open(), stop(), isOpen() @@ -376,7 +376,7 @@ void QNetworkSession::close() } /*! - Invalidates all open sessions against the network interface and therefore stops the + Invalidates all open sessions against the network interface and therefore stops the underlying network interface. This function always changes the session's state() flag to \l Disconnected. @@ -426,15 +426,15 @@ bool QNetworkSession::isOpen() const } /*! - Returns the state of the session. - - If the session is based on a single access point configuration the state of the + Returns the state of the session. + + If the session is based on a single access point configuration the state of the session is the same as the state of the associated network interface. Therefore - a network session object can be used to monitor network interfaces. + a network session object can be used to monitor network interfaces. A \l QNetworkConfiguration::ServiceNetwork based session summarizes the state of all its children - and therefore returns the \l Connected state if at least one of the service network's - \l {QNetworkConfiguration::children()}{children()} configurations is active. + and therefore returns the \l Connected state if at least one of the service network's + \l {QNetworkConfiguration::children()}{children()} configurations is active. Note that it is not required to hold an open session in order to obtain the network interface state. A connected but closed session may be used to monitor network interfaces whereas an open and connected @@ -458,7 +458,7 @@ QNetworkSession::SessionError QNetworkSession::error() const } /*! - Returns a human-readable description of the last device error that + Returns a human-readable description of the last device error that occurred. \sa error() @@ -485,7 +485,7 @@ QString QNetworkSession::errorString() const QNetworkConfiguration that is used by this session; otherwise an empty string. The main purpose of this key is to determine which Internet access point is used - if the session is based on a \l{QNetworkConfiguration::ServiceNetwork}{ServiceNetwork}. + if the session is based on a \l{QNetworkConfiguration::ServiceNetwork}{ServiceNetwork}. The following code snippet highlights the difference: \code QNetworkConfigurationManager mgr; @@ -512,7 +512,7 @@ QString QNetworkSession::errorString() const this key may return an identifier for either a \l {QNetworkConfiguration::ServiceNetwork}{service network} or a \l {QNetworkConfiguration::InternetAccessPoint}{Internet access points} configurations, - whereas \e ActiveConfiguration always returns identifiers to + whereas \e ActiveConfiguration always returns identifiers to \l {QNetworkConfiguration::InternetAccessPoint}{Internet access points} configurations. \row \li ConnectInBackground @@ -558,7 +558,7 @@ QVariant QNetworkSession::sessionProperty(const QString &key) const /*! Sets the property \a value on the session. The property is identified using - \a key. Removing an already set property can be achieved by passing an + \a key. Removing an already set property can be achieved by passing an invalid QVariant. Note that the \e UserChoiceConfiguration and \e ActiveConfiguration @@ -578,7 +578,7 @@ void QNetworkSession::setSessionProperty(const QString &key, const QVariant &val } /*! - Instructs the session to roam to the new access point. The old access point remains active + Instructs the session to roam to the new access point. The old access point remains active until the application calls accept(). The newConfigurationActivated() signal is emitted once roaming has been completed. @@ -603,11 +603,11 @@ void QNetworkSession::ignore() } /*! - Instructs the session to permanently accept the new access point. Once this function + Instructs the session to permanently accept the new access point. Once this function has been called the session may not return to the old access point. The old access point may be closed in the process if there are no other network sessions for it. - Therefore any open socket that still uses the old access point + Therefore any open socket that still uses the old access point may become unusable and should be closed before completing the migration. */ void QNetworkSession::accept() @@ -617,7 +617,7 @@ void QNetworkSession::accept() } /*! - The new access point is not suitable for the application. By calling this function the + The new access point is not suitable for the application. By calling this function the session returns to the previous access point/configuration. This action may invalidate any socket that has been created via the not desired access point. @@ -633,10 +633,10 @@ void QNetworkSession::reject() /*! Returns the amount of data sent in bytes; otherwise 0. - This field value includes the usage across all open network + This field value includes the usage across all open network sessions which use the same network interface. - If the session is based on a service network configuration the number of + If the session is based on a service network configuration the number of sent bytes across all active member configurations are returned. This function may not always be supported on all platforms and returns 0. @@ -652,10 +652,10 @@ quint64 QNetworkSession::bytesWritten() const /*! Returns the amount of data received in bytes; otherwise 0. - This field value includes the usage across all open network + This field value includes the usage across all open network sessions which use the same network interface. - If the session is based on a service network configuration the number of + If the session is based on a service network configuration the number of sent bytes across all active member configurations are returned. This function may not always be supported on all platforms and returns 0. @@ -699,12 +699,12 @@ void QNetworkSessionPrivate::setUsagePolicies(QNetworkSession &session, QNetwork /*! \internal - This function is required to detect whether the client wants to control + This function is required to detect whether the client wants to control the roaming process. If he connects to preferredConfigurationChanged() signal he intends to influence it. Otherwise QNetworkSession always roams without registering this session as a stakeholder in the roaming process. - For more details check the Forced vs ALR roaming section in the QNetworkSession + For more details check the Forced vs ALR roaming section in the QNetworkSession class description. */ void QNetworkSession::connectNotify(const QMetaMethod &signal) diff --git a/src/network/bearer/qnetworksession_p.h b/src/network/bearer/qnetworksession_p.h index c5af8d8ca0..909cce5e4b 100644 --- a/src/network/bearer/qnetworksession_p.h +++ b/src/network/bearer/qnetworksession_p.h @@ -76,7 +76,7 @@ public: //called by QNetworkSession constructor and ensures //that the state is immediately updated (w/o actually opening - //a session). Also this function should take care of + //a session). Also this function should take care of //notification hooks to discover future state changes. virtual void syncStateWithInterface() = 0; diff --git a/src/network/doc/snippets/code/src_network_socket_qabstractsocket.cpp b/src/network/doc/snippets/code/src_network_socket_qabstractsocket.cpp index 01ec19c0ba..af1273dd85 100644 --- a/src/network/doc/snippets/code/src_network_socket_qabstractsocket.cpp +++ b/src/network/doc/snippets/code/src_network_socket_qabstractsocket.cpp @@ -47,7 +47,7 @@ if (socket->waitForConnected(1000)) //! [1] socket->disconnectFromHost(); - if (socket->state() == QAbstractSocket::UnconnectedState || + if (socket->state() == QAbstractSocket::UnconnectedState || socket->waitForDisconnected(1000)) qDebug("Disconnected!"); //! [1] diff --git a/src/network/doc/snippets/network/tcpwait.cpp b/src/network/doc/snippets/network/tcpwait.cpp index 2be8d7c8ea..fb44e2ded9 100644 --- a/src/network/doc/snippets/network/tcpwait.cpp +++ b/src/network/doc/snippets/network/tcpwait.cpp @@ -49,7 +49,7 @@ int main(int argv, char **args) QTcpSocket socket; socket.connectToHost("localhost", 1025); - + //! [0] int numRead = 0, numReadTotal = 0; char buffer[50]; @@ -58,12 +58,12 @@ int main(int argv, char **args) numRead = socket.read(buffer, 50); // do whatever with array - + numReadTotal += numRead; - if (numRead == 0 && !socket.waitForReadyRead()) + if (numRead == 0 && !socket.waitForReadyRead()) break; } //! [0] - + return app.exec(); } diff --git a/src/network/kernel/qauthenticator.h b/src/network/kernel/qauthenticator.h index b784cd7f50..4d96104bc0 100644 --- a/src/network/kernel/qauthenticator.h +++ b/src/network/kernel/qauthenticator.h @@ -62,7 +62,7 @@ public: bool operator==(const QAuthenticator &other) const; inline bool operator!=(const QAuthenticator &other) const { return !operator==(other); } - + QString user() const; void setUser(const QString &user); diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp index f15c49104d..dc67b0d835 100644 --- a/src/network/kernel/qhostaddress.cpp +++ b/src/network/kernel/qhostaddress.cpp @@ -664,7 +664,7 @@ Q_IPV6ADDR QHostAddress::toIPv6Address() const Returns the address as a string. For example, if the address is the IPv4 address 127.0.0.1, the - returned string is "127.0.0.1". For IPv6 the string format will + returned string is "127.0.0.1". For IPv6 the string format will follow the RFC5952 recommendation. For QHostAddress::Any, its IPv4 address will be returned ("0.0.0.0") diff --git a/src/network/kernel/qnetworkinterface.h b/src/network/kernel/qnetworkinterface.h index f288b8d938..53d5d6e664 100644 --- a/src/network/kernel/qnetworkinterface.h +++ b/src/network/kernel/qnetworkinterface.h @@ -98,7 +98,7 @@ public: CanMulticast = 0x20 }; Q_DECLARE_FLAGS(InterfaceFlags, InterfaceFlag) - + QNetworkInterface(); QNetworkInterface(const QNetworkInterface &other); QNetworkInterface &operator=(const QNetworkInterface &other); diff --git a/src/network/kernel/qnetworkinterface_unix.cpp b/src/network/kernel/qnetworkinterface_unix.cpp index 7885d122ea..0ec9554c82 100644 --- a/src/network/kernel/qnetworkinterface_unix.cpp +++ b/src/network/kernel/qnetworkinterface_unix.cpp @@ -328,9 +328,9 @@ static QList createInterfaces(ifaddrs *rawList) } break; } - if ( if_it != interfaces.end() ) + if ( if_it != interfaces.end() ) continue; - + QNetworkInterfacePrivate *iface = new QNetworkInterfacePrivate; interfaces << iface; iface->index = ifindex; diff --git a/src/network/kernel/qnetworkinterface_win.cpp b/src/network/kernel/qnetworkinterface_win.cpp index 0a2deb8711..02c0801cef 100644 --- a/src/network/kernel/qnetworkinterface_win.cpp +++ b/src/network/kernel/qnetworkinterface_win.cpp @@ -109,7 +109,7 @@ static QHash ipv4Netmasks() IP_ADAPTER_INFO staticBuf[2]; // 2 is arbitrary PIP_ADAPTER_INFO pAdapter = staticBuf; ULONG bufSize = sizeof staticBuf; - QHash ipv4netmasks; + QHash ipv4netmasks; DWORD retval = ptrGetAdaptersInfo(pAdapter, &bufSize); if (retval == ERROR_BUFFER_OVERFLOW) { diff --git a/src/network/kernel/qnetworkinterface_win_p.h b/src/network/kernel/qnetworkinterface_win_p.h index 34f4e18d5e..d6a3366316 100644 --- a/src/network/kernel/qnetworkinterface_win_p.h +++ b/src/network/kernel/qnetworkinterface_win_p.h @@ -112,19 +112,19 @@ typedef struct { // copied from MSDN online help typedef enum { - IpPrefixOriginOther = 0, - IpPrefixOriginManual, - IpPrefixOriginWellKnown, - IpPrefixOriginDhcp, + IpPrefixOriginOther = 0, + IpPrefixOriginManual, + IpPrefixOriginWellKnown, + IpPrefixOriginDhcp, IpPrefixOriginRouterAdvertisement } IP_PREFIX_ORIGIN; typedef enum { - IpSuffixOriginOther = 0, - IpSuffixOriginManual, - IpSuffixOriginWellKnown, - IpSuffixOriginDhcp, - IpSuffixOriginLinkLayerAddress, + IpSuffixOriginOther = 0, + IpSuffixOriginManual, + IpSuffixOriginWellKnown, + IpSuffixOriginDhcp, + IpSuffixOriginLinkLayerAddress, IpSuffixOriginRandom } IP_SUFFIX_ORIGIN; @@ -164,11 +164,11 @@ typedef struct _IP_ADAPTER_UNICAST_ADDRESS { ULONG LeaseLifetime; } IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS; -typedef struct _IP_ADAPTER_ANYCAST_ADDRESS +typedef struct _IP_ADAPTER_ANYCAST_ADDRESS IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS; -typedef struct _IP_ADAPTER_MULTICAST_ADDRESS - IP_ADAPTER_MULTICAST_ADDRESS, +typedef struct _IP_ADAPTER_MULTICAST_ADDRESS + IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS; typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS @@ -186,7 +186,7 @@ typedef struct _IP_ADAPTER_PREFIX { struct _IP_ADAPTER_PREFIX* Next; SOCKET_ADDRESS Address; ULONG PrefixLength; -} IP_ADAPTER_PREFIX, +} IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX; typedef struct _IP_ADAPTER_ADDRESSES { @@ -215,7 +215,7 @@ typedef struct _IP_ADAPTER_ADDRESSES { DWORD Ipv6IfIndex; DWORD ZoneIndices[16]; PIP_ADAPTER_PREFIX FirstPrefix; -} IP_ADAPTER_ADDRESSES, +} IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES; typedef struct { @@ -227,7 +227,7 @@ typedef struct _IP_ADDR_STRING { IP_ADDRESS_STRING IpAddress; IP_MASK_STRING IpMask; DWORD Context; -} IP_ADDR_STRING, +} IP_ADDR_STRING, *PIP_ADDR_STRING; typedef struct _IP_ADAPTER_INFO { @@ -249,7 +249,7 @@ typedef struct _IP_ADAPTER_INFO { IP_ADDR_STRING SecondaryWinsServer; time_t LeaseObtained; time_t LeaseExpires; -} IP_ADAPTER_INFO, +} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO; typedef struct { diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp index a135abd5e3..3027b77161 100644 --- a/src/network/socket/qnativesocketengine_win.cpp +++ b/src/network/socket/qnativesocketengine_win.cpp @@ -1450,7 +1450,7 @@ int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool selectForRead) co bool readEnabled = selectForRead && readNotifier && readNotifier->isEnabled(); if (readEnabled) readNotifier->setEnabled(false); - + fd_set fds; int ret = 0; diff --git a/src/network/socket/qtcpsocket.cpp b/src/network/socket/qtcpsocket.cpp index fb5d46a9f7..ce37401a89 100644 --- a/src/network/socket/qtcpsocket.cpp +++ b/src/network/socket/qtcpsocket.cpp @@ -41,7 +41,7 @@ //#define QTCPSOCKET_DEBUG -/*! +/*! \class QTcpSocket \brief The QTcpSocket class provides a TCP socket. diff --git a/src/network/ssl/qssl.cpp b/src/network/ssl/qssl.cpp index 6fcd977759..4e33001d8d 100644 --- a/src/network/ssl/qssl.cpp +++ b/src/network/ssl/qssl.cpp @@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE \enum QSsl::KeyType Describes the two types of keys QSslKey supports. - + \value PrivateKey A private key. \value PublicKey A public key. */ diff --git a/src/network/ssl/qsslcipher.cpp b/src/network/ssl/qsslcipher.cpp index 46131fc1aa..b045d2eba9 100644 --- a/src/network/ssl/qsslcipher.cpp +++ b/src/network/ssl/qsslcipher.cpp @@ -194,7 +194,7 @@ QString QSslCipher::keyExchangeMethod() const { return d->keyExchangeMethod; } - + /*! Returns the cipher's authentication method as a QString. */ diff --git a/src/network/ssl/qsslerror.cpp b/src/network/ssl/qsslerror.cpp index d151b376d5..bf75d2e610 100644 --- a/src/network/ssl/qsslerror.cpp +++ b/src/network/ssl/qsslerror.cpp @@ -61,7 +61,7 @@ \enum QSslError::SslError Describes all recognized errors that can occur during an SSL handshake. - + \value NoError \value UnableToGetIssuerCertificate \value UnableToDecryptCertificateSignature @@ -108,7 +108,7 @@ public: }; /*! - Constructs a QSslError object with no error and default certificate. + Constructs a QSslError object with no error and default certificate. */ diff --git a/src/network/ssl/qsslerror.h b/src/network/ssl/qsslerror.h index 135ba11ece..73549ce648 100644 --- a/src/network/ssl/qsslerror.h +++ b/src/network/ssl/qsslerror.h @@ -104,7 +104,7 @@ public: SslError error() const; QString errorString() const; QSslCertificate certificate() const; - + private: QScopedPointer d; }; diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index b1cdef7f29..a8bf8f83b8 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -267,7 +267,7 @@ /*! \fn void QSslSocket::sslErrors(const QList &errors); - + QSslSocket emits this signal after the SSL handshake to indicate that one or more errors have occurred while establishing the identity of the peer. The errors are usually an indication that QSslSocket is unable to @@ -281,7 +281,7 @@ \a errors contains one or more errors that prevent QSslSocket from verifying the identity of the peer. - + Note: You cannot use Qt::QueuedConnection when connecting to this signal, or calling QSslSocket::ignoreSslErrors() will have no effect. @@ -436,7 +436,7 @@ void QSslSocket::connectToHostEncrypted(const QString &hostName, quint16 port, O \overload In addition to the original behaviour of connectToHostEncrypted, - this overloaded method enables the usage of a different hostname + this overloaded method enables the usage of a different hostname (\a sslPeerName) for the certificate validation instead of the one used for the TCP connection (\a hostName). @@ -827,7 +827,7 @@ bool QSslSocket::flush() /*! \since 4.4 - Sets the size of QSslSocket's internal read buffer to be \a size bytes. + Sets the size of QSslSocket's internal read buffer to be \a size bytes. */ void QSslSocket::setReadBufferSize(qint64 size) { @@ -960,7 +960,7 @@ void QSslSocket::setLocalCertificate(const QSslCertificate &certificate) \overload Sets the socket's local \l {QSslCertificate} {certificate} to the - first one found in file \a path, which is parsed according to the + first one found in file \a path, which is parsed according to the specified \a format. */ void QSslSocket::setLocalCertificate(const QString &path, @@ -990,7 +990,7 @@ QSslCertificate QSslSocket::localCertificate() const Returns the peer's digital certificate (i.e., the immediate certificate of the host you are connected to), or a null certificate, if the peer has not assigned a certificate. - + The peer certificate is checked automatically during the handshake phase, so this function is normally used to fetch the certificate for display or for connection diagnostic @@ -1102,7 +1102,7 @@ void QSslSocket::setPrivateKey(const QSslKey &key) creating an SSL server socket. If you are creating an SSL client socket, the key and local certificate are required if your client must identify itself to an SSL server. - + \sa privateKey(), setLocalCertificate() */ void QSslSocket::setPrivateKey(const QString &fileName, QSsl::KeyAlgorithm algorithm, @@ -1710,7 +1710,7 @@ void QSslSocket::startClientEncryption() subclass of QTcpServer and reimplement QTcpServer::incomingConnection(). The returned socket descriptor is then passed to QSslSocket::setSocketDescriptor(). - + \sa connectToHostEncrypted(), startClientEncryption() */ void QSslSocket::startServerEncryption() diff --git a/src/opengl/doc/src/qtopengl-examples.qdoc b/src/opengl/doc/src/qtopengl-examples.qdoc index 17fee37b7c..67c6aa3c0d 100644 --- a/src/opengl/doc/src/qtopengl-examples.qdoc +++ b/src/opengl/doc/src/qtopengl-examples.qdoc @@ -35,7 +35,7 @@ These examples describe how to use the Qt OpenGL Module. For new code, please use the OpenGL classes in the \l {Qt GUI Module}. - + Qt provides support for integration with OpenGL implementations on all platforms, giving developers the opportunity to display hardware accelerated diff --git a/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h b/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h index 44a0274da4..f1a664c93d 100644 --- a/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h +++ b/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h @@ -104,20 +104,20 @@ public: maxX(-2e10), maxY(-2e10), minX(2e10), minY(2e10), boundingRectDirty(true) { } - + inline void addRect(const QRectF &rect) { qreal top = rect.top(); qreal left = rect.left(); qreal bottom = rect.bottom(); qreal right = rect.right(); - + vertexArray << QGLPoint(left, top) << QGLPoint(right, top) << QGLPoint(right, bottom) << QGLPoint(right, bottom) << QGLPoint(left, bottom) - << QGLPoint(left, top); + << QGLPoint(left, top); } inline void addQuad(const QRectF &rect) diff --git a/src/plugins/bearer/connman/qconnmanengine.cpp b/src/plugins/bearer/connman/qconnmanengine.cpp index 589b0e2c24..e85949afb6 100644 --- a/src/plugins/bearer/connman/qconnmanengine.cpp +++ b/src/plugins/bearer/connman/qconnmanengine.cpp @@ -574,7 +574,7 @@ void QConnmanEngine::addServiceConfiguration(const QString &servicePath) QNetworkConfigurationPrivatePointer ptr(cpPriv); accessPointConfigurations.insert(ptr->id, ptr); foundConfigurations.append(cpPriv); - configInterfaces[cpPriv->id] = serv->getInterface(); + configInterfaces[cpPriv->id] = serv->getInterface(); locker.unlock(); emit configurationAdded(ptr); diff --git a/src/plugins/bearer/connman/qconnmanservice_linux.cpp b/src/plugins/bearer/connman/qconnmanservice_linux.cpp index 56ae2b6e3c..e78a597433 100644 --- a/src/plugins/bearer/connman/qconnmanservice_linux.cpp +++ b/src/plugins/bearer/connman/qconnmanservice_linux.cpp @@ -405,7 +405,7 @@ QVariant QConnmanProfileInterface::getProperty(const QString &property) QVariantMap map = getProperties(); if (map.contains(property)) { var = map.value(property); - } + } return var; } @@ -493,7 +493,7 @@ QVariant QConnmanServiceInterface::getProperty(const QString &property) QVariantMap map = getProperties(); if (map.contains(property)) { var = map.value(property); - } + } return var; } diff --git a/src/plugins/bearer/connman/qconnmanservice_linux_p.h b/src/plugins/bearer/connman/qconnmanservice_linux_p.h index d1524ca753..a437c6609c 100644 --- a/src/plugins/bearer/connman/qconnmanservice_linux_p.h +++ b/src/plugins/bearer/connman/qconnmanservice_linux_p.h @@ -134,7 +134,7 @@ public: QString requestSession(const QString &bearerName); void releaseSession(); - + // properties QString getState(); QStringList getAvailableTechnologies(); diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h index 7038dde3d9..7febe27ad2 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h @@ -139,26 +139,26 @@ class QNetworkManagerInterfacePrivate; class QNetworkManagerInterface : public QObject { Q_OBJECT - + public: - + QNetworkManagerInterface(QObject *parent = 0); ~QNetworkManagerInterface(); - + QList getDevices() const; void activateConnection(const QString &serviceName, QDBusObjectPath connection, QDBusObjectPath device, QDBusObjectPath specificObject); void deactivateConnection(QDBusObjectPath connectionPath) const; - + QDBusObjectPath path() const; QDBusInterface *connectionInterface() const; - + bool wirelessEnabled() const; bool wirelessHardwareEnabled() const; QList activeConnections() const; quint32 state(); bool setConnections(); bool isValid(); - + Q_SIGNALS: void deviceAdded(QDBusObjectPath); void deviceRemoved(QDBusObjectPath); @@ -176,9 +176,9 @@ class QNetworkManagerInterfaceAccessPointPrivate; class QNetworkManagerInterfaceAccessPoint : public QObject { Q_OBJECT - + public: - + enum DeviceState { Unknown = 0, Unmanaged, @@ -191,14 +191,14 @@ public: Activated, Failed }; - + enum ApFlag { ApNone = 0x0, Privacy = 0x1 }; - + Q_DECLARE_FLAGS(ApFlags, ApFlag); - + enum ApSecurityFlag { ApSecurityNone = 0x0, PairWep40 = 0x1, @@ -212,9 +212,9 @@ public: KeyPsk = 0x100, Key8021x = 0x200 }; - + Q_DECLARE_FLAGS(ApSecurityFlags, ApSecurityFlag); - + explicit QNetworkManagerInterfaceAccessPoint(const QString &dbusPathName, QObject *parent = 0); ~QNetworkManagerInterfaceAccessPoint(); @@ -231,7 +231,7 @@ public: quint32 strength() const; bool setConnections(); bool isValid(); - + Q_SIGNALS: void propertiesChanged(QMap ); void propertiesChanged( const QString &, QMap); @@ -245,23 +245,23 @@ class QNetworkManagerInterfaceDevicePrivate; class QNetworkManagerInterfaceDevice : public QObject { Q_OBJECT - + public: - + explicit QNetworkManagerInterfaceDevice(const QString &deviceObjectPath, QObject *parent = 0); ~QNetworkManagerInterfaceDevice(); - + QString udi() const; QString networkInterface() const; QDBusInterface *connectionInterface() const; quint32 ip4Address() const; quint32 state() const; quint32 deviceType() const; - + QDBusObjectPath ip4config() const; bool setConnections(); bool isValid(); - + Q_SIGNALS: void stateChanged(const QString &, quint32); @@ -274,20 +274,20 @@ class QNetworkManagerInterfaceDeviceWiredPrivate; class QNetworkManagerInterfaceDeviceWired : public QObject { Q_OBJECT - + public: - + explicit QNetworkManagerInterfaceDeviceWired(const QString &ifaceDevicePath, QObject *parent = 0); ~QNetworkManagerInterfaceDeviceWired(); - + QDBusInterface *connectionInterface() const; QString hwAddress() const; quint32 speed() const; bool carrier() const; bool setConnections(); bool isValid(); - + Q_SIGNALS: void propertiesChanged( const QString &, QMap); private: @@ -299,9 +299,9 @@ class QNetworkManagerInterfaceDeviceWirelessPrivate; class QNetworkManagerInterfaceDeviceWireless : public QObject { Q_OBJECT - + public: - + enum DeviceCapability { None = 0x0, Wep40 = 0x1, @@ -311,11 +311,11 @@ public: Wpa = 0x10, Rsn = 0x20 }; - + explicit QNetworkManagerInterfaceDeviceWireless(const QString &ifaceDevicePath, QObject *parent = 0); ~QNetworkManagerInterfaceDeviceWireless(); - + QDBusObjectPath path() const; QList getAccessPoints(); QDBusInterface *connectionInterface() const; @@ -327,7 +327,7 @@ public: quint32 wirelessCapabilities() const; bool setConnections(); bool isValid(); - + Q_SIGNALS: void propertiesChanged( const QString &, QMap); void accessPointAdded(const QString &,QDBusObjectPath); @@ -341,12 +341,12 @@ class QNetworkManagerSettingsPrivate; class QNetworkManagerSettings : public QObject { Q_OBJECT - + public: - + explicit QNetworkManagerSettings(const QString &settingsService, QObject *parent = 0); ~QNetworkManagerSettings(); - + QDBusInterface *connectionInterface() const; QList listConnections(); bool setConnections(); @@ -362,12 +362,12 @@ class QNetworkManagerSettingsConnectionPrivate; class QNetworkManagerSettingsConnection : public QObject { Q_OBJECT - + public: - + QNetworkManagerSettingsConnection(const QString &settingsService, const QString &connectionObjectPath, QObject *parent = 0); ~QNetworkManagerSettingsConnection(); - + QDBusInterface *connectionInterface() const; QNmSettingsMap getSettings(); bool setConnections(); @@ -382,7 +382,7 @@ public: bool isValid(); Q_SIGNALS: - + void updated(const QNmSettingsMap &settings); void removed(const QString &path); @@ -395,18 +395,18 @@ class QNetworkManagerConnectionActivePrivate; class QNetworkManagerConnectionActive : public QObject { Q_OBJECT - + public: - + enum ActiveConnectionState { Unknown = 0, Activating = 1, Activated = 2 }; - + explicit QNetworkManagerConnectionActive(const QString &dbusPathName, QObject *parent = 0); ~ QNetworkManagerConnectionActive(); - + QDBusInterface *connectionInterface() const; QString serviceName() const; QDBusObjectPath connection() const; @@ -417,7 +417,7 @@ public: bool setConnections(); bool isValid(); - + Q_SIGNALS: void propertiesChanged(QList); void propertiesChanged( const QString &, QMap); @@ -430,7 +430,7 @@ class QNetworkManagerIp4ConfigPrivate; class QNetworkManagerIp4Config : public QObject { Q_OBJECT - + public: explicit QNetworkManagerIp4Config(const QString &dbusPathName, QObject *parent = 0); ~QNetworkManagerIp4Config(); @@ -439,7 +439,7 @@ public: bool isValid(); private: - QNetworkManagerIp4ConfigPrivate *d; + QNetworkManagerIp4ConfigPrivate *d; }; QT_END_NAMESPACE diff --git a/src/plugins/bearer/qnetworksession_impl.h b/src/plugins/bearer/qnetworksession_impl.h index 12893108dc..23828c885c 100644 --- a/src/plugins/bearer/qnetworksession_impl.h +++ b/src/plugins/bearer/qnetworksession_impl.h @@ -77,7 +77,7 @@ public: //called by QNetworkSession constructor and ensures //that the state is immediately updated (w/o actually opening - //a session). Also this function should take care of + //a session). Also this function should take care of //notification hooks to discover future state changes. void syncStateWithInterface(); diff --git a/src/plugins/imageformats/ico/qicohandler.cpp b/src/plugins/imageformats/ico/qicohandler.cpp index b1ef823068..a45c3875bc 100644 --- a/src/plugins/imageformats/ico/qicohandler.cpp +++ b/src/plugins/imageformats/ico/qicohandler.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -/*! +/*! \class QtIcoHandler \since 4.4 \brief The QtIcoHandler class provides support for the ICO image format. diff --git a/src/plugins/imageformats/ico/qicohandler.h b/src/plugins/imageformats/ico/qicohandler.h index c0439b9d11..65c0f5cf59 100644 --- a/src/plugins/imageformats/ico/qicohandler.h +++ b/src/plugins/imageformats/ico/qicohandler.h @@ -57,13 +57,13 @@ public: bool write(const QImage &image); QByteArray name() const; - + int imageCount() const; bool jumpToImage(int imageNumber); bool jumpToNextImage(); - + static bool canRead(QIODevice *device); - + bool supportsOption(ImageOption option) const; QVariant option(ImageOption option) const; diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm index ed4f8cd1fb..5c487b0bdd 100644 --- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm +++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm @@ -299,27 +299,27 @@ bool QCocoaEventDispatcher::hasPendingEvents() static bool IsMouseOrKeyEvent( NSEvent* event ) { bool result = false; - + switch( [event type] ) { - case NSLeftMouseDown: - case NSLeftMouseUp: - case NSRightMouseDown: - case NSRightMouseUp: + case NSLeftMouseDown: + case NSLeftMouseUp: + case NSRightMouseDown: + case NSRightMouseUp: case NSMouseMoved: // ?? - case NSLeftMouseDragged: + case NSLeftMouseDragged: case NSRightMouseDragged: - case NSMouseEntered: - case NSMouseExited: - case NSKeyDown: - case NSKeyUp: + case NSMouseEntered: + case NSMouseExited: + case NSKeyDown: + case NSKeyUp: case NSFlagsChanged: // key modifiers changed? case NSCursorUpdate: // ?? - case NSScrollWheel: - case NSTabletPoint: - case NSTabletProximity: - case NSOtherMouseDown: - case NSOtherMouseUp: + case NSScrollWheel: + case NSTabletPoint: + case NSTabletProximity: + case NSOtherMouseDown: + case NSOtherMouseUp: case NSOtherMouseDragged: #ifndef QT_NO_GESTURES case NSEventTypeGesture: // touch events @@ -639,7 +639,7 @@ static void setChildrenWorksWhenModal(QWindow *window, bool worksWhenModal) Q_UNUSED(worksWhenModal) // For NSPanels (but not NSWindows, sadly), we can set the flag - // worksWhenModal, so that they are active even when they are not modal. + // worksWhenModal, so that they are active even when they are not modal. /* ### not ported QList dialogs = window->findChildren(); @@ -680,7 +680,7 @@ void QCocoaEventDispatcherPrivate::cleanupModalSessions() // this to actually end the sessions for real (rather than at the // point they were marked as stopped), is that ending a session // when no other session runs below it on the stack will make cocoa - // drop some events on the floor. + // drop some events on the floor. QCocoaAutoReleasePool pool; int stackSize = cocoaModalSessionStack.size(); @@ -859,7 +859,7 @@ void QCocoaEventDispatcherPrivate::processPostedEvents() if (currentExecIsNSAppRun) { // The event dispatcher has been interrupted. But since // [NSApplication run] is running the event loop, we - // delayed stopping it until now (to let cocoa process + // delayed stopping it until now (to let cocoa process // pending cocoa events first). if (currentModalSessionCached) temporarilyStopAllModalSessions(); diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp index 1b11ef7f95..ff40c6a9ab 100644 --- a/src/plugins/platforms/xcb/qxcbcursor.cpp +++ b/src/plugins/platforms/xcb/qxcbcursor.cpp @@ -306,7 +306,7 @@ void QXcbCursor::changeCursor(QCursor *cursor, QWindow *widget) else // No X11 cursor control when there is no widget under the cursor return; - + xcb_cursor_t c = XCB_CURSOR_NONE; if (cursor) { if (cursor->shape() == Qt::BitmapCursor) { diff --git a/src/printsupport/doc/snippets/widgetprinting.cpp b/src/printsupport/doc/snippets/widgetprinting.cpp index 0204809988..3abef7a9a3 100644 --- a/src/printsupport/doc/snippets/widgetprinting.cpp +++ b/src/printsupport/doc/snippets/widgetprinting.cpp @@ -57,7 +57,7 @@ public: private slots: void print() { QPrinter printer(QPrinter::HighResolution); - + printer.setOutputFileName("test.pdf"); //! [0] diff --git a/src/printsupport/doc/src/qtprintsupport-index.qdoc b/src/printsupport/doc/src/qtprintsupport-index.qdoc index ea0d89aa34..dac915692e 100644 --- a/src/printsupport/doc/src/qtprintsupport-index.qdoc +++ b/src/printsupport/doc/src/qtprintsupport-index.qdoc @@ -40,12 +40,12 @@ generation facilities. \tableofcontents - + \section1 Classes Supporting Printing The following classes support the selecting and setting up of printers and printing output. - + \annotatedlist printing \section1 Paint Devices and Printing diff --git a/src/sql/doc/snippets/code/doc_src_sql-driver.cpp b/src/sql/doc/snippets/code/doc_src_sql-driver.cpp index 48eb324cb8..695e7cdce8 100644 --- a/src/sql/doc/snippets/code/doc_src_sql-driver.cpp +++ b/src/sql/doc/snippets/code/doc_src_sql-driver.cpp @@ -62,7 +62,7 @@ db.setDatabaseName("C:\\test.gdb"); //! [25] -// connect to database using the Latin-1 character set +// connect to database using the Latin-1 character set db.setConnectOptions("ISC_DPB_LC_CTYPE=Latin1"); db.open(); //! [25] diff --git a/src/sql/doc/src/qsqldatatype-table.qdoc b/src/sql/doc/src/qsqldatatype-table.qdoc index b278e045bb..8480b5d412 100644 --- a/src/sql/doc/src/qsqldatatype-table.qdoc +++ b/src/sql/doc/src/qsqldatatype-table.qdoc @@ -29,7 +29,7 @@ \page sql-types.html \title Data Types for Qt-supported Database Systems \brief Recommended data types for database systems - + \ingroup qt-sql \section1 Recommended Data Types for Qt-Supported Database Systems diff --git a/src/sql/doc/src/sql-driver.qdoc b/src/sql/doc/src/sql-driver.qdoc index 28db62537f..3de898c344 100644 --- a/src/sql/doc/src/sql-driver.qdoc +++ b/src/sql/doc/src/sql-driver.qdoc @@ -212,7 +212,7 @@ \li Open the DOS prompt, go to \c{C:\MySQL\MySQL51\lib\opt}, and run the following commands: - \list + \list \li \c{reimp -d libmysql.lib} \li \c{dlltool -k -d libmysql.def -l libmysql.a} \endlist @@ -227,7 +227,7 @@ \li Open the DOS prompt, go to \c{C:\Qt\4.6.2\src\plugins\sqldrivers\mysql} and run the - following command: + following command: \list \li \c{qmake "INCLUDEPATH+=C:/MySQL/MySQL51/include" "LIBS+=-L. mysql" mysql.pro} \endlist diff --git a/src/sql/doc/src/sql-programming.qdoc b/src/sql/doc/src/sql-programming.qdoc index d4089c8ab2..9b5e9318e0 100644 --- a/src/sql/doc/src/sql-programming.qdoc +++ b/src/sql/doc/src/sql-programming.qdoc @@ -64,7 +64,7 @@ \li \l{Using the SQL Model Classes} \li \l{Presenting Data in a Table View} \li \l{Creating Data-Aware Forms} - \endlist + \endlist \section1 Database Classes @@ -142,7 +142,7 @@ \l{QSqlDatabase::addDatabase()} {addDatabase()} specifies the type of database driver to use for the connection. The set of database drivers included with Qt are shown in the table of \l{SQL Database - Drivers#Supported Databases} {supported database drivers}. + Drivers#Supported Databases} {supported database drivers}. The connection in the snippet will be the \e{default} connection, because we don't pass the second argument to @@ -176,11 +176,11 @@ \page sql-sqlstatements.html \title Executing SQL Statements \ingroup qt-sql - + \previouspage Connecting to Databases \contentspage SQL Programming \nextpage Using the SQL Model Classes - + The QSqlQuery class provides an interface for executing SQL statements and navigating through the result set of a query. @@ -328,7 +328,7 @@ \page sql-model.html \title Using the SQL Model Classes \ingroup qt-sql - + \previouspage Executing SQL Statements \contentspage SQL Programming \nextpage Presenting Data in a Table View @@ -475,7 +475,7 @@ \page sql-presenting.html \title Presenting Data in a Table View \ingroup qt-sql - + \previouspage Using the SQL Model Classes \contentspage SQL Programming \nextpage Creating Data-Aware Forms @@ -580,7 +580,7 @@ \page sql-forms.html \title Creating Data-Aware Forms \ingroup qt-sql - + \previouspage Presenting Data in a Table View \contentspage SQL Programming diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp index 04ba450d46..a529d8c32d 100644 --- a/src/sql/drivers/mysql/qsql_mysql.cpp +++ b/src/sql/drivers/mysql/qsql_mysql.cpp @@ -166,7 +166,7 @@ class QMYSQLResultPrivate : public QObject { Q_OBJECT public: - QMYSQLResultPrivate(const QMYSQLDriver* dp, const QMYSQLResult* d) : driver(dp), result(0), q(d), + QMYSQLResultPrivate(const QMYSQLDriver* dp, const QMYSQLResult* d) : driver(dp), result(0), q(d), rowsAffected(0), hasBlobs(false) #if MYSQL_VERSION_ID >= 40108 , stmt(0), meta(0), inBinds(0), outBinds(0) @@ -788,7 +788,7 @@ bool QMYSQLResult::nextResult() { if(!d->driver) return false; -#if MYSQL_VERSION_ID >= 40100 +#if MYSQL_VERSION_ID >= 40100 setAt(-1); setActive(false); @@ -796,7 +796,7 @@ bool QMYSQLResult::nextResult() mysql_free_result(d->result); d->result = 0; setSelect(false); - + for (int i = 0; i < d->fields.count(); ++i) delete[] d->fields[i].outField; d->fields.clear(); @@ -1374,14 +1374,14 @@ QStringList QMYSQLDriver::tables(QSql::TableType type) const if(type & QSql::Tables) { QString sql = QLatin1String("select table_name from information_schema.tables where table_schema = '") + QLatin1String(d->mysql->db) + QLatin1String("' and table_type = 'BASE TABLE'"); q.exec(sql); - + while(q.next()) tl.append(q.value(0).toString()); } if(type & QSql::Views) { QString sql = QLatin1String("select table_name from information_schema.tables where table_schema = '") + QLatin1String(d->mysql->db) + QLatin1String("' and table_type = 'VIEW'"); q.exec(sql); - + while(q.next()) tl.append(q.value(0).toString()); } diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp index 8a6161d816..b0950110e0 100644 --- a/src/sql/drivers/oci/qsql_oci.cpp +++ b/src/sql/drivers/oci/qsql_oci.cpp @@ -100,7 +100,7 @@ enum { QOCIEncoding = 2000 }; // AL16UTF16 // Always set the OCI_ATTR_CHARSET_FORM to SQLCS_NCHAR is safe // because Oracle server will deal with the implicit Conversion // Between CHAR and NCHAR. -// see: http://download.oracle.com/docs/cd/A91202_01/901_doc/appdev.901/a89857/oci05bnd.htm#422705 +// see: http://download.oracle.com/docs/cd/A91202_01/901_doc/appdev.901/a89857/oci05bnd.htm#422705 static const ub1 qOraCharsetForm = SQLCS_NCHAR; #endif @@ -2211,7 +2211,7 @@ bool QOCIDriver::open(const QString & db, // Connect without tnsnames.ora if a hostname is given QString connectionString = db; if (!hostname.isEmpty()) - connectionString = + connectionString = QString::fromLatin1("(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=%1)(Port=%2))" "(CONNECT_DATA=(SID=%3)))").arg(hostname).arg((port > -1 ? port : 1521)).arg(db); diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp index 483c640b43..1af5d6274e 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.cpp +++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp @@ -68,7 +68,7 @@ Q_DECLARE_METATYPE(sqlite3_stmt*) QT_BEGIN_NAMESPACE -static QString _q_escapeIdentifier(const QString &identifier) +static QString _q_escapeIdentifier(const QString &identifier) { QString res = identifier; if(!identifier.isEmpty() && identifier.left(1) != QString(QLatin1Char('"')) && identifier.right(1) != QString(QLatin1Char('"')) ) { diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp index a85a120973..1a16b85470 100644 --- a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp +++ b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp @@ -195,7 +195,7 @@ void QSQLite2ResultPrivate::init(const char **cnames, int numCols) for (int i = 0; i < numCols; ++i) { const char* lastDot = strrchr(cnames[i], '.'); const char* fieldName = lastDot ? lastDot + 1 : cnames[i]; - + //remove quotations around the field name if any QString fieldStr = QString::fromLatin1(fieldName); QLatin1Char quote('\"'); @@ -244,7 +244,7 @@ bool QSQLite2ResultPrivate::fetchNext(QSqlCachedResult::ValueCache &values, int firstRow.clear(); firstRow.resize(colNum); } - + switch(res) { case SQLITE_ROW: // check to see if should fill out columns diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index cac2f1dad4..5b103f1bff 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -325,7 +325,7 @@ bool QSqlQuery::isNull(int field) const } /*! - + Executes the SQL in \a query. Returns true and sets the query state to \l{isActive()}{active} if the query was successful; otherwise returns false. The \a query string must use syntax appropriate for @@ -579,7 +579,7 @@ bool QSqlQuery::seek(int index, bool relative) } /*! - + Retrieves the next record in the result, if available, and positions the query on the retrieved record. Note that the result must be in the \l{isActive()}{active} state and isSelect() must return true @@ -783,7 +783,7 @@ bool QSqlQuery::isValid() const } /*! - + Returns true if the query is \e{active}. An active QSqlQuery is one that has been \l{QSqlQuery::exec()} {exec()'d} successfully but not yet finished with. When you are finished with an active query, you @@ -1143,7 +1143,7 @@ QString QSqlQuery::executedQuery() const behavior is undefined. For MySQL databases the row's auto-increment field will be returned. - + \note For this function to work in PSQL, the table table must contain OIDs, which may not have been created by default. Check the \c default_with_oids configuration variable to be sure. @@ -1199,7 +1199,7 @@ QSql::NumericalPrecisionPolicy QSqlQuery::numericalPrecisionPolicy() const call this function, but it may be helpful in order to free resources such as locks or cursors if you intend to re-use the query at a later time. - + Sets the query to inactive. Bound values retain their values. \sa prepare(), exec(), isActive() @@ -1216,7 +1216,7 @@ void QSqlQuery::finish() /*! \since 4.4 - + Discards the current result set and navigates to the next if available. Some databases are capable of returning multiple result sets for @@ -1224,7 +1224,7 @@ void QSqlQuery::finish() multiple statements). If multiple result sets are available after executing a query this function can be used to navigate to the next result set(s). - + If a new result set is available this function will return true. The query will be repositioned on an \e invalid record in the new result set and must be navigated to a valid record before data diff --git a/src/sql/models/qsqlquerymodel_p.h b/src/sql/models/qsqlquerymodel_p.h index a79b62cda1..9d7b71faec 100644 --- a/src/sql/models/qsqlquerymodel_p.h +++ b/src/sql/models/qsqlquerymodel_p.h @@ -69,7 +69,7 @@ class QSqlQueryModelPrivate: public QAbstractItemModelPrivate public: QSqlQueryModelPrivate() : atEnd(false), nestedResetLevel(0) {} ~QSqlQueryModelPrivate(); - + void prefetch(int); void initColOffsets(int size); int columnInQuery(int modelColumn) const; diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp index 7cc7de2347..fb45468d2e 100644 --- a/src/sql/models/qsqlrelationaltablemodel.cpp +++ b/src/sql/models/qsqlrelationaltablemodel.cpp @@ -241,7 +241,7 @@ bool QRelation::isValid() -QRelatedTableModel::QRelatedTableModel(QRelation *rel, QObject *parent, QSqlDatabase db) : +QRelatedTableModel::QRelatedTableModel(QRelation *rel, QObject *parent, QSqlDatabase db) : QSqlTableModel(parent, db), firstSelect(true), relation(rel) { } diff --git a/src/testlib/qsignalspy.qdoc b/src/testlib/qsignalspy.qdoc index e9f2cac531..77dcd99741 100644 --- a/src/testlib/qsignalspy.qdoc +++ b/src/testlib/qsignalspy.qdoc @@ -25,7 +25,7 @@ ** ****************************************************************************/ -/*! +/*! \class QSignalSpy \inmodule QtTest diff --git a/src/testlib/qtestevent.qdoc b/src/testlib/qtestevent.qdoc index bef4d1553a..0e7a7e7ac2 100644 --- a/src/testlib/qtestevent.qdoc +++ b/src/testlib/qtestevent.qdoc @@ -25,7 +25,7 @@ ** ****************************************************************************/ -/*! +/*! \class QTestEventList \inmodule QtTest diff --git a/src/tools/moc/utils.h b/src/tools/moc/utils.h index a2c65e4b2a..0dfd0999f4 100644 --- a/src/tools/moc/utils.h +++ b/src/tools/moc/utils.h @@ -112,10 +112,10 @@ inline const char *skipQuote(const char *data) } ++data; } - + if (*data) //Skip last quote ++data; - return data; + return data; } QT_END_NAMESPACE diff --git a/src/tools/rcc/main.cpp b/src/tools/rcc/main.cpp index b6d5965dae..c0ed7401bc 100644 --- a/src/tools/rcc/main.cpp +++ b/src/tools/rcc/main.cpp @@ -216,7 +216,7 @@ int runRcc(int argc, char *argv[]) } QFile errorDevice; errorDevice.open(stderr, QIODevice::WriteOnly|QIODevice::Text); - + if (library.verbose()) errorDevice.write("Qt resource compiler\n"); @@ -251,7 +251,7 @@ int runRcc(int argc, char *argv[]) out.write("\n"); } return 0; - } + } return library.output(out, errorDevice) ? 0 : 1; } diff --git a/src/tools/rcc/rcc.h b/src/tools/rcc/rcc.h index cd9828fc35..7e16fe038d 100644 --- a/src/tools/rcc/rcc.h +++ b/src/tools/rcc/rcc.h @@ -95,10 +95,10 @@ public: void setResourceRoot(const QString &root) { m_resourceRoot = root; } QString resourceRoot() const { return m_resourceRoot; } - + void setUseNameSpace(bool v) { m_useNameSpace = v; } bool useNameSpace() const { return m_useNameSpace; } - + QStringList failedResources() const { return m_failedResources; } private: diff --git a/src/tools/uic/cpp/cppwriteincludes.cpp b/src/tools/uic/cpp/cppwriteincludes.cpp index 44049409de..c473566e3a 100644 --- a/src/tools/uic/cpp/cppwriteincludes.cpp +++ b/src/tools/uic/cpp/cppwriteincludes.cpp @@ -88,8 +88,8 @@ WriteIncludes::WriteIncludes(Uic *uic) // and create a re-mapping of the old header "qclass.h" to it. Do not do this // for the "Phonon::Someclass" classes, however. const QString namespaceDelimiter = QLatin1String("::"); - const ClassInfoEntry *classLibEnd = qclass_lib_map + sizeof(qclass_lib_map)/sizeof(ClassInfoEntry); - for(const ClassInfoEntry *it = qclass_lib_map; it < classLibEnd; ++it) { + const ClassInfoEntry *classLibEnd = qclass_lib_map + sizeof(qclass_lib_map)/sizeof(ClassInfoEntry); + for (const ClassInfoEntry *it = qclass_lib_map; it < classLibEnd; ++it) { const QString klass = QLatin1String(it->klass); const QString module = QLatin1String(it->module); QLatin1String header = QLatin1String(it->header); @@ -173,7 +173,7 @@ void WriteIncludes::insertIncludeForClass(const QString &className, QString head if (!header.isEmpty()) break; - // Known class + // Known class const StringMap::const_iterator it = m_classToHeader.constFind(className); if (it != m_classToHeader.constEnd()) { header = it.value(); diff --git a/src/tools/uic/driver.cpp b/src/tools/uic/driver.cpp index 9fc1a649ef..5c99ffb208 100644 --- a/src/tools/uic/driver.cpp +++ b/src/tools/uic/driver.cpp @@ -304,7 +304,7 @@ bool Driver::uic(const QString &fileName, QTextStream *out) m_output = out; } else { #ifdef Q_OS_WIN - // As one might also redirect the output to a file on win, + // As one might also redirect the output to a file on win, // we should not create the textstream with QFile::Text flag. // The redirected file is opened in TextMode and this will // result in broken line endings as writing will replace \n again. diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp index d748e5482f..d5353c26d5 100644 --- a/src/widgets/accessible/qaccessiblewidget.cpp +++ b/src/widgets/accessible/qaccessiblewidget.cpp @@ -64,7 +64,7 @@ static QList childWidgets(const QWidget *widget) QList widgets; for (int i = 0; i < list.size(); ++i) { QWidget *w = qobject_cast(list.at(i)); - if (w && !w->isWindow() + if (w && !w->isWindow() && !qobject_cast(w) #if !defined(QT_NO_MENU) && !qobject_cast(w) diff --git a/src/widgets/dialogs/qprogressdialog.cpp b/src/widgets/dialogs/qprogressdialog.cpp index de86e2ed7c..b563066053 100644 --- a/src/widgets/dialogs/qprogressdialog.cpp +++ b/src/widgets/dialogs/qprogressdialog.cpp @@ -297,7 +297,7 @@ QProgressDialog::QProgressDialog(QWidget *parent, Qt::WindowFlags f) The \a labelText is the text used to remind the user what is progressing. - The \a cancelButtonText is the text to display on the cancel button. If + The \a cancelButtonText is the text to display on the cancel button. If QString() is passed then no cancel button is shown. The \a minimum and \a maximum is the number of steps in the operation for @@ -438,7 +438,7 @@ void QProgressDialog::setCancelButton(QPushButton *cancelButton) /*! Sets the cancel button's text to \a cancelButtonText. If the text - is set to QString() then it will cause the cancel button to be + is set to QString() then it will cause the cancel button to be hidden and deleted. \sa setCancelButton() diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp index c90cf732d0..95bbe1ee55 100644 --- a/src/widgets/dialogs/qwizard_win.cpp +++ b/src/widgets/dialogs/qwizard_win.cpp @@ -74,7 +74,7 @@ Q_DECLARE_METATYPE(QMargins) QT_BEGIN_NAMESPACE //DWM related -typedef struct { //MARGINS +typedef struct { //MARGINS int cxLeftWidth; // width of left border that retains its size int cxRightWidth; // width of right border that retains its size int cyTopHeight; // height of top border that retains its size @@ -695,14 +695,14 @@ bool QVistaHelper::drawTitleText(QPainter *painter, const QString &text, const Q dib.bmiHeader.biPlanes = 1; dib.bmiHeader.biBitCount = 32; dib.bmiHeader.biCompression = BI_RGB; - + bmp = CreateDIBSection(hdc, &dib, DIB_RGB_COLORS, NULL, NULL, 0); // Set up the DC HFONT hCaptionFont = getCaptionFont(hTheme); HBITMAP hOldBmp = (HBITMAP)SelectObject(dcMem, (HGDIOBJ) bmp); HFONT hOldFont = (HFONT)SelectObject(dcMem, (HGDIOBJ) hCaptionFont); - + // Draw the text! WIZ_DTTOPTS dto; dto.dwSize = sizeof(WIZ_DTTOPTS); @@ -711,7 +711,7 @@ bool QVistaHelper::drawTitleText(QPainter *painter, const QString &text, const Q dto.dwFlags = WIZ_DTT_COMPOSITED|WIZ_DTT_GLOWSIZE; dto.iGlowSize = glowSize(); - + pDrawThemeTextEx(hTheme, dcMem, 0, 0, (LPCWSTR)text.utf16(), -1, uFormat, &rctext, &dto ); BitBlt(hdc, rect.left(), rect.top(), rect.width(), rect.height(), dcMem, 0, 0, SRCCOPY); SelectObject(dcMem, (HGDIOBJ) hOldBmp); @@ -743,7 +743,7 @@ bool QVistaHelper::drawBlackRect(const QRect &rect, HDC hdc) dib.bmiHeader.biPlanes = 1; dib.bmiHeader.biBitCount = 32; dib.bmiHeader.biCompression = BI_RGB; - + bmp = CreateDIBSection(hdc, &dib, DIB_RGB_COLORS, NULL, NULL, 0); HBITMAP hOldBmp = (HBITMAP)SelectObject(dcMem, (HGDIOBJ) bmp); diff --git a/src/widgets/doc/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp b/src/widgets/doc/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp index b5d9708f99..0b6ae83ffb 100644 --- a/src/widgets/doc/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp +++ b/src/widgets/doc/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp @@ -57,7 +57,7 @@ mapper->addMapping(ageSpinBox, 1); //! [2] -QDataWidgetMapper *mapper = new QDataWidgetMapper(); +QDataWidgetMapper *mapper = new QDataWidgetMapper(); connect(myTableView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), mapper, SLOT(setCurrentModelIndex(QModelIndex))); //! [2] diff --git a/src/widgets/doc/snippets/customviewstyle.cpp b/src/widgets/doc/snippets/customviewstyle.cpp index 6bb022574d..cdb4ed1d77 100644 --- a/src/widgets/doc/snippets/customviewstyle.cpp +++ b/src/widgets/doc/snippets/customviewstyle.cpp @@ -61,7 +61,7 @@ void CustomViewStyle::drawPrimitive(PrimitiveElement element, const QStyleOption painter->restore(); break; - } + } default: QProxyStyle::drawPrimitive(element, option, painter, widget); } diff --git a/src/widgets/doc/snippets/javastyle.cpp b/src/widgets/doc/snippets/javastyle.cpp index 15cc53ce2d..37f02c7f13 100644 --- a/src/widgets/doc/snippets/javastyle.cpp +++ b/src/widgets/doc/snippets/javastyle.cpp @@ -103,7 +103,7 @@ QPalette JavaStyle::standardPalette() const palette.setBrush(QPalette::Inactive, QPalette::Highlight, QColor(184, 207, 229)); palette.setBrush(QPalette::Inactive, QPalette::HighlightedText, Qt::black); - + palette.setBrush(QPalette::Disabled, QPalette::Button, QColor(238, 238, 238)); palette.setBrush(QPalette::Disabled, QPalette::WindowText, @@ -968,7 +968,7 @@ void JavaStyle::drawControl(ControlElement control, const QStyleOption *option, painter->setBrush(QColor(200, 221, 242)); painter->drawPath(outerPath); painter->setPen(QColor(200, 221, 242)); - painter->drawRect(QRect(bottomLeft + adjustTabPoint( + painter->drawRect(QRect(bottomLeft + adjustTabPoint( QPoint(2, -3), tab->shape), bottomRight + adjustTabPoint( QPoint(-2, 0), tab->shape))); @@ -976,7 +976,7 @@ void JavaStyle::drawControl(ControlElement control, const QStyleOption *option, painter->setBrush(Qt::NoBrush); painter->drawPath(whitePath); - if (option->state & State_HasFocus) { + if (option->state & State_HasFocus) { painter->setPen(option->palette.color(QPalette::Mid)); painter->drawPath(innerPath); } @@ -1699,7 +1699,7 @@ void JavaStyle::drawComplexControl(ComplexControl control, menuOption.rect = menuRect; QStyleOptionToolButton label = *button; - int fw = 5; + int fw = 5; drawControl(CE_ToolButtonLabel, &label, painter, widget); if (button->subControls & SC_ToolButtonMenu) { @@ -1713,7 +1713,7 @@ void JavaStyle::drawComplexControl(ComplexControl control, drawPrimitive(PE_FrameFocusRect, &focusOption, painter, widget); } - + break; } case CC_ComboBox: { @@ -2113,7 +2113,7 @@ void JavaStyle::drawPrimitive(PrimitiveElement element, painter->drawLine(center, QPoint(center.x(), option->rect.bottom())); } - + if (option->state & State_Children) if (option->state & State_Open) painter->drawPixmap(pixmapRect.topLeft(), closedPixmap); @@ -2198,7 +2198,7 @@ void JavaStyle::drawPrimitive(PrimitiveElement element, painter->drawPoint(center.x() + 1 + add, center.y() + 1 + add); break; } - case PE_FrameDockWidget: { + case PE_FrameDockWidget: { drawPrimitive(PE_FrameWindow, option, painter, widget); break; } @@ -2226,7 +2226,7 @@ void JavaStyle::drawPrimitive(PrimitiveElement element, painter->drawPoint(offset + xySwitch(QPoint(add + 8, i), horizontal)); } - + break; } case PE_IndicatorToolBarSeparator: { @@ -2591,7 +2591,7 @@ int JavaStyle::styleHint(StyleHint hint, const QStyleOption *option, break; } case QStyle::SH_Menu_Scrollable: - ret = 1; + ret = 1; break; default: ret = QCommonStyle::styleHint(hint, option, widget, returnData); @@ -2719,7 +2719,7 @@ QSize JavaStyle::sizeFromContents(ContentsType type, int height = 0; if (!menuItem->icon.isNull()) { - width += 20; + width += 20; height += 20; } if (!menuItem->text.isEmpty()) { diff --git a/src/widgets/doc/snippets/layouts/layouts.cpp b/src/widgets/doc/snippets/layouts/layouts.cpp index c41f370070..9ec2349615 100644 --- a/src/widgets/doc/snippets/layouts/layouts.cpp +++ b/src/widgets/doc/snippets/layouts/layouts.cpp @@ -72,7 +72,7 @@ int main(int argc, char *argv[]) window->show(); //! [5] } - + { //! [6] QWidget *window = new QWidget; @@ -101,7 +101,7 @@ int main(int argc, char *argv[]) window->show(); //! [11] } - + { //! [12] QWidget *window = new QWidget; @@ -158,7 +158,7 @@ int main(int argc, char *argv[]) window->setWindowTitle("QFormLayout"); //! [23] window->show(); -//! [23] +//! [23] } { diff --git a/src/widgets/doc/snippets/mainwindowsnippet.cpp b/src/widgets/doc/snippets/mainwindowsnippet.cpp index 1ba58ca0e7..a9a9012d46 100644 --- a/src/widgets/doc/snippets/mainwindowsnippet.cpp +++ b/src/widgets/doc/snippets/mainwindowsnippet.cpp @@ -55,10 +55,10 @@ void MainWindow::createMenus() //setMenuWidget(new QPushButton("Hello")); QMenu *menu = new QMenu("File"); menu->addAction("Save &As"); - + QMenuBar *bar = new QMenuBar; bar->addMenu(menu); - + setMenuWidget(new QWidget()); } @@ -84,9 +84,9 @@ void MainWindow::createDockWidgets() //! [0] QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this); - dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | + dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); dockWidget->setWidget(dockWidgetContents); - addDockWidget(Qt::LeftDockWidgetArea, dockWidget); + addDockWidget(Qt::LeftDockWidgetArea, dockWidget); //! [0] } diff --git a/src/widgets/doc/snippets/mdiareasnippets.cpp b/src/widgets/doc/snippets/mdiareasnippets.cpp index 51555f8984..42902b4cd7 100644 --- a/src/widgets/doc/snippets/mdiareasnippets.cpp +++ b/src/widgets/doc/snippets/mdiareasnippets.cpp @@ -57,7 +57,7 @@ void addingSubWindowsExample() { QWidget *internalWidget1 = new QWidget; QWidget *internalWidget2 = new QWidget; - + //! [1] QMdiArea mdiArea; QMdiSubWindow *subWindow1 = new QMdiSubWindow; diff --git a/src/widgets/doc/snippets/myscrollarea.cpp b/src/widgets/doc/snippets/myscrollarea.cpp index 48434952c3..675acf89ef 100644 --- a/src/widgets/doc/snippets/myscrollarea.cpp +++ b/src/widgets/doc/snippets/myscrollarea.cpp @@ -121,7 +121,7 @@ int main(int argv, char **args) MyScrollArea area(&label); area.resize(300, 300); area.show(); - + area.setWidget(&label); return app.exec(); diff --git a/src/widgets/doc/snippets/qtablewidget-using/mainwindow.cpp b/src/widgets/doc/snippets/qtablewidget-using/mainwindow.cpp index d9f9853d9c..85b5baf56e 100644 --- a/src/widgets/doc/snippets/qtablewidget-using/mainwindow.cpp +++ b/src/widgets/doc/snippets/qtablewidget-using/mainwindow.cpp @@ -117,7 +117,7 @@ void MainWindow::averageItems() foreach (item, selected) { bool ok; double value = item->text().toDouble(&ok); - + if (ok && !item->text().isEmpty()) { total += value; number++; diff --git a/src/widgets/doc/snippets/simplemodel-use/main.cpp b/src/widgets/doc/snippets/simplemodel-use/main.cpp index ed435f9897..d291a02b6b 100644 --- a/src/widgets/doc/snippets/simplemodel-use/main.cpp +++ b/src/widgets/doc/snippets/simplemodel-use/main.cpp @@ -66,7 +66,7 @@ int main(int argc, char *argv[]) title->setBackgroundRole(QPalette::Base); title->setMargin(8); layout->addWidget(title); - + //! [0] QFileSystemModel *model = new QFileSystemModel; QModelIndex parentIndex = model->index(QDir::currentPath()); diff --git a/src/widgets/doc/snippets/stringlistmodel/model.cpp b/src/widgets/doc/snippets/stringlistmodel/model.cpp index 3bf91ec326..b1fa2abdf0 100644 --- a/src/widgets/doc/snippets/stringlistmodel/model.cpp +++ b/src/widgets/doc/snippets/stringlistmodel/model.cpp @@ -60,7 +60,7 @@ int StringListModel::rowCount(const QModelIndex &parent) const #ifdef 0 -// This represents a read-only version of data(), an early stage in the +// This represents a read-only version of data(), an early stage in the // development of the example leading to an editable StringListModel. /*! @@ -103,7 +103,7 @@ QVariant StringListModel::data(const QModelIndex &index, int role) const if (index.row() >= stringList.size()) return QVariant(); - + if (role == Qt::DisplayRole || role == Qt::EditRole) return stringList.at(index.row()); else diff --git a/src/widgets/doc/snippets/timeline/main.cpp b/src/widgets/doc/snippets/timeline/main.cpp index eb2e8a2c70..9e4d218a88 100644 --- a/src/widgets/doc/snippets/timeline/main.cpp +++ b/src/widgets/doc/snippets/timeline/main.cpp @@ -47,17 +47,17 @@ int main(int argv, char *args[]) //! [0] QGraphicsItem *ball = new QGraphicsEllipseItem(0, 0, 20, 20); - + QTimeLine *timer = new QTimeLine(5000); timer->setFrameRange(0, 100); - + QGraphicsItemAnimation *animation = new QGraphicsItemAnimation; animation->setItem(ball); animation->setTimeLine(timer); - for (int i = 0; i < 200; ++i) + for (int i = 0; i < 200; ++i) animation->setPosAt(i / 200.0, QPointF(i, i)); - + QGraphicsScene *scene = new QGraphicsScene(); scene->setSceneRect(0, 0, 250, 250); scene->addItem(ball); diff --git a/src/widgets/doc/src/model-view-programming.qdoc b/src/widgets/doc/src/model-view-programming.qdoc index a1c6a29066..6bcd0943a1 100644 --- a/src/widgets/doc/src/model-view-programming.qdoc +++ b/src/widgets/doc/src/model-view-programming.qdoc @@ -280,7 +280,7 @@ In the above example, we neglected to mention how to handle selections of items. This subject is covered in more detail in the section about - \l{Handling Selections in Item Views}. + \l{Handling Selections in Item Views}. \section1 Model classes diff --git a/src/widgets/doc/src/widgets-and-layouts/focus.qdoc b/src/widgets/doc/src/widgets-and-layouts/focus.qdoc index 5cb7775c32..427d5a24d6 100644 --- a/src/widgets/doc/src/widgets-and-layouts/focus.qdoc +++ b/src/widgets/doc/src/widgets-and-layouts/focus.qdoc @@ -34,7 +34,7 @@ \keyword keyboard focus Qt's widgets handle keyboard focus in the ways that have become - customary in GUIs. + customary in GUIs. The basic issue is that the user's key strokes can be directed at any of several windows on the screen, and any of several widgets inside @@ -47,7 +47,7 @@ \section1 Focus Motion The customs which have evolved for directing keyboard focus to a - particular widget are these: + particular widget are these: \list 1 @@ -89,7 +89,7 @@ For example, in a data entry dialog, there might be a field that is only necessary in one per cent of all cases. In such a dialog, \uicontrol Tab could skip this field, and the dialog could use one of - these mechanisms: + these mechanisms: \list 1 diff --git a/src/widgets/doc/src/widgets-and-layouts/layout.qdoc b/src/widgets/doc/src/widgets-and-layouts/layout.qdoc index b658fc809c..f74da2fa0a 100644 --- a/src/widgets/doc/src/widgets-and-layouts/layout.qdoc +++ b/src/widgets/doc/src/widgets-and-layouts/layout.qdoc @@ -70,7 +70,7 @@ \endlist \section1 Qt's Layout Classes - + Qt's layout classes were designed for hand-written C++ code, allowing measurements to be specified in pixels for simplicity, so they are easy to understand and use. The code generated for forms created using Qt Designer also @@ -136,11 +136,11 @@ the fifth argument to QGridLayout::addWidget(). QFormLayout will add two widgets on a row, commonly a QLabel and a QLineEdit - to create forms. Adding a QLabel and a QLineEdit on the same row will set - the QLineEdit as the QLabel's buddy. The following code will use the + to create forms. Adding a QLabel and a QLineEdit on the same row will set + the QLineEdit as the QLabel's buddy. The following code will use the QFormLayout to place three \l{QPushButton}{QPushButtons} and a corresponding - QLineEdit on a row. - + QLineEdit on a row. + \snippet layouts/layouts.cpp 18 \snippet layouts/layouts.cpp 19 \snippet layouts/layouts.cpp 20 @@ -327,7 +327,7 @@ Then we define two functions that iterate over the layout: \c{itemAt()} and \c{takeAt()}. These functions are used internally by the layout system to handle deletion of widgets. They are also available for application - programmers. + programmers. \c{itemAt()} returns the item at the given index. \c{takeAt()} removes the item at the given index, and returns it. In this case we use the list index @@ -348,7 +348,7 @@ \snippet code/doc_src_layout.cpp 4 The layout takes over responsibility of the items added. Since QLayoutItem - does not inherit QObject, we must delete the items manually. In the + does not inherit QObject, we must delete the items manually. In the destructor, we remove each item from the list using \c{takeAt()}, and then delete it. diff --git a/src/widgets/doc/src/windows-and-dialogs/dialogs.qdoc b/src/widgets/doc/src/windows-and-dialogs/dialogs.qdoc index 5aae7fb02b..1f1d8154da 100644 --- a/src/widgets/doc/src/windows-and-dialogs/dialogs.qdoc +++ b/src/widgets/doc/src/windows-and-dialogs/dialogs.qdoc @@ -29,7 +29,7 @@ \group standard-dialogs \ingroup qt-gui-concepts \title Standard Dialogs - \brief A list of Qt classes for implementing standard dialogs. + \brief A list of Qt classes for implementing standard dialogs. */ /*! @@ -37,7 +37,7 @@ \title Dialog Windows \ingroup qt-gui-concepts \brief An overview over dialog windows. - + \previouspage Application Main Window \contentspage Application Windows and Dialogs \nextpage Desktop Integration diff --git a/src/widgets/doc/src/windows-and-dialogs/mainwindow.qdoc b/src/widgets/doc/src/windows-and-dialogs/mainwindow.qdoc index 1d7d9d1b4c..9315acb85f 100644 --- a/src/widgets/doc/src/windows-and-dialogs/mainwindow.qdoc +++ b/src/widgets/doc/src/windows-and-dialogs/mainwindow.qdoc @@ -49,7 +49,7 @@ be listed in the desktop's task bar. This is usually only wanted for one window in the application, the \e{primary window}. - In addition, a QWidget that has a parent can become a window by setting the + In addition, a QWidget that has a parent can become a window by setting the Qt::Window flag. Depending on the window management system such \e{secondary windows} are usually stacked on top of their respective parent window, and not have a task bar entry of their own. diff --git a/src/widgets/graphicsview/qgraphicslayout_p.cpp b/src/widgets/graphicsview/qgraphicslayout_p.cpp index 8e3d4a62f8..b8955aa23f 100644 --- a/src/widgets/graphicsview/qgraphicslayout_p.cpp +++ b/src/widgets/graphicsview/qgraphicslayout_p.cpp @@ -187,7 +187,7 @@ void QGraphicsLayoutPrivate::activateRecursive(QGraphicsLayoutItem *item) layout->invalidate(); // ### LOOKS SUSPICIOUSLY WRONG!!??? } } - + for (int i = layout->count() - 1; i >= 0; --i) { QGraphicsLayoutItem *childItem = layout->itemAt(i); if (childItem) diff --git a/src/widgets/kernel/qboxlayout.cpp b/src/widgets/kernel/qboxlayout.cpp index c3661f5c50..3fed14cd4f 100644 --- a/src/widgets/kernel/qboxlayout.cpp +++ b/src/widgets/kernel/qboxlayout.cpp @@ -248,7 +248,7 @@ void QBoxLayoutPrivate::effectiveMargins(int *left, int *top, int *right, int *b if (right) r = qMax(r, wr.right() - lir.right()); } - } + } } #endif if (left) @@ -509,7 +509,7 @@ void QBoxLayoutPrivate::calcHfw(int w) \list \li setContentsMargins() sets the width of the outer border on - each side of the widget. This is the width of the reserved space + each side of the widget. This is the width of the reserved space along each of the QBoxLayout's four sides. \li setSpacing() sets the width between neighboring boxes. (You can use addSpacing() to get more space at a particular spot.) @@ -595,7 +595,7 @@ int QBoxLayout::spacing() const /*! Reimplements QLayout::setSpacing(). Sets the spacing - property to \a spacing. + property to \a spacing. \sa QLayout::setSpacing(), spacing() */ diff --git a/src/widgets/kernel/qdesktopwidget.qdoc b/src/widgets/kernel/qdesktopwidget.qdoc index 15ddd3b32f..789a812afb 100644 --- a/src/widgets/kernel/qdesktopwidget.qdoc +++ b/src/widgets/kernel/qdesktopwidget.qdoc @@ -120,9 +120,9 @@ /*! \fn int QDesktopWidget::numScreens() const - + Returns the number of available screens. - + \obsolete This function is deprecated. Use screenCount instead. @@ -239,7 +239,7 @@ \brief the number of screens currently available on the system. \since 4.6 - + \sa screenCountChanged() */ @@ -265,6 +265,6 @@ \since 4.6 This signal is emitted when the number of screens changes to \a newCount. - + \sa screenCount */ diff --git a/src/widgets/kernel/qgesture.cpp b/src/widgets/kernel/qgesture.cpp index 24ae437b48..2767bd9924 100644 --- a/src/widgets/kernel/qgesture.cpp +++ b/src/widgets/kernel/qgesture.cpp @@ -367,7 +367,7 @@ void QPanGesture::setAcceleration(qreal value) /*! \enum QPinchGesture::ChangeFlag - + This enum describes the changes that can occur to the properties of the gesture object. diff --git a/src/widgets/kernel/qlayout.cpp b/src/widgets/kernel/qlayout.cpp index 493a04d2ba..c32eddd148 100644 --- a/src/widgets/kernel/qlayout.cpp +++ b/src/widgets/kernel/qlayout.cpp @@ -1270,7 +1270,7 @@ QRect QLayout::alignmentRect(const QRect &r) const Removes the widget \a widget from the layout. After this call, it is the caller's responsibility to give the widget a reasonable geometry or to put the widget back into a layout. - + \b{Note:} The ownership of \a widget remains the same as when it was added. diff --git a/src/widgets/kernel/qlayoutitem.cpp b/src/widgets/kernel/qlayoutitem.cpp index 31276d015d..6524d8f2b8 100644 --- a/src/widgets/kernel/qlayoutitem.cpp +++ b/src/widgets/kernel/qlayoutitem.cpp @@ -150,7 +150,7 @@ QSizePolicy::operator QVariant() const \brief The QWidgetItem class is a layout item that represents a widget. \inmodule QtWidgets - + Normally, you don't need to use this class directly. Qt's built-in layout managers provide the following functions for manipulating widgets in layouts: @@ -446,20 +446,20 @@ void QWidgetItem::setGeometry(const QRect &rect) QRect r = !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect) ? fromLayoutItemRect(wid->d_func(), rect) : rect; - const QSize widgetRectSurplus = r.size() - rect.size(); - - /* - For historical reasons, this code is done using widget rect - coordinates, not layout item rect coordinates. However, - QWidgetItem's sizeHint(), maximumSize(), and heightForWidth() - all work in terms of layout item rect coordinates, so we have to - add or subtract widgetRectSurplus here and there. The code could - be much simpler if we did everything using layout item rect - coordinates and did the conversion right before the call to - QWidget::setGeometry(). - */ - - QSize s = r.size().boundedTo(maximumSize() + widgetRectSurplus); + const QSize widgetRectSurplus = r.size() - rect.size(); + + /* + For historical reasons, this code is done using widget rect + coordinates, not layout item rect coordinates. However, + QWidgetItem's sizeHint(), maximumSize(), and heightForWidth() + all work in terms of layout item rect coordinates, so we have to + add or subtract widgetRectSurplus here and there. The code could + be much simpler if we did everything using layout item rect + coordinates and did the conversion right before the call to + QWidget::setGeometry(). + */ + + QSize s = r.size().boundedTo(maximumSize() + widgetRectSurplus); int x = r.x(); int y = r.y(); if (align & (Qt::AlignHorizontal_Mask | Qt::AlignVertical_Mask)) { @@ -474,8 +474,8 @@ void QWidgetItem::setGeometry(const QRect &rect) s.setWidth(qMin(s.width(), pref.width())); if (align & Qt::AlignVertical_Mask) { if (hasHeightForWidth()) - s.setHeight(qMin(s.height(), - heightForWidth(s.width() - widgetRectSurplus.width()) + s.setHeight(qMin(s.height(), + heightForWidth(s.width() - widgetRectSurplus.width()) + widgetRectSurplus.height())); else s.setHeight(qMin(s.height(), pref.height())); diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 7840cddd5d..39cbe1da3f 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -678,7 +678,7 @@ void QWidget::setAutoFillBackground(bool enabled) (to move the keyboard focus), and passes on most of the other events to one of the more specialized handlers above. - Events and the mechanism used to deliver them are covered in + Events and the mechanism used to deliver them are covered in \l{The Event System}. \section1 Groups of Functions and Properties @@ -9284,7 +9284,7 @@ int QWidget::heightForWidth(int w) const \since 5.0 Returns true if the widget's preferred height depends on its width; otherwise returns false. -*/ +*/ bool QWidget::hasHeightForWidth() const { Q_D(const QWidget); diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp index b65ce29b84..43a49e52f9 100644 --- a/src/widgets/kernel/qwidget_qpa.cpp +++ b/src/widgets/kernel/qwidget_qpa.cpp @@ -1033,6 +1033,6 @@ void qt_qpa_set_cursor(QWidget *w, bool force) unsetCursor(nativeParent); } } -#endif //QT_NO_CURSOR +#endif //QT_NO_CURSOR QT_END_NAMESPACE diff --git a/src/widgets/kernel/qwidgetaction.h b/src/widgets/kernel/qwidgetaction.h index 3956445bc8..93c0898197 100644 --- a/src/widgets/kernel/qwidgetaction.h +++ b/src/widgets/kernel/qwidgetaction.h @@ -59,13 +59,13 @@ class Q_WIDGETS_EXPORT QWidgetAction : public QAction public: explicit QWidgetAction(QObject *parent); virtual ~QWidgetAction(); - + void setDefaultWidget(QWidget *w); QWidget *defaultWidget() const; QWidget *requestWidget(QWidget *parent); void releaseWidget(QWidget *widget); - + protected: virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); diff --git a/src/widgets/kernel/qwidgetaction_p.h b/src/widgets/kernel/qwidgetaction_p.h index a95fe07534..2fc5dcd86c 100644 --- a/src/widgets/kernel/qwidgetaction_p.h +++ b/src/widgets/kernel/qwidgetaction_p.h @@ -66,7 +66,7 @@ public: QList createdWidgets; uint defaultWidgetInUse : 1; uint autoCreated : 1; // created by QToolBar::addWidget and the like - + inline void _q_widgetDestroyed(QObject *o) { createdWidgets.removeAll(static_cast(o)); } diff --git a/src/widgets/statemachine/qguistatemachine.cpp b/src/widgets/statemachine/qguistatemachine.cpp index e574dd7406..1c2a4b373e 100644 --- a/src/widgets/statemachine/qguistatemachine.cpp +++ b/src/widgets/statemachine/qguistatemachine.cpp @@ -138,7 +138,7 @@ static QEvent *cloneEvent(QEvent *e) return new QEvent(*e); case QEvent::DeferredDelete: return new QEvent(*e); -#ifndef QT_NO_DRAGANDDROP +#ifndef QT_NO_DRAGANDDROP case QEvent::DragEnter: return new QDragEnterEvent(*static_cast(e)); case QEvent::DragMove: diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 269b887909..e2c5bab47f 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -3003,7 +3003,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt, case SE_ToolBarHandle: if (const QStyleOptionToolBar *tbopt = qstyleoption_cast(opt)) { if (tbopt->features & QStyleOptionToolBar::Movable) { - ///we need to access the widget here because the style option doesn't + ///we need to access the widget here because the style option doesn't //have all the information we need (ie. the layout's margin) const QToolBar *tb = qobject_cast(widget); const int margin = tb && tb->layout() ? tb->layout()->margin() : 2; diff --git a/src/widgets/styles/qcommonstyle.h b/src/widgets/styles/qcommonstyle.h index d11f57dac0..01eca4664f 100644 --- a/src/widgets/styles/qcommonstyle.h +++ b/src/widgets/styles/qcommonstyle.h @@ -51,7 +51,7 @@ class QCommonStylePrivate; class Q_WIDGETS_EXPORT QCommonStyle: public QStyle { Q_OBJECT - + public: QCommonStyle(); ~QCommonStyle(); diff --git a/src/widgets/styles/qdrawutil.cpp b/src/widgets/styles/qdrawutil.cpp index 0f73a16bcb..1c154650c8 100644 --- a/src/widgets/styles/qdrawutil.cpp +++ b/src/widgets/styles/qdrawutil.cpp @@ -748,10 +748,10 @@ void qDrawPlainRect(QPainter *p, const QRect &r, const QColor &c, \since 4.6 \inmodule QtWidgets - + \brief The QTileRules class provides the rules used to draw a pixmap or image split into nine segments. - + Spliiting is similar to \l{http://www.w3.org/TR/css3-background/}{CSS3 border-images}. \sa Qt::TileRule, QMargins diff --git a/src/widgets/styles/qgtkstyle.cpp b/src/widgets/styles/qgtkstyle.cpp index 9ebab8d52d..8c9fc93288 100644 --- a/src/widgets/styles/qgtkstyle.cpp +++ b/src/widgets/styles/qgtkstyle.cpp @@ -2121,7 +2121,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom label.state = bflags; GtkWidget *gtkButton = d->gtkWidget("GtkToolButton.GtkButton"); QPalette pal = toolbutton->palette; - if (option->state & State_Enabled && + if (option->state & State_Enabled && option->state & State_MouseOver && !(widget && widget->testAttribute(Qt::WA_SetPalette))) { GdkColor gdkText = d->gtk_widget_get_style(gtkButton)->fg[GTK_STATE_PRELIGHT]; QColor textColor = QColor(gdkText.red>>8, gdkText.green>>8, gdkText.blue>>8); @@ -2971,7 +2971,7 @@ void QGtkStyle::drawControl(ControlElement element, if (option->state & State_Sunken) shadow = GTK_SHADOW_IN; - + gtkPainter->paintBox(gtkTreeHeader, "button", option->rect.adjusted(-1, 0, 0, 0), state, shadow, d->gtk_widget_get_style(gtkTreeHeader)); } diff --git a/src/widgets/styles/qmacstyle.qdoc b/src/widgets/styles/qmacstyle.qdoc index 9f5299032f..9ee464667a 100644 --- a/src/widgets/styles/qmacstyle.qdoc +++ b/src/widgets/styles/qmacstyle.qdoc @@ -104,43 +104,43 @@ */ /*! \fn void QMacStyle::polish(QPalette &pal) - \reimp + \reimp */ /*! \fn void QMacStyle::polish(QApplication *) - \reimp + \reimp */ /*! \fn void QMacStyle::unpolish(QApplication *) - \reimp + \reimp */ /*! \fn void QMacStyle::polish(QWidget* w) - \reimp + \reimp */ /*! \fn void QMacStyle::unpolish(QWidget* w) - \reimp + \reimp */ /*! \fn int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QWidget *widget) const - \reimp + \reimp */ /*! \fn QPalette QMacStyle::standardPalette() const - \reimp + \reimp */ /*! \fn int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w, QStyleHintReturn *hret) const - \reimp + \reimp */ /*! \fn QPixmap QMacStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const - \reimp + \reimp */ /*! \fn QPixmap QMacStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget) const - \reimp + \reimp */ /*! @@ -199,41 +199,41 @@ /*! \fn void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const - \reimp + \reimp */ /*! \fn void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter *p, const QWidget *w) const - \reimp + \reimp */ /*! \fn QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt, const QWidget *widget) const - \reimp + \reimp */ /*! \fn void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const - \reimp + \reimp */ /*! \fn QStyle::SubControl QMacStyle::hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget) const - \reimp + \reimp */ /*! \fn QRect QMacStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const - \reimp + \reimp */ /*! \fn QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &csz, const QWidget *widget) const - \reimp + \reimp */ /*! \fn void QMacStyle::drawItemText(QPainter *p, const QRect &r, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole) const - \reimp + \reimp */ /*! \fn bool QMacStyle::event(QEvent *e) - \reimp + \reimp */ /*! \fn QIcon QMacStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption *opt, const QWidget *widget) const diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index 9a8d768e2a..18eb5e6c44 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -41,7 +41,7 @@ /* Note: The qdoc comments for QMacStyle are contained in - .../doc/src/qstyles.qdoc. + .../doc/src/qstyles.qdoc. */ #include @@ -3402,7 +3402,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter } else { pr.setHeight(pixmap.size().height() + 6); cr.adjust(0, pr.bottom(), 0, -3); - } + } alignment |= Qt::AlignCenter; } else { pr.setWidth(pixmap.width() + 8); @@ -5292,7 +5292,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex else x += br.width() / 2 - p->fontMetrics().width(titlebar->text) / 2; if (iw) - p->drawPixmap(x - iw, y, + p->drawPixmap(x - iw, y, titlebar->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize), QIcon::Normal)); drawItemText(p, br, Qt::AlignCenter, opt->palette, tds == kThemeStateActive, titlebar->text, QPalette::Text); @@ -6002,12 +6002,12 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, ------------------------------ <- top of stack widget - To summarize: - * 2 is the distance between the pane and the contentsRect + To summarize: + * 2 is the distance between the pane and the contentsRect * The 14 and the 1's are the distance from the contentsRect to the stack widget. (same value as used in SE_TabWidgetTabContents) * overlap is how much the pane should overlap the tab bar - */ + */ // then add the size between the stackwidget and the "contentsRect" if (const QStyleOptionTabWidgetFrame *twf diff --git a/src/widgets/styles/qproxystyle.cpp b/src/widgets/styles/qproxystyle.cpp index 911223cae2..d89390cb01 100644 --- a/src/widgets/styles/qproxystyle.cpp +++ b/src/widgets/styles/qproxystyle.cpp @@ -59,7 +59,7 @@ QT_BEGIN_NAMESPACE \since 4.6 \inmodule QtWidgets - + A QProxyStyle wraps a QStyle (usually the default system style) for the purpose of dynamically overriding painting or other specific style behavior. diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp index 1d4e4bd570..c3f22994ca 100644 --- a/src/widgets/styles/qstyle.cpp +++ b/src/widgets/styles/qstyle.cpp @@ -137,7 +137,7 @@ static int unpackControlTypes(QSizePolicy::ControlTypes controls, QSizePolicy::C state. \endtable - + For more information about widget styling and appearance, see the \l{Styles and Style Aware Widgets}. */ diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp index eff6837c5a..6eb81e8fb8 100644 --- a/src/widgets/styles/qstyleoption.cpp +++ b/src/widgets/styles/qstyleoption.cpp @@ -374,7 +374,7 @@ QStyleOption &QStyleOption::operator=(const QStyleOption &other) parameters for drawing a focus rectangle with QStyle. \inmodule QtWidgets - + For performance reasons, the access to the member variables is direct (i.e., using the \c . or \c -> operator). This low-level feel makes the structures straightforward to use and emphasizes that @@ -458,7 +458,7 @@ QStyleOptionFocusRect::QStyleOptionFocusRect(int version) parameters for drawing a frame. \inmodule QtWidgets - + QStyleOptionFrame is used for drawing several built-in Qt widgets, including QFrame, QGroupBox, QLineEdit, and QMenu. @@ -738,7 +738,7 @@ QStyleOptionGroupBox::QStyleOptionGroupBox(int version) parameters for drawing a header. \inmodule QtWidgets - + QStyleOptionHeader contains all the information that QStyle functions need to draw the item views' header pane, header sort arrow, and header label. @@ -925,7 +925,7 @@ QStyleOptionHeader::QStyleOptionHeader(int version) parameters for drawing buttons. \inmodule QtWidgets - + QStyleOptionButton contains all the information that QStyle functions need to draw graphical elements like QPushButton, QCheckBox, and QRadioButton. @@ -1237,7 +1237,7 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version) parameters for drawing a tab bar. \inmodule QtWidgets - + The QStyleOptionTab class is used for drawing several built-in Qt widgets including \l QTabBar and the panel for \l QTabWidget. @@ -1662,7 +1662,7 @@ QStyleOptionProgressBar::QStyleOptionProgressBar(int version) parameter necessary for drawing a menu item. \inmodule QtWidgets - + QStyleOptionMenuItem contains all the information that QStyle functions need to draw the menu items from \l QMenu. It is also used for drawing other menu-related widgets. @@ -1862,7 +1862,7 @@ QStyleOptionMenuItem::QStyleOptionMenuItem(int version) common to all complex controls. \inmodule QtWidgets - + This class is not used on its own. Instead it is used to derive other complex control options, for example QStyleOptionSlider and QStyleOptionSpinBox. @@ -1953,7 +1953,7 @@ QStyleOptionComplex::QStyleOptionComplex(int version, int type) parameters needed for drawing a slider. \inmodule QtWidgets - + QStyleOptionSlider contains all the information that QStyle functions need to draw QSlider and QScrollBar. @@ -2152,7 +2152,7 @@ QStyleOptionSlider::QStyleOptionSlider(int version) parameters necessary for drawing a spin box. \inmodule QtWidgets - + QStyleOptionSpinBox contains all the information that QStyle functions need to draw QSpinBox and QDateTimeEdit. @@ -2257,7 +2257,7 @@ QStyleOptionSpinBox::QStyleOptionSpinBox(int version) parameters for drawing a dock widget. \inmodule QtWidgets - + QStyleOptionDockWidget contains all the information that QStyle functions need to draw graphical elements like QDockWidget. diff --git a/src/widgets/styles/qwindowsmobilestyle.cpp b/src/widgets/styles/qwindowsmobilestyle.cpp index 2b30bf5a2d..55c9495b1a 100644 --- a/src/widgets/styles/qwindowsmobilestyle.cpp +++ b/src/widgets/styles/qwindowsmobilestyle.cpp @@ -90,7 +90,7 @@ static const int windowsMobileExclusiveIndicatorSize = 14; static const int windowsMobileSliderThickness = 6; static const int windowsMobileIconSize = 16; static const int PE_IndicatorArrowUpBig = 0xf000101; -static const int PE_IndicatorArrowDownBig = 0xf000102; +static const int PE_IndicatorArrowDownBig = 0xf000102; static const int PE_IndicatorArrowLeftBig = 0xf000103; static const int PE_IndicatorArrowRightBig = 0xf000104; @@ -241,7 +241,7 @@ static const char *const radiochecked_xpm[] = { static const char * const radiochecked_low_xpm[] = { "9 9 2 1", " c None", - ". c #000000", + ". c #000000", " ... ", " ....... ", " ....... ", @@ -3904,39 +3904,39 @@ QColor fromHsl(QColor c) qreal ca[3] = {0, 0, 0}; if (s == 0 || h == 1) { - // achromatic case + // achromatic case ca[0] = ca[1] = ca[2] = l; - } else { - // chromatic case - qreal temp2; - if (l < qreal(0.5)) - temp2 = l * (qreal(1.0) + s); - else - temp2 = l + s - (l * s); - - const qreal temp1 = (qreal(2.0) * l) - temp2; - qreal temp3[3] = { h + (qreal(1.0) / qreal(3.0)), - h, - h - (qreal(1.0) / qreal(3.0)) }; - - for (int i = 0; i != 3; ++i) { - if (temp3[i] < qreal(0.0)) - temp3[i] += qreal(1.0); - else if (temp3[i] > qreal(1.0)) + } else { + // chromatic case + qreal temp2; + if (l < qreal(0.5)) + temp2 = l * (qreal(1.0) + s); + else + temp2 = l + s - (l * s); + + const qreal temp1 = (qreal(2.0) * l) - temp2; + qreal temp3[3] = { h + (qreal(1.0) / qreal(3.0)), + h, + h - (qreal(1.0) / qreal(3.0)) }; + + for (int i = 0; i != 3; ++i) { + if (temp3[i] < qreal(0.0)) + temp3[i] += qreal(1.0); + else if (temp3[i] > qreal(1.0)) temp3[i] -= qreal(1.0); const qreal sixtemp3 = temp3[i] * qreal(6.0); - if (sixtemp3 < qreal(1.0)) - ca[i] = ((temp1 + (temp2 - temp1) * sixtemp3)); - else if ((temp3[i] * qreal(2.0)) < qreal(1.0)) - ca[i] = (temp2); - else if ((temp3[i] * qreal(3.0)) < qreal(2.0)) + if (sixtemp3 < qreal(1.0)) + ca[i] = ((temp1 + (temp2 - temp1) * sixtemp3)); + else if ((temp3[i] * qreal(2.0)) < qreal(1.0)) + ca[i] = (temp2); + else if ((temp3[i] * qreal(3.0)) < qreal(2.0)) ca[i] = temp1 + (temp2 -temp1) * (qreal(2.0) /qreal(3.0) - temp3[i]) * qreal(6.0); else ca[i] = temp1; } } - + return QColor::fromRgbF(ca[0], ca[1], ca[2]); } @@ -3945,7 +3945,7 @@ QColor fromHsl(QColor c) QColor toHsl(QColor c) { - QColor color; + QColor color; qreal h; qreal s; qreal l; @@ -3953,36 +3953,36 @@ QColor toHsl(QColor c) const qreal r = c.redF(); const qreal g = c.greenF(); const qreal b = c.blueF(); - const qreal max = Q_MAX_3(r, g, b); - const qreal min = Q_MIN_3(r, g, b); - const qreal delta = max - min; - const qreal delta2 = max + min; - const qreal lightness = qreal(0.5) * delta2; + const qreal max = Q_MAX_3(r, g, b); + const qreal min = Q_MIN_3(r, g, b); + const qreal delta = max - min; + const qreal delta2 = max + min; + const qreal lightness = qreal(0.5) * delta2; l = (lightness); - if (qFuzzyIsNull(delta)) { - // achromatic case, hue is undefined + if (qFuzzyIsNull(delta)) { + // achromatic case, hue is undefined h = 0; - s = 0; + s = 0; } else { - // chromatic case - qreal hue = 0; - if (lightness < qreal(0.5)) - s = ((delta / delta2)); - else - s = ((delta / (qreal(2.0) - delta2))); - if (qFuzzyCompare(r, max)) { - hue = ((g - b) /delta); - } else if (qFuzzyCompare(g, max)) { - hue = (2.0 + (b - r) / delta); - } else if (qFuzzyCompare(b, max)) { - hue = (4.0 + (r - g) / delta); - } else { - Q_ASSERT_X(false, "QColor::toHsv", "internal error"); + // chromatic case + qreal hue = 0; + if (lightness < qreal(0.5)) + s = ((delta / delta2)); + else + s = ((delta / (qreal(2.0) - delta2))); + if (qFuzzyCompare(r, max)) { + hue = ((g - b) /delta); + } else if (qFuzzyCompare(g, max)) { + hue = (2.0 + (b - r) / delta); + } else if (qFuzzyCompare(b, max)) { + hue = (4.0 + (r - g) / delta); + } else { + Q_ASSERT_X(false, "QColor::toHsv", "internal error"); } - hue *= 60.0; - if (hue < 0.0) - hue += 360.0; - h = (hue * 100); + hue *= 60.0; + if (hue < 0.0) + hue += 360.0; + h = (hue * 100); } h = h / 36000; @@ -4083,7 +4083,7 @@ void QWindowsMobileStylePrivate::tintListViewHighlight(QColor color) imageListViewHighlightMiddle = QImage(listviewhighmiddle_xpm); tintImage(&imageListViewHighlightMiddle, color, qreal(0.0)); - + int height = imageListViewHighlightMiddle.height(); if (!doubleControls) { height = height / 2; @@ -4218,7 +4218,7 @@ void QWindowsMobileStylePrivate::drawPanelItemViewSelected(QPainter *painter, co QRect r; if (rect.isValid()) r = rect; - else + else r = option->rect; tintImagesHigh(option->palette.highlight().color()); @@ -4892,7 +4892,7 @@ void QWindowsMobileStyle::drawPrimitive(PrimitiveElement element, const QStyleOp } else { QRect r = QRect(option->rect.x(), option->rect.y(), windowsMobileitemViewCheckBoxSize, windowsMobileitemViewCheckBoxSize); qDrawPlainRect(painter, r, option->palette.shadow().color(), 1); - } + } if (option->state & State_Enabled) d->imageChecked.setColor(1, option->palette.shadow().color().rgba()); else @@ -5129,7 +5129,7 @@ void QWindowsMobileStyle::drawPrimitive(PrimitiveElement element, const QStyleOp image.setColor(1, color.rgba()); painter->drawImage(option->rect.x() + xoffset, option->rect.y() + yoffset, image); } - else { + else { QPoint points[7]; switch (element) { case PE_IndicatorArrowUp: @@ -5194,7 +5194,7 @@ void QWindowsMobileStyle::drawPrimitive(PrimitiveElement element, const QStyleOp painter->drawLine(points[2], points[3]); painter->drawLine(points[4], points[5]); painter->drawPoint(points[6]); - } + } } painter->restore(); break; } @@ -5432,7 +5432,7 @@ void QWindowsMobileStyle::drawControl(ControlElement element, const QStyleOption QWindowsMobileStylePrivate *d = const_cast(d_func()); - + painter->setClipping(false); switch (element) { case CE_MenuBarEmptyArea: @@ -5527,7 +5527,7 @@ void QWindowsMobileStyle::drawControl(ControlElement element, const QStyleOption break; case CE_TabBarTabShape: if (const QStyleOptionTab *tab = qstyleoption_cast(option)) { - + if (tab->shape == QTabBar::RoundedNorth || tab->shape == QTabBar::RoundedEast || tab->shape == QTabBar::RoundedSouth || tab->shape == QTabBar::RoundedWest) { d->drawTabBarTab(painter, tab); @@ -5564,7 +5564,7 @@ void QWindowsMobileStyle::drawControl(ControlElement element, const QStyleOption proxy()->drawControl(CE_HeaderSection, header, painter, widget); QStyleOptionHeader subopt = *header; subopt.rect = proxy()->subElementRect(SE_HeaderLabel, header, widget); - if (header->state & State_Sunken) + if (header->state & State_Sunken) subopt.palette.setColor(QPalette::ButtonText, header->palette.brightText().color()); subopt.state |= QStyle::State_On; if (subopt.rect.isValid()) @@ -7079,7 +7079,7 @@ int QWindowsMobileStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, co } break; case PM_ScrollBarExtent: { - + if (d->smartphone) ret = 9; else diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp index e9bc17f78f..0102bc2b7d 100644 --- a/src/widgets/styles/qwindowsvistastyle.cpp +++ b/src/widgets/styles/qwindowsvistastyle.cpp @@ -273,15 +273,15 @@ void QWindowsVistaAnimation::paint(QPainter *painter, const QStyleOption *option /*! \internal - + Animations are used for some state transitions on specific widgets. - + Only one running animation can exist for a widget at any specific time. Animations can be added through QWindowsVistaStylePrivate::startAnimation(Animation *) and any existing animation on a widget can be retrieved with QWindowsVistaStylePrivate::widgetAnimation(Widget *). - + Once an animation has been started, QWindowsVistaStylePrivate::timerEvent(QTimerEvent *) will continuously call update() on the widget until it is stopped, @@ -798,17 +798,17 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt || vopt->viewItemPosition == QStyleOptionViewItem::Invalid) painter->drawPixmap(pixmapRect.topLeft(), pixmap); else if (reverse ? rightSection : leftSection){ - painter->drawPixmap(QRect(pixmapRect.topLeft(), - QSize(frame, pixmapRect.height())), pixmap, + painter->drawPixmap(QRect(pixmapRect.topLeft(), + QSize(frame, pixmapRect.height())), pixmap, QRect(QPoint(0, 0), QSize(frame, pixmapRect.height()))); - painter->drawPixmap(pixmapRect.adjusted(frame, 0, 0, 0), + painter->drawPixmap(pixmapRect.adjusted(frame, 0, 0, 0), pixmap, srcRect.adjusted(frame, 0, -frame, 0)); } else if (reverse ? leftSection : rightSection) { - painter->drawPixmap(QRect(pixmapRect.topRight() - QPoint(frame - 1, 0), - QSize(frame, pixmapRect.height())), pixmap, - QRect(QPoint(pixmapRect.width() - frame, 0), + painter->drawPixmap(QRect(pixmapRect.topRight() - QPoint(frame - 1, 0), + QSize(frame, pixmapRect.height())), pixmap, + QRect(QPoint(pixmapRect.width() - frame, 0), QSize(frame, pixmapRect.height()))); - painter->drawPixmap(pixmapRect.adjusted(0, 0, -frame, 0), + painter->drawPixmap(pixmapRect.adjusted(0, 0, -frame, 0), pixmap, srcRect.adjusted(frame, 0, -frame, 0)); } else if (vopt->viewItemPosition == QStyleOptionViewItem::Middle) painter->drawPixmap(pixmapRect, pixmap, @@ -1110,7 +1110,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption } else { animRect = QRect(rect.left() - glowSize + animOffset, rect.top(), glowSize, rect.height()); - animRect = QStyle::visualRect(reverse ? Qt::RightToLeft : Qt::LeftToRight, + animRect = QStyle::visualRect(reverse ? Qt::RightToLeft : Qt::LeftToRight, option->rect, animRect); pixmapSize.setWidth(animRect.width()); } @@ -1156,7 +1156,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption double vc6_workaround = ((progress - qint64(bar->minimum)) / qMax(double(1.0), double(qint64(bar->maximum) - qint64(bar->minimum))) * maxWidth); int width = isIndeterminate ? maxWidth : qMax(int(vc6_workaround), minWidth); theme.rect.setWidth(width); - theme.rect = QStyle::visualRect(reverse ? Qt::RightToLeft : Qt::LeftToRight, + theme.rect = QStyle::visualRect(reverse ? Qt::RightToLeft : Qt::LeftToRight, option->rect, theme.rect); } d->drawBackground(theme); @@ -1522,7 +1522,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption QStyleOptionViewItem adjustedOption = *vopt; adjustedOption.palette = palette; // We hide the focusrect in singleselection as it is not required - if ((view->selectionMode() == QAbstractItemView::SingleSelection) + if ((view->selectionMode() == QAbstractItemView::SingleSelection) && !(vopt->state & State_KeyboardFocusChange)) adjustedOption.state &= ~State_HasFocus; QWindowsXPStyle::drawControl(element, &adjustedOption, painter, widget); @@ -1944,7 +1944,7 @@ QSize QWindowsVistaStyle::sizeFromContents(ContentsType type, const QStyleOption minimumHeight = qMax(size.cy + margins.cyBottomHeight+ margins.cyTopHeight, sz.height()); sz.rwidth() += size.cx + margins.cxLeftWidth + margins.cxRightWidth; } - + if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast(option)) { if (menuitem->menuItemType != QStyleOptionMenuItem::Separator) sz.setHeight(minimumHeight); diff --git a/src/widgets/util/qcolormap.qdoc b/src/widgets/util/qcolormap.qdoc index 48fe1c7eec..ae337b511c 100644 --- a/src/widgets/util/qcolormap.qdoc +++ b/src/widgets/util/qcolormap.qdoc @@ -67,7 +67,7 @@ /*! \fn QColormap::~QColormap() - + Destroys the colormap. */ diff --git a/src/widgets/util/qcompleter.cpp b/src/widgets/util/qcompleter.cpp index d8186d795d..59ec6eb10d 100644 --- a/src/widgets/util/qcompleter.cpp +++ b/src/widgets/util/qcompleter.cpp @@ -45,7 +45,7 @@ \since 4.2 \inmodule QtWidgets - + You can use QCompleter to provide auto completions in any Qt widget, such as QLineEdit and QComboBox. When the user starts typing a word, QCompleter suggests possible ways of diff --git a/src/widgets/util/qscroller.cpp b/src/widgets/util/qscroller.cpp index 1670d0ab57..add372c583 100644 --- a/src/widgets/util/qscroller.cpp +++ b/src/widgets/util/qscroller.cpp @@ -237,7 +237,7 @@ private: \since 5.0 \inmodule QtWidgets - + With kinetic scrolling, the user can push the widget in a given direction and it will continue to scroll in this direction until it is stopped either by the user or by friction. Aspects of inertia, friction diff --git a/src/widgets/util/qscrollerproperties.cpp b/src/widgets/util/qscrollerproperties.cpp index ed593ea2cb..d0d9c23b68 100644 --- a/src/widgets/util/qscrollerproperties.cpp +++ b/src/widgets/util/qscrollerproperties.cpp @@ -94,7 +94,7 @@ QScrollerPropertiesPrivate *QScrollerPropertiesPrivate::defaults() \since 4.8 \inmodule QtWidgets - + The QScrollerProperties class stores the parameters used by QScroller. The default settings are platform dependent so that Qt emulates the diff --git a/src/widgets/util/qsystemtrayicon.cpp b/src/widgets/util/qsystemtrayicon.cpp index 48bba9701c..4cae15893c 100644 --- a/src/widgets/util/qsystemtrayicon.cpp +++ b/src/widgets/util/qsystemtrayicon.cpp @@ -379,7 +379,7 @@ bool QSystemTrayIcon::supportsMessages() On Mac OS X, the Growl notification system must be installed for this function to display messages. - + \sa show(), supportsMessages() */ void QSystemTrayIcon::showMessage(const QString& title, const QString& msg, diff --git a/src/widgets/util/qsystemtrayicon_win.cpp b/src/widgets/util/qsystemtrayicon_win.cpp index 936e1a1bc1..2184a52af7 100644 --- a/src/widgets/util/qsystemtrayicon_win.cpp +++ b/src/widgets/util/qsystemtrayicon_win.cpp @@ -345,12 +345,12 @@ bool QSystemTrayIconSys::winEvent( MSG *m, long *result ) case NIN_KEYSELECT: if (ignoreNextMouseRelease) ignoreNextMouseRelease = false; - else + else emit q->activated(QSystemTrayIcon::Trigger); break; case WM_LBUTTONDBLCLK: - ignoreNextMouseRelease = true; // Since DBLCLICK Generates a second mouse + ignoreNextMouseRelease = true; // Since DBLCLICK Generates a second mouse // release we must ignore it emit q->activated(QSystemTrayIcon::DoubleClick); break; diff --git a/src/widgets/util/qsystemtrayicon_wince.cpp b/src/widgets/util/qsystemtrayicon_wince.cpp index b6937aee2f..a0c278b1a3 100644 --- a/src/widgets/util/qsystemtrayicon_wince.cpp +++ b/src/widgets/util/qsystemtrayicon_wince.cpp @@ -166,7 +166,7 @@ bool QSystemTrayIconSys::winEvent( MSG *m, long *result ) break; case WM_LBUTTONDBLCLK: - ignoreNextMouseRelease = true; // Since DBLCLICK Generates a second mouse + ignoreNextMouseRelease = true; // Since DBLCLICK Generates a second mouse // release we must ignore it emit q->activated(QSystemTrayIcon::DoubleClick); break; diff --git a/src/widgets/util/qundostack.cpp b/src/widgets/util/qundostack.cpp index 77726adf27..eff12a7c4d 100644 --- a/src/widgets/util/qundostack.cpp +++ b/src/widgets/util/qundostack.cpp @@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE \since 4.2 \inmodule QtWidgets - + For an overview of Qt's Undo Framework, see the \l{Overview of Qt's Undo Framework}{overview document}. @@ -324,7 +324,7 @@ const QUndoCommand *QUndoCommand::child(int index) const \since 4.2 \inmodule QtWidgets - + For an overview of Qt's Undo Framework, see the \l{Overview of Qt's Undo Framework}{overview document}. @@ -1009,7 +1009,7 @@ void QUndoStack::endMacro() This function returns a const pointer, because modifying a command, once it has been pushed onto the stack and executed, almost always - causes corruption of the state of the document, if the command is + causes corruption of the state of the document, if the command is later undone or redone. \sa QUndoCommand::child() diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp index 5e9d100214..c96f77cbf2 100644 --- a/src/widgets/widgets/qabstractbutton.cpp +++ b/src/widgets/widgets/qabstractbutton.cpp @@ -380,7 +380,7 @@ void QAbstractButtonPrivate::moveFocus(int key) QAbstractButton *fb = qobject_cast(f); if (!fb || !buttonList.contains(fb)) return; - + QAbstractButton *candidate = 0; int bestScore = -1; QRect target = f->rect().translated(f->mapToGlobal(QPoint(0,0))); diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp index 391a06917c..b27bc2fff8 100644 --- a/src/widgets/widgets/qabstractscrollarea.cpp +++ b/src/widgets/widgets/qabstractscrollarea.cpp @@ -452,7 +452,7 @@ void QAbstractScrollAreaPrivate::layoutChildren() // no corner widget. Also, on the Mac we paint if there is a native // (transparent) sizegrip in the area where a corner widget would be. if ((needv && needh && hasCornerWidget == false && scrollOverlap == 0) - || ((needv || needh) + || ((needv || needh) #ifdef Q_WS_MAC && hasMacSizeGrip #endif diff --git a/src/widgets/widgets/qabstractslider.cpp b/src/widgets/widgets/qabstractslider.cpp index 5932e1be9b..5372b21430 100644 --- a/src/widgets/widgets/qabstractslider.cpp +++ b/src/widgets/widgets/qabstractslider.cpp @@ -724,7 +724,7 @@ bool QAbstractSliderPrivate::scrollByDelta(Qt::Orientation orientation, Qt::Keyb #else // Native UI-elements on Mac can scroll hundreds of lines at a time as // a result of acceleration. So keep the same behaviour in Qt, and - // don't restrict stepsToScroll to certain maximum (pageStep): + // don't restrict stepsToScroll to certain maximum (pageStep): stepsToScroll = int(offset_accumulated); #endif offset_accumulated -= int(offset_accumulated); diff --git a/src/widgets/widgets/qabstractslider_p.h b/src/widgets/widgets/qabstractslider_p.h index 42f25501b1..7b07aa3be9 100644 --- a/src/widgets/widgets/qabstractslider_p.h +++ b/src/widgets/widgets/qabstractslider_p.h @@ -87,7 +87,7 @@ public: QBasicTimer repeatActionTimer; int repeatActionTime; QAbstractSlider::SliderAction repeatAction; - + #ifdef QT_KEYPAD_NAVIGATION int origValue; diff --git a/src/widgets/widgets/qbuttongroup.cpp b/src/widgets/widgets/qbuttongroup.cpp index 3da81f8360..2bd67d19e1 100644 --- a/src/widgets/widgets/qbuttongroup.cpp +++ b/src/widgets/widgets/qbuttongroup.cpp @@ -139,7 +139,7 @@ \fn void QButtonGroup::buttonPressed(QAbstractButton *button) \since 4.2 - This signal is emitted when the given \a button is pressed down. + This signal is emitted when the given \a button is pressed down. \sa QAbstractButton::pressed() */ @@ -158,7 +158,7 @@ \fn void QButtonGroup::buttonReleased(QAbstractButton *button) \since 4.2 - This signal is emitted when the given \a button is released. + This signal is emitted when the given \a button is released. \sa QAbstractButton::released() */ diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp index 0fdf039bc3..d61ae023ef 100644 --- a/src/widgets/widgets/qcalendarwidget.cpp +++ b/src/widgets/widgets/qcalendarwidget.cpp @@ -2591,7 +2591,7 @@ QCalendarWidget::HorizontalHeaderFormat QCalendarWidget::horizontalHeaderFormat( } -/*! +/*! \enum QCalendarWidget::VerticalHeaderFormat This enum type defines the various formats the vertical header can display. diff --git a/src/widgets/widgets/qcombobox_p.h b/src/widgets/widgets/qcombobox_p.h index 0004e3d5ab..4676668610 100644 --- a/src/widgets/widgets/qcombobox_p.h +++ b/src/widgets/widgets/qcombobox_p.h @@ -282,8 +282,8 @@ private: QComboBox *mCombo; }; -// Note that this class is intentionally not using QStyledItemDelegate -// Vista does not use the new theme for combo boxes and there might +// Note that this class is intentionally not using QStyledItemDelegate +// Vista does not use the new theme for combo boxes and there might // be other side effects from using the new class class QComboBoxDelegate : public QItemDelegate { Q_OBJECT diff --git a/src/widgets/widgets/qdockarealayout.cpp b/src/widgets/widgets/qdockarealayout.cpp index 7631014905..6c15e9016f 100644 --- a/src/widgets/widgets/qdockarealayout.cpp +++ b/src/widgets/widgets/qdockarealayout.cpp @@ -2004,7 +2004,7 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList //we need to make sure the element is in the list so the dock widget can eventually be docked correctly if (!testing) item_list.append(item); - + //here we need to make sure we change the item in the item_list QDockAreaLayoutItem &lastItem = testing ? item : item_list.last(); diff --git a/src/widgets/widgets/qeffects.cpp b/src/widgets/widgets/qeffects.cpp index 8cd944e133..c43ed9848b 100644 --- a/src/widgets/widgets/qeffects.cpp +++ b/src/widgets/widgets/qeffects.cpp @@ -276,7 +276,7 @@ void QAlphaWidget::render() #endif // Q_OS_WIN widget->hide(); } else { - //Since we are faking the visibility of the widget + //Since we are faking the visibility of the widget //we need to unset the hidden state on it before calling show widget->setAttribute(Qt::WA_WState_Hidden, true); widget->show(); @@ -541,7 +541,7 @@ void QRollEffect::scroll() #endif widget->hide(); } else { - //Since we are faking the visibility of the widget + //Since we are faking the visibility of the widget //we need to unset the hidden state on it before calling show widget->setAttribute(Qt::WA_WState_Hidden, true); widget->show(); diff --git a/src/widgets/widgets/qgroupbox.cpp b/src/widgets/widgets/qgroupbox.cpp index 6c8da10b8e..a491b3218b 100644 --- a/src/widgets/widgets/qgroupbox.cpp +++ b/src/widgets/widgets/qgroupbox.cpp @@ -121,7 +121,7 @@ void QGroupBox::initStyleOption(QStyleOptionGroupBox *option) const option->state |= QStyle::State_Sunken; } - if (!option->palette.isBrushSet(isEnabled() ? QPalette::Active : + if (!option->palette.isBrushSet(isEnabled() ? QPalette::Active : QPalette::Disabled, QPalette::WindowText)) option->textColor = QColor(style()->styleHint(QStyle::SH_GroupBox_TextLabelColor, option, this)); @@ -229,7 +229,7 @@ void QGroupBoxPrivate::init() overCheckBox = false; pressedControl = QStyle::SC_None; calculateFrame(); - q->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred, + q->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred, QSizePolicy::GroupBox)); } diff --git a/src/widgets/widgets/qgroupbox.h b/src/widgets/widgets/qgroupbox.h index cfe32df3cc..cdef4c4548 100644 --- a/src/widgets/widgets/qgroupbox.h +++ b/src/widgets/widgets/qgroupbox.h @@ -95,7 +95,7 @@ protected: void changeEvent(QEvent *event); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); void initStyleOption(QStyleOptionGroupBox *option) const; diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 5187968ddf..5155df8e23 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -139,9 +139,9 @@ void QLineEdit::initStyleOption(QStyleOptionFrame *option) const The length of the text can be constrained to maxLength(). The text can be arbitrarily constrained using a validator() or an - inputMask(), or both. When switching between a validator and an input mask - on the same line edit, it is best to clear the validator or input mask to - prevent undefined behavior. + inputMask(), or both. When switching between a validator and an input mask + on the same line edit, it is best to clear the validator or input mask to + prevent undefined behavior. A related class is QTextEdit which allows multi-line, rich text diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index 7f800d831f..10329293b3 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -180,7 +180,7 @@ void QLineEditPrivate::init(const QString& txt) #endif QObject::connect(control, SIGNAL(cursorPositionChanged(int,int)), q, SLOT(updateMicroFocus())); - + QObject::connect(control, SIGNAL(textChanged(QString)), q, SLOT(updateMicroFocus())); diff --git a/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm index 1eadb62d5c..7077772be4 100644 --- a/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm +++ b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm @@ -112,7 +112,7 @@ QMacCocoaViewContainerPrivate::~QMacCocoaViewContainerPrivate() /*! \fn QMacCocoaViewContainer::QMacCocoaViewContainer(void *cocoaViewToWrap, QWidget *parent) - + Create a new QMacCocoaViewContainer using the NSView pointer in \a cocoaViewToWrap with parent, \a parent. QMacCocoaViewContainer will retain \a cocoaViewToWrap. diff --git a/src/widgets/widgets/qmenu_wince.cpp b/src/widgets/widgets/qmenu_wince.cpp index 68a2022e97..ec1560f5e2 100644 --- a/src/widgets/widgets/qmenu_wince.cpp +++ b/src/widgets/widgets/qmenu_wince.cpp @@ -116,14 +116,14 @@ static void resolveAygLibs() } } -static void qt_wce_enable_soft_key(HWND handle, uint command) +static void qt_wce_enable_soft_key(HWND handle, uint command) { resolveAygLibs(); if (ptrEnableSoftKey) ptrEnableSoftKey(handle, command, false, true); } -static void qt_wce_disable_soft_key(HWND handle, uint command) +static void qt_wce_disable_soft_key(HWND handle, uint command) { resolveAygLibs(); if (ptrEnableSoftKey) @@ -148,7 +148,7 @@ static QAction* qt_wce_get_quit_action(QList actionItems) QAction *action = actionItems.at(i); if (action->menuRole() == QAction::QuitRole) returnAction = action; - else + else if (action->menu()) returnAction = qt_wce_get_quit_action(action->menu()->actions()); if (returnAction) @@ -252,7 +252,7 @@ static void qt_wce_insert_action(HMENU menu, QWceMenuAction *action) if (action->action->isCheckable()) if (action->action->isChecked()) CheckMenuItem(menu, action->command, MF_BYCOMMAND | MF_CHECKED); - else + else CheckMenuItem(menu, action->command, MF_BYCOMMAND | MF_UNCHECKED); } } @@ -264,8 +264,8 @@ static void qt_wce_clear_menu(HMENU hMenu) } /*! - \internal - + \internal + This function refreshes the native Windows CE menu. */ @@ -281,8 +281,8 @@ void QMenuBarPrivate::wceRefresh() } /*! - \internal - + \internal + This function sends native Windows CE commands to Qt menus. */ @@ -293,8 +293,8 @@ QAction* QMenu::wceCommands(uint command) } /*! - \internal - + \internal + This function sends native Windows CE commands to Qt menu bars and all their child menus. */ @@ -457,7 +457,7 @@ void QMenuPrivate::QWceMenuPrivate::addAction(QWceMenuAction *action, QWceMenuAc /*! \internal - + This function will return the HMENU used to create the native Windows CE menu bar bindings. */ @@ -642,7 +642,7 @@ void QMenuBarPrivate::QWceMenuBarPrivate::rebuild() qt_wce_rename_menu_item(menubarHandle, leftButtonCommand, leftButtonAction->text()); qt_wce_enable_soft_key(menubarHandle, leftButtonCommand); } else { - qt_wce_rename_menu_item(menubarHandle, leftButtonCommand, QLatin1String("")); + qt_wce_rename_menu_item(menubarHandle, leftButtonCommand, QLatin1String("")); qt_wce_disable_soft_key(menubarHandle, leftButtonCommand); } } else { diff --git a/src/widgets/widgets/qmenu_wince.rc b/src/widgets/widgets/qmenu_wince.rc index 631cd9d47a..0bcd32c7e5 100644 --- a/src/widgets/widgets/qmenu_wince.rc +++ b/src/widgets/widgets/qmenu_wince.rc @@ -14,19 +14,19 @@ #define I_IMAGENONE (-2) #define NOMENU 0xFFFF -IDR_MAIN_MENU MENU DISCARDABLE +IDR_MAIN_MENU MENU DISCARDABLE BEGIN POPUP "Menu" BEGIN - MENUITEM "About", IDM_ABOUT + MENUITEM "About", IDM_ABOUT END END -IDR_MAIN_MENU2 MENU DISCARDABLE +IDR_MAIN_MENU2 MENU DISCARDABLE BEGIN POPUP "Menu" BEGIN - MENUITEM "About", IDM_ABOUT + MENUITEM "About", IDM_ABOUT END POPUP "Display" BEGIN @@ -35,7 +35,7 @@ BEGIN END -IDR_MAIN_MENU3 MENU DISCARDABLE +IDR_MAIN_MENU3 MENU DISCARDABLE BEGIN POPUP "Menu1" BEGIN @@ -55,7 +55,7 @@ BEGIN END END -IDR_MAIN_MENU4 MENU DISCARDABLE +IDR_MAIN_MENU4 MENU DISCARDABLE BEGIN POPUP "Menu1" BEGIN @@ -83,7 +83,7 @@ BEGIN END END -IDR_MAIN_MENU5 MENU DISCARDABLE +IDR_MAIN_MENU5 MENU DISCARDABLE BEGIN POPUP "Menu1" BEGIN @@ -119,8 +119,8 @@ BEGIN END END -STRINGTABLE -BEGIN +STRINGTABLE +BEGIN IDS_EXIT "Exit" IDS_MENU "Menu" IDS_LEFTMENU "Display" @@ -136,31 +136,31 @@ END IDR_MAIN_MENU SHMENUBAR DISCARDABLE BEGIN - IDR_MAIN_MENU, + IDR_MAIN_MENU, 2, I_IMAGENONE, IDM_EXIT, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_EXIT, 0, NOMENU, - + I_IMAGENONE, IDM_MENU, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_MENU, 0, 0, END IDR_MAIN_MENU2 SHMENUBAR DISCARDABLE BEGIN - IDR_MAIN_MENU2, + IDR_MAIN_MENU2, 2, I_IMAGENONE, IDM_LEFTMENU, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_LEFTMENU, 0, 1, - + I_IMAGENONE, IDM_MENU, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_MENU, 0, 0, END IDR_MAIN_MENU3 SHMENUBAR DISCARDABLE BEGIN - IDR_MAIN_MENU3, + IDR_MAIN_MENU3, 4, I_IMAGENONE, IDM_MENU1, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, @@ -178,7 +178,7 @@ END IDR_MAIN_MENU4 SHMENUBAR DISCARDABLE BEGIN - IDR_MAIN_MENU4, + IDR_MAIN_MENU4, 6, I_IMAGENONE, IDM_MENU1, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, @@ -202,7 +202,7 @@ END IDR_MAIN_MENU5 SHMENUBAR DISCARDABLE BEGIN - IDR_MAIN_MENU5, + IDR_MAIN_MENU5, 8, I_IMAGENONE, IDM_MENU1, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, diff --git a/src/widgets/widgets/qpushbutton.h b/src/widgets/widgets/qpushbutton.h index 1638123e0e..3154c0dedb 100644 --- a/src/widgets/widgets/qpushbutton.h +++ b/src/widgets/widgets/qpushbutton.h @@ -103,7 +103,7 @@ public: private: Q_DISABLE_COPY(QPushButton) Q_DECLARE_PRIVATE(QPushButton) -#ifndef QT_NO_MENU +#ifndef QT_NO_MENU Q_PRIVATE_SLOT(d_func(), void _q_popupPressed()) #endif }; diff --git a/src/widgets/widgets/qscrollarea.cpp b/src/widgets/widgets/qscrollarea.cpp index 590225e850..0de63a5a47 100644 --- a/src/widgets/widgets/qscrollarea.cpp +++ b/src/widgets/widgets/qscrollarea.cpp @@ -240,7 +240,7 @@ QWidget *QScrollArea::widget() const The \a widget becomes a child of the scroll area, and will be destroyed when the scroll area is deleted or when a new widget is set. - + The widget's \l{QWidget::setAutoFillBackground()}{autoFillBackground} property will be set to \c{true}. diff --git a/src/widgets/widgets/qsplashscreen.cpp b/src/widgets/widgets/qsplashscreen.cpp index 3711b2f43e..4b24c9dfef 100644 --- a/src/widgets/widgets/qsplashscreen.cpp +++ b/src/widgets/widgets/qsplashscreen.cpp @@ -80,7 +80,7 @@ public: be shown during application startup. \inmodule QtWidgets - + A splash screen is a widget that is usually displayed when an application is being started. Splash screens are often used for applications that have long start up times (e.g. database or diff --git a/src/widgets/widgets/qsplitter.cpp b/src/widgets/widgets/qsplitter.cpp index a8399ed8d5..e39b79c67a 100644 --- a/src/widgets/widgets/qsplitter.cpp +++ b/src/widgets/widgets/qsplitter.cpp @@ -1665,7 +1665,7 @@ bool QSplitter::restoreState(const QByteArray &state) have a stretch factor of \a stretch. \a stretch is not the effective stretch factor; the effective - stretch factor is calculated by taking the initial size of the + stretch factor is calculated by taking the initial size of the widget and multiplying it with \a stretch. This function is provided for convenience. It is equivalent to diff --git a/src/widgets/widgets/qstatusbar.cpp b/src/widgets/widgets/qstatusbar.cpp index 880ddfaf35..4c9be611bb 100644 --- a/src/widgets/widgets/qstatusbar.cpp +++ b/src/widgets/widgets/qstatusbar.cpp @@ -534,7 +534,7 @@ void QStatusBar::reformat() } /*! - + Hides the normal status indications and displays the given \a message for the specified number of milli-seconds (\a{timeout}). If \a{timeout} is 0 (default), the \a {message} remains displayed until @@ -744,7 +744,7 @@ bool QStatusBar::event(QEvent *e) } } } - + // On Mac OS X Leopard it is possible to drag the window by clicking // on the tool bar on most applications. #ifndef Q_WS_MAC @@ -755,7 +755,7 @@ bool QStatusBar::event(QEvent *e) // Enable drag-click only if the status bar is the status bar for a // QMainWindow with a unifed toolbar. - if (parent() == 0 || qobject_cast(parent()) == 0 || + if (parent() == 0 || qobject_cast(parent()) == 0 || qobject_cast(parent())->unifiedTitleAndToolBarOnMac() == false ) return QWidget::event(e); diff --git a/src/widgets/widgets/qtoolbararealayout.cpp b/src/widgets/widgets/qtoolbararealayout.cpp index 02279ad014..969bb8a7fd 100644 --- a/src/widgets/widgets/qtoolbararealayout.cpp +++ b/src/widgets/widgets/qtoolbararealayout.cpp @@ -810,7 +810,7 @@ QLayoutItem *QToolBarAreaLayout::insertToolBar(QToolBar *before, QToolBar *toolB QInternal::DockPosition pos = findToolBar(before); if (pos == QInternal::DockCount) return 0; - + return docks[pos].insertToolBar(before, toolBar); } @@ -869,7 +869,7 @@ void QToolBarAreaLayout::insertItem(QToolBar *before, QLayoutItem *item) QInternal::DockPosition pos = findToolBar(before); if (pos == QInternal::DockCount) return; - + docks[pos].insertItem(before, item); } diff --git a/src/widgets/widgets/qtoolbararealayout_p.h b/src/widgets/widgets/qtoolbararealayout_p.h index 5cbb4a4756..e052a71044 100644 --- a/src/widgets/widgets/qtoolbararealayout_p.h +++ b/src/widgets/widgets/qtoolbararealayout_p.h @@ -169,7 +169,7 @@ public: void removeToolBar(QToolBar *toolBar); void insertToolBarBreak(QToolBar *before); void removeToolBarBreak(QToolBar *before); - void moveToolBar(QToolBar *toolbar, int pos); + void moveToolBar(QToolBar *toolbar, int pos); QList gapIndex(const QPoint &pos, int *maxDistance) const; bool insertGap(const QList &path, QLayoutItem *item); @@ -215,7 +215,7 @@ public: void insertToolBarBreak(QToolBar *before); void removeToolBarBreak(QToolBar *before); void addToolBarBreak(QInternal::DockPosition pos); - void moveToolBar(QToolBar *toolbar, int pos); + void moveToolBar(QToolBar *toolbar, int pos); void insertItem(QInternal::DockPosition pos, QLayoutItem *item); void insertItem(QToolBar *before, QLayoutItem *item); diff --git a/src/widgets/widgets/qtoolbarlayout.cpp b/src/widgets/widgets/qtoolbarlayout.cpp index 1dde9c0a1d..7a4f3b17d0 100644 --- a/src/widgets/widgets/qtoolbarlayout.cpp +++ b/src/widgets/widgets/qtoolbarlayout.cpp @@ -409,7 +409,7 @@ void QToolBarLayout::setGeometry(const QRect &rect) } } #endif - + } bool QToolBarLayout::layoutActions(const QSize &size) diff --git a/src/widgets/widgets/widgets.pri b/src/widgets/widgets/widgets.pri index 797f3e9b76..9780d3c24c 100644 --- a/src/widgets/widgets/widgets.pri +++ b/src/widgets/widgets/widgets.pri @@ -145,7 +145,7 @@ SOURCES += \ false:mac { HEADERS += widgets/qmacnativewidget_mac.h \ widgets/qmaccocoaviewcontainer_mac.h - OBJECTIVE_HEADERS += widgets/qcocoatoolbardelegate_mac_p.h \ + OBJECTIVE_HEADERS += widgets/qcocoatoolbardelegate_mac_p.h \ widgets/qcocoamenu_mac_p.h OBJECTIVE_SOURCES += widgets/qmaccocoaviewcontainer_mac.mm \ widgets/qcocoatoolbardelegate_mac.mm \ diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp index 689c75774e..47e137976b 100644 --- a/src/xml/sax/qxml.cpp +++ b/src/xml/sax/qxml.cpp @@ -3037,10 +3037,10 @@ void QXmlSimpleReaderPrivate::initIncrementalParsing() A common way to perform incremental parsing is to connect the \c readyRead() signal of a \l{QNetworkReply} {network reply} a slot, and handle the incoming data there. See QNetworkAccessManager. - + Aspects of the parsing behavior can be adapted using setFeature() and setProperty(). - + \snippet code/src_xml_sax_qxml.cpp 0 QXmlSimpleReader is not reentrant. If you want to use the class -- cgit v1.2.3 From b74ba4e198256f9c4a4c8af02a1339bf0ecc41aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Fri, 1 Mar 2013 11:38:19 +0100 Subject: Add Qt::AA_UseHighDpiPixmaps. Setting this attribute enables QIcon::pixmap() to return high-dpi pixmaps when running on "retina" type displays. This requires an opt-in flag since the returned pixmap can be larger than the requested size, which is a change in previous documented behaviour that can break existing code. Change-Id: I5ff3d25c68de24aa4eda7ad1f8aa9199da04707e Reviewed-by: Gabriel de Dietrich --- src/corelib/global/qnamespace.h | 1 + src/corelib/global/qnamespace.qdoc | 8 ++++++++ 2 files changed, 9 insertions(+) (limited to 'src') diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index 0ae0fdf57c..f130288a24 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -498,6 +498,7 @@ public: AA_X11InitThreads = 10, AA_SynthesizeTouchForUnhandledMouseEvents = 11, AA_SynthesizeMouseForUnhandledTouchEvents = 12, + AA_UseHighDpiPixmaps = 13, // Add new attributes before this line AA_AttributeCount diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index b065507645..0d9cacdb1f 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -167,6 +167,14 @@ to left button mouse events instead. This attribute is enabled by default. + \value AA_UseHighDpiPixmaps Make QIcon::pixmap() generate high-dpi pixmaps + that can be larger than the requested size. Such pixmaps will have + devicePixelRatio set to a value higher than 1. + + After setting this attribute application code that uses pixmap + sizes in layout geometry calculations should typically divide by + QPixmap::devicePixelRatio() to get device-independent layout geometry. + \omitvalue AA_AttributeCount */ -- cgit v1.2.3 From 4905c0754bf4944a2889aae2c546a02ffeab0e5a Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Fri, 15 Mar 2013 10:22:04 +0000 Subject: Add convenience distance methods to QVector2D MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I8ecdda35912a95e69c2f8dd98ce9c41c77b222d2 Reviewed-by: Sean Harmer Reviewed-by: Samuel Rødal --- src/gui/math3d/qvector2d.cpp | 33 +++++++++++++++++++++++++++++++++ src/gui/math3d/qvector2d.h | 3 +++ 2 files changed, 36 insertions(+) (limited to 'src') diff --git a/src/gui/math3d/qvector2d.cpp b/src/gui/math3d/qvector2d.cpp index 6aa360fc6b..5710ee273a 100644 --- a/src/gui/math3d/qvector2d.cpp +++ b/src/gui/math3d/qvector2d.cpp @@ -228,6 +228,39 @@ void QVector2D::normalize() yp = float(double(yp) / len); } +/*! + \since 5.1 + + Returns the distance from this vertex to a point defined by + the vertex \a point. + + \sa distanceToLine() +*/ +float QVector2D::distanceToPoint(const QVector2D& point) const +{ + return (*this - point).length(); +} + +/*! + \since 5.1 + + Returns the distance that this vertex is from a line defined + by \a point and the unit vector \a direction. + + If \a direction is a null vector, then it does not define a line. + In that case, the distance from \a point to this vertex is returned. + + \sa distanceToPoint() +*/ +float QVector2D::distanceToLine + (const QVector2D& point, const QVector2D& direction) const +{ + if (direction.isNull()) + return (*this - point).length(); + QVector2D p = point + dotProduct(*this - point, direction) * direction; + return (*this - p).length(); +} + /*! \fn QVector2D &QVector2D::operator+=(const QVector2D &vector) diff --git a/src/gui/math3d/qvector2d.h b/src/gui/math3d/qvector2d.h index 647e5e36f2..b3c2272287 100644 --- a/src/gui/math3d/qvector2d.h +++ b/src/gui/math3d/qvector2d.h @@ -82,6 +82,9 @@ public: QVector2D normalized() const; void normalize(); + float distanceToPoint(const QVector2D &point) const; + float distanceToLine(const QVector2D& point, const QVector2D& direction) const; + QVector2D &operator+=(const QVector2D &vector); QVector2D &operator-=(const QVector2D &vector); QVector2D &operator*=(float factor); -- cgit v1.2.3 From 0ea6b8ada00d56de939363e033aab8e9c0d3fdca Mon Sep 17 00:00:00 2001 From: Laszlo Papp Date: Sun, 17 Mar 2013 13:14:46 +0000 Subject: Add predefined macros for endian detection with the TI toolchains Change-Id: I88768adc8acb3b28b7a774f2e9a285d983c9d76d Reviewed-by: Thiago Macieira --- src/corelib/global/qprocessordetection.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/global/qprocessordetection.h b/src/corelib/global/qprocessordetection.h index 86023d1703..178afb1db6 100644 --- a/src/corelib/global/qprocessordetection.h +++ b/src/corelib/global/qprocessordetection.h @@ -280,9 +280,9 @@ # if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == Q_BIG_ENDIAN || __BYTE_ORDER__ == Q_LITTLE_ENDIAN) // Reuse __BYTE_ORDER__ as-is, since our Q_*_ENDIAN #defines match the preprocessor defaults # define Q_BYTE_ORDER __BYTE_ORDER__ -# elif defined(__BIG_ENDIAN__) +# elif defined(__BIG_ENDIAN__) || defined(_big_endian__) || defined(_BIG_ENDIAN) # define Q_BYTE_ORDER Q_BIG_ENDIAN -# elif defined(__LITTLE_ENDIAN__) \ +# elif defined(__LITTLE_ENDIAN__) || defined(_little_endian__) || defined(_LITTLE_ENDIAN) \ || defined(_WIN32_WCE) // Windows CE is always little-endian according to MSDN. # define Q_BYTE_ORDER Q_LITTLE_ENDIAN # else -- cgit v1.2.3 From 0bd827518d446391e43d714e9a6043cc714632ae Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Fri, 15 Mar 2013 09:33:28 +0100 Subject: Make QT_STYLE_OVERRIDE env variable available to release builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This shouldn't be restricted to internal builds. It's nice to be able to enable fusion style by default instead of GTK, for example. Change-Id: Icf9b4c990ddd1152b7444948c98717faff1c5ad6 Reviewed-by: Giuseppe D'Angelo Reviewed-by: Samuel Rødal --- src/widgets/kernel/qapplication.cpp | 4 ---- 1 file changed, 4 deletions(-) (limited to 'src') diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index e9ec0a916d..f29532471d 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -965,11 +965,7 @@ QStyle *QApplication::style() // Compile-time search for default style // QString style; -#ifdef QT_BUILD_INTERNAL QString envStyle = QString::fromLocal8Bit(qgetenv("QT_STYLE_OVERRIDE")); -#else - QString envStyle; -#endif if (!QApplicationPrivate::styleOverride.isEmpty()) { style = QApplicationPrivate::styleOverride; } else if (!envStyle.isEmpty()) { -- cgit v1.2.3 From 2fa3d365ac60aba43ad09e5239ec61d740c8704d Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 11 Mar 2013 15:25:04 +0100 Subject: Windows: Fix class name generation for Qt Quick Controls. New combinations of settings need to be handled (for example, GL + drop shadows for menus). Generate the class name depending on style settings. Introduce new dynamic property for drop shadows. Change-Id: I438f7bdd87f09d3c99076ebf825a12d862948ec1 Reviewed-by: Joerg Bornemann Reviewed-by: Jens Bache-Wiig Reviewed-by: Oliver Wolff Reviewed-by: Gabriel de Dietrich --- src/plugins/platforms/windows/qwindowscontext.cpp | 81 +++++++++++------------ 1 file changed, 39 insertions(+), 42 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index f824666a54..7e6b55dead 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -368,56 +368,53 @@ void QWindowsContext::setKeyGrabber(QWindow *w) } // Window class registering code (from qapplication_win.cpp) -// If 0 is passed as the widget pointer, register a window class -// for QWidget as default. This is used in QGLTemporaryContext -// during GL initialization, where we don't want to use temporary -// QWidgets or QGLWidgets, neither do we want to have separate code -// to register window classes. QString QWindowsContext::registerWindowClass(const QWindow *w, bool isGL) { - const Qt::WindowFlags flags = w ? w->flags() : (Qt::WindowFlags)0; + Q_ASSERT(w); + const Qt::WindowFlags flags = w->flags(); const Qt::WindowFlags type = flags & Qt::WindowType_Mask; - - uint style = 0; - bool icon = false; - QString cname = QStringLiteral("Qt5"); - if (w && isGL) { - cname += QStringLiteral("QGLWindow"); - style = CS_DBLCLKS|CS_OWNDC; - icon = true; - } else if (w && (flags & Qt::MSWindowsOwnDC)) { - cname += QStringLiteral("QWindowOwnDC"); - style = CS_DBLCLKS|CS_OWNDC; - icon = true; - } else if (w && (type == Qt::Tool || type == Qt::ToolTip)) { - style = CS_DBLCLKS; - if (w->inherits("QTipLabel") || w->inherits("QAlphaWidget")) { - if ((QSysInfo::WindowsVersion >= QSysInfo::WV_XP - && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) { - style |= CS_DROPSHADOW; - } - cname += QStringLiteral("QToolTip"); - } else { - cname += QStringLiteral("QTool"); - } - style |= CS_SAVEBITS; - icon = false; - } else if (w && (type == Qt::Popup)) { - cname += QStringLiteral("QPopup"); - style = CS_DBLCLKS|CS_SAVEBITS; - if ((QSysInfo::WindowsVersion >= QSysInfo::WV_XP - && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) - style |= CS_DROPSHADOW; + // Determine style and icon. + uint style = CS_DBLCLKS; + bool icon = true; + if (isGL || (flags & Qt::MSWindowsOwnDC)) + style |= CS_OWNDC; + if ((QSysInfo::WindowsVersion & QSysInfo::WV_NT_based) + && (type == Qt::Popup || w->property("_q_windowsDropShadow").toBool())) { + style |= CS_DROPSHADOW; + } + if (type == Qt::Tool || type == Qt::ToolTip || type == Qt::Popup) { + style |= CS_SAVEBITS; // Save/restore background icon = false; - } else { - cname += QStringLiteral("QWindow"); - style = CS_DBLCLKS; - icon = true; } + // Create a unique name for the flag combination + QString cname = QStringLiteral("Qt5QWindow"); + switch (type) { + case Qt::Tool: + cname += QStringLiteral("Tool"); + break; + case Qt::ToolTip: + cname += QStringLiteral("ToolTip"); + break; + case Qt::Popup: + cname += QStringLiteral("Popup"); + break; + default: + break; + } + if (isGL) + cname += QStringLiteral("GL"); + if (style & CS_DROPSHADOW) + cname += QStringLiteral("DropShadow"); + if (style & CS_SAVEBITS) + cname += QStringLiteral("SaveBits"); + if (style & CS_OWNDC) + cname += QStringLiteral("OwnDC"); + if (icon) + cname += QStringLiteral("Icon"); HBRUSH brush = 0; - if (w && !isGL) + if (!isGL) brush = GetSysColorBrush(COLOR_WINDOW); return registerWindowClass(cname, qWindowsWndProc, style, brush, icon); } -- cgit v1.2.3 From c29e93c79f0b7ceba4bd4a4aa458b93e8bf781cf Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 11 Mar 2013 15:30:05 +0100 Subject: Windows: Fix drop shadows for widget tool tips. Change-Id: Ifacee152e291face69964471d75e92b7784be4a4 Reviewed-by: Joerg Bornemann Reviewed-by: Oliver Wolff Reviewed-by: Gabriel de Dietrich --- src/widgets/kernel/qwidget_qpa.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp index 43a49e52f9..c4b527bf9c 100644 --- a/src/widgets/kernel/qwidget_qpa.cpp +++ b/src/widgets/kernel/qwidget_qpa.cpp @@ -877,7 +877,12 @@ void QWidgetPrivate::createTLSysExtra() extra->topextra->window->setMinimumSize(QSize(extra->minw, extra->minh)); if (extra->maxw != QWIDGETSIZE_MAX || extra->maxh != QWIDGETSIZE_MAX) extra->topextra->window->setMaximumSize(QSize(extra->maxw, extra->maxh)); +#ifdef Q_OS_WIN + if (q->inherits("QTipLabel") || q->inherits("QAlphaWidget")) + extra->topextra->window->setProperty("_q_windowsDropShadow", QVariant(true)); +#endif } + } void QWidgetPrivate::deleteTLSysExtra() -- cgit v1.2.3 From 237fbcbea57a91de9fa037e354307969affb6dd6 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Sat, 16 Mar 2013 17:44:16 +0100 Subject: Add the Deselect StandardKey Ctrl + Shift + A as inverse of Ctrl + A Works in both KDE and GNOME widgets so put as KB_X11 Change-Id: I3d1781933fcf7db03685453deef8612052cc879a Reviewed-by: David Faure (KDE) Reviewed-by: Friedemann Kleint Reviewed-by: Kevin Ottens Reviewed-by: Olivier Goffart --- src/gui/kernel/qkeysequence.cpp | 3 +++ src/gui/kernel/qkeysequence.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp index 66eb1d58ed..44de8c5847 100644 --- a/src/gui/kernel/qkeysequence.cpp +++ b/src/gui/kernel/qkeysequence.cpp @@ -257,6 +257,7 @@ void Q_GUI_EXPORT qt_set_sequence_auto_mnemonic(bool b) { qt_sequence_no_mnemoni \row \li FindPrevious \li Shift+F3, Ctrl+Shift+G \li Ctrl+Shift+G \li Shift+F3 \li Ctrl+Shift+G, Shift+F3 \row \li Replace \li Ctrl+H \li (none) \li Ctrl+R \li Ctrl+H \row \li SelectAll \li Ctrl+A \li Ctrl+A \li Ctrl+A \li Ctrl+A + \row \li Deselect \li \li \li Ctrl+Shift+A \li Ctrl+Shift+A \row \li Bold \li Ctrl+B \li Ctrl+B \li Ctrl+B \li Ctrl+B \row \li Italic \li Ctrl+I \li Ctrl+I \li Ctrl+I \li Ctrl+I \row \li Underline \li Ctrl+U \li Ctrl+U \li Ctrl+U \li Ctrl+U @@ -753,6 +754,7 @@ const QKeyBinding QKeySequencePrivate::keyBindings[] = { {QKeySequence::Close, 0, Qt::CTRL | Qt::Key_F4, KB_Mac}, {QKeySequence::NextChild, 0, Qt::CTRL | Qt::Key_F6, KB_Win}, {QKeySequence::FullScreen, 1, Qt::CTRL | Qt::Key_F11, KB_Gnome}, + {QKeySequence::Deselect, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_A, KB_X11}, {QKeySequence::FullScreen, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_F, KB_KDE}, {QKeySequence::FindPrevious, 1, Qt::CTRL | Qt::SHIFT | Qt::Key_G, KB_Gnome | KB_Mac}, {QKeySequence::FindPrevious, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_G, KB_Win}, @@ -866,6 +868,7 @@ const uint QKeySequencePrivate::numberOfKeyBindings = sizeof(QKeySequencePrivate \value SaveAs Save document after prompting the user for a file name. \value Save Save document. \value SelectAll Select all text. + \value Deselect Deselect text. Since 5.1 \value SelectEndOfBlock Extend selection to the end of a text block. This shortcut is only used on OS X. \value SelectEndOfDocument Extend selection to end of document. \value SelectEndOfLine Extend selection to end of line. diff --git a/src/gui/kernel/qkeysequence.h b/src/gui/kernel/qkeysequence.h index 423fc279a3..05460c6651 100644 --- a/src/gui/kernel/qkeysequence.h +++ b/src/gui/kernel/qkeysequence.h @@ -136,7 +136,8 @@ public: SaveAs, Preferences, Quit, - FullScreen + FullScreen, + Deselect }; enum SequenceFormat { -- cgit v1.2.3 From 0ef4a55014b840ce7ef29b60174dfd7af6b0e801 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 5 Mar 2013 10:03:16 +0100 Subject: Perform kerning in QRawFont::advancesForGlyphIndexes Being able to calculate advances for series of glyphs include kerning is important to be able get kerning on QGlyphRun. Note this kerning is only truetype kerning, since opentype kerning is performed during shaping. Change-Id: I8d7458066431cbdce699647056fd0d7a76b20aa2 Reviewed-by: Eskil Abrahamsen Blomfeldt Reviewed-by: Konstantin Ritt --- src/gui/text/qrawfont.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++---- src/gui/text/qrawfont.h | 20 ++++++++++++++-- 2 files changed, 74 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/gui/text/qrawfont.cpp b/src/gui/text/qrawfont.cpp index 1f42c16d62..5781b49eab 100644 --- a/src/gui/text/qrawfont.cpp +++ b/src/gui/text/qrawfont.cpp @@ -125,6 +125,20 @@ QT_BEGIN_NAMESPACE each pixel. */ +/*! + \enum QRawFont::LayoutFlag + \since 5.1 + + This enum tells the function advancesForGlyphIndexes() how to calculate the advances. + + \value SeparateAdvances Will calculate the advance for each glyph separately. + \value KernedAdvances Will apply kerning between adjacent glyphs. Note that OpenType GPOS based + kerning is currently not supported. + \value UseDesignMetrics Use design metrics instead of hinted metrics adjusted to the resolution + of the paint device. + Can be OR-ed with any of the options above. +*/ + /*! Constructs an invalid QRawFont. */ @@ -510,25 +524,42 @@ bool QRawFont::glyphIndexesForChars(const QChar *chars, int numChars, quint32 *g } /*! - \fn QVector QRawFont::advancesForGlyphIndexes(const QVector &glyphIndexes) const + \fn QVector QRawFont::advancesForGlyphIndexes(const QVector &glyphIndexes, LayoutFlags layoutFlags) const + \since 5.1 Returns the QRawFont's advances for each of the \a glyphIndexes in pixel units. The advances give the distance from the position of a given glyph to where the next glyph should be drawn - to make it appear as if the two glyphs are unspaced. + to make it appear as if the two glyphs are unspaced. How the advances are calculated is + controlled by \a layoutFlags. \sa QTextLine::horizontalAdvance(), QFontMetricsF::width() */ /*! + \fn QVector QRawFont::advancesForGlyphIndexes(const QVector &glyphIndexes) const + + \overload + + Returns the QRawFont's advances for each of the \a glyphIndexes in pixel units. The advances + give the distance from the position of a given glyph to where the next glyph should be drawn + to make it appear as if the two glyphs are unspaced. The advance of each glyph is calculated + separately. + + \sa QTextLine::horizontalAdvance(), QFontMetricsF::width() +*/ + +/*! + \since 5.1 + Returns the QRawFont's advances for each of the \a glyphIndexes in pixel units. The advances give the distance from the position of a given glyph to where the next glyph should be drawn to make it appear as if the two glyphs are unspaced. The glyph indexes are given with the array \a glyphIndexes while the results are returned through \a advances, both of them must - have \a numGlyphs elements. + have \a numGlyphs elements. How the advances are calculated is controlled by \a layoutFlags. \sa QTextLine::horizontalAdvance(), QFontMetricsF::width() */ -bool QRawFont::advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs) const +bool QRawFont::advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs, LayoutFlags layoutFlags) const { Q_ASSERT(glyphIndexes && advances); if (!d->isValid() || numGlyphs <= 0) @@ -542,7 +573,11 @@ bool QRawFont::advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *adv glyphs.advances_x = advances_x.data(); glyphs.advances_y = advances_y.data(); - d->fontEngine->recalcAdvances(&glyphs, 0); + bool design = layoutFlags & UseDesignMetrics; + + d->fontEngine->recalcAdvances(&glyphs, design ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlag(0)); + if (layoutFlags & KernedAdvances) + d->fontEngine->doKerning(&glyphs, design ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlag(0)); for (int i=0; i glyphIndexesForString(const QString &text) const; inline QVector advancesForGlyphIndexes(const QVector &glyphIndexes) const; + inline QVector advancesForGlyphIndexes(const QVector &glyphIndexes, LayoutFlags layoutFlags) const; bool glyphIndexesForChars(const QChar *chars, int numChars, quint32 *glyphIndexes, int *numGlyphs) const; bool advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs) const; + bool advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs, LayoutFlags layoutFlags) const; QImage alphaMapForGlyph(quint32 glyphIndex, AntialiasingType antialiasingType = SubPixelAntialiasing, @@ -145,14 +154,21 @@ private: Q_DECLARE_SHARED(QRawFont) -inline QVector QRawFont::advancesForGlyphIndexes(const QVector &glyphIndexes) const +Q_DECLARE_OPERATORS_FOR_FLAGS(QRawFont::LayoutFlags) + +inline QVector QRawFont::advancesForGlyphIndexes(const QVector &glyphIndexes, QRawFont::LayoutFlags layoutFlags) const { QVector advances(glyphIndexes.size()); - if (advancesForGlyphIndexes(glyphIndexes.constData(), advances.data(), glyphIndexes.size())) + if (advancesForGlyphIndexes(glyphIndexes.constData(), advances.data(), glyphIndexes.size(), layoutFlags)) return advances; return QVector(); } +inline QVector QRawFont::advancesForGlyphIndexes(const QVector &glyphIndexes) const +{ + return advancesForGlyphIndexes(glyphIndexes, QRawFont::SeparateAdvances); +} + QT_END_NAMESPACE #endif // QT_NO_RAWFONT -- cgit v1.2.3 From d1b4857d1718ef50dba64c8700253fed5d187ab2 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sun, 10 Mar 2013 13:34:52 -0700 Subject: Make sure that we #include qconfig.h before testing for features. This is mandatory in public headers (qiodevice.h, qopengl*, etc.), but it's a good idea even in private headers, in case someone includes that header first somewhere. In particular, all platformsupport API is private. Change-Id: If287baa5d9ed14e93c1666efa0e6332c4c1cd9a4 Reviewed-by: Lars Knoll Reviewed-by: Oswald Buddenhagen --- src/corelib/io/qiodevice.h | 1 + src/corelib/kernel/qfunctions_nacl.h | 2 ++ src/corelib/kernel/qfunctions_vxworks.h | 3 +++ src/corelib/kernel/qfunctions_wince.h | 3 +++ src/corelib/kernel/qtimer.h | 2 ++ src/corelib/tools/qregexp.h | 2 ++ src/corelib/tools/qregularexpression.h | 2 ++ src/gui/accessible/qaccessible.h | 2 ++ src/gui/image/qiconloader_p.h | 2 ++ src/gui/kernel/qopenglcontext.h | 2 ++ src/gui/kernel/qplatformopenglcontext.h | 3 ++- src/gui/opengl/qopengl.h | 4 ++-- src/gui/opengl/qopenglbuffer.h | 2 ++ src/gui/opengl/qopenglframebufferobject.h | 2 ++ src/gui/opengl/qopenglfunctions.h | 2 ++ src/gui/opengl/qopenglpaintdevice.h | 2 ++ src/gui/opengl/qopenglshaderprogram.h | 2 ++ src/gui/opengl/qopenglversionfunctions.h | 3 ++- src/gui/text/qtextodfwriter_p.h | 3 +++ src/gui/text/qzipreader_p.h | 2 ++ src/gui/text/qzipwriter_p.h | 3 +++ src/openglextensions/qopenglextensions.h | 3 ++- .../fontdatabases/genericunix/qgenericunixfontdatabase_p.h | 2 ++ src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h | 1 + src/plugins/platforms/cocoa/qcocoasystemtrayicon.h | 2 ++ src/plugins/platforms/cocoa/qprintengine_mac_p.h | 2 ++ src/plugins/platforms/qnx/qqnxclipboard.h | 2 ++ src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h | 2 ++ src/printsupport/kernel/qpaintengine_alpha_p.h | 2 ++ src/printsupport/kernel/qprintengine_win_p.h | 2 ++ src/sql/drivers/db2/qsql_db2_p.h | 2 ++ src/testlib/qtestaccessible.h | 2 ++ src/widgets/dialogs/qfiledialog_p.h | 2 ++ src/widgets/dialogs/qwizard_win_p.h | 2 ++ src/widgets/kernel/qwidgetsfunctions_wince.h | 3 +++ src/widgets/styles/qcommonstylepixmaps_p.h | 2 ++ src/widgets/widgets/qscrollarea_p.h | 2 ++ 37 files changed, 77 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qiodevice.h b/src/corelib/io/qiodevice.h index 39c2d70492..cdc90f21bb 100644 --- a/src/corelib/io/qiodevice.h +++ b/src/corelib/io/qiodevice.h @@ -42,6 +42,7 @@ #ifndef QIODEVICE_H #define QIODEVICE_H +#include #ifndef QT_NO_QOBJECT #include #else diff --git a/src/corelib/kernel/qfunctions_nacl.h b/src/corelib/kernel/qfunctions_nacl.h index f40807a0d9..c15b9756d0 100644 --- a/src/corelib/kernel/qfunctions_nacl.h +++ b/src/corelib/kernel/qfunctions_nacl.h @@ -42,6 +42,8 @@ #ifndef QFUNCTIONS_NACL_H #define QFUNCTIONS_NACL_H +#include + #ifdef Q_OS_NACL #include diff --git a/src/corelib/kernel/qfunctions_vxworks.h b/src/corelib/kernel/qfunctions_vxworks.h index 02c599f490..e33401a86a 100644 --- a/src/corelib/kernel/qfunctions_vxworks.h +++ b/src/corelib/kernel/qfunctions_vxworks.h @@ -41,6 +41,9 @@ #ifndef QFUNCTIONS_VXWORKS_H #define QFUNCTIONS_VXWORKS_H + +#include + #ifdef Q_OS_VXWORKS #include diff --git a/src/corelib/kernel/qfunctions_wince.h b/src/corelib/kernel/qfunctions_wince.h index 4eeb9cff6a..ab7bbe3f99 100644 --- a/src/corelib/kernel/qfunctions_wince.h +++ b/src/corelib/kernel/qfunctions_wince.h @@ -41,6 +41,9 @@ #ifndef QFUNCTIONS_WINCE_H #define QFUNCTIONS_WINCE_H + +#include + #ifdef Q_OS_WINCE #include #include diff --git a/src/corelib/kernel/qtimer.h b/src/corelib/kernel/qtimer.h index 34bfff9089..3484f4dba8 100644 --- a/src/corelib/kernel/qtimer.h +++ b/src/corelib/kernel/qtimer.h @@ -42,6 +42,8 @@ #ifndef QTIMER_H #define QTIMER_H +#include + #ifndef QT_NO_QOBJECT #include // conceptual inheritance diff --git a/src/corelib/tools/qregexp.h b/src/corelib/tools/qregexp.h index acf59d7196..26b0b78317 100644 --- a/src/corelib/tools/qregexp.h +++ b/src/corelib/tools/qregexp.h @@ -42,6 +42,8 @@ #ifndef QREGEXP_H #define QREGEXP_H +#include + #ifndef QT_NO_REGEXP #include diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index 97dbee9256..5059ea6431 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -43,6 +43,8 @@ #ifndef QREGULAREXPRESSION_H #define QREGULAREXPRESSION_H +#include + #ifndef QT_NO_REGULAREXPRESSION #include diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h index 96fc7c031b..09e259c1d0 100644 --- a/src/gui/accessible/qaccessible.h +++ b/src/gui/accessible/qaccessible.h @@ -39,6 +39,8 @@ ** ****************************************************************************/ +#include + #ifndef QT_NO_ACCESSIBILITY #ifndef QACCESSIBLE_H #define QACCESSIBLE_H diff --git a/src/gui/image/qiconloader_p.h b/src/gui/image/qiconloader_p.h index ea144ec299..419d93d576 100644 --- a/src/gui/image/qiconloader_p.h +++ b/src/gui/image/qiconloader_p.h @@ -42,6 +42,8 @@ #ifndef QICONLOADER_P_H #define QICONLOADER_P_H +#include + #ifndef QT_NO_ICON // // W A R N I N G diff --git a/src/gui/kernel/qopenglcontext.h b/src/gui/kernel/qopenglcontext.h index 52b4a2da28..419fd541eb 100644 --- a/src/gui/kernel/qopenglcontext.h +++ b/src/gui/kernel/qopenglcontext.h @@ -42,6 +42,8 @@ #ifndef QOPENGLCONTEXT_H #define QOPENGLCONTEXT_H +#include + #ifndef QT_NO_OPENGL #include diff --git a/src/gui/kernel/qplatformopenglcontext.h b/src/gui/kernel/qplatformopenglcontext.h index 9e13622283..42e4db2f9d 100644 --- a/src/gui/kernel/qplatformopenglcontext.h +++ b/src/gui/kernel/qplatformopenglcontext.h @@ -51,9 +51,10 @@ // source and binary incompatible with future versions of Qt. // +#include + #ifndef QT_NO_OPENGL -#include #include #include #include diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h index c5bff90d2a..6e8be66806 100644 --- a/src/gui/opengl/qopengl.h +++ b/src/gui/opengl/qopengl.h @@ -42,10 +42,10 @@ #ifndef QOPENGL_H #define QOPENGL_H -#ifndef QT_NO_OPENGL - #include +#ifndef QT_NO_OPENGL + // Windows always needs this to ensure that APIENTRY gets defined #if defined(Q_OS_WIN) # include diff --git a/src/gui/opengl/qopenglbuffer.h b/src/gui/opengl/qopenglbuffer.h index 014060086d..ab564e9001 100644 --- a/src/gui/opengl/qopenglbuffer.h +++ b/src/gui/opengl/qopenglbuffer.h @@ -42,6 +42,8 @@ #ifndef QOPENGLBUFFER_H #define QOPENGLBUFFER_H +#include + #ifndef QT_NO_OPENGL #include diff --git a/src/gui/opengl/qopenglframebufferobject.h b/src/gui/opengl/qopenglframebufferobject.h index e4fd7c8e95..215d3701ca 100644 --- a/src/gui/opengl/qopenglframebufferobject.h +++ b/src/gui/opengl/qopenglframebufferobject.h @@ -42,6 +42,8 @@ #ifndef QOPENGLFRAMEBUFFEROBJECT_H #define QOPENGLFRAMEBUFFEROBJECT_H +#include + #ifndef QT_NO_OPENGL #include diff --git a/src/gui/opengl/qopenglfunctions.h b/src/gui/opengl/qopenglfunctions.h index 7d88f8b08b..1548ad4a24 100644 --- a/src/gui/opengl/qopenglfunctions.h +++ b/src/gui/opengl/qopenglfunctions.h @@ -42,6 +42,8 @@ #ifndef QOPENGLFUNCTIONS_H #define QOPENGLFUNCTIONS_H +#include + #ifndef QT_NO_OPENGL #ifdef __GLEW_H__ diff --git a/src/gui/opengl/qopenglpaintdevice.h b/src/gui/opengl/qopenglpaintdevice.h index 5868a5740a..c05571c928 100644 --- a/src/gui/opengl/qopenglpaintdevice.h +++ b/src/gui/opengl/qopenglpaintdevice.h @@ -42,6 +42,8 @@ #ifndef QOPENGLPAINTDEVICE_H #define QOPENGLPAINTDEVICE_H +#include + #ifndef QT_NO_OPENGL #include diff --git a/src/gui/opengl/qopenglshaderprogram.h b/src/gui/opengl/qopenglshaderprogram.h index 6c3dd37843..b894ae3af8 100644 --- a/src/gui/opengl/qopenglshaderprogram.h +++ b/src/gui/opengl/qopenglshaderprogram.h @@ -42,6 +42,8 @@ #ifndef QOPENGLSHADERPROGRAM_H #define QOPENGLSHADERPROGRAM_H +#include + #ifndef QT_NO_OPENGL #include diff --git a/src/gui/opengl/qopenglversionfunctions.h b/src/gui/opengl/qopenglversionfunctions.h index 474a5d5d1f..b58a7186d1 100644 --- a/src/gui/opengl/qopenglversionfunctions.h +++ b/src/gui/opengl/qopenglversionfunctions.h @@ -51,9 +51,10 @@ #ifndef QOPENGLVERSIONFUNCTIONS_H #define QOPENGLVERSIONFUNCTIONS_H +#include + #ifndef QT_NO_OPENGL -#include #include #include #include diff --git a/src/gui/text/qtextodfwriter_p.h b/src/gui/text/qtextodfwriter_p.h index cbdc5fbb95..6683e1eed9 100644 --- a/src/gui/text/qtextodfwriter_p.h +++ b/src/gui/text/qtextodfwriter_p.h @@ -41,6 +41,9 @@ #ifndef QTEXTODFWRITER_H #define QTEXTODFWRITER_H + +#include + #ifndef QT_NO_TEXTODFWRITER // diff --git a/src/gui/text/qzipreader_p.h b/src/gui/text/qzipreader_p.h index a784d7d9ea..b641689e47 100644 --- a/src/gui/text/qzipreader_p.h +++ b/src/gui/text/qzipreader_p.h @@ -42,6 +42,8 @@ #ifndef QZIPREADER_H #define QZIPREADER_H +#include + #ifndef QT_NO_TEXTODFWRITER // diff --git a/src/gui/text/qzipwriter_p.h b/src/gui/text/qzipwriter_p.h index 1246da5a05..e6a19e22e4 100644 --- a/src/gui/text/qzipwriter_p.h +++ b/src/gui/text/qzipwriter_p.h @@ -40,6 +40,9 @@ ****************************************************************************/ #ifndef QZIPWRITER_H #define QZIPWRITER_H + +#include + #ifndef QT_NO_TEXTODFWRITER // diff --git a/src/openglextensions/qopenglextensions.h b/src/openglextensions/qopenglextensions.h index 0e9e2c60d4..7d6c21e4e5 100644 --- a/src/openglextensions/qopenglextensions.h +++ b/src/openglextensions/qopenglextensions.h @@ -51,9 +51,10 @@ #ifndef QOPENGLEXTENSIONS_H #define QOPENGLEXTENSIONS_H +#include + #ifndef QT_NO_OPENGL -#include #include class QOpenGLContext; diff --git a/src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h b/src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h index 1995ead657..a8a0b8fe9c 100644 --- a/src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h +++ b/src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h @@ -42,6 +42,8 @@ #ifndef QGENERICUNIXFONTDATABASE_H #define QGENERICUNIXFONTDATABASE_H +#include + #ifdef Q_FONTCONFIGDATABASE #include typedef QFontconfigDatabase QGenericUnixFontDatabase; diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h index 7ebe7a4e9d..3b1fbe042d 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h +++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h @@ -41,6 +41,7 @@ #ifndef QCOCOAACCESIBILITYELEMENT_H #define QCOCOAACCESIBILITYELEMENT_H +#include #import #import diff --git a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.h b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.h index 89ab51cf05..61a6ba3e2f 100755 --- a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.h +++ b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.h @@ -43,6 +43,8 @@ #ifndef QCOCOASYSTEMTRAYICON_P_H #define QCOCOASYSTEMTRAYICON_P_H +#include + #ifndef QT_NO_SYSTEMTRAYICON #include "QtCore/qstring.h" diff --git a/src/plugins/platforms/cocoa/qprintengine_mac_p.h b/src/plugins/platforms/cocoa/qprintengine_mac_p.h index fd1b60a9ad..28183118d8 100644 --- a/src/plugins/platforms/cocoa/qprintengine_mac_p.h +++ b/src/plugins/platforms/cocoa/qprintengine_mac_p.h @@ -53,6 +53,8 @@ // We mean it. // +#include + #ifndef QT_NO_PRINTER #include diff --git a/src/plugins/platforms/qnx/qqnxclipboard.h b/src/plugins/platforms/qnx/qqnxclipboard.h index 0b75393efd..e069355adc 100644 --- a/src/plugins/platforms/qnx/qqnxclipboard.h +++ b/src/plugins/platforms/qnx/qqnxclipboard.h @@ -42,6 +42,8 @@ #ifndef QQNXCLIPBOARD_H #define QQNXCLIPBOARD_H +#include + #ifndef QT_NO_CLIPBOARD #include diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h index 35ed6f3891..106087f757 100644 --- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h +++ b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h @@ -42,6 +42,8 @@ #ifndef QWINDOWSFONTENGINEDIRECTWRITE_H #define QWINDOWSFONTENGINEDIRECTWRITE_H +#include + #ifndef QT_NO_DIRECTWRITE #include diff --git a/src/printsupport/kernel/qpaintengine_alpha_p.h b/src/printsupport/kernel/qpaintengine_alpha_p.h index 99b9b930e9..8a0781d0d3 100644 --- a/src/printsupport/kernel/qpaintengine_alpha_p.h +++ b/src/printsupport/kernel/qpaintengine_alpha_p.h @@ -53,6 +53,8 @@ // We mean it. // +#include + #ifndef QT_NO_PRINTER #include "private/qpaintengine_p.h" #include diff --git a/src/printsupport/kernel/qprintengine_win_p.h b/src/printsupport/kernel/qprintengine_win_p.h index ffeebb0704..93fe993088 100644 --- a/src/printsupport/kernel/qprintengine_win_p.h +++ b/src/printsupport/kernel/qprintengine_win_p.h @@ -53,6 +53,8 @@ // We mean it. // +#include + #ifndef QT_NO_PRINTER #include diff --git a/src/sql/drivers/db2/qsql_db2_p.h b/src/sql/drivers/db2/qsql_db2_p.h index 6a5363740b..68563448ed 100644 --- a/src/sql/drivers/db2/qsql_db2_p.h +++ b/src/sql/drivers/db2/qsql_db2_p.h @@ -53,6 +53,8 @@ // We mean it. // +#include + #ifdef QT_PLUGIN #define Q_EXPORT_SQLDRIVER_DB2 #else diff --git a/src/testlib/qtestaccessible.h b/src/testlib/qtestaccessible.h index 24fc1d7991..f27651c3ad 100644 --- a/src/testlib/qtestaccessible.h +++ b/src/testlib/qtestaccessible.h @@ -47,6 +47,8 @@ #pragma qt_no_master_include #endif +#include + #ifndef QT_NO_ACCESSIBILITY #define QVERIFY_EVENT(event) \ diff --git a/src/widgets/dialogs/qfiledialog_p.h b/src/widgets/dialogs/qfiledialog_p.h index ffaa2bc6f8..4292df5890 100644 --- a/src/widgets/dialogs/qfiledialog_p.h +++ b/src/widgets/dialogs/qfiledialog_p.h @@ -53,6 +53,8 @@ // We mean it. // +#include + #ifndef QT_NO_FILEDIALOG #include "qfiledialog.h" diff --git a/src/widgets/dialogs/qwizard_win_p.h b/src/widgets/dialogs/qwizard_win_p.h index badaab52d9..542f59e1b2 100644 --- a/src/widgets/dialogs/qwizard_win_p.h +++ b/src/widgets/dialogs/qwizard_win_p.h @@ -53,6 +53,8 @@ // We mean it. // +#include + #ifndef QT_NO_WIZARD #ifndef QT_NO_STYLE_WINDOWSVISTA diff --git a/src/widgets/kernel/qwidgetsfunctions_wince.h b/src/widgets/kernel/qwidgetsfunctions_wince.h index cc8c1e4a03..ca742e296a 100644 --- a/src/widgets/kernel/qwidgetsfunctions_wince.h +++ b/src/widgets/kernel/qwidgetsfunctions_wince.h @@ -40,6 +40,9 @@ ****************************************************************************/ #ifndef QWIDGETSFUNCTIONS_WCE_H #define QWIDGETSFUNCTIONS_WCE_H + +#include + #ifdef Q_OS_WINCE #include diff --git a/src/widgets/styles/qcommonstylepixmaps_p.h b/src/widgets/styles/qcommonstylepixmaps_p.h index 0699ff8914..20607ccd60 100644 --- a/src/widgets/styles/qcommonstylepixmaps_p.h +++ b/src/widgets/styles/qcommonstylepixmaps_p.h @@ -39,6 +39,8 @@ ** ****************************************************************************/ +#include + #ifndef QT_NO_IMAGEFORMAT_XPM // diff --git a/src/widgets/widgets/qscrollarea_p.h b/src/widgets/widgets/qscrollarea_p.h index ee38221877..c5c00d3451 100644 --- a/src/widgets/widgets/qscrollarea_p.h +++ b/src/widgets/widgets/qscrollarea_p.h @@ -53,6 +53,8 @@ // We mean it. // +#include + #ifndef QT_NO_SCROLLAREA #include "private/qabstractscrollarea_p.h" -- cgit v1.2.3 From d2a98df9bcb113d9ef8ea0e7c1472875372706c7 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 13 Mar 2013 11:56:08 -0700 Subject: Make sure that signal disconnects don't disconnect too much There has been a latent bug forever in QtDBus that would make a signal disconnect actually disconnect too much. The reason is that disconnectNotify() is called every time a signal is disconnected from a receiver, but that doesn't mean it was the last connection. This test checks whether disconnecting from voidSignal() to our test receiver will also disconnect from exitLoop(). If it does, we'll get a timeout. I could have implemented it with two receivers, but in the buggy case, it would always fail first in the timeout verification. Change-Id: I5766d8a38594eb25e65b304913251303660fad41 Reviewed-by: Frederik Gladhorn --- src/dbus/qdbusabstractinterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp index 22fe4a5fd8..2d7b15fe62 100644 --- a/src/dbus/qdbusabstractinterface.cpp +++ b/src/dbus/qdbusabstractinterface.cpp @@ -609,7 +609,7 @@ void QDBusAbstractInterface::disconnectNotify(const QMetaMethod &signal) return; QDBusConnectionPrivate *conn = d->connectionPrivate(); - if (conn) + if (conn && !isSignalConnected(signal)) conn->disconnectRelay(d->service, d->path, d->interface, this, signal); } -- cgit v1.2.3 From 537679cb1231d63825f839df9332701d2af35de1 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 13 Mar 2013 12:03:11 -0700 Subject: Fix wildcard signal disconnection in QDBusAbstractInterface This has been broken forever, just like generic signal disconnection. It didn't use to show up before because in Qt 4, QObject's destructor would not call disconnectNotify(). Just like in the previous commit, we need to verify whether the signal was disconnected from the last receiver. A wildcard disconnect might be disconnecting only from a specific receiver. Task-number: QTBUG-29498 Change-Id: I0790128ea878fdf3ac563c99d96c6aa7d270e9a3 Reviewed-by: Frederik Gladhorn --- src/dbus/qdbusabstractinterface.cpp | 19 ++++++++++++++++--- src/dbus/qdbusintegrator.cpp | 2 -- 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp index 2d7b15fe62..53def1beb6 100644 --- a/src/dbus/qdbusabstractinterface.cpp +++ b/src/dbus/qdbusabstractinterface.cpp @@ -609,9 +609,22 @@ void QDBusAbstractInterface::disconnectNotify(const QMetaMethod &signal) return; QDBusConnectionPrivate *conn = d->connectionPrivate(); - if (conn && !isSignalConnected(signal)) - conn->disconnectRelay(d->service, d->path, d->interface, - this, signal); + if (conn && signal.isValid() && !isSignalConnected(signal)) + return conn->disconnectRelay(d->service, d->path, d->interface, + this, signal); + if (!conn) + return; + + // wildcard disconnecting, we need to figure out which of our signals are + // no longer connected to anything + const QMetaObject *mo = metaObject(); + int midx = QObject::staticMetaObject.methodCount(); + const int end = mo->methodCount(); + for ( ; midx < end; ++midx) { + QMetaMethod mm = mo->method(midx); + if (mm.methodType() == QMetaMethod::Signal && !isSignalConnected(mm)) + conn->disconnectRelay(d->service, d->path, d->interface, this, mm); + } } /*! diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index 839fe55901..afb8506b28 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -2393,8 +2393,6 @@ void QDBusConnectionPrivate::disconnectRelay(const QString &service, return; } } - - qWarning("QDBusConnectionPrivate::disconnectRelay called for a signal that was not found"); } QString QDBusConnectionPrivate::getNameOwner(const QString& serviceName) -- cgit v1.2.3 From 9817707c715e87f470df0f25024333a01b94b0cc Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Sat, 16 Mar 2013 18:12:27 +0100 Subject: Document ResourceError From reading the code it can be ENOSPC or EMFILE Change-Id: I2eecbf8afe0228d330210c25f299af12fab9cb64 Reviewed-by: Oswald Buddenhagen --- src/corelib/io/qfiledevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/io/qfiledevice.cpp b/src/corelib/io/qfiledevice.cpp index b49c3406ee..8825ec33b3 100644 --- a/src/corelib/io/qfiledevice.cpp +++ b/src/corelib/io/qfiledevice.cpp @@ -100,7 +100,7 @@ void QFileDevicePrivate::setError(QFileDevice::FileError err, int errNum) \value ReadError An error occurred when reading from the file. \value WriteError An error occurred when writing to the file. \value FatalError A fatal error occurred. - \value ResourceError + \value ResourceError Out of resources (e.g., too many open files, out of memory, etc.) \value OpenError The file could not be opened. \value AbortError The operation was aborted. \value TimeOutError A timeout occurred. -- cgit v1.2.3 From 1a708277c587031d4d00e095be8251e3893b0c45 Mon Sep 17 00:00:00 2001 From: "Mirko Boehm (AWS)" Date: Thu, 14 Mar 2013 08:32:38 +0100 Subject: Add minimumtotal option to improve accuracy of short-lived benchmarks. Short-lived benchmarks (benchmarks that complete in a very short period of measured time) are often more affected by jitter and warm-up effects than longer running benchmarks. Since QBENCHMARK stores the median result of all accepted benchmark runs, a larger number of aggregation runs is preferable for short-lived tests, but not necessarily for longer running ones. The minimumtotal option, specified in units of the selected measurement, will make the benchmark repeat a benchmark until the total measured cost exceeds the specified threshold. The displayed median result will then tend to be more accurate. This is especially useful for data-driven benchmarks in case the data tags scale the benchmarked operation from little to large cost. Change-Id: Ib857de64aaffc77715a0000d36f0245f31d86b9a Reviewed-by: Jason McDonald --- src/testlib/doc/src/qttestlib-manual.qdoc | 2 ++ src/testlib/qbenchmark.cpp | 1 + src/testlib/qbenchmark_p.h | 1 + src/testlib/qtestcase.cpp | 30 +++++++++++++++++++++++++++++- 4 files changed, 33 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/testlib/doc/src/qttestlib-manual.qdoc b/src/testlib/doc/src/qttestlib-manual.qdoc index 9d4a34c9d4..c44bb49ae3 100644 --- a/src/testlib/doc/src/qttestlib-manual.qdoc +++ b/src/testlib/doc/src/qttestlib-manual.qdoc @@ -268,6 +268,8 @@ Counts events received during benchmarks. \li \c -minimumvalue \e n \br Sets the minimum acceptable measurement value. + \li \c -minimumtotal \e n \br + Sets the minimum acceptable total for repeated executions of a test function. \li \c -iterations \e n \br Sets the number of accumulation iterations. \li \c -median \e n \br diff --git a/src/testlib/qbenchmark.cpp b/src/testlib/qbenchmark.cpp index 91cafc99e3..3ef29e19ce 100644 --- a/src/testlib/qbenchmark.cpp +++ b/src/testlib/qbenchmark.cpp @@ -59,6 +59,7 @@ QBenchmarkGlobalData::QBenchmarkGlobalData() , medianIterationCount(-1) , createChart(false) , verboseOutput(false) + , minimumTotal(-1) , mode_(WallTime) { setMode(mode_); diff --git a/src/testlib/qbenchmark_p.h b/src/testlib/qbenchmark_p.h index c5dac38fec..351287b103 100644 --- a/src/testlib/qbenchmark_p.h +++ b/src/testlib/qbenchmark_p.h @@ -160,6 +160,7 @@ public: bool createChart; bool verboseOutput; QString callgrindOutFileBase; + int minimumTotal; private: Mode mode_; }; diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index c1ab574291..27fcc64ceb 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -64,6 +64,8 @@ #include #include +#include + #include #include #include @@ -1351,6 +1353,7 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml) #endif " -eventcounter : Counts events received during benchmarks\n" " -minimumvalue n : Sets the minimum acceptable measurement value\n" + " -minimumtotal n : Sets the minimum acceptable total for repeated executions of a test function\n" " -iterations n : Sets the number of accumulation iterations.\n" " -median n : Sets the number of median iterations.\n" " -vb : Print out verbose benchmarking information.\n"; @@ -1518,6 +1521,13 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, char *argv[], bool qml) } else { QBenchmarkGlobalData::current->walltimeMinimum = qToInt(argv[++i]); } + } else if (strcmp(argv[i], "-minimumtotal") == 0) { + if (i + 1 >= argc) { + fprintf(stderr, "-minimumtotal needs an extra parameter to indicate the minimum total measurement\n"); + exit(1); + } else { + QBenchmarkGlobalData::current->minimumTotal = qToInt(argv[++i]); + } } else if (strcmp(argv[i], "-iterations") == 0) { if (i + 1 >= argc) { fprintf(stderr, "-iterations needs an extra parameter to indicate the number of iterations\n"); @@ -1647,6 +1657,15 @@ struct QTestDataSetter } }; +namespace { + +qreal addResult(qreal current, const QBenchmarkResult& r) +{ + return current + r.value; +} + +} + static void qInvokeTestMethodDataEntry(char *slot) { /* Benchmarking: for each median iteration*/ @@ -1655,6 +1674,7 @@ static void qInvokeTestMethodDataEntry(char *slot) int i = (QBenchmarkGlobalData::current->measurer->needsWarmupIteration()) ? -1 : 0; QList results; + bool minimumTotalReached = false; do { QBenchmarkTestMethodData::current->beginDataRun(); @@ -1713,8 +1733,16 @@ static void qInvokeTestMethodDataEntry(char *slot) } } } + + // Verify if the minimum total measurement is reached, if it was specified: + if (QBenchmarkGlobalData::current->minimumTotal == -1) { + minimumTotalReached = true; + } else { + const qreal total = std::accumulate(results.begin(), results.end(), 0.0, addResult); + minimumTotalReached = (total >= QBenchmarkGlobalData::current->minimumTotal); + } } while (isBenchmark - && (++i < QBenchmarkGlobalData::current->adjustMedianIterationCount()) + && ((++i < QBenchmarkGlobalData::current->adjustMedianIterationCount()) || !minimumTotalReached) && !QTestResult::skipCurrentTest() && !QTestResult::currentTestFailed()); // If the test is a benchmark, finalize the result after all iterations have finished. -- cgit v1.2.3 From 5bc32bcced8de4cd773edc992ea0be7dd426dcf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 18 Mar 2013 12:35:07 +0100 Subject: Fix build on iOS by using QOPENGLF_APIENTRY intead of APIENTRY directly QOPENGLF_APIENTRY masks over GL vs ES, as we need GL_APIENTRY on iOS, where APIENTRY is not defined. Change-Id: I60c097d67e0844c30913c913cf88a9b9e181813b Reviewed-by: Sean Harmer --- src/gui/opengl/qopengldebug.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/opengl/qopengldebug.cpp b/src/gui/opengl/qopengldebug.cpp index b01c44a1b4..3920b75a05 100644 --- a/src/gui/opengl/qopengldebug.cpp +++ b/src/gui/opengl/qopengldebug.cpp @@ -588,7 +588,7 @@ QT_BEGIN_NAMESPACE #define GL_STACK_UNDERFLOW 0x0504 #endif -typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); +typedef void (QOPENGLF_APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); #endif /* GL_KHR_debug */ -- cgit v1.2.3 From f8624b188b648defb82f65772ccc38286d1b8586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 18 Mar 2013 14:30:28 +0100 Subject: iOS: Use didFinishLaunchingWithOptions to support iOS < 6.0 UIApplicationDelegate's willFinishLaunchingWithOptions message was introduced in 6.0. For now we don't need to distinguish the two, so no need to use willFinishLaunchingWithOptions on iOS >= 6.0. Change-Id: Ic6c2c9d2901def5a5500b186ed57fbe8b8c556d1 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qtmain.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qtmain.mm b/src/plugins/platforms/ios/qtmain.mm index 10c83f4b18..916224f936 100644 --- a/src/plugins/platforms/ios/qtmain.mm +++ b/src/plugins/platforms/ios/qtmain.mm @@ -53,7 +53,7 @@ extern int qt_main(int argc, char *argv[]); @implementation QIOSMainWrapperApplicationDelegate -- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.rootViewController = [[[QIOSViewController alloc] init] autorelease]; @@ -70,7 +70,7 @@ extern int qt_main(int argc, char *argv[]); selector:@selector(runUserMain) userInfo:nil repeats:NO]; if ([QIOSApplicationDelegate instancesRespondToSelector:_cmd]) - return [super application:application willFinishLaunchingWithOptions:launchOptions]; + return [super application:application didFinishLaunchingWithOptions:launchOptions]; else return YES; } -- cgit v1.2.3 From 79e729e111dd799ddbe281aaddfbc0e1ec0e7bc0 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Wed, 13 Mar 2013 15:28:39 +0100 Subject: OSX: obey the Qt::WindowTransparentForInput flag Ignoring the mouse means you don't get window enter/exit events for that window either. Task-number: QTBUG-30122 Change-Id: I979be9f72f7d225d7b960fc5db4c3956d2749982 Reviewed-by: Gabriel de Dietrich --- src/plugins/platforms/cocoa/qcocoawindow.mm | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 500eea6f4b..5eab036661 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -418,6 +418,8 @@ void QCocoaWindow::setWindowFlags(Qt::WindowFlags flags) NSInteger level = this->windowLevel(flags); [m_nsWindow setStyleMask:styleMask]; [m_nsWindow setLevel:level]; + [m_nsWindow setIgnoresMouseEvents:((flags & Qt::ToolTip) == Qt::ToolTip) ? YES : NO]; + // TODO deal with WindowTransparentForInput; setIgnoresMouseEvents is too extreme, you can't click the titlebar setWindowShadow(flags); } -- cgit v1.2.3 From bd8630763c407f723533e4f29f24647d96a79288 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Mon, 18 Mar 2013 15:03:06 +0100 Subject: OSX: a window which has WindowDoesNotAcceptFocus isn't first responder Change-Id: If02ce190d93fcae18f1e1b41bc73c83b3226d4e7 Reviewed-by: Gabriel de Dietrich --- src/plugins/platforms/cocoa/qnsview.mm | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 8f88387966..18714ddbae 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -397,6 +397,8 @@ static QTouchDevice *touchDevice = 0; - (BOOL)acceptsFirstResponder { + if (m_window->flags() & Qt::WindowDoesNotAcceptFocus) + return NO; if ((m_window->flags() & Qt::ToolTip) == Qt::ToolTip) return NO; return YES; -- cgit v1.2.3 From 0654c066d9b67e5c261b708196096311d695adcd Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 18 Mar 2013 18:16:40 +0200 Subject: Move QTextEngine implementation details from QTextLayout As of now, we'll have everything related to the additional formats handling just in a single place. Make specialData private to prevent accessing it from outside. This helped in tracking-down several related issues: - in format(const QScriptItem *), the resolvedFormatIndices can not be empty at that point, so the code path is dead; - in resolveAdditionalFormats(), testing if formats has not been indexed yet is not needed since they are indexed just in the setter; - in useRawFont mode, hasFormats() didn't check if QTextEngine really has some formats, which potentially leads to formatting artifacts. Change-Id: Id4b912888fd5a1fa83f01007170134b6386e2879 Reviewed-by: Lars Knoll Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qtextengine.cpp | 100 ++++++++++++++++++++++++++++++------------- src/gui/text/qtextengine_p.h | 18 ++++++-- src/gui/text/qtextlayout.cpp | 63 ++++----------------------- 3 files changed, 95 insertions(+), 86 deletions(-) (limited to 'src') diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index f1a0804e68..ad85fedcd0 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1164,7 +1164,7 @@ void QTextEngine::shapeTextWithHarfbuzz(int item) const layoutData->used += si.num_glyphs; } -static void init(QTextEngine *e) +void QTextEngine::init(QTextEngine *e) { e->ignoreBidi = false; e->cacheGlyphs = false; @@ -1433,10 +1433,11 @@ void QTextEngine::itemize() const #ifndef QT_NO_RAWFONT if (useRawFont && specialData) { int lastIndex = 0; + const QTextFormatCollection *collection = formats(); for (int i = 0; i < specialData->addFormats.size(); ++i) { const QTextLayout::FormatRange &range = specialData->addFormats.at(i); - QTextCharFormat format = formats()->charFormat(specialData->addFormatIndices.at(i)); - if (format.fontCapitalization()) { + const QTextCharFormat format = collection->charFormat(specialData->addFormatIndices.at(i)); + if (format.hasProperty(QTextFormat::FontCapitalization)) { itemizer.generate(lastIndex, range.start - lastIndex, QFont::MixedCase); itemizer.generate(range.start, range.length, format.fontCapitalization()); lastIndex = range.start + range.length; @@ -2209,25 +2210,9 @@ int QTextEngine::formatIndex(const QScriptItem *si) const QTextCharFormat QTextEngine::format(const QScriptItem *si) const { - QTextCharFormat format; - const QTextFormatCollection *formats = this->formats(); - - if (formats) - format = formats->charFormat(formatIndex(si)); - - if (specialData && specialData->resolvedFormatIndices.isEmpty()) { - int end = si->position + length(si); - for (int i = 0; i < specialData->addFormats.size(); ++i) { - const QTextLayout::FormatRange &r = specialData->addFormats.at(i); - if (r.start <= si->position && r.start + r.length >= end) { - if (!specialData->addFormatIndices.isEmpty()) - format.merge(formats->format(specialData->addFormatIndices.at(i))); - else - format.merge(r.format); - } - } - } - return format; + if (const QTextFormatCollection *formats = this->formats()) + return formats->charFormat(formatIndex(si)); + return QTextCharFormat(); } void QTextEngine::addRequiredBoundaries() const @@ -2298,6 +2283,67 @@ bool QTextEngine::atSpace(int position) const return false; } +void QTextEngine::setPreeditArea(int position, const QString &preeditText) +{ + if (preeditText.isEmpty()) { + if (!specialData) + return; + if (specialData->addFormats.isEmpty()) { + delete specialData; + specialData = 0; + } else { + specialData->preeditText = QString(); + specialData->preeditPosition = -1; + } + } else { + if (!specialData) + specialData = new SpecialData; + specialData->preeditPosition = position; + specialData->preeditText = preeditText; + } + invalidate(); + clearLineData(); +} + +QList QTextEngine::additionalFormats() const +{ + QList formatList; + if (!specialData) + return formatList; + + formatList = specialData->addFormats; + if (!specialData->addFormatIndices.isEmpty()) { + const QTextFormatCollection *formats = this->formats(); + Q_ASSERT(formats); + for (int i = 0; i < specialData->addFormatIndices.size(); ++i) + formatList[i].format = formats->charFormat(specialData->addFormatIndices.at(i)); + } + + return formatList; +} + +void QTextEngine::setAdditionalFormats(const QList &formatList) +{ + if (formatList.isEmpty()) { + if (!specialData) + return; + if (specialData->preeditText.isEmpty()) { + delete specialData; + specialData = 0; + } else { + specialData->addFormats.clear(); + specialData->addFormatIndices.clear(); + } + } else { + if (!specialData) { + specialData = new SpecialData; + specialData->preeditPosition = -1; + } + specialData->addFormats = formatList; + indexAdditionalFormats(); + } + resetFontEngineCache(); +} void QTextEngine::indexAdditionalFormats() { @@ -2775,13 +2821,9 @@ void QTextEngine::resolveAdditionalFormats() const } foreach (int cur, currentFormats) { - const QTextLayout::FormatRange &r = specialData->addFormats.at(cur); - Q_ASSERT (r.start <= si->position && r.start + r.length >= end); - if (!specialData->addFormatIndices.isEmpty()) { - format.merge(collection->format(specialData->addFormatIndices.at(cur))); - } else { - format.merge(r.format); - } + Q_ASSERT(specialData->addFormats.at(cur).start <= si->position + && specialData->addFormats.at(cur).start + specialData->addFormats.at(cur).length >= end); + format.merge(collection->format(specialData->addFormatIndices.at(cur))); } indices[i] = collection->indexForFormat(format); } diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h index 88bc5dcc4c..ec7f7407b2 100644 --- a/src/gui/text/qtextengine_p.h +++ b/src/gui/text/qtextengine_p.h @@ -617,13 +617,23 @@ public: ItemDecorationList strikeOutList; ItemDecorationList overlineList; - inline bool hasFormats() const { return (block.docHandle() || specialData); } inline bool visualCursorMovement() const { return (visualMovement || (block.docHandle() ? block.docHandle()->defaultCursorMoveStyle == Qt::VisualMoveStyle : false)); } + inline int preeditAreaPosition() const { return specialData ? specialData->preeditPosition : -1; } + inline QString preeditAreaText() const { return specialData ? specialData->preeditText : QString(); } + void setPreeditArea(int position, const QString &text); + + inline bool hasFormats() const { return block.docHandle() || (specialData && !specialData->addFormats.isEmpty()); } + QList additionalFormats() const; + void setAdditionalFormats(const QList &formatList); + +private: + static void init(QTextEngine *e); + struct SpecialData { int preeditPosition; QString preeditText; @@ -635,9 +645,12 @@ public: }; SpecialData *specialData; + void indexAdditionalFormats(); + void resolveAdditionalFormats() const; + +public: bool atWordSeparator(int position) const; bool atSpace(int position) const; - void indexAdditionalFormats(); QString elidedText(Qt::TextElideMode mode, const QFixed &width, int flags = 0, int from = 0, int count = -1) const; @@ -675,7 +688,6 @@ private: void shapeTextWithHarfbuzz(int item) const; void splitItem(int item, int pos) const; - void resolveAdditionalFormats() const; int endOfLine(int lineNum); int beginningOfLine(int lineNum); int getClusterLength(unsigned short *logClusters, const QCharAttributes *attributes, int from, int to, int glyph_pos, int *start); diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp index 50908f9908..eed6758cc9 100644 --- a/src/gui/text/qtextlayout.cpp +++ b/src/gui/text/qtextlayout.cpp @@ -463,24 +463,10 @@ const QTextOption &QTextLayout::textOption() const */ void QTextLayout::setPreeditArea(int position, const QString &text) { - if (text.isEmpty()) { - if (!d->specialData) - return; - if (d->specialData->addFormats.isEmpty()) { - delete d->specialData; - d->specialData = 0; - } else { - d->specialData->preeditText = QString(); - d->specialData->preeditPosition = -1; - } - } else { - if (!d->specialData) - d->specialData = new QTextEngine::SpecialData; - d->specialData->preeditPosition = position; - d->specialData->preeditText = text; - } - d->invalidate(); - d->clearLineData(); + if (d->preeditAreaPosition() == position && d->preeditAreaText() == text) + return; + d->setPreeditArea(position, text); + if (d->block.docHandle()) d->block.docHandle()->documentChange(d->block.position(), d->block.length()); } @@ -493,7 +479,7 @@ void QTextLayout::setPreeditArea(int position, const QString &text) */ int QTextLayout::preeditAreaPosition() const { - return d->specialData ? d->specialData->preeditPosition : -1; + return d->preeditAreaPosition(); } /*! @@ -503,7 +489,7 @@ int QTextLayout::preeditAreaPosition() const */ QString QTextLayout::preeditAreaText() const { - return d->specialData ? d->specialData->preeditText : QString(); + return d->preeditAreaText(); } @@ -515,27 +501,10 @@ QString QTextLayout::preeditAreaText() const */ void QTextLayout::setAdditionalFormats(const QList &formatList) { - if (formatList.isEmpty()) { - if (!d->specialData) - return; - if (d->specialData->preeditText.isEmpty()) { - delete d->specialData; - d->specialData = 0; - } else { - d->specialData->addFormats = formatList; - d->specialData->addFormatIndices.clear(); - } - } else { - if (!d->specialData) { - d->specialData = new QTextEngine::SpecialData; - d->specialData->preeditPosition = -1; - } - d->specialData->addFormats = formatList; - d->indexAdditionalFormats(); - } + d->setAdditionalFormats(formatList); + if (d->block.docHandle()) d->block.docHandle()->documentChange(d->block.position(), d->block.length()); - d->resetFontEngineCache(); } /*! @@ -545,21 +514,7 @@ void QTextLayout::setAdditionalFormats(const QList &formatList) */ QList QTextLayout::additionalFormats() const { - QList formats; - if (!d->specialData) - return formats; - - formats = d->specialData->addFormats; - - if (d->specialData->addFormatIndices.isEmpty()) - return formats; - - const QTextFormatCollection *collection = d->formats(); - - for (int i = 0; i < d->specialData->addFormatIndices.count(); ++i) - formats[i].format = collection->charFormat(d->specialData->addFormatIndices.at(i)); - - return formats; + return d->additionalFormats(); } /*! -- cgit v1.2.3 From 1148da5aa82e07ccab4b5d4fa2bb7a16f6361515 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 18 Mar 2013 20:23:17 +0100 Subject: Fix crash when trying to access accessible parent in dtor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I36a065facc0ea80b3a155eaf646613cbd86fdfac Reviewed-by: Jan Arve Sæther --- src/plugins/accessible/widgets/itemviews.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp index 93f962da57..cb34116f32 100644 --- a/src/plugins/accessible/widgets/itemviews.cpp +++ b/src/plugins/accessible/widgets/itemviews.cpp @@ -501,7 +501,7 @@ QRect QAccessibleTable::rect() const QAccessibleInterface *QAccessibleTable::parent() const { - if (view()->parent()) { + if (view() && view()->parent()) { if (qstrcmp("QComboBoxPrivateContainer", view()->parent()->metaObject()->className()) == 0) { return QAccessible::queryAccessibleInterface(view()->parent()->parent()); } -- cgit v1.2.3 From 0d866c35d65ba39b1df79238fb9634c026453aa1 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 16 Mar 2013 09:17:57 +0200 Subject: QLocalePrivate: Add convenience language/script/country to code helpers Change-Id: Id9126a95f1b3a75f510e642ab08c68cefaf3d142 Reviewed-by: Lars Knoll Reviewed-by: John Layt --- src/corelib/tools/qlocale.cpp | 20 ++++++++++---------- src/corelib/tools/qlocale_p.h | 12 ++++++++---- 2 files changed, 18 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index 454025f54d..63028cff66 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -164,14 +164,14 @@ QLocale::Country QLocalePrivate::codeToCountry(const QString &code) return QLocale::AnyCountry; } -QString QLocalePrivate::languageCode() const +QString QLocalePrivate::languageToCode(QLocale::Language language) { - if (m_data->m_language_id == QLocale::AnyLanguage) + if (language == QLocale::AnyLanguage) return QString(); - if (m_data->m_language_id == QLocale::C) + if (language == QLocale::C) return QLatin1String("C"); - const unsigned char *c = language_code_list + 3*(uint(m_data->m_language_id)); + const unsigned char *c = language_code_list + 3*(uint(language)); QString code(c[2] == 0 ? 2 : 3, Qt::Uninitialized); @@ -183,20 +183,20 @@ QString QLocalePrivate::languageCode() const return code; } -QString QLocalePrivate::scriptCode() const +QString QLocalePrivate::scriptToCode(QLocale::Script script) { - if (m_data->m_script_id == QLocale::AnyScript || m_data->m_script_id > QLocale::LastScript) + if (script == QLocale::AnyScript || script > QLocale::LastScript) return QString(); - const unsigned char *c = script_code_list + 4*(uint(m_data->m_script_id)); + const unsigned char *c = script_code_list + 4*(uint(script)); return QString::fromLatin1((const char *)c, 4); } -QString QLocalePrivate::countryCode() const +QString QLocalePrivate::countryToCode(QLocale::Country country) { - if (m_data->m_country_id == QLocale::AnyCountry) + if (country == QLocale::AnyCountry) return QString(); - const unsigned char *c = country_code_list + 3*(uint(m_data->m_country_id)); + const unsigned char *c = country_code_list + 3*(uint(country)); QString code(c[2] == 0 ? 2 : 3, Qt::Uninitialized); diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h index ff44dcc163..4c0432bba7 100644 --- a/src/corelib/tools/qlocale_p.h +++ b/src/corelib/tools/qlocale_p.h @@ -234,10 +234,14 @@ public: QString bcp47Name() const; - QString languageCode() const; // ### QByteArray::fromRawData would be more optimal - QString scriptCode() const; - QString countryCode() const; - + // ### QByteArray::fromRawData would be more optimal + inline QString languageCode() const { return QLocalePrivate::languageToCode(QLocale::Language(m_data->m_language_id)); } + inline QString scriptCode() const { return QLocalePrivate::scriptToCode(QLocale::Script(m_data->m_script_id)); } + inline QString countryCode() const { return QLocalePrivate::countryToCode(QLocale::Country(m_data->m_country_id)); } + + static QString languageToCode(QLocale::Language language); + static QString scriptToCode(QLocale::Script script); + static QString countryToCode(QLocale::Country country); static QLocale::Language codeToLanguage(const QString &code); static QLocale::Script codeToScript(const QString &code); static QLocale::Country codeToCountry(const QString &code); -- cgit v1.2.3 From 67faba073dd0ded7de96430cdc7f7e1da7966880 Mon Sep 17 00:00:00 2001 From: Rafael Roquetto Date: Wed, 13 Mar 2013 15:55:34 -0300 Subject: BlackBerry: implement QWidget::showMinimized() Add window minimization capability on the plugin. Change-Id: I4539d29b8ebbef935213edde634f0a85b6a21766 Reviewed-by: Kevin Krammer Reviewed-by: Sean Harmer --- src/plugins/platforms/qnx/qqnxbpseventfilter.cpp | 2 +- src/plugins/platforms/qnx/qqnxwindow.cpp | 38 ++++++++++++++++++++++-- src/plugins/platforms/qnx/qqnxwindow.h | 1 + 3 files changed, 38 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp index 542833473d..765853e392 100644 --- a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp +++ b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp @@ -87,7 +87,7 @@ void QQnxBpsEventFilter::installOnEventDispatcher(QAbstractEventDispatcher *disp { qBpsEventFilterDebug() << Q_FUNC_INFO << "dispatcher=" << dispatcher; - if (navigator_request_events(0) != BPS_SUCCESS) + if (navigator_request_events(NAVIGATOR_EXTENDED_DATA) != BPS_SUCCESS) qWarning("QQNX: failed to register for navigator events"); dispatcher->installNativeEventFilter(this); diff --git a/src/plugins/platforms/qnx/qqnxwindow.cpp b/src/plugins/platforms/qnx/qqnxwindow.cpp index cabbd405e5..51435a1e55 100644 --- a/src/plugins/platforms/qnx/qqnxwindow.cpp +++ b/src/plugins/platforms/qnx/qqnxwindow.cpp @@ -53,6 +53,11 @@ #include +#ifdef Q_OS_BLACKBERRY +#include +#include +#endif + #ifdef QQNXWINDOW_DEBUG #define qWindowDebug qDebug #else @@ -624,12 +629,20 @@ void QQnxWindow::setWindowState(Qt::WindowState state) switch (state) { - // WindowMinimized is not supported - navigator does not have an API to minimize a window // WindowActive is not an accepted parameter according to the docs - case Qt::WindowMinimized: case Qt::WindowActive: return; + case Qt::WindowMinimized: + minimize(); + + if (m_unmaximizedGeometry.isValid()) + setGeometry(m_unmaximizedGeometry); + else + setGeometry(m_screen->geometry()); + + break; + case Qt::WindowMaximized: case Qt::WindowFullScreen: m_unmaximizedGeometry = geometry(); @@ -689,6 +702,27 @@ void QQnxWindow::blitFrom(QQnxWindow *sourceWindow, const QPoint &sourceOffset, blitHelper(sourceBuffer, targetBuffer, sourceOffset, QPoint(0, 0), targetRegion, true); } +void QQnxWindow::minimize() +{ +#if defined(Q_OS_BLACKBERRY) && !defined(Q_OS_BLACKBERRY_TABLET) + qWindowDebug() << Q_FUNC_INFO; + + pps_encoder_t encoder; + + pps_encoder_initialize(&encoder, false); + pps_encoder_add_string(&encoder, "msg", "minimizeWindow"); + + if (navigator_raw_write(pps_encoder_buffer(&encoder), + pps_encoder_length(&encoder)) != BPS_SUCCESS) { + qWindowDebug() << Q_FUNC_INFO << "navigator_raw_write failed:" << strerror(errno); + } + + pps_encoder_cleanup(&encoder); +#else + qWarning("Qt::WindowMinimized is not supported by this OS version"); +#endif +} + void QQnxWindow::updateZorder(int &topZorder) { errno = 0; diff --git a/src/plugins/platforms/qnx/qqnxwindow.h b/src/plugins/platforms/qnx/qqnxwindow.h index 90226bb9a4..ad136227e3 100644 --- a/src/plugins/platforms/qnx/qqnxwindow.h +++ b/src/plugins/platforms/qnx/qqnxwindow.h @@ -116,6 +116,7 @@ public: QQnxWindow *findWindow(screen_window_t windowHandle); void blitFrom(QQnxWindow *sourceWindow, const QPoint &sourceOffset, const QRegion &targetRegion); + void minimize(); private: QRect setGeometryHelper(const QRect &rect); -- cgit v1.2.3 From e66159cfc7f78b8ad617175bbef6b70edbf9da6b Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Sun, 3 Mar 2013 17:22:26 +0100 Subject: Mark QtPrivate::ApplyReturnType constructor as explicit. Else, the operator,(T, ApplyReturnType) is sometimes chosen if a pointer is passed, and that is breaking some decltype expressions. (such as the one in ComputeFunctorArgumentCount in the next patch) Change-Id: Ic203bbb1a8f5abbebb3b11786454807aa20be5fd Reviewed-by: Thiago Macieira --- src/corelib/kernel/qobjectdefs_impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/kernel/qobjectdefs_impl.h b/src/corelib/kernel/qobjectdefs_impl.h index 959a255389..46a6eab253 100644 --- a/src/corelib/kernel/qobjectdefs_impl.h +++ b/src/corelib/kernel/qobjectdefs_impl.h @@ -93,7 +93,7 @@ namespace QtPrivate { template struct ApplyReturnValue { void *data; - ApplyReturnValue(void *data_) : data(data_) {} + explicit ApplyReturnValue(void *data_) : data(data_) {} }; template void operator,(const T &value, const ApplyReturnValue &container) { -- cgit v1.2.3 From bc98bba2f302922761209c0e91485e809354abc1 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 1 Mar 2013 10:18:36 +0100 Subject: Support connection to functor with multiple operator() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When variadic templates and decltype are supported, detect the best overload of operator() to call. Currently, the code takes the type of the operator(), which requires that the functor only has one, and that it has no template parameter. This feature is required if we want to connect to c++1y generic lambda (N3418) Change-Id: Ifa957da6955ea39ab804b58f320da9f98ff47d63 Reviewed-by: Jędrzej Nowacki --- src/corelib/kernel/qobject.h | 34 ++++++++++++++++++++++++++++----- src/corelib/kernel/qobjectdefs_impl.h | 36 ++++++++++++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h index 7beaa32855..aaa09fac50 100644 --- a/src/corelib/kernel/qobject.h +++ b/src/corelib/kernel/qobject.h @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Olivier Goffart ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -265,27 +266,50 @@ public: static inline typename QtPrivate::QEnableIf::ArgumentCount == -1, QMetaObject::Connection>::Type connect(const typename QtPrivate::FunctionPointer::Object *sender, Func1 signal, Func2 slot) { +#if defined (Q_COMPILER_DECLTYPE) && defined (Q_COMPILER_VARIADIC_TEMPLATES) + typedef QtPrivate::FunctionPointer SignalType; + const int FunctorArgumentCount = QtPrivate::ComputeFunctorArgumentCount::Value; + + Q_STATIC_ASSERT_X((FunctorArgumentCount >= 0), + "Signal and slot arguments are not compatible."); + const int SlotArgumentCount = (FunctorArgumentCount >= 0) ? FunctorArgumentCount : 0; + typedef typename QtPrivate::FunctorReturnType::Value>::Value SlotReturnType; +#else + // Without variadic template, we don't detect the best overload of operator(). We just + // assume there is only one simple operator() and connect to &Func2::operator() + + /* If you get an error such as: + couldn't deduce template parameter 'Func2Operator' + or + cannot resolve address of overloaded function + It means the functor does not have a single operator(). + Functors with overloaded or templated operator() are only supported if the compiler supports + C++11 variadic templates + */ #ifndef Q_COMPILER_DECLTYPE //Workaround the lack of decltype using another function as indirection return connect_functor(sender, signal, slot, &Func2::operator()); } template static inline QMetaObject::Connection connect_functor(const QObject *sender, Func1 signal, Func2 slot, Func2Operator) { typedef QtPrivate::FunctionPointer SlotType ; #else - typedef QtPrivate::FunctionPointer SlotType ; #endif typedef QtPrivate::FunctionPointer SignalType; + typedef typename SlotType::ReturnType SlotReturnType; + const int SlotArgumentCount = SlotType::ArgumentCount; - Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount), + Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= SlotArgumentCount, "The slot requires more arguments than the signal provides."); Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments::value), "Signal and slot arguments are not compatible."); - Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible::value), +#endif + + Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible::value), "Return type of the slot is not compatible with the return type of the signal."); return connectImpl(sender, reinterpret_cast(&signal), sender, 0, - new QtPrivate::QFunctorSlotObject::Value, + new QtPrivate::QFunctorSlotObject::Value, typename SignalType::ReturnType>(slot), Qt::DirectConnection, 0, &SignalType::Object::staticMetaObject); } diff --git a/src/corelib/kernel/qobjectdefs_impl.h b/src/corelib/kernel/qobjectdefs_impl.h index 46a6eab253..4f44d9204e 100644 --- a/src/corelib/kernel/qobjectdefs_impl.h +++ b/src/corelib/kernel/qobjectdefs_impl.h @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Olivier Goffart ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -597,10 +598,43 @@ namespace QtPrivate { enum { value = AreArgumentsCompatible::Type, typename RemoveConstRef::Type>::value && CheckCompatibleArguments, List>::value }; }; +#endif + +#if defined(Q_COMPILER_DECLTYPE) && defined(Q_COMPILER_VARIADIC_TEMPLATES) + /* + Find the maximum number of arguments a functor object can take and be still compatible with + the arguments from the signal. + Value is the number of arguments, or -1 if nothing matches. + */ + template struct ComputeFunctorArgumentCount; + + template struct ComputeFunctorArgumentCountHelper + { enum { Value = -1 }; }; + template + struct ComputeFunctorArgumentCountHelper, false> + : ComputeFunctorArgumentCount, sizeof...(ArgList)>::Value> {}; + + template struct ComputeFunctorArgumentCount> + { + template static D dummy(); + template static auto test(F f) -> decltype(((f.operator()((dummy())...)), int())); + static char test(...); + enum { + Ok = sizeof(test(dummy())) == sizeof(int), + Value = Ok ? sizeof...(ArgList) : int(ComputeFunctorArgumentCountHelper, Ok>::Value) + }; + }; + /* get the return type of a functor, given the signal argument list */ + template struct FunctorReturnType; + template struct FunctorReturnType> { + template static D dummy(); + typedef decltype(dummy().operator()((dummy())...)) Value; + }; #endif -} +} QT_END_NAMESPACE -- cgit v1.2.3 From 51ccd1ef8f9e51a794828598ed45803bb01fa69f Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 4 Mar 2013 13:09:51 +0100 Subject: Document restrictions on the new connection syntax ... when the compiler do not support variadic template Change-Id: Iec84cad8ece2fc28b0c224872fdd90d30ae60fc9 Reviewed-by: Giuseppe D'Angelo Reviewed-by: Thiago Macieira --- src/corelib/kernel/qobject.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index a60deefe90..1312e64d8b 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -4185,6 +4185,9 @@ void qDeleteInEventHandler(QObject *o) \snippet code/src_corelib_kernel_qobject.cpp 25 make sure to declare the argument type with Q_DECLARE_METATYPE + + \note The number of arguments in the signal or slot are limited to 6 if + the compiler does not support C++11 variadic templates. */ @@ -4215,6 +4218,10 @@ void qDeleteInEventHandler(QObject *o) \snippet code/src_corelib_kernel_qobject.cpp 46 The connection will automatically disconnect if the sender is destroyed. + + \note If the compiler does not support C++11 variadic templates, the number + of arguments in the signal or slot are limited to 6, and the functor object + must not have an overloaded or templated operator(). */ /** -- cgit v1.2.3 From ef9c3c753dd22e675b334e1b045f93401e1f9df3 Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Sun, 17 Mar 2013 14:26:18 -0400 Subject: Fix license headers stating QtGui for QtWidgets files. Change-Id: I0ca49e3e1f9f603f0b0f7f3553e854b871efe303 Reviewed-by: Thiago Macieira --- src/widgets/accessible/qaccessiblewidget.cpp | 2 +- src/widgets/accessible/qaccessiblewidget_p.h | 2 +- src/widgets/dialogs/qcolordialog.cpp | 2 +- src/widgets/dialogs/qcolordialog.h | 2 +- src/widgets/dialogs/qcolordialog_p.h | 2 +- src/widgets/dialogs/qdialog.cpp | 2 +- src/widgets/dialogs/qdialog.h | 2 +- src/widgets/dialogs/qdialog_p.h | 2 +- src/widgets/dialogs/qerrormessage.cpp | 2 +- src/widgets/dialogs/qerrormessage.h | 2 +- src/widgets/dialogs/qfiledialog.cpp | 2 +- src/widgets/dialogs/qfiledialog.h | 2 +- src/widgets/dialogs/qfiledialog.ui | 2 +- src/widgets/dialogs/qfiledialog_embedded.ui | 2 +- src/widgets/dialogs/qfiledialog_p.h | 2 +- src/widgets/dialogs/qfileinfogatherer.cpp | 2 +- src/widgets/dialogs/qfileinfogatherer_p.h | 2 +- src/widgets/dialogs/qfilesystemmodel.cpp | 2 +- src/widgets/dialogs/qfilesystemmodel.h | 2 +- src/widgets/dialogs/qfilesystemmodel_p.h | 2 +- src/widgets/dialogs/qfontdialog.cpp | 2 +- src/widgets/dialogs/qfontdialog.h | 2 +- src/widgets/dialogs/qfontdialog_p.h | 2 +- src/widgets/dialogs/qfscompleter_p.h | 2 +- src/widgets/dialogs/qinputdialog.cpp | 2 +- src/widgets/dialogs/qinputdialog.h | 2 +- src/widgets/dialogs/qmessagebox.cpp | 2 +- src/widgets/dialogs/qmessagebox.h | 2 +- src/widgets/dialogs/qprogressdialog.cpp | 2 +- src/widgets/dialogs/qprogressdialog.h | 2 +- src/widgets/dialogs/qsidebar.cpp | 2 +- src/widgets/dialogs/qsidebar_p.h | 2 +- src/widgets/dialogs/qwizard.cpp | 2 +- src/widgets/dialogs/qwizard.h | 2 +- src/widgets/dialogs/qwizard_win.cpp | 2 +- src/widgets/dialogs/qwizard_win_p.h | 2 +- src/widgets/effects/qgraphicseffect.cpp | 2 +- src/widgets/effects/qgraphicseffect.h | 2 +- src/widgets/effects/qgraphicseffect_p.h | 2 +- src/widgets/effects/qpixmapfilter.cpp | 2 +- src/widgets/effects/qpixmapfilter_p.h | 2 +- src/widgets/graphicsview/qgraph_p.h | 2 +- src/widgets/graphicsview/qgraphicsanchorlayout.cpp | 2 +- src/widgets/graphicsview/qgraphicsanchorlayout.h | 2 +- src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp | 2 +- src/widgets/graphicsview/qgraphicsanchorlayout_p.h | 2 +- src/widgets/graphicsview/qgraphicsgridlayout.cpp | 2 +- src/widgets/graphicsview/qgraphicsgridlayout.h | 2 +- src/widgets/graphicsview/qgraphicsitem.cpp | 2 +- src/widgets/graphicsview/qgraphicsitem.h | 2 +- src/widgets/graphicsview/qgraphicsitem_p.h | 2 +- src/widgets/graphicsview/qgraphicsitemanimation.cpp | 2 +- src/widgets/graphicsview/qgraphicsitemanimation.h | 2 +- src/widgets/graphicsview/qgraphicslayout.cpp | 2 +- src/widgets/graphicsview/qgraphicslayout.h | 2 +- src/widgets/graphicsview/qgraphicslayout_p.cpp | 2 +- src/widgets/graphicsview/qgraphicslayout_p.h | 2 +- src/widgets/graphicsview/qgraphicslayoutitem.cpp | 2 +- src/widgets/graphicsview/qgraphicslayoutitem.h | 2 +- src/widgets/graphicsview/qgraphicslayoutitem_p.h | 2 +- src/widgets/graphicsview/qgraphicslinearlayout.cpp | 2 +- src/widgets/graphicsview/qgraphicslinearlayout.h | 2 +- src/widgets/graphicsview/qgraphicsproxywidget.cpp | 2 +- src/widgets/graphicsview/qgraphicsproxywidget.h | 2 +- src/widgets/graphicsview/qgraphicsproxywidget_p.h | 2 +- src/widgets/graphicsview/qgraphicsscene.cpp | 2 +- src/widgets/graphicsview/qgraphicsscene.h | 2 +- src/widgets/graphicsview/qgraphicsscene_bsp.cpp | 2 +- src/widgets/graphicsview/qgraphicsscene_bsp_p.h | 2 +- src/widgets/graphicsview/qgraphicsscene_p.h | 2 +- src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp | 2 +- src/widgets/graphicsview/qgraphicssceneevent.cpp | 2 +- src/widgets/graphicsview/qgraphicssceneevent.h | 2 +- src/widgets/graphicsview/qgraphicssceneindex.cpp | 2 +- src/widgets/graphicsview/qgraphicsscenelinearindex.cpp | 2 +- src/widgets/graphicsview/qgraphicstransform.h | 2 +- src/widgets/graphicsview/qgraphicstransform_p.h | 2 +- src/widgets/graphicsview/qgraphicsview.cpp | 2 +- src/widgets/graphicsview/qgraphicsview.h | 2 +- src/widgets/graphicsview/qgraphicsview_p.h | 2 +- src/widgets/graphicsview/qgraphicswidget.cpp | 2 +- src/widgets/graphicsview/qgraphicswidget.h | 2 +- src/widgets/graphicsview/qgraphicswidget_p.cpp | 2 +- src/widgets/graphicsview/qgraphicswidget_p.h | 2 +- src/widgets/graphicsview/qgridlayoutengine.cpp | 2 +- src/widgets/graphicsview/qgridlayoutengine_p.h | 2 +- src/widgets/graphicsview/qsimplex_p.cpp | 2 +- src/widgets/graphicsview/qsimplex_p.h | 2 +- src/widgets/itemviews/qabstractitemdelegate.cpp | 2 +- src/widgets/itemviews/qabstractitemdelegate.h | 2 +- src/widgets/itemviews/qabstractitemview.cpp | 2 +- src/widgets/itemviews/qabstractitemview.h | 2 +- src/widgets/itemviews/qabstractitemview_p.h | 2 +- src/widgets/itemviews/qbsptree.cpp | 2 +- src/widgets/itemviews/qbsptree_p.h | 2 +- src/widgets/itemviews/qcolumnview.cpp | 2 +- src/widgets/itemviews/qcolumnview.h | 2 +- src/widgets/itemviews/qcolumnview_p.h | 2 +- src/widgets/itemviews/qcolumnviewgrip.cpp | 2 +- src/widgets/itemviews/qcolumnviewgrip_p.h | 2 +- src/widgets/itemviews/qdatawidgetmapper.cpp | 2 +- src/widgets/itemviews/qdatawidgetmapper.h | 2 +- src/widgets/itemviews/qdirmodel.cpp | 2 +- src/widgets/itemviews/qdirmodel.h | 2 +- src/widgets/itemviews/qfileiconprovider.cpp | 2 +- src/widgets/itemviews/qfileiconprovider.h | 2 +- src/widgets/itemviews/qheaderview.cpp | 2 +- src/widgets/itemviews/qheaderview.h | 2 +- src/widgets/itemviews/qheaderview_p.h | 2 +- src/widgets/itemviews/qitemdelegate.cpp | 2 +- src/widgets/itemviews/qitemdelegate.h | 2 +- src/widgets/itemviews/qitemeditorfactory.cpp | 2 +- src/widgets/itemviews/qitemeditorfactory.h | 2 +- src/widgets/itemviews/qitemeditorfactory_p.h | 2 +- src/widgets/itemviews/qlistview.cpp | 2 +- src/widgets/itemviews/qlistview.h | 2 +- src/widgets/itemviews/qlistview_p.h | 2 +- src/widgets/itemviews/qlistwidget.cpp | 2 +- src/widgets/itemviews/qlistwidget.h | 2 +- src/widgets/itemviews/qlistwidget_p.h | 2 +- src/widgets/itemviews/qstyleditemdelegate.cpp | 2 +- src/widgets/itemviews/qstyleditemdelegate.h | 2 +- src/widgets/itemviews/qtableview.cpp | 2 +- src/widgets/itemviews/qtableview.h | 2 +- src/widgets/itemviews/qtableview_p.h | 2 +- src/widgets/itemviews/qtablewidget.cpp | 2 +- src/widgets/itemviews/qtablewidget.h | 2 +- src/widgets/itemviews/qtablewidget_p.h | 2 +- src/widgets/itemviews/qtreeview.cpp | 2 +- src/widgets/itemviews/qtreeview.h | 2 +- src/widgets/itemviews/qtreeview_p.h | 2 +- src/widgets/itemviews/qtreewidget.cpp | 2 +- src/widgets/itemviews/qtreewidget.h | 2 +- src/widgets/itemviews/qtreewidget_p.h | 2 +- src/widgets/itemviews/qtreewidgetitemiterator.cpp | 2 +- src/widgets/itemviews/qtreewidgetitemiterator.h | 2 +- src/widgets/itemviews/qtreewidgetitemiterator_p.h | 2 +- src/widgets/itemviews/qwidgetitemdata_p.h | 2 +- src/widgets/kernel/qaction.cpp | 2 +- src/widgets/kernel/qaction.h | 2 +- src/widgets/kernel/qaction_p.h | 2 +- src/widgets/kernel/qactiongroup.cpp | 2 +- src/widgets/kernel/qactiongroup.h | 2 +- src/widgets/kernel/qapplication.cpp | 2 +- src/widgets/kernel/qapplication.h | 2 +- src/widgets/kernel/qapplication_p.h | 2 +- src/widgets/kernel/qapplication_qpa.cpp | 2 +- src/widgets/kernel/qboxlayout.cpp | 2 +- src/widgets/kernel/qboxlayout.h | 2 +- src/widgets/kernel/qdesktopwidget.cpp | 2 +- src/widgets/kernel/qdesktopwidget.h | 2 +- src/widgets/kernel/qdesktopwidget_qpa.cpp | 2 +- src/widgets/kernel/qdesktopwidget_qpa_p.h | 2 +- src/widgets/kernel/qformlayout.cpp | 2 +- src/widgets/kernel/qformlayout.h | 2 +- src/widgets/kernel/qgesture.cpp | 2 +- src/widgets/kernel/qgesture.h | 2 +- src/widgets/kernel/qgesture_p.h | 2 +- src/widgets/kernel/qgesturemanager.cpp | 2 +- src/widgets/kernel/qgesturemanager_p.h | 2 +- src/widgets/kernel/qgesturerecognizer.cpp | 2 +- src/widgets/kernel/qgesturerecognizer.h | 2 +- src/widgets/kernel/qgridlayout.cpp | 2 +- src/widgets/kernel/qgridlayout.h | 2 +- src/widgets/kernel/qlayout.cpp | 2 +- src/widgets/kernel/qlayout.h | 2 +- src/widgets/kernel/qlayout_p.h | 2 +- src/widgets/kernel/qlayoutengine.cpp | 2 +- src/widgets/kernel/qlayoutengine_p.h | 2 +- src/widgets/kernel/qlayoutitem.cpp | 2 +- src/widgets/kernel/qlayoutitem.h | 2 +- src/widgets/kernel/qshortcut.cpp | 2 +- src/widgets/kernel/qshortcut.h | 2 +- src/widgets/kernel/qsizepolicy.h | 2 +- src/widgets/kernel/qstackedlayout.cpp | 2 +- src/widgets/kernel/qstackedlayout.h | 2 +- src/widgets/kernel/qstandardgestures.cpp | 2 +- src/widgets/kernel/qstandardgestures_p.h | 2 +- src/widgets/kernel/qt_widgets_pch.h | 2 +- src/widgets/kernel/qtooltip.cpp | 2 +- src/widgets/kernel/qtooltip.h | 2 +- src/widgets/kernel/qwhatsthis.cpp | 2 +- src/widgets/kernel/qwhatsthis.h | 2 +- src/widgets/kernel/qwidget.cpp | 2 +- src/widgets/kernel/qwidget.h | 2 +- src/widgets/kernel/qwidget_p.h | 2 +- src/widgets/kernel/qwidget_qpa.cpp | 2 +- src/widgets/kernel/qwidgetaction.cpp | 2 +- src/widgets/kernel/qwidgetaction.h | 2 +- src/widgets/kernel/qwidgetaction_p.h | 2 +- src/widgets/kernel/qwidgetbackingstore.cpp | 2 +- src/widgets/kernel/qwidgetbackingstore_p.h | 2 +- src/widgets/kernel/qwidgetsvariant.cpp | 2 +- src/widgets/kernel/qwidgetwindow.cpp | 2 +- src/widgets/kernel/qwidgetwindow_qpa_p.h | 2 +- src/widgets/kernel/qwindowcontainer.cpp | 2 +- src/widgets/kernel/qwindowcontainer_p.h | 2 +- src/widgets/statemachine/qbasickeyeventtransition.cpp | 2 +- src/widgets/statemachine/qbasickeyeventtransition_p.h | 2 +- src/widgets/statemachine/qbasicmouseeventtransition.cpp | 2 +- src/widgets/statemachine/qbasicmouseeventtransition_p.h | 2 +- src/widgets/statemachine/qguistatemachine.cpp | 2 +- src/widgets/statemachine/qkeyeventtransition.cpp | 2 +- src/widgets/statemachine/qkeyeventtransition.h | 2 +- src/widgets/statemachine/qmouseeventtransition.cpp | 2 +- src/widgets/statemachine/qmouseeventtransition.h | 2 +- src/widgets/styles/qcommonstyle.cpp | 2 +- src/widgets/styles/qcommonstyle.h | 2 +- src/widgets/styles/qcommonstyle_p.h | 2 +- src/widgets/styles/qcommonstylepixmaps_p.h | 2 +- src/widgets/styles/qdrawutil.cpp | 2 +- src/widgets/styles/qdrawutil.h | 2 +- src/widgets/styles/qfusionstyle.cpp | 2 +- src/widgets/styles/qfusionstyle_p.h | 2 +- src/widgets/styles/qfusionstyle_p_p.h | 2 +- src/widgets/styles/qgtk2painter.cpp | 2 +- src/widgets/styles/qgtk2painter_p.h | 2 +- src/widgets/styles/qgtkglobal_p.h | 2 +- src/widgets/styles/qgtkpainter.cpp | 2 +- src/widgets/styles/qgtkpainter_p.h | 2 +- src/widgets/styles/qgtkstyle.cpp | 2 +- src/widgets/styles/qgtkstyle_p.cpp | 2 +- src/widgets/styles/qgtkstyle_p.h | 2 +- src/widgets/styles/qgtkstyle_p_p.h | 2 +- src/widgets/styles/qmacstyle_mac.mm | 2 +- src/widgets/styles/qmacstyle_mac_p.h | 2 +- src/widgets/styles/qmacstyle_mac_p_p.h | 2 +- src/widgets/styles/qproxystyle.cpp | 2 +- src/widgets/styles/qproxystyle.h | 2 +- src/widgets/styles/qproxystyle_p.h | 2 +- src/widgets/styles/qstyle.cpp | 2 +- src/widgets/styles/qstyle.h | 2 +- src/widgets/styles/qstyle_p.h | 2 +- src/widgets/styles/qstyleanimation.cpp | 2 +- src/widgets/styles/qstyleanimation_p.h | 2 +- src/widgets/styles/qstylefactory.cpp | 2 +- src/widgets/styles/qstylefactory.h | 2 +- src/widgets/styles/qstylehelper.cpp | 2 +- src/widgets/styles/qstylehelper_p.h | 2 +- src/widgets/styles/qstyleoption.cpp | 2 +- src/widgets/styles/qstyleoption.h | 2 +- src/widgets/styles/qstylepainter.cpp | 2 +- src/widgets/styles/qstylepainter.h | 2 +- src/widgets/styles/qstyleplugin.cpp | 2 +- src/widgets/styles/qstyleplugin.h | 2 +- src/widgets/styles/qstylesheetstyle.cpp | 2 +- src/widgets/styles/qstylesheetstyle_default.cpp | 2 +- src/widgets/styles/qstylesheetstyle_p.h | 2 +- src/widgets/styles/qwindowscestyle.cpp | 2 +- src/widgets/styles/qwindowscestyle_p.h | 2 +- src/widgets/styles/qwindowscestyle_p_p.h | 2 +- src/widgets/styles/qwindowsmobilestyle.cpp | 2 +- src/widgets/styles/qwindowsmobilestyle_p.h | 2 +- src/widgets/styles/qwindowsmobilestyle_p_p.h | 2 +- src/widgets/styles/qwindowsstyle.cpp | 2 +- src/widgets/styles/qwindowsstyle_p.h | 2 +- src/widgets/styles/qwindowsstyle_p_p.h | 2 +- src/widgets/styles/qwindowsvistastyle.cpp | 2 +- src/widgets/styles/qwindowsvistastyle_p.h | 2 +- src/widgets/styles/qwindowsvistastyle_p_p.h | 2 +- src/widgets/styles/qwindowsxpstyle.cpp | 2 +- src/widgets/styles/qwindowsxpstyle_p.h | 2 +- src/widgets/styles/qwindowsxpstyle_p_p.h | 2 +- src/widgets/util/qcolormap.cpp | 2 +- src/widgets/util/qcolormap.h | 2 +- src/widgets/util/qcompleter.cpp | 2 +- src/widgets/util/qcompleter.h | 2 +- src/widgets/util/qcompleter_p.h | 2 +- src/widgets/util/qflickgesture.cpp | 2 +- src/widgets/util/qflickgesture_p.h | 2 +- src/widgets/util/qscroller.cpp | 2 +- src/widgets/util/qscroller.h | 2 +- src/widgets/util/qscroller_mac.mm | 2 +- src/widgets/util/qscroller_p.h | 2 +- src/widgets/util/qscrollerproperties.cpp | 2 +- src/widgets/util/qscrollerproperties.h | 2 +- src/widgets/util/qscrollerproperties_p.h | 2 +- src/widgets/util/qsystemtrayicon.cpp | 2 +- src/widgets/util/qsystemtrayicon.h | 2 +- src/widgets/util/qsystemtrayicon_p.h | 2 +- src/widgets/util/qsystemtrayicon_qpa.cpp | 2 +- src/widgets/util/qsystemtrayicon_win.cpp | 2 +- src/widgets/util/qsystemtrayicon_wince.cpp | 2 +- src/widgets/util/qsystemtrayicon_x11.cpp | 2 +- src/widgets/util/qundogroup.cpp | 2 +- src/widgets/util/qundogroup.h | 2 +- src/widgets/util/qundostack.cpp | 2 +- src/widgets/util/qundostack.h | 2 +- src/widgets/util/qundostack_p.h | 2 +- src/widgets/util/qundoview.cpp | 2 +- src/widgets/util/qundoview.h | 2 +- src/widgets/widgets/qabstractbutton.cpp | 2 +- src/widgets/widgets/qabstractbutton.h | 2 +- src/widgets/widgets/qabstractbutton_p.h | 2 +- src/widgets/widgets/qabstractscrollarea.cpp | 2 +- src/widgets/widgets/qabstractscrollarea.h | 2 +- src/widgets/widgets/qabstractscrollarea_p.h | 2 +- src/widgets/widgets/qabstractslider.cpp | 2 +- src/widgets/widgets/qabstractslider.h | 2 +- src/widgets/widgets/qabstractslider_p.h | 2 +- src/widgets/widgets/qabstractspinbox.cpp | 2 +- src/widgets/widgets/qabstractspinbox.h | 2 +- src/widgets/widgets/qabstractspinbox_p.h | 2 +- src/widgets/widgets/qbuttongroup.cpp | 2 +- src/widgets/widgets/qbuttongroup.h | 2 +- src/widgets/widgets/qcalendartextnavigator_p.h | 2 +- src/widgets/widgets/qcalendarwidget.cpp | 2 +- src/widgets/widgets/qcalendarwidget.h | 2 +- src/widgets/widgets/qcheckbox.cpp | 2 +- src/widgets/widgets/qcheckbox.h | 2 +- src/widgets/widgets/qcocoatoolbardelegate_mac.mm | 2 +- src/widgets/widgets/qcocoatoolbardelegate_mac_p.h | 2 +- src/widgets/widgets/qcombobox.cpp | 2 +- src/widgets/widgets/qcombobox.h | 2 +- src/widgets/widgets/qcombobox_p.h | 2 +- src/widgets/widgets/qcommandlinkbutton.cpp | 2 +- src/widgets/widgets/qcommandlinkbutton.h | 2 +- src/widgets/widgets/qdatetimeedit.cpp | 2 +- src/widgets/widgets/qdatetimeedit.h | 2 +- src/widgets/widgets/qdatetimeedit_p.h | 2 +- src/widgets/widgets/qdial.cpp | 2 +- src/widgets/widgets/qdial.h | 2 +- src/widgets/widgets/qdialogbuttonbox.cpp | 2 +- src/widgets/widgets/qdialogbuttonbox.h | 2 +- src/widgets/widgets/qdockarealayout.cpp | 2 +- src/widgets/widgets/qdockarealayout_p.h | 2 +- src/widgets/widgets/qdockwidget.cpp | 2 +- src/widgets/widgets/qdockwidget.h | 2 +- src/widgets/widgets/qdockwidget_p.h | 2 +- src/widgets/widgets/qeffects.cpp | 2 +- src/widgets/widgets/qeffects_p.h | 2 +- src/widgets/widgets/qfocusframe.cpp | 2 +- src/widgets/widgets/qfocusframe.h | 2 +- src/widgets/widgets/qfontcombobox.cpp | 2 +- src/widgets/widgets/qfontcombobox.h | 2 +- src/widgets/widgets/qframe.cpp | 2 +- src/widgets/widgets/qframe.h | 2 +- src/widgets/widgets/qframe_p.h | 2 +- src/widgets/widgets/qgroupbox.cpp | 2 +- src/widgets/widgets/qgroupbox.h | 2 +- src/widgets/widgets/qlabel.cpp | 2 +- src/widgets/widgets/qlabel.h | 2 +- src/widgets/widgets/qlabel_p.h | 2 +- src/widgets/widgets/qlcdnumber.cpp | 2 +- src/widgets/widgets/qlcdnumber.h | 2 +- src/widgets/widgets/qlineedit.cpp | 2 +- src/widgets/widgets/qlineedit.h | 2 +- src/widgets/widgets/qlineedit_p.cpp | 2 +- src/widgets/widgets/qlineedit_p.h | 2 +- src/widgets/widgets/qmaccocoaviewcontainer_mac.h | 2 +- src/widgets/widgets/qmaccocoaviewcontainer_mac.mm | 2 +- src/widgets/widgets/qmacnativewidget_mac.h | 2 +- src/widgets/widgets/qmacnativewidget_mac.mm | 2 +- src/widgets/widgets/qmainwindow.cpp | 2 +- src/widgets/widgets/qmainwindow.h | 2 +- src/widgets/widgets/qmainwindowlayout.cpp | 2 +- src/widgets/widgets/qmainwindowlayout_mac.mm | 2 +- src/widgets/widgets/qmainwindowlayout_p.h | 2 +- src/widgets/widgets/qmdiarea.cpp | 2 +- src/widgets/widgets/qmdiarea.h | 2 +- src/widgets/widgets/qmdiarea_p.h | 2 +- src/widgets/widgets/qmdisubwindow.cpp | 2 +- src/widgets/widgets/qmdisubwindow.h | 2 +- src/widgets/widgets/qmdisubwindow_p.h | 2 +- src/widgets/widgets/qmenu.cpp | 2 +- src/widgets/widgets/qmenu.h | 2 +- src/widgets/widgets/qmenu_p.h | 2 +- src/widgets/widgets/qmenu_wince.cpp | 2 +- src/widgets/widgets/qmenu_wince_resource_p.h | 2 +- src/widgets/widgets/qmenubar.cpp | 2 +- src/widgets/widgets/qmenubar.h | 2 +- src/widgets/widgets/qmenubar_p.h | 2 +- src/widgets/widgets/qplaintextedit.cpp | 2 +- src/widgets/widgets/qplaintextedit.h | 2 +- src/widgets/widgets/qplaintextedit_p.h | 2 +- src/widgets/widgets/qprogressbar.cpp | 2 +- src/widgets/widgets/qprogressbar.h | 2 +- src/widgets/widgets/qpushbutton.cpp | 2 +- src/widgets/widgets/qpushbutton.h | 2 +- src/widgets/widgets/qpushbutton_p.h | 2 +- src/widgets/widgets/qradiobutton.cpp | 2 +- src/widgets/widgets/qradiobutton.h | 2 +- src/widgets/widgets/qrubberband.cpp | 2 +- src/widgets/widgets/qrubberband.h | 2 +- src/widgets/widgets/qscrollarea.cpp | 2 +- src/widgets/widgets/qscrollarea.h | 2 +- src/widgets/widgets/qscrollarea_p.h | 2 +- src/widgets/widgets/qscrollbar.cpp | 2 +- src/widgets/widgets/qscrollbar.h | 2 +- src/widgets/widgets/qscrollbar_p.h | 2 +- src/widgets/widgets/qsizegrip.cpp | 2 +- src/widgets/widgets/qsizegrip.h | 2 +- src/widgets/widgets/qslider.cpp | 2 +- src/widgets/widgets/qslider.h | 2 +- src/widgets/widgets/qspinbox.cpp | 2 +- src/widgets/widgets/qspinbox.h | 2 +- src/widgets/widgets/qsplashscreen.cpp | 2 +- src/widgets/widgets/qsplashscreen.h | 2 +- src/widgets/widgets/qsplitter.cpp | 2 +- src/widgets/widgets/qsplitter.h | 2 +- src/widgets/widgets/qsplitter_p.h | 2 +- src/widgets/widgets/qstackedwidget.cpp | 2 +- src/widgets/widgets/qstackedwidget.h | 2 +- src/widgets/widgets/qstatusbar.cpp | 2 +- src/widgets/widgets/qstatusbar.h | 2 +- src/widgets/widgets/qtabbar.cpp | 2 +- src/widgets/widgets/qtabbar.h | 2 +- src/widgets/widgets/qtabbar_p.h | 2 +- src/widgets/widgets/qtabwidget.cpp | 2 +- src/widgets/widgets/qtabwidget.h | 2 +- src/widgets/widgets/qtextbrowser.cpp | 2 +- src/widgets/widgets/qtextbrowser.h | 2 +- src/widgets/widgets/qtextedit.cpp | 2 +- src/widgets/widgets/qtextedit.h | 2 +- src/widgets/widgets/qtextedit_p.h | 2 +- src/widgets/widgets/qtoolbar.cpp | 2 +- src/widgets/widgets/qtoolbar.h | 2 +- src/widgets/widgets/qtoolbar_p.h | 2 +- src/widgets/widgets/qtoolbararealayout.cpp | 2 +- src/widgets/widgets/qtoolbararealayout_p.h | 2 +- src/widgets/widgets/qtoolbarextension.cpp | 2 +- src/widgets/widgets/qtoolbarextension_p.h | 2 +- src/widgets/widgets/qtoolbarlayout.cpp | 2 +- src/widgets/widgets/qtoolbarlayout_p.h | 2 +- src/widgets/widgets/qtoolbarseparator.cpp | 2 +- src/widgets/widgets/qtoolbarseparator_p.h | 2 +- src/widgets/widgets/qtoolbox.cpp | 2 +- src/widgets/widgets/qtoolbox.h | 2 +- src/widgets/widgets/qtoolbutton.cpp | 2 +- src/widgets/widgets/qtoolbutton.h | 2 +- src/widgets/widgets/qwidgetanimator.cpp | 2 +- src/widgets/widgets/qwidgetanimator_p.h | 2 +- src/widgets/widgets/qwidgetlinecontrol.cpp | 2 +- src/widgets/widgets/qwidgetlinecontrol_p.h | 2 +- src/widgets/widgets/qwidgetresizehandler.cpp | 2 +- src/widgets/widgets/qwidgetresizehandler_p.h | 2 +- src/widgets/widgets/qwidgettextcontrol.cpp | 2 +- src/widgets/widgets/qwidgettextcontrol_p.h | 2 +- src/widgets/widgets/qwidgettextcontrol_p_p.h | 2 +- 439 files changed, 439 insertions(+), 439 deletions(-) (limited to 'src') diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp index d5353c26d5..5c8d3e3a57 100644 --- a/src/widgets/accessible/qaccessiblewidget.cpp +++ b/src/widgets/accessible/qaccessiblewidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/accessible/qaccessiblewidget_p.h b/src/widgets/accessible/qaccessiblewidget_p.h index c39ebfa257..803dc71409 100644 --- a/src/widgets/accessible/qaccessiblewidget_p.h +++ b/src/widgets/accessible/qaccessiblewidget_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp index c22258b3d2..d6254076c5 100644 --- a/src/widgets/dialogs/qcolordialog.cpp +++ b/src/widgets/dialogs/qcolordialog.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qcolordialog.h b/src/widgets/dialogs/qcolordialog.h index 5db42629d8..80a31c4268 100644 --- a/src/widgets/dialogs/qcolordialog.h +++ b/src/widgets/dialogs/qcolordialog.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qcolordialog_p.h b/src/widgets/dialogs/qcolordialog_p.h index 6711ba9287..900b38fc61 100644 --- a/src/widgets/dialogs/qcolordialog_p.h +++ b/src/widgets/dialogs/qcolordialog_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qdialog.cpp b/src/widgets/dialogs/qdialog.cpp index e397ed4576..a76c88dc5e 100644 --- a/src/widgets/dialogs/qdialog.cpp +++ b/src/widgets/dialogs/qdialog.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qdialog.h b/src/widgets/dialogs/qdialog.h index a083a9f640..efbc475118 100644 --- a/src/widgets/dialogs/qdialog.h +++ b/src/widgets/dialogs/qdialog.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qdialog_p.h b/src/widgets/dialogs/qdialog_p.h index 3ef210045e..eb0cb2372b 100644 --- a/src/widgets/dialogs/qdialog_p.h +++ b/src/widgets/dialogs/qdialog_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qerrormessage.cpp b/src/widgets/dialogs/qerrormessage.cpp index 6cb5888a75..cc79582cb0 100644 --- a/src/widgets/dialogs/qerrormessage.cpp +++ b/src/widgets/dialogs/qerrormessage.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qerrormessage.h b/src/widgets/dialogs/qerrormessage.h index b66cbca9e0..6be063b57b 100644 --- a/src/widgets/dialogs/qerrormessage.h +++ b/src/widgets/dialogs/qerrormessage.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index f4aa91974b..c42752311f 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfiledialog.h b/src/widgets/dialogs/qfiledialog.h index 973bccf940..98d1fd5695 100644 --- a/src/widgets/dialogs/qfiledialog.h +++ b/src/widgets/dialogs/qfiledialog.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfiledialog.ui b/src/widgets/dialogs/qfiledialog.ui index fa4fa4cdf5..29f476e378 100644 --- a/src/widgets/dialogs/qfiledialog.ui +++ b/src/widgets/dialogs/qfiledialog.ui @@ -5,7 +5,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfiledialog_embedded.ui b/src/widgets/dialogs/qfiledialog_embedded.ui index 5988211aea..16128dc0a0 100644 --- a/src/widgets/dialogs/qfiledialog_embedded.ui +++ b/src/widgets/dialogs/qfiledialog_embedded.ui @@ -4,7 +4,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfiledialog_p.h b/src/widgets/dialogs/qfiledialog_p.h index 4292df5890..f8f33eb18d 100644 --- a/src/widgets/dialogs/qfiledialog_p.h +++ b/src/widgets/dialogs/qfiledialog_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfileinfogatherer.cpp b/src/widgets/dialogs/qfileinfogatherer.cpp index fc86576f55..e8da8aa651 100644 --- a/src/widgets/dialogs/qfileinfogatherer.cpp +++ b/src/widgets/dialogs/qfileinfogatherer.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfileinfogatherer_p.h b/src/widgets/dialogs/qfileinfogatherer_p.h index f9566eb0af..0c4e644e40 100644 --- a/src/widgets/dialogs/qfileinfogatherer_p.h +++ b/src/widgets/dialogs/qfileinfogatherer_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp index 251af273b9..5bf5356d89 100644 --- a/src/widgets/dialogs/qfilesystemmodel.cpp +++ b/src/widgets/dialogs/qfilesystemmodel.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfilesystemmodel.h b/src/widgets/dialogs/qfilesystemmodel.h index cf26a4545d..0b52b6565b 100644 --- a/src/widgets/dialogs/qfilesystemmodel.h +++ b/src/widgets/dialogs/qfilesystemmodel.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfilesystemmodel_p.h b/src/widgets/dialogs/qfilesystemmodel_p.h index 4f5eeb9ff7..d61936d545 100644 --- a/src/widgets/dialogs/qfilesystemmodel_p.h +++ b/src/widgets/dialogs/qfilesystemmodel_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp index 4036dc80ab..313b475f1f 100644 --- a/src/widgets/dialogs/qfontdialog.cpp +++ b/src/widgets/dialogs/qfontdialog.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfontdialog.h b/src/widgets/dialogs/qfontdialog.h index ceec0b71fc..c2d930bc1e 100644 --- a/src/widgets/dialogs/qfontdialog.h +++ b/src/widgets/dialogs/qfontdialog.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfontdialog_p.h b/src/widgets/dialogs/qfontdialog_p.h index 90b6a6eff8..18429e8ede 100644 --- a/src/widgets/dialogs/qfontdialog_p.h +++ b/src/widgets/dialogs/qfontdialog_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qfscompleter_p.h b/src/widgets/dialogs/qfscompleter_p.h index 9099ea1a5e..e995114ee9 100644 --- a/src/widgets/dialogs/qfscompleter_p.h +++ b/src/widgets/dialogs/qfscompleter_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qinputdialog.cpp b/src/widgets/dialogs/qinputdialog.cpp index 99ecf02bdb..a0aefdef9d 100644 --- a/src/widgets/dialogs/qinputdialog.cpp +++ b/src/widgets/dialogs/qinputdialog.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qinputdialog.h b/src/widgets/dialogs/qinputdialog.h index e55c2da1ff..41dca1f94f 100644 --- a/src/widgets/dialogs/qinputdialog.h +++ b/src/widgets/dialogs/qinputdialog.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp index c644314ccd..a485a55609 100644 --- a/src/widgets/dialogs/qmessagebox.cpp +++ b/src/widgets/dialogs/qmessagebox.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qmessagebox.h b/src/widgets/dialogs/qmessagebox.h index a170360fd5..32b7027d89 100644 --- a/src/widgets/dialogs/qmessagebox.h +++ b/src/widgets/dialogs/qmessagebox.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qprogressdialog.cpp b/src/widgets/dialogs/qprogressdialog.cpp index b563066053..78612f3181 100644 --- a/src/widgets/dialogs/qprogressdialog.cpp +++ b/src/widgets/dialogs/qprogressdialog.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qprogressdialog.h b/src/widgets/dialogs/qprogressdialog.h index 4eb9feeb7d..20b658eb58 100644 --- a/src/widgets/dialogs/qprogressdialog.h +++ b/src/widgets/dialogs/qprogressdialog.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qsidebar.cpp b/src/widgets/dialogs/qsidebar.cpp index 37bcc62425..3d22992e3a 100644 --- a/src/widgets/dialogs/qsidebar.cpp +++ b/src/widgets/dialogs/qsidebar.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qsidebar_p.h b/src/widgets/dialogs/qsidebar_p.h index 72d632280c..319006f167 100644 --- a/src/widgets/dialogs/qsidebar_p.h +++ b/src/widgets/dialogs/qsidebar_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index f590dbc6cb..f58a10b166 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qwizard.h b/src/widgets/dialogs/qwizard.h index fe2e5f2d13..9dea9a8e6f 100644 --- a/src/widgets/dialogs/qwizard.h +++ b/src/widgets/dialogs/qwizard.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp index 95bbe1ee55..001c21da61 100644 --- a/src/widgets/dialogs/qwizard_win.cpp +++ b/src/widgets/dialogs/qwizard_win.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/dialogs/qwizard_win_p.h b/src/widgets/dialogs/qwizard_win_p.h index 542f59e1b2..a7713d889b 100644 --- a/src/widgets/dialogs/qwizard_win_p.h +++ b/src/widgets/dialogs/qwizard_win_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/effects/qgraphicseffect.cpp b/src/widgets/effects/qgraphicseffect.cpp index cf8abf0d95..ac873709e1 100644 --- a/src/widgets/effects/qgraphicseffect.cpp +++ b/src/widgets/effects/qgraphicseffect.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/effects/qgraphicseffect.h b/src/widgets/effects/qgraphicseffect.h index 8ba3a9c6d7..8acb832eee 100644 --- a/src/widgets/effects/qgraphicseffect.h +++ b/src/widgets/effects/qgraphicseffect.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/effects/qgraphicseffect_p.h b/src/widgets/effects/qgraphicseffect_p.h index 2455954a0c..7cdb071196 100644 --- a/src/widgets/effects/qgraphicseffect_p.h +++ b/src/widgets/effects/qgraphicseffect_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/effects/qpixmapfilter.cpp b/src/widgets/effects/qpixmapfilter.cpp index 8f4c0b2e76..c7ae4e2996 100644 --- a/src/widgets/effects/qpixmapfilter.cpp +++ b/src/widgets/effects/qpixmapfilter.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/effects/qpixmapfilter_p.h b/src/widgets/effects/qpixmapfilter_p.h index 6f08e87928..624079c3ba 100644 --- a/src/widgets/effects/qpixmapfilter_p.h +++ b/src/widgets/effects/qpixmapfilter_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraph_p.h b/src/widgets/graphicsview/qgraph_p.h index a889a03a0b..2368c6fbec 100644 --- a/src/widgets/graphicsview/qgraph_p.h +++ b/src/widgets/graphicsview/qgraph_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout.cpp b/src/widgets/graphicsview/qgraphicsanchorlayout.cpp index 8c82b97c92..47cb42195f 100644 --- a/src/widgets/graphicsview/qgraphicsanchorlayout.cpp +++ b/src/widgets/graphicsview/qgraphicsanchorlayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout.h b/src/widgets/graphicsview/qgraphicsanchorlayout.h index 0adf18f9ba..c924a0386a 100644 --- a/src/widgets/graphicsview/qgraphicsanchorlayout.h +++ b/src/widgets/graphicsview/qgraphicsanchorlayout.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp index 1cc3f5a1ed..e281e4a7a3 100644 --- a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp +++ b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout_p.h b/src/widgets/graphicsview/qgraphicsanchorlayout_p.h index 96553a5344..37defccc96 100644 --- a/src/widgets/graphicsview/qgraphicsanchorlayout_p.h +++ b/src/widgets/graphicsview/qgraphicsanchorlayout_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsgridlayout.cpp b/src/widgets/graphicsview/qgraphicsgridlayout.cpp index 01d08f229a..6d9dd98839 100644 --- a/src/widgets/graphicsview/qgraphicsgridlayout.cpp +++ b/src/widgets/graphicsview/qgraphicsgridlayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsgridlayout.h b/src/widgets/graphicsview/qgraphicsgridlayout.h index 308be67531..6d0ef5ea10 100644 --- a/src/widgets/graphicsview/qgraphicsgridlayout.h +++ b/src/widgets/graphicsview/qgraphicsgridlayout.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp index a396053a82..9aeee7c37a 100644 --- a/src/widgets/graphicsview/qgraphicsitem.cpp +++ b/src/widgets/graphicsview/qgraphicsitem.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsitem.h b/src/widgets/graphicsview/qgraphicsitem.h index c6b1c2dd66..4283deb5b8 100644 --- a/src/widgets/graphicsview/qgraphicsitem.h +++ b/src/widgets/graphicsview/qgraphicsitem.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsitem_p.h b/src/widgets/graphicsview/qgraphicsitem_p.h index 5803340075..d80df7c4ad 100644 --- a/src/widgets/graphicsview/qgraphicsitem_p.h +++ b/src/widgets/graphicsview/qgraphicsitem_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsitemanimation.cpp b/src/widgets/graphicsview/qgraphicsitemanimation.cpp index 5e035be5f7..45e8b436b1 100644 --- a/src/widgets/graphicsview/qgraphicsitemanimation.cpp +++ b/src/widgets/graphicsview/qgraphicsitemanimation.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsitemanimation.h b/src/widgets/graphicsview/qgraphicsitemanimation.h index f0006e3c34..1e8f27ef53 100644 --- a/src/widgets/graphicsview/qgraphicsitemanimation.h +++ b/src/widgets/graphicsview/qgraphicsitemanimation.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicslayout.cpp b/src/widgets/graphicsview/qgraphicslayout.cpp index fdd6f9f508..f7c89cf376 100644 --- a/src/widgets/graphicsview/qgraphicslayout.cpp +++ b/src/widgets/graphicsview/qgraphicslayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicslayout.h b/src/widgets/graphicsview/qgraphicslayout.h index e9574933a6..719ac0dd4d 100644 --- a/src/widgets/graphicsview/qgraphicslayout.h +++ b/src/widgets/graphicsview/qgraphicslayout.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicslayout_p.cpp b/src/widgets/graphicsview/qgraphicslayout_p.cpp index b8955aa23f..d856416564 100644 --- a/src/widgets/graphicsview/qgraphicslayout_p.cpp +++ b/src/widgets/graphicsview/qgraphicslayout_p.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicslayout_p.h b/src/widgets/graphicsview/qgraphicslayout_p.h index b1e93ef602..4257e5bc94 100644 --- a/src/widgets/graphicsview/qgraphicslayout_p.h +++ b/src/widgets/graphicsview/qgraphicslayout_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicslayoutitem.cpp b/src/widgets/graphicsview/qgraphicslayoutitem.cpp index e633514365..78b75e08d1 100644 --- a/src/widgets/graphicsview/qgraphicslayoutitem.cpp +++ b/src/widgets/graphicsview/qgraphicslayoutitem.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicslayoutitem.h b/src/widgets/graphicsview/qgraphicslayoutitem.h index ffd82b0720..e1dfadcca0 100644 --- a/src/widgets/graphicsview/qgraphicslayoutitem.h +++ b/src/widgets/graphicsview/qgraphicslayoutitem.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicslayoutitem_p.h b/src/widgets/graphicsview/qgraphicslayoutitem_p.h index 8c153c14e7..62f93f9091 100644 --- a/src/widgets/graphicsview/qgraphicslayoutitem_p.h +++ b/src/widgets/graphicsview/qgraphicslayoutitem_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicslinearlayout.cpp b/src/widgets/graphicsview/qgraphicslinearlayout.cpp index cd022bbf78..00076502ea 100644 --- a/src/widgets/graphicsview/qgraphicslinearlayout.cpp +++ b/src/widgets/graphicsview/qgraphicslinearlayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicslinearlayout.h b/src/widgets/graphicsview/qgraphicslinearlayout.h index 2ddbda02df..04e27515f1 100644 --- a/src/widgets/graphicsview/qgraphicslinearlayout.h +++ b/src/widgets/graphicsview/qgraphicslinearlayout.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.cpp b/src/widgets/graphicsview/qgraphicsproxywidget.cpp index e9be1e015a..f84201cedf 100644 --- a/src/widgets/graphicsview/qgraphicsproxywidget.cpp +++ b/src/widgets/graphicsview/qgraphicsproxywidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.h b/src/widgets/graphicsview/qgraphicsproxywidget.h index 641881ed71..8180cb9966 100644 --- a/src/widgets/graphicsview/qgraphicsproxywidget.h +++ b/src/widgets/graphicsview/qgraphicsproxywidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsproxywidget_p.h b/src/widgets/graphicsview/qgraphicsproxywidget_p.h index bbc1c7ebc1..2eb4efaf18 100644 --- a/src/widgets/graphicsview/qgraphicsproxywidget_p.h +++ b/src/widgets/graphicsview/qgraphicsproxywidget_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp index 78611a27ca..ba59b15a54 100644 --- a/src/widgets/graphicsview/qgraphicsscene.cpp +++ b/src/widgets/graphicsview/qgraphicsscene.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsscene.h b/src/widgets/graphicsview/qgraphicsscene.h index 1a575d987e..cde0eda125 100644 --- a/src/widgets/graphicsview/qgraphicsscene.h +++ b/src/widgets/graphicsview/qgraphicsscene.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsscene_bsp.cpp b/src/widgets/graphicsview/qgraphicsscene_bsp.cpp index fa042bd9c5..55c52d1c6a 100644 --- a/src/widgets/graphicsview/qgraphicsscene_bsp.cpp +++ b/src/widgets/graphicsview/qgraphicsscene_bsp.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsscene_bsp_p.h b/src/widgets/graphicsview/qgraphicsscene_bsp_p.h index 17bdc6b390..88e34b7dea 100644 --- a/src/widgets/graphicsview/qgraphicsscene_bsp_p.h +++ b/src/widgets/graphicsview/qgraphicsscene_bsp_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsscene_p.h b/src/widgets/graphicsview/qgraphicsscene_p.h index 8c1fa69cf4..9e5bcec488 100644 --- a/src/widgets/graphicsview/qgraphicsscene_p.h +++ b/src/widgets/graphicsview/qgraphicsscene_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp b/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp index 64fc97cadf..f70e66f685 100644 --- a/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp +++ b/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicssceneevent.cpp b/src/widgets/graphicsview/qgraphicssceneevent.cpp index 1b78228301..8eb1395a45 100644 --- a/src/widgets/graphicsview/qgraphicssceneevent.cpp +++ b/src/widgets/graphicsview/qgraphicssceneevent.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicssceneevent.h b/src/widgets/graphicsview/qgraphicssceneevent.h index 616b0b1151..e744d08edf 100644 --- a/src/widgets/graphicsview/qgraphicssceneevent.h +++ b/src/widgets/graphicsview/qgraphicssceneevent.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicssceneindex.cpp b/src/widgets/graphicsview/qgraphicssceneindex.cpp index e07edd37e9..4b1c990578 100644 --- a/src/widgets/graphicsview/qgraphicssceneindex.cpp +++ b/src/widgets/graphicsview/qgraphicssceneindex.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsscenelinearindex.cpp b/src/widgets/graphicsview/qgraphicsscenelinearindex.cpp index 7b5bb7d04c..f4f5f8b30b 100644 --- a/src/widgets/graphicsview/qgraphicsscenelinearindex.cpp +++ b/src/widgets/graphicsview/qgraphicsscenelinearindex.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicstransform.h b/src/widgets/graphicsview/qgraphicstransform.h index ebcfbb32f1..6f274201be 100644 --- a/src/widgets/graphicsview/qgraphicstransform.h +++ b/src/widgets/graphicsview/qgraphicstransform.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicstransform_p.h b/src/widgets/graphicsview/qgraphicstransform_p.h index 6215f58fe0..211443a77c 100644 --- a/src/widgets/graphicsview/qgraphicstransform_p.h +++ b/src/widgets/graphicsview/qgraphicstransform_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp index dd10c95e2a..0424517346 100644 --- a/src/widgets/graphicsview/qgraphicsview.cpp +++ b/src/widgets/graphicsview/qgraphicsview.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsview.h b/src/widgets/graphicsview/qgraphicsview.h index d812728237..670c3251b5 100644 --- a/src/widgets/graphicsview/qgraphicsview.h +++ b/src/widgets/graphicsview/qgraphicsview.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicsview_p.h b/src/widgets/graphicsview/qgraphicsview_p.h index 44d37ef992..5725fd9c19 100644 --- a/src/widgets/graphicsview/qgraphicsview_p.h +++ b/src/widgets/graphicsview/qgraphicsview_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicswidget.cpp b/src/widgets/graphicsview/qgraphicswidget.cpp index 2d7fca8000..ddd3ee2e68 100644 --- a/src/widgets/graphicsview/qgraphicswidget.cpp +++ b/src/widgets/graphicsview/qgraphicswidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicswidget.h b/src/widgets/graphicsview/qgraphicswidget.h index 66cce3d961..8881fec1d6 100644 --- a/src/widgets/graphicsview/qgraphicswidget.h +++ b/src/widgets/graphicsview/qgraphicswidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicswidget_p.cpp b/src/widgets/graphicsview/qgraphicswidget_p.cpp index 4101615fb3..14cd7007ba 100644 --- a/src/widgets/graphicsview/qgraphicswidget_p.cpp +++ b/src/widgets/graphicsview/qgraphicswidget_p.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgraphicswidget_p.h b/src/widgets/graphicsview/qgraphicswidget_p.h index d0d3fe3b22..759d8561b0 100644 --- a/src/widgets/graphicsview/qgraphicswidget_p.h +++ b/src/widgets/graphicsview/qgraphicswidget_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgridlayoutengine.cpp b/src/widgets/graphicsview/qgridlayoutengine.cpp index cfb4ae3e3e..b80612bc47 100644 --- a/src/widgets/graphicsview/qgridlayoutengine.cpp +++ b/src/widgets/graphicsview/qgridlayoutengine.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qgridlayoutengine_p.h b/src/widgets/graphicsview/qgridlayoutengine_p.h index 34f6940e23..fbc5bd6ad2 100644 --- a/src/widgets/graphicsview/qgridlayoutengine_p.h +++ b/src/widgets/graphicsview/qgridlayoutengine_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qsimplex_p.cpp b/src/widgets/graphicsview/qsimplex_p.cpp index ec665498a8..a2437d8ab1 100644 --- a/src/widgets/graphicsview/qsimplex_p.cpp +++ b/src/widgets/graphicsview/qsimplex_p.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/graphicsview/qsimplex_p.h b/src/widgets/graphicsview/qsimplex_p.h index 692e2e7155..842044fa7f 100644 --- a/src/widgets/graphicsview/qsimplex_p.h +++ b/src/widgets/graphicsview/qsimplex_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qabstractitemdelegate.cpp b/src/widgets/itemviews/qabstractitemdelegate.cpp index 4c73cf71a5..7786a74cc6 100644 --- a/src/widgets/itemviews/qabstractitemdelegate.cpp +++ b/src/widgets/itemviews/qabstractitemdelegate.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qabstractitemdelegate.h b/src/widgets/itemviews/qabstractitemdelegate.h index f72076b515..13e4f06687 100644 --- a/src/widgets/itemviews/qabstractitemdelegate.h +++ b/src/widgets/itemviews/qabstractitemdelegate.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index c6b07eaa56..70c8f44a73 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qabstractitemview.h b/src/widgets/itemviews/qabstractitemview.h index b48047bdc3..96428515ae 100644 --- a/src/widgets/itemviews/qabstractitemview.h +++ b/src/widgets/itemviews/qabstractitemview.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qabstractitemview_p.h b/src/widgets/itemviews/qabstractitemview_p.h index c7b807cf5f..86eab174ed 100644 --- a/src/widgets/itemviews/qabstractitemview_p.h +++ b/src/widgets/itemviews/qabstractitemview_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qbsptree.cpp b/src/widgets/itemviews/qbsptree.cpp index c0be07e3c1..a4da0b73fd 100644 --- a/src/widgets/itemviews/qbsptree.cpp +++ b/src/widgets/itemviews/qbsptree.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qbsptree_p.h b/src/widgets/itemviews/qbsptree_p.h index 4d652193eb..3210efbd3d 100644 --- a/src/widgets/itemviews/qbsptree_p.h +++ b/src/widgets/itemviews/qbsptree_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qcolumnview.cpp b/src/widgets/itemviews/qcolumnview.cpp index 0951626a41..5aee78fab4 100644 --- a/src/widgets/itemviews/qcolumnview.cpp +++ b/src/widgets/itemviews/qcolumnview.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qcolumnview.h b/src/widgets/itemviews/qcolumnview.h index 660b5f387e..a13433bb2d 100644 --- a/src/widgets/itemviews/qcolumnview.h +++ b/src/widgets/itemviews/qcolumnview.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qcolumnview_p.h b/src/widgets/itemviews/qcolumnview_p.h index b25f690165..3d54c9098a 100644 --- a/src/widgets/itemviews/qcolumnview_p.h +++ b/src/widgets/itemviews/qcolumnview_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qcolumnviewgrip.cpp b/src/widgets/itemviews/qcolumnviewgrip.cpp index f93965f49f..614916dc61 100644 --- a/src/widgets/itemviews/qcolumnviewgrip.cpp +++ b/src/widgets/itemviews/qcolumnviewgrip.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qcolumnviewgrip_p.h b/src/widgets/itemviews/qcolumnviewgrip_p.h index 9d57231c30..c508c58c5b 100644 --- a/src/widgets/itemviews/qcolumnviewgrip_p.h +++ b/src/widgets/itemviews/qcolumnviewgrip_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qdatawidgetmapper.cpp b/src/widgets/itemviews/qdatawidgetmapper.cpp index 9ba0e2a102..e5b7e810fb 100644 --- a/src/widgets/itemviews/qdatawidgetmapper.cpp +++ b/src/widgets/itemviews/qdatawidgetmapper.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qdatawidgetmapper.h b/src/widgets/itemviews/qdatawidgetmapper.h index 9fb9c2db05..b8742196b2 100644 --- a/src/widgets/itemviews/qdatawidgetmapper.h +++ b/src/widgets/itemviews/qdatawidgetmapper.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qdirmodel.cpp b/src/widgets/itemviews/qdirmodel.cpp index fcf8c92a7b..e1ba0ede57 100644 --- a/src/widgets/itemviews/qdirmodel.cpp +++ b/src/widgets/itemviews/qdirmodel.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qdirmodel.h b/src/widgets/itemviews/qdirmodel.h index 45bc3511d8..c0214395ef 100644 --- a/src/widgets/itemviews/qdirmodel.h +++ b/src/widgets/itemviews/qdirmodel.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qfileiconprovider.cpp b/src/widgets/itemviews/qfileiconprovider.cpp index b016fcdffe..8a0736ec70 100644 --- a/src/widgets/itemviews/qfileiconprovider.cpp +++ b/src/widgets/itemviews/qfileiconprovider.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qfileiconprovider.h b/src/widgets/itemviews/qfileiconprovider.h index 3a8a42f07b..cac135fe71 100644 --- a/src/widgets/itemviews/qfileiconprovider.h +++ b/src/widgets/itemviews/qfileiconprovider.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index 5599d251a1..edfbc5c8f1 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qheaderview.h b/src/widgets/itemviews/qheaderview.h index 1cbfc957a8..8fcd8d7a36 100644 --- a/src/widgets/itemviews/qheaderview.h +++ b/src/widgets/itemviews/qheaderview.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qheaderview_p.h b/src/widgets/itemviews/qheaderview_p.h index 4abca63519..7fda0c8873 100644 --- a/src/widgets/itemviews/qheaderview_p.h +++ b/src/widgets/itemviews/qheaderview_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qitemdelegate.cpp b/src/widgets/itemviews/qitemdelegate.cpp index 299f916098..ea474f14ab 100644 --- a/src/widgets/itemviews/qitemdelegate.cpp +++ b/src/widgets/itemviews/qitemdelegate.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qitemdelegate.h b/src/widgets/itemviews/qitemdelegate.h index 884a09e8c6..2866a4bb8b 100644 --- a/src/widgets/itemviews/qitemdelegate.h +++ b/src/widgets/itemviews/qitemdelegate.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qitemeditorfactory.cpp b/src/widgets/itemviews/qitemeditorfactory.cpp index 99e8c2e36e..b3ef21e3e5 100644 --- a/src/widgets/itemviews/qitemeditorfactory.cpp +++ b/src/widgets/itemviews/qitemeditorfactory.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qitemeditorfactory.h b/src/widgets/itemviews/qitemeditorfactory.h index 5aed89fb70..9affe14925 100644 --- a/src/widgets/itemviews/qitemeditorfactory.h +++ b/src/widgets/itemviews/qitemeditorfactory.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qitemeditorfactory_p.h b/src/widgets/itemviews/qitemeditorfactory_p.h index ca4334e015..c652da764c 100644 --- a/src/widgets/itemviews/qitemeditorfactory_p.h +++ b/src/widgets/itemviews/qitemeditorfactory_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp index 6198953857..8ccb0557cb 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qlistview.h b/src/widgets/itemviews/qlistview.h index ff880a889c..e4ae2d03fd 100644 --- a/src/widgets/itemviews/qlistview.h +++ b/src/widgets/itemviews/qlistview.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qlistview_p.h b/src/widgets/itemviews/qlistview_p.h index 8d6f7f864a..35d11140ef 100644 --- a/src/widgets/itemviews/qlistview_p.h +++ b/src/widgets/itemviews/qlistview_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qlistwidget.cpp b/src/widgets/itemviews/qlistwidget.cpp index 7de571f59b..39d03124ce 100644 --- a/src/widgets/itemviews/qlistwidget.cpp +++ b/src/widgets/itemviews/qlistwidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qlistwidget.h b/src/widgets/itemviews/qlistwidget.h index 2cddd4eb6f..a7f993d25c 100644 --- a/src/widgets/itemviews/qlistwidget.h +++ b/src/widgets/itemviews/qlistwidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qlistwidget_p.h b/src/widgets/itemviews/qlistwidget_p.h index 22a3d8ea88..2181a77fcb 100644 --- a/src/widgets/itemviews/qlistwidget_p.h +++ b/src/widgets/itemviews/qlistwidget_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qstyleditemdelegate.cpp b/src/widgets/itemviews/qstyleditemdelegate.cpp index 995be3e786..2b3ea35cb0 100644 --- a/src/widgets/itemviews/qstyleditemdelegate.cpp +++ b/src/widgets/itemviews/qstyleditemdelegate.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qstyleditemdelegate.h b/src/widgets/itemviews/qstyleditemdelegate.h index d88da60c89..aeb25a55b7 100644 --- a/src/widgets/itemviews/qstyleditemdelegate.h +++ b/src/widgets/itemviews/qstyleditemdelegate.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp index 3f19a0fb1f..38e4a0bf9b 100644 --- a/src/widgets/itemviews/qtableview.cpp +++ b/src/widgets/itemviews/qtableview.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtableview.h b/src/widgets/itemviews/qtableview.h index 4d1129c60b..824348dbe8 100644 --- a/src/widgets/itemviews/qtableview.h +++ b/src/widgets/itemviews/qtableview.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtableview_p.h b/src/widgets/itemviews/qtableview_p.h index 5cd970b684..923beec253 100644 --- a/src/widgets/itemviews/qtableview_p.h +++ b/src/widgets/itemviews/qtableview_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp index ca92c3687a..d56314b23d 100644 --- a/src/widgets/itemviews/qtablewidget.cpp +++ b/src/widgets/itemviews/qtablewidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtablewidget.h b/src/widgets/itemviews/qtablewidget.h index a6c355c6a6..fba76129a7 100644 --- a/src/widgets/itemviews/qtablewidget.h +++ b/src/widgets/itemviews/qtablewidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtablewidget_p.h b/src/widgets/itemviews/qtablewidget_p.h index a6b33bd5bb..43eb56a4a5 100644 --- a/src/widgets/itemviews/qtablewidget_p.h +++ b/src/widgets/itemviews/qtablewidget_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index 4c439af0d3..a15e050939 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtreeview.h b/src/widgets/itemviews/qtreeview.h index 7127994969..73f11f1a48 100644 --- a/src/widgets/itemviews/qtreeview.h +++ b/src/widgets/itemviews/qtreeview.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtreeview_p.h b/src/widgets/itemviews/qtreeview_p.h index 6778446ed3..a687d4665d 100644 --- a/src/widgets/itemviews/qtreeview_p.h +++ b/src/widgets/itemviews/qtreeview_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp index 8e86775a2d..653a9170b2 100644 --- a/src/widgets/itemviews/qtreewidget.cpp +++ b/src/widgets/itemviews/qtreewidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtreewidget.h b/src/widgets/itemviews/qtreewidget.h index 0796797273..7aa927a443 100644 --- a/src/widgets/itemviews/qtreewidget.h +++ b/src/widgets/itemviews/qtreewidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtreewidget_p.h b/src/widgets/itemviews/qtreewidget_p.h index be19025ab3..620520bd79 100644 --- a/src/widgets/itemviews/qtreewidget_p.h +++ b/src/widgets/itemviews/qtreewidget_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtreewidgetitemiterator.cpp b/src/widgets/itemviews/qtreewidgetitemiterator.cpp index 6aa8f4b91e..f99b3899df 100644 --- a/src/widgets/itemviews/qtreewidgetitemiterator.cpp +++ b/src/widgets/itemviews/qtreewidgetitemiterator.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtreewidgetitemiterator.h b/src/widgets/itemviews/qtreewidgetitemiterator.h index e124a72afd..01efbc88f2 100644 --- a/src/widgets/itemviews/qtreewidgetitemiterator.h +++ b/src/widgets/itemviews/qtreewidgetitemiterator.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qtreewidgetitemiterator_p.h b/src/widgets/itemviews/qtreewidgetitemiterator_p.h index d0aff063a5..cf2d32cb62 100644 --- a/src/widgets/itemviews/qtreewidgetitemiterator_p.h +++ b/src/widgets/itemviews/qtreewidgetitemiterator_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/itemviews/qwidgetitemdata_p.h b/src/widgets/itemviews/qwidgetitemdata_p.h index 9cdf74048b..a8ab58174f 100644 --- a/src/widgets/itemviews/qwidgetitemdata_p.h +++ b/src/widgets/itemviews/qwidgetitemdata_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qaction.cpp b/src/widgets/kernel/qaction.cpp index f01576d92c..267d787116 100644 --- a/src/widgets/kernel/qaction.cpp +++ b/src/widgets/kernel/qaction.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qaction.h b/src/widgets/kernel/qaction.h index 975073201a..f2346acfcd 100644 --- a/src/widgets/kernel/qaction.h +++ b/src/widgets/kernel/qaction.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qaction_p.h b/src/widgets/kernel/qaction_p.h index d08c42688d..70c9b4ad2b 100644 --- a/src/widgets/kernel/qaction_p.h +++ b/src/widgets/kernel/qaction_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qactiongroup.cpp b/src/widgets/kernel/qactiongroup.cpp index 4e19f116bb..8f1b01eca5 100644 --- a/src/widgets/kernel/qactiongroup.cpp +++ b/src/widgets/kernel/qactiongroup.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qactiongroup.h b/src/widgets/kernel/qactiongroup.h index 747cc83865..eab1d8bd43 100644 --- a/src/widgets/kernel/qactiongroup.h +++ b/src/widgets/kernel/qactiongroup.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index f29532471d..6dc8c0b6ba 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qapplication.h b/src/widgets/kernel/qapplication.h index 07ee638738..83673eef4e 100644 --- a/src/widgets/kernel/qapplication.h +++ b/src/widgets/kernel/qapplication.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h index 85e26fdd49..ca1bccb727 100644 --- a/src/widgets/kernel/qapplication_p.h +++ b/src/widgets/kernel/qapplication_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qapplication_qpa.cpp b/src/widgets/kernel/qapplication_qpa.cpp index 6c3c5de55f..54eb443c43 100644 --- a/src/widgets/kernel/qapplication_qpa.cpp +++ b/src/widgets/kernel/qapplication_qpa.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qboxlayout.cpp b/src/widgets/kernel/qboxlayout.cpp index 3fed14cd4f..e1a7903628 100644 --- a/src/widgets/kernel/qboxlayout.cpp +++ b/src/widgets/kernel/qboxlayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qboxlayout.h b/src/widgets/kernel/qboxlayout.h index dabb96ccd8..4c7b27a4ec 100644 --- a/src/widgets/kernel/qboxlayout.h +++ b/src/widgets/kernel/qboxlayout.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qdesktopwidget.cpp b/src/widgets/kernel/qdesktopwidget.cpp index 63b0a3c873..649978a912 100644 --- a/src/widgets/kernel/qdesktopwidget.cpp +++ b/src/widgets/kernel/qdesktopwidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qdesktopwidget.h b/src/widgets/kernel/qdesktopwidget.h index d823e3ce47..da44242b86 100644 --- a/src/widgets/kernel/qdesktopwidget.h +++ b/src/widgets/kernel/qdesktopwidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qdesktopwidget_qpa.cpp b/src/widgets/kernel/qdesktopwidget_qpa.cpp index b71734bebb..64236321a4 100644 --- a/src/widgets/kernel/qdesktopwidget_qpa.cpp +++ b/src/widgets/kernel/qdesktopwidget_qpa.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qdesktopwidget_qpa_p.h b/src/widgets/kernel/qdesktopwidget_qpa_p.h index 3e42f98937..017934fbf1 100644 --- a/src/widgets/kernel/qdesktopwidget_qpa_p.h +++ b/src/widgets/kernel/qdesktopwidget_qpa_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qformlayout.cpp b/src/widgets/kernel/qformlayout.cpp index 9388532406..e2d25de537 100644 --- a/src/widgets/kernel/qformlayout.cpp +++ b/src/widgets/kernel/qformlayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qformlayout.h b/src/widgets/kernel/qformlayout.h index 29abc6b548..d59f71eb32 100644 --- a/src/widgets/kernel/qformlayout.h +++ b/src/widgets/kernel/qformlayout.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qgesture.cpp b/src/widgets/kernel/qgesture.cpp index 2767bd9924..4baeae9021 100644 --- a/src/widgets/kernel/qgesture.cpp +++ b/src/widgets/kernel/qgesture.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qgesture.h b/src/widgets/kernel/qgesture.h index a9609ffad9..056fc35402 100644 --- a/src/widgets/kernel/qgesture.h +++ b/src/widgets/kernel/qgesture.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qgesture_p.h b/src/widgets/kernel/qgesture_p.h index c842e279b5..c041af7317 100644 --- a/src/widgets/kernel/qgesture_p.h +++ b/src/widgets/kernel/qgesture_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qgesturemanager.cpp b/src/widgets/kernel/qgesturemanager.cpp index 528d6120cf..d90b187bf0 100644 --- a/src/widgets/kernel/qgesturemanager.cpp +++ b/src/widgets/kernel/qgesturemanager.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qgesturemanager_p.h b/src/widgets/kernel/qgesturemanager_p.h index 5c78932f1d..4ab631a921 100644 --- a/src/widgets/kernel/qgesturemanager_p.h +++ b/src/widgets/kernel/qgesturemanager_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qgesturerecognizer.cpp b/src/widgets/kernel/qgesturerecognizer.cpp index b6b0e3c1cb..88983e255b 100644 --- a/src/widgets/kernel/qgesturerecognizer.cpp +++ b/src/widgets/kernel/qgesturerecognizer.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qgesturerecognizer.h b/src/widgets/kernel/qgesturerecognizer.h index e313920f0a..a1ce86b50d 100644 --- a/src/widgets/kernel/qgesturerecognizer.h +++ b/src/widgets/kernel/qgesturerecognizer.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qgridlayout.cpp b/src/widgets/kernel/qgridlayout.cpp index fb343264d2..12049f3303 100644 --- a/src/widgets/kernel/qgridlayout.cpp +++ b/src/widgets/kernel/qgridlayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qgridlayout.h b/src/widgets/kernel/qgridlayout.h index 39c26619c3..6a788d9cc8 100644 --- a/src/widgets/kernel/qgridlayout.h +++ b/src/widgets/kernel/qgridlayout.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qlayout.cpp b/src/widgets/kernel/qlayout.cpp index c32eddd148..d59a9db75d 100644 --- a/src/widgets/kernel/qlayout.cpp +++ b/src/widgets/kernel/qlayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qlayout.h b/src/widgets/kernel/qlayout.h index 3f09419b05..c293939bd3 100644 --- a/src/widgets/kernel/qlayout.h +++ b/src/widgets/kernel/qlayout.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qlayout_p.h b/src/widgets/kernel/qlayout_p.h index e6d96a8253..9321bfc0dc 100644 --- a/src/widgets/kernel/qlayout_p.h +++ b/src/widgets/kernel/qlayout_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qlayoutengine.cpp b/src/widgets/kernel/qlayoutengine.cpp index 8fb625581b..8800da33b4 100644 --- a/src/widgets/kernel/qlayoutengine.cpp +++ b/src/widgets/kernel/qlayoutengine.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qlayoutengine_p.h b/src/widgets/kernel/qlayoutengine_p.h index beecf529fb..8a26b389df 100644 --- a/src/widgets/kernel/qlayoutengine_p.h +++ b/src/widgets/kernel/qlayoutengine_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qlayoutitem.cpp b/src/widgets/kernel/qlayoutitem.cpp index 6524d8f2b8..223bcf1d9b 100644 --- a/src/widgets/kernel/qlayoutitem.cpp +++ b/src/widgets/kernel/qlayoutitem.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qlayoutitem.h b/src/widgets/kernel/qlayoutitem.h index 808cc9ff5d..4af57f1458 100644 --- a/src/widgets/kernel/qlayoutitem.h +++ b/src/widgets/kernel/qlayoutitem.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qshortcut.cpp b/src/widgets/kernel/qshortcut.cpp index 07e22e27e2..f323c682d1 100644 --- a/src/widgets/kernel/qshortcut.cpp +++ b/src/widgets/kernel/qshortcut.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qshortcut.h b/src/widgets/kernel/qshortcut.h index 001c6814ee..372cd9ff66 100644 --- a/src/widgets/kernel/qshortcut.h +++ b/src/widgets/kernel/qshortcut.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qsizepolicy.h b/src/widgets/kernel/qsizepolicy.h index 383c7d0512..2fe85cbe0c 100644 --- a/src/widgets/kernel/qsizepolicy.h +++ b/src/widgets/kernel/qsizepolicy.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qstackedlayout.cpp b/src/widgets/kernel/qstackedlayout.cpp index f38f0a6f08..9514877e50 100644 --- a/src/widgets/kernel/qstackedlayout.cpp +++ b/src/widgets/kernel/qstackedlayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qstackedlayout.h b/src/widgets/kernel/qstackedlayout.h index 5067f4e457..87715d10d8 100644 --- a/src/widgets/kernel/qstackedlayout.h +++ b/src/widgets/kernel/qstackedlayout.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qstandardgestures.cpp b/src/widgets/kernel/qstandardgestures.cpp index 98fdfb4b75..e3131e7e56 100644 --- a/src/widgets/kernel/qstandardgestures.cpp +++ b/src/widgets/kernel/qstandardgestures.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qstandardgestures_p.h b/src/widgets/kernel/qstandardgestures_p.h index 61645f364a..70cd241ab4 100644 --- a/src/widgets/kernel/qstandardgestures_p.h +++ b/src/widgets/kernel/qstandardgestures_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qt_widgets_pch.h b/src/widgets/kernel/qt_widgets_pch.h index 144a5913cf..9e16d8f19e 100644 --- a/src/widgets/kernel/qt_widgets_pch.h +++ b/src/widgets/kernel/qt_widgets_pch.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qtooltip.cpp b/src/widgets/kernel/qtooltip.cpp index 69dd1f9e63..864ed6a555 100644 --- a/src/widgets/kernel/qtooltip.cpp +++ b/src/widgets/kernel/qtooltip.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qtooltip.h b/src/widgets/kernel/qtooltip.h index c7fb9809dc..25b138b855 100644 --- a/src/widgets/kernel/qtooltip.h +++ b/src/widgets/kernel/qtooltip.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwhatsthis.cpp b/src/widgets/kernel/qwhatsthis.cpp index 1152ef4f8d..b96bd024cb 100644 --- a/src/widgets/kernel/qwhatsthis.cpp +++ b/src/widgets/kernel/qwhatsthis.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwhatsthis.h b/src/widgets/kernel/qwhatsthis.h index 80a8be5227..37887b8cd5 100644 --- a/src/widgets/kernel/qwhatsthis.h +++ b/src/widgets/kernel/qwhatsthis.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 39cbe1da3f..3e1e0f592c 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidget.h b/src/widgets/kernel/qwidget.h index 5965eb8601..5c844d1566 100644 --- a/src/widgets/kernel/qwidget.h +++ b/src/widgets/kernel/qwidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h index 37f295bc9f..50f32af8b0 100644 --- a/src/widgets/kernel/qwidget_p.h +++ b/src/widgets/kernel/qwidget_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp index c4b527bf9c..1374d25cef 100644 --- a/src/widgets/kernel/qwidget_qpa.cpp +++ b/src/widgets/kernel/qwidget_qpa.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidgetaction.cpp b/src/widgets/kernel/qwidgetaction.cpp index fc82fd09f2..7ccb4e2a5c 100644 --- a/src/widgets/kernel/qwidgetaction.cpp +++ b/src/widgets/kernel/qwidgetaction.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidgetaction.h b/src/widgets/kernel/qwidgetaction.h index 93c0898197..7fc24bab9b 100644 --- a/src/widgets/kernel/qwidgetaction.h +++ b/src/widgets/kernel/qwidgetaction.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidgetaction_p.h b/src/widgets/kernel/qwidgetaction_p.h index 2fc5dcd86c..8f591bf320 100644 --- a/src/widgets/kernel/qwidgetaction_p.h +++ b/src/widgets/kernel/qwidgetaction_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidgetbackingstore.cpp b/src/widgets/kernel/qwidgetbackingstore.cpp index 294ef9f28c..02fa80bef6 100644 --- a/src/widgets/kernel/qwidgetbackingstore.cpp +++ b/src/widgets/kernel/qwidgetbackingstore.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidgetbackingstore_p.h b/src/widgets/kernel/qwidgetbackingstore_p.h index 00016a8e7d..39583c8caa 100644 --- a/src/widgets/kernel/qwidgetbackingstore_p.h +++ b/src/widgets/kernel/qwidgetbackingstore_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidgetsvariant.cpp b/src/widgets/kernel/qwidgetsvariant.cpp index b5b5999c2b..5ac46c1f59 100644 --- a/src/widgets/kernel/qwidgetsvariant.cpp +++ b/src/widgets/kernel/qwidgetsvariant.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index 183787ccc3..ddb570d6c7 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwidgetwindow_qpa_p.h b/src/widgets/kernel/qwidgetwindow_qpa_p.h index 77fdcbeb56..cb7bef8f3e 100644 --- a/src/widgets/kernel/qwidgetwindow_qpa_p.h +++ b/src/widgets/kernel/qwidgetwindow_qpa_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwindowcontainer.cpp b/src/widgets/kernel/qwindowcontainer.cpp index 81322f49b4..b02b05552f 100644 --- a/src/widgets/kernel/qwindowcontainer.cpp +++ b/src/widgets/kernel/qwindowcontainer.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/kernel/qwindowcontainer_p.h b/src/widgets/kernel/qwindowcontainer_p.h index e8d089c9bd..37c023fc1d 100644 --- a/src/widgets/kernel/qwindowcontainer_p.h +++ b/src/widgets/kernel/qwindowcontainer_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/statemachine/qbasickeyeventtransition.cpp b/src/widgets/statemachine/qbasickeyeventtransition.cpp index edc656119e..5a1b98690e 100644 --- a/src/widgets/statemachine/qbasickeyeventtransition.cpp +++ b/src/widgets/statemachine/qbasickeyeventtransition.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/statemachine/qbasickeyeventtransition_p.h b/src/widgets/statemachine/qbasickeyeventtransition_p.h index 45a32ca0d0..0d1e815dec 100644 --- a/src/widgets/statemachine/qbasickeyeventtransition_p.h +++ b/src/widgets/statemachine/qbasickeyeventtransition_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/statemachine/qbasicmouseeventtransition.cpp b/src/widgets/statemachine/qbasicmouseeventtransition.cpp index 99ad1cb1fa..67d45c86db 100644 --- a/src/widgets/statemachine/qbasicmouseeventtransition.cpp +++ b/src/widgets/statemachine/qbasicmouseeventtransition.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/statemachine/qbasicmouseeventtransition_p.h b/src/widgets/statemachine/qbasicmouseeventtransition_p.h index 7a779d3e1b..47c9f967c0 100644 --- a/src/widgets/statemachine/qbasicmouseeventtransition_p.h +++ b/src/widgets/statemachine/qbasicmouseeventtransition_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/statemachine/qguistatemachine.cpp b/src/widgets/statemachine/qguistatemachine.cpp index 1c2a4b373e..d737a1e323 100644 --- a/src/widgets/statemachine/qguistatemachine.cpp +++ b/src/widgets/statemachine/qguistatemachine.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/statemachine/qkeyeventtransition.cpp b/src/widgets/statemachine/qkeyeventtransition.cpp index 9f54742ad9..f9a67642e0 100644 --- a/src/widgets/statemachine/qkeyeventtransition.cpp +++ b/src/widgets/statemachine/qkeyeventtransition.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/statemachine/qkeyeventtransition.h b/src/widgets/statemachine/qkeyeventtransition.h index d2ea7cb93a..dc310167a3 100644 --- a/src/widgets/statemachine/qkeyeventtransition.h +++ b/src/widgets/statemachine/qkeyeventtransition.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/statemachine/qmouseeventtransition.cpp b/src/widgets/statemachine/qmouseeventtransition.cpp index 3ea3dc74d4..427e60b75e 100644 --- a/src/widgets/statemachine/qmouseeventtransition.cpp +++ b/src/widgets/statemachine/qmouseeventtransition.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/statemachine/qmouseeventtransition.h b/src/widgets/statemachine/qmouseeventtransition.h index b96f1ef542..a3606e81bc 100644 --- a/src/widgets/statemachine/qmouseeventtransition.h +++ b/src/widgets/statemachine/qmouseeventtransition.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index e2c5bab47f..1af909a3cb 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qcommonstyle.h b/src/widgets/styles/qcommonstyle.h index 01eca4664f..942721a6a3 100644 --- a/src/widgets/styles/qcommonstyle.h +++ b/src/widgets/styles/qcommonstyle.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qcommonstyle_p.h b/src/widgets/styles/qcommonstyle_p.h index dbb4d3cd37..979c2a5548 100644 --- a/src/widgets/styles/qcommonstyle_p.h +++ b/src/widgets/styles/qcommonstyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qcommonstylepixmaps_p.h b/src/widgets/styles/qcommonstylepixmaps_p.h index 20607ccd60..d47b16d1a4 100644 --- a/src/widgets/styles/qcommonstylepixmaps_p.h +++ b/src/widgets/styles/qcommonstylepixmaps_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qdrawutil.cpp b/src/widgets/styles/qdrawutil.cpp index 1c154650c8..3df3bfa50d 100644 --- a/src/widgets/styles/qdrawutil.cpp +++ b/src/widgets/styles/qdrawutil.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qdrawutil.h b/src/widgets/styles/qdrawutil.h index 37e02bb1a9..6e9dc26591 100644 --- a/src/widgets/styles/qdrawutil.h +++ b/src/widgets/styles/qdrawutil.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index ee237ac71a..0ba9ec38c0 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qfusionstyle_p.h b/src/widgets/styles/qfusionstyle_p.h index 2fa7779b7b..9e5a55918d 100644 --- a/src/widgets/styles/qfusionstyle_p.h +++ b/src/widgets/styles/qfusionstyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qfusionstyle_p_p.h b/src/widgets/styles/qfusionstyle_p_p.h index 58595fe889..acdf409dbf 100644 --- a/src/widgets/styles/qfusionstyle_p_p.h +++ b/src/widgets/styles/qfusionstyle_p_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qgtk2painter.cpp b/src/widgets/styles/qgtk2painter.cpp index 4d00a7385e..7b9bd975d8 100644 --- a/src/widgets/styles/qgtk2painter.cpp +++ b/src/widgets/styles/qgtk2painter.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qgtk2painter_p.h b/src/widgets/styles/qgtk2painter_p.h index 286430cd33..f1444a87de 100644 --- a/src/widgets/styles/qgtk2painter_p.h +++ b/src/widgets/styles/qgtk2painter_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qgtkglobal_p.h b/src/widgets/styles/qgtkglobal_p.h index 24da8c8e64..06ed7cfce4 100644 --- a/src/widgets/styles/qgtkglobal_p.h +++ b/src/widgets/styles/qgtkglobal_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qgtkpainter.cpp b/src/widgets/styles/qgtkpainter.cpp index dac98a199c..a733049f65 100644 --- a/src/widgets/styles/qgtkpainter.cpp +++ b/src/widgets/styles/qgtkpainter.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qgtkpainter_p.h b/src/widgets/styles/qgtkpainter_p.h index 58833b7c95..12d4dc9bc4 100644 --- a/src/widgets/styles/qgtkpainter_p.h +++ b/src/widgets/styles/qgtkpainter_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qgtkstyle.cpp b/src/widgets/styles/qgtkstyle.cpp index 8c9fc93288..15fa00d8a6 100644 --- a/src/widgets/styles/qgtkstyle.cpp +++ b/src/widgets/styles/qgtkstyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qgtkstyle_p.cpp b/src/widgets/styles/qgtkstyle_p.cpp index 810a8995f8..f29f250de0 100644 --- a/src/widgets/styles/qgtkstyle_p.cpp +++ b/src/widgets/styles/qgtkstyle_p.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qgtkstyle_p.h b/src/widgets/styles/qgtkstyle_p.h index 0713f30bb9..525d7f840a 100644 --- a/src/widgets/styles/qgtkstyle_p.h +++ b/src/widgets/styles/qgtkstyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qgtkstyle_p_p.h b/src/widgets/styles/qgtkstyle_p_p.h index fc77aea48b..6f3759bd9e 100644 --- a/src/widgets/styles/qgtkstyle_p_p.h +++ b/src/widgets/styles/qgtkstyle_p_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index 18eb5e6c44..eefacc4864 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qmacstyle_mac_p.h b/src/widgets/styles/qmacstyle_mac_p.h index aef04a93bc..305bcf871c 100644 --- a/src/widgets/styles/qmacstyle_mac_p.h +++ b/src/widgets/styles/qmacstyle_mac_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qmacstyle_mac_p_p.h b/src/widgets/styles/qmacstyle_mac_p_p.h index 6c0493fe04..c424ff0c3c 100644 --- a/src/widgets/styles/qmacstyle_mac_p_p.h +++ b/src/widgets/styles/qmacstyle_mac_p_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qproxystyle.cpp b/src/widgets/styles/qproxystyle.cpp index d89390cb01..b63e820bb9 100644 --- a/src/widgets/styles/qproxystyle.cpp +++ b/src/widgets/styles/qproxystyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qproxystyle.h b/src/widgets/styles/qproxystyle.h index d1623c745c..5864c195c6 100644 --- a/src/widgets/styles/qproxystyle.h +++ b/src/widgets/styles/qproxystyle.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qproxystyle_p.h b/src/widgets/styles/qproxystyle_p.h index 3d428a0c84..92f6f73ccc 100644 --- a/src/widgets/styles/qproxystyle_p.h +++ b/src/widgets/styles/qproxystyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp index c3f22994ca..603d0e50a5 100644 --- a/src/widgets/styles/qstyle.cpp +++ b/src/widgets/styles/qstyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstyle.h b/src/widgets/styles/qstyle.h index 0d139cb83d..beafad326e 100644 --- a/src/widgets/styles/qstyle.h +++ b/src/widgets/styles/qstyle.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstyle_p.h b/src/widgets/styles/qstyle_p.h index 6cc28b7506..70221f6d8f 100644 --- a/src/widgets/styles/qstyle_p.h +++ b/src/widgets/styles/qstyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstyleanimation.cpp b/src/widgets/styles/qstyleanimation.cpp index 4deafdebcc..4fb67d90c0 100644 --- a/src/widgets/styles/qstyleanimation.cpp +++ b/src/widgets/styles/qstyleanimation.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstyleanimation_p.h b/src/widgets/styles/qstyleanimation_p.h index f9f0eced9d..77962bedac 100644 --- a/src/widgets/styles/qstyleanimation_p.h +++ b/src/widgets/styles/qstyleanimation_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstylefactory.cpp b/src/widgets/styles/qstylefactory.cpp index 5028371e23..2b81acf246 100644 --- a/src/widgets/styles/qstylefactory.cpp +++ b/src/widgets/styles/qstylefactory.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstylefactory.h b/src/widgets/styles/qstylefactory.h index fb0f0c4851..539f47464b 100644 --- a/src/widgets/styles/qstylefactory.h +++ b/src/widgets/styles/qstylefactory.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstylehelper.cpp b/src/widgets/styles/qstylehelper.cpp index 75c74e4a88..33a422fdd4 100644 --- a/src/widgets/styles/qstylehelper.cpp +++ b/src/widgets/styles/qstylehelper.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstylehelper_p.h b/src/widgets/styles/qstylehelper_p.h index 01772e765c..6355cbc985 100644 --- a/src/widgets/styles/qstylehelper_p.h +++ b/src/widgets/styles/qstylehelper_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp index 6eb81e8fb8..4f4cd71070 100644 --- a/src/widgets/styles/qstyleoption.cpp +++ b/src/widgets/styles/qstyleoption.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstyleoption.h b/src/widgets/styles/qstyleoption.h index d2af5d14d8..4f817a3353 100644 --- a/src/widgets/styles/qstyleoption.h +++ b/src/widgets/styles/qstyleoption.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstylepainter.cpp b/src/widgets/styles/qstylepainter.cpp index 1faf4a743b..5c2c44b45b 100644 --- a/src/widgets/styles/qstylepainter.cpp +++ b/src/widgets/styles/qstylepainter.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstylepainter.h b/src/widgets/styles/qstylepainter.h index 681997b0f2..2031921d12 100644 --- a/src/widgets/styles/qstylepainter.h +++ b/src/widgets/styles/qstylepainter.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstyleplugin.cpp b/src/widgets/styles/qstyleplugin.cpp index e8f9878603..77f5bd30f4 100644 --- a/src/widgets/styles/qstyleplugin.cpp +++ b/src/widgets/styles/qstyleplugin.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstyleplugin.h b/src/widgets/styles/qstyleplugin.h index 77c1f906fd..041bdbfa68 100644 --- a/src/widgets/styles/qstyleplugin.h +++ b/src/widgets/styles/qstyleplugin.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp index 7087e2a5ca..be89abf2b2 100644 --- a/src/widgets/styles/qstylesheetstyle.cpp +++ b/src/widgets/styles/qstylesheetstyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstylesheetstyle_default.cpp b/src/widgets/styles/qstylesheetstyle_default.cpp index 2c9a72b4b4..bca4c8928a 100644 --- a/src/widgets/styles/qstylesheetstyle_default.cpp +++ b/src/widgets/styles/qstylesheetstyle_default.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qstylesheetstyle_p.h b/src/widgets/styles/qstylesheetstyle_p.h index a199721200..9ca3c9ed24 100644 --- a/src/widgets/styles/qstylesheetstyle_p.h +++ b/src/widgets/styles/qstylesheetstyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowscestyle.cpp b/src/widgets/styles/qwindowscestyle.cpp index f297e64631..564e84b35b 100644 --- a/src/widgets/styles/qwindowscestyle.cpp +++ b/src/widgets/styles/qwindowscestyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowscestyle_p.h b/src/widgets/styles/qwindowscestyle_p.h index cd23afb480..73fb2b7ab7 100644 --- a/src/widgets/styles/qwindowscestyle_p.h +++ b/src/widgets/styles/qwindowscestyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowscestyle_p_p.h b/src/widgets/styles/qwindowscestyle_p_p.h index 7fbf6d8160..f17aae7cbb 100644 --- a/src/widgets/styles/qwindowscestyle_p_p.h +++ b/src/widgets/styles/qwindowscestyle_p_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsmobilestyle.cpp b/src/widgets/styles/qwindowsmobilestyle.cpp index 55c9495b1a..36c5d7e1bb 100644 --- a/src/widgets/styles/qwindowsmobilestyle.cpp +++ b/src/widgets/styles/qwindowsmobilestyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsmobilestyle_p.h b/src/widgets/styles/qwindowsmobilestyle_p.h index c0a6f779c9..4262bf5c73 100644 --- a/src/widgets/styles/qwindowsmobilestyle_p.h +++ b/src/widgets/styles/qwindowsmobilestyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsmobilestyle_p_p.h b/src/widgets/styles/qwindowsmobilestyle_p_p.h index d73c6eebaa..45e02fb379 100644 --- a/src/widgets/styles/qwindowsmobilestyle_p_p.h +++ b/src/widgets/styles/qwindowsmobilestyle_p_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsstyle.cpp b/src/widgets/styles/qwindowsstyle.cpp index e288b1854d..86fccabcbc 100644 --- a/src/widgets/styles/qwindowsstyle.cpp +++ b/src/widgets/styles/qwindowsstyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsstyle_p.h b/src/widgets/styles/qwindowsstyle_p.h index 5a52dcd683..1107e70061 100644 --- a/src/widgets/styles/qwindowsstyle_p.h +++ b/src/widgets/styles/qwindowsstyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsstyle_p_p.h b/src/widgets/styles/qwindowsstyle_p_p.h index ca77964fb8..872b6f0e9e 100644 --- a/src/widgets/styles/qwindowsstyle_p_p.h +++ b/src/widgets/styles/qwindowsstyle_p_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp index 0102bc2b7d..df5a02d17f 100644 --- a/src/widgets/styles/qwindowsvistastyle.cpp +++ b/src/widgets/styles/qwindowsvistastyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsvistastyle_p.h b/src/widgets/styles/qwindowsvistastyle_p.h index 7a559325bd..f7914f1645 100644 --- a/src/widgets/styles/qwindowsvistastyle_p.h +++ b/src/widgets/styles/qwindowsvistastyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsvistastyle_p_p.h b/src/widgets/styles/qwindowsvistastyle_p_p.h index 17d510abf2..f2f208fbb5 100644 --- a/src/widgets/styles/qwindowsvistastyle_p_p.h +++ b/src/widgets/styles/qwindowsvistastyle_p_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsxpstyle.cpp b/src/widgets/styles/qwindowsxpstyle.cpp index 8bd5699e4a..64569cfd9b 100644 --- a/src/widgets/styles/qwindowsxpstyle.cpp +++ b/src/widgets/styles/qwindowsxpstyle.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsxpstyle_p.h b/src/widgets/styles/qwindowsxpstyle_p.h index cf171b1436..d61132295c 100644 --- a/src/widgets/styles/qwindowsxpstyle_p.h +++ b/src/widgets/styles/qwindowsxpstyle_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/styles/qwindowsxpstyle_p_p.h b/src/widgets/styles/qwindowsxpstyle_p_p.h index 234b8e8a59..783adc3085 100644 --- a/src/widgets/styles/qwindowsxpstyle_p_p.h +++ b/src/widgets/styles/qwindowsxpstyle_p_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qcolormap.cpp b/src/widgets/util/qcolormap.cpp index 24457520c4..03ee8a395e 100644 --- a/src/widgets/util/qcolormap.cpp +++ b/src/widgets/util/qcolormap.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qcolormap.h b/src/widgets/util/qcolormap.h index a41b1e472b..b869bd9555 100644 --- a/src/widgets/util/qcolormap.h +++ b/src/widgets/util/qcolormap.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qcompleter.cpp b/src/widgets/util/qcompleter.cpp index 59ec6eb10d..64b7b12e90 100644 --- a/src/widgets/util/qcompleter.cpp +++ b/src/widgets/util/qcompleter.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qcompleter.h b/src/widgets/util/qcompleter.h index 57a1676d01..737d9f5fba 100644 --- a/src/widgets/util/qcompleter.h +++ b/src/widgets/util/qcompleter.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qcompleter_p.h b/src/widgets/util/qcompleter_p.h index 1eb2002319..26d539a57b 100644 --- a/src/widgets/util/qcompleter_p.h +++ b/src/widgets/util/qcompleter_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qflickgesture.cpp b/src/widgets/util/qflickgesture.cpp index 980f144a0f..b0cd4a9540 100644 --- a/src/widgets/util/qflickgesture.cpp +++ b/src/widgets/util/qflickgesture.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qflickgesture_p.h b/src/widgets/util/qflickgesture_p.h index 04cf847860..49a8049d44 100644 --- a/src/widgets/util/qflickgesture_p.h +++ b/src/widgets/util/qflickgesture_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qscroller.cpp b/src/widgets/util/qscroller.cpp index add372c583..0a58711b92 100644 --- a/src/widgets/util/qscroller.cpp +++ b/src/widgets/util/qscroller.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qscroller.h b/src/widgets/util/qscroller.h index fac9b519c7..1b382f3d31 100644 --- a/src/widgets/util/qscroller.h +++ b/src/widgets/util/qscroller.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qscroller_mac.mm b/src/widgets/util/qscroller_mac.mm index 4bde960ecd..0f9f2a028c 100644 --- a/src/widgets/util/qscroller_mac.mm +++ b/src/widgets/util/qscroller_mac.mm @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qscroller_p.h b/src/widgets/util/qscroller_p.h index 73f5814291..a12c364960 100644 --- a/src/widgets/util/qscroller_p.h +++ b/src/widgets/util/qscroller_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qscrollerproperties.cpp b/src/widgets/util/qscrollerproperties.cpp index d0d9c23b68..cebb054a53 100644 --- a/src/widgets/util/qscrollerproperties.cpp +++ b/src/widgets/util/qscrollerproperties.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qscrollerproperties.h b/src/widgets/util/qscrollerproperties.h index 27b71e4d27..eb34c9701e 100644 --- a/src/widgets/util/qscrollerproperties.h +++ b/src/widgets/util/qscrollerproperties.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qscrollerproperties_p.h b/src/widgets/util/qscrollerproperties_p.h index 8abe7c7a2e..4d962b6b78 100644 --- a/src/widgets/util/qscrollerproperties_p.h +++ b/src/widgets/util/qscrollerproperties_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qsystemtrayicon.cpp b/src/widgets/util/qsystemtrayicon.cpp index 4cae15893c..f74d88f6a0 100644 --- a/src/widgets/util/qsystemtrayicon.cpp +++ b/src/widgets/util/qsystemtrayicon.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qsystemtrayicon.h b/src/widgets/util/qsystemtrayicon.h index 6745319993..278efae586 100644 --- a/src/widgets/util/qsystemtrayicon.h +++ b/src/widgets/util/qsystemtrayicon.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qsystemtrayicon_p.h b/src/widgets/util/qsystemtrayicon_p.h index c61ba733e9..211ef308f1 100644 --- a/src/widgets/util/qsystemtrayicon_p.h +++ b/src/widgets/util/qsystemtrayicon_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qsystemtrayicon_qpa.cpp b/src/widgets/util/qsystemtrayicon_qpa.cpp index 113f0b68b2..3ce89e352d 100644 --- a/src/widgets/util/qsystemtrayicon_qpa.cpp +++ b/src/widgets/util/qsystemtrayicon_qpa.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qsystemtrayicon_win.cpp b/src/widgets/util/qsystemtrayicon_win.cpp index 2184a52af7..d273060f7b 100644 --- a/src/widgets/util/qsystemtrayicon_win.cpp +++ b/src/widgets/util/qsystemtrayicon_win.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qsystemtrayicon_wince.cpp b/src/widgets/util/qsystemtrayicon_wince.cpp index a0c278b1a3..6347ee6c04 100644 --- a/src/widgets/util/qsystemtrayicon_wince.cpp +++ b/src/widgets/util/qsystemtrayicon_wince.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qsystemtrayicon_x11.cpp b/src/widgets/util/qsystemtrayicon_x11.cpp index 7d2b94ef11..e04656974d 100644 --- a/src/widgets/util/qsystemtrayicon_x11.cpp +++ b/src/widgets/util/qsystemtrayicon_x11.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qundogroup.cpp b/src/widgets/util/qundogroup.cpp index 7a524cf416..57563c434b 100644 --- a/src/widgets/util/qundogroup.cpp +++ b/src/widgets/util/qundogroup.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qundogroup.h b/src/widgets/util/qundogroup.h index 31e6aea1f1..9a961d7eda 100644 --- a/src/widgets/util/qundogroup.h +++ b/src/widgets/util/qundogroup.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qundostack.cpp b/src/widgets/util/qundostack.cpp index eff12a7c4d..46730ef7bd 100644 --- a/src/widgets/util/qundostack.cpp +++ b/src/widgets/util/qundostack.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qundostack.h b/src/widgets/util/qundostack.h index c7071fe42a..4756ca314f 100644 --- a/src/widgets/util/qundostack.h +++ b/src/widgets/util/qundostack.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qundostack_p.h b/src/widgets/util/qundostack_p.h index 7299a38b4d..039350ea90 100644 --- a/src/widgets/util/qundostack_p.h +++ b/src/widgets/util/qundostack_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qundoview.cpp b/src/widgets/util/qundoview.cpp index 3b1b2e1117..a7d89e7749 100644 --- a/src/widgets/util/qundoview.cpp +++ b/src/widgets/util/qundoview.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/util/qundoview.h b/src/widgets/util/qundoview.h index a9c0ac4e95..80a0548bce 100644 --- a/src/widgets/util/qundoview.h +++ b/src/widgets/util/qundoview.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp index c96f77cbf2..3f9b28a883 100644 --- a/src/widgets/widgets/qabstractbutton.cpp +++ b/src/widgets/widgets/qabstractbutton.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractbutton.h b/src/widgets/widgets/qabstractbutton.h index 793f984fa0..4732f461e4 100644 --- a/src/widgets/widgets/qabstractbutton.h +++ b/src/widgets/widgets/qabstractbutton.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractbutton_p.h b/src/widgets/widgets/qabstractbutton_p.h index 2e347ae933..4585728848 100644 --- a/src/widgets/widgets/qabstractbutton_p.h +++ b/src/widgets/widgets/qabstractbutton_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp index b27bc2fff8..900e95f4da 100644 --- a/src/widgets/widgets/qabstractscrollarea.cpp +++ b/src/widgets/widgets/qabstractscrollarea.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractscrollarea.h b/src/widgets/widgets/qabstractscrollarea.h index 5c3c5aaace..ccf16b5e5c 100644 --- a/src/widgets/widgets/qabstractscrollarea.h +++ b/src/widgets/widgets/qabstractscrollarea.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractscrollarea_p.h b/src/widgets/widgets/qabstractscrollarea_p.h index 2766211732..34d767fe29 100644 --- a/src/widgets/widgets/qabstractscrollarea_p.h +++ b/src/widgets/widgets/qabstractscrollarea_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractslider.cpp b/src/widgets/widgets/qabstractslider.cpp index 5372b21430..8c3dedb84f 100644 --- a/src/widgets/widgets/qabstractslider.cpp +++ b/src/widgets/widgets/qabstractslider.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractslider.h b/src/widgets/widgets/qabstractslider.h index e82adcf71d..82c8f409a0 100644 --- a/src/widgets/widgets/qabstractslider.h +++ b/src/widgets/widgets/qabstractslider.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractslider_p.h b/src/widgets/widgets/qabstractslider_p.h index 7b07aa3be9..35ee934096 100644 --- a/src/widgets/widgets/qabstractslider_p.h +++ b/src/widgets/widgets/qabstractslider_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp index c2b04ce461..765dcb8981 100644 --- a/src/widgets/widgets/qabstractspinbox.cpp +++ b/src/widgets/widgets/qabstractspinbox.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractspinbox.h b/src/widgets/widgets/qabstractspinbox.h index e29f9de0d5..4f6aad0cde 100644 --- a/src/widgets/widgets/qabstractspinbox.h +++ b/src/widgets/widgets/qabstractspinbox.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qabstractspinbox_p.h b/src/widgets/widgets/qabstractspinbox_p.h index d4484b7a56..0eeec02abc 100644 --- a/src/widgets/widgets/qabstractspinbox_p.h +++ b/src/widgets/widgets/qabstractspinbox_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qbuttongroup.cpp b/src/widgets/widgets/qbuttongroup.cpp index 2bd67d19e1..f22910007f 100644 --- a/src/widgets/widgets/qbuttongroup.cpp +++ b/src/widgets/widgets/qbuttongroup.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qbuttongroup.h b/src/widgets/widgets/qbuttongroup.h index 600df83d76..84fe26e0df 100644 --- a/src/widgets/widgets/qbuttongroup.h +++ b/src/widgets/widgets/qbuttongroup.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcalendartextnavigator_p.h b/src/widgets/widgets/qcalendartextnavigator_p.h index b153e4a24e..88bd3c6a71 100644 --- a/src/widgets/widgets/qcalendartextnavigator_p.h +++ b/src/widgets/widgets/qcalendartextnavigator_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp index d61ae023ef..82c5a29497 100644 --- a/src/widgets/widgets/qcalendarwidget.cpp +++ b/src/widgets/widgets/qcalendarwidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcalendarwidget.h b/src/widgets/widgets/qcalendarwidget.h index 815fcc823a..4a4d21ebd6 100644 --- a/src/widgets/widgets/qcalendarwidget.h +++ b/src/widgets/widgets/qcalendarwidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcheckbox.cpp b/src/widgets/widgets/qcheckbox.cpp index fb8ed6c890..50d0ab8276 100644 --- a/src/widgets/widgets/qcheckbox.cpp +++ b/src/widgets/widgets/qcheckbox.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcheckbox.h b/src/widgets/widgets/qcheckbox.h index 3a1e6fc020..9adf5f6567 100644 --- a/src/widgets/widgets/qcheckbox.h +++ b/src/widgets/widgets/qcheckbox.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcocoatoolbardelegate_mac.mm b/src/widgets/widgets/qcocoatoolbardelegate_mac.mm index 2b637bc93c..2ea66b0d40 100644 --- a/src/widgets/widgets/qcocoatoolbardelegate_mac.mm +++ b/src/widgets/widgets/qcocoatoolbardelegate_mac.mm @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcocoatoolbardelegate_mac_p.h b/src/widgets/widgets/qcocoatoolbardelegate_mac_p.h index 94534beaac..f74f608660 100644 --- a/src/widgets/widgets/qcocoatoolbardelegate_mac_p.h +++ b/src/widgets/widgets/qcocoatoolbardelegate_mac_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index bb57fa336b..6103b9b4c2 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcombobox.h b/src/widgets/widgets/qcombobox.h index 26e9f0882c..d167ac7d11 100644 --- a/src/widgets/widgets/qcombobox.h +++ b/src/widgets/widgets/qcombobox.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcombobox_p.h b/src/widgets/widgets/qcombobox_p.h index 4676668610..14cf9e7925 100644 --- a/src/widgets/widgets/qcombobox_p.h +++ b/src/widgets/widgets/qcombobox_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcommandlinkbutton.cpp b/src/widgets/widgets/qcommandlinkbutton.cpp index f9be0053e8..18f7b1784e 100644 --- a/src/widgets/widgets/qcommandlinkbutton.cpp +++ b/src/widgets/widgets/qcommandlinkbutton.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qcommandlinkbutton.h b/src/widgets/widgets/qcommandlinkbutton.h index d8d2617587..e18fb0a4f0 100644 --- a/src/widgets/widgets/qcommandlinkbutton.h +++ b/src/widgets/widgets/qcommandlinkbutton.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp index 7ee2bf64fb..a0bbbbf7c7 100644 --- a/src/widgets/widgets/qdatetimeedit.cpp +++ b/src/widgets/widgets/qdatetimeedit.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdatetimeedit.h b/src/widgets/widgets/qdatetimeedit.h index 30978113d0..0b6dfb6e28 100644 --- a/src/widgets/widgets/qdatetimeedit.h +++ b/src/widgets/widgets/qdatetimeedit.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdatetimeedit_p.h b/src/widgets/widgets/qdatetimeedit_p.h index c8c9cd0e23..143979d4bc 100644 --- a/src/widgets/widgets/qdatetimeedit_p.h +++ b/src/widgets/widgets/qdatetimeedit_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdial.cpp b/src/widgets/widgets/qdial.cpp index c7c6c51c53..b415b5254a 100644 --- a/src/widgets/widgets/qdial.cpp +++ b/src/widgets/widgets/qdial.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdial.h b/src/widgets/widgets/qdial.h index ee53edc8dd..16c4001517 100644 --- a/src/widgets/widgets/qdial.h +++ b/src/widgets/widgets/qdial.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdialogbuttonbox.cpp b/src/widgets/widgets/qdialogbuttonbox.cpp index 3ebad888a4..bc5d84e259 100644 --- a/src/widgets/widgets/qdialogbuttonbox.cpp +++ b/src/widgets/widgets/qdialogbuttonbox.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdialogbuttonbox.h b/src/widgets/widgets/qdialogbuttonbox.h index d2969d2eda..6715c590e2 100644 --- a/src/widgets/widgets/qdialogbuttonbox.h +++ b/src/widgets/widgets/qdialogbuttonbox.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdockarealayout.cpp b/src/widgets/widgets/qdockarealayout.cpp index 6c15e9016f..ca831f5a39 100644 --- a/src/widgets/widgets/qdockarealayout.cpp +++ b/src/widgets/widgets/qdockarealayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdockarealayout_p.h b/src/widgets/widgets/qdockarealayout_p.h index 53e16911c1..86bf4d32e5 100644 --- a/src/widgets/widgets/qdockarealayout_p.h +++ b/src/widgets/widgets/qdockarealayout_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index a2e363f991..7485644a08 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdockwidget.h b/src/widgets/widgets/qdockwidget.h index a886aee1d0..ecf8c67e45 100644 --- a/src/widgets/widgets/qdockwidget.h +++ b/src/widgets/widgets/qdockwidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qdockwidget_p.h b/src/widgets/widgets/qdockwidget_p.h index 7b2e6f97d1..800f523825 100644 --- a/src/widgets/widgets/qdockwidget_p.h +++ b/src/widgets/widgets/qdockwidget_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qeffects.cpp b/src/widgets/widgets/qeffects.cpp index c43ed9848b..83060bb571 100644 --- a/src/widgets/widgets/qeffects.cpp +++ b/src/widgets/widgets/qeffects.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qeffects_p.h b/src/widgets/widgets/qeffects_p.h index bbf11face4..a96a60a956 100644 --- a/src/widgets/widgets/qeffects_p.h +++ b/src/widgets/widgets/qeffects_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qfocusframe.cpp b/src/widgets/widgets/qfocusframe.cpp index 02d8d5aae9..70b335bfb1 100644 --- a/src/widgets/widgets/qfocusframe.cpp +++ b/src/widgets/widgets/qfocusframe.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qfocusframe.h b/src/widgets/widgets/qfocusframe.h index aab76c2569..e1b0004ffc 100644 --- a/src/widgets/widgets/qfocusframe.h +++ b/src/widgets/widgets/qfocusframe.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qfontcombobox.cpp b/src/widgets/widgets/qfontcombobox.cpp index 4adb188212..5f929caf03 100644 --- a/src/widgets/widgets/qfontcombobox.cpp +++ b/src/widgets/widgets/qfontcombobox.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qfontcombobox.h b/src/widgets/widgets/qfontcombobox.h index 4101b37e2b..66fc9b4581 100644 --- a/src/widgets/widgets/qfontcombobox.h +++ b/src/widgets/widgets/qfontcombobox.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qframe.cpp b/src/widgets/widgets/qframe.cpp index 3dc30674e2..b7ef2ed3b1 100644 --- a/src/widgets/widgets/qframe.cpp +++ b/src/widgets/widgets/qframe.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qframe.h b/src/widgets/widgets/qframe.h index 3539f9fae0..f121c0d725 100644 --- a/src/widgets/widgets/qframe.h +++ b/src/widgets/widgets/qframe.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qframe_p.h b/src/widgets/widgets/qframe_p.h index faa170ae94..377f6f942e 100644 --- a/src/widgets/widgets/qframe_p.h +++ b/src/widgets/widgets/qframe_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qgroupbox.cpp b/src/widgets/widgets/qgroupbox.cpp index a491b3218b..d82f151165 100644 --- a/src/widgets/widgets/qgroupbox.cpp +++ b/src/widgets/widgets/qgroupbox.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qgroupbox.h b/src/widgets/widgets/qgroupbox.h index cdef4c4548..6c18cf8c0f 100644 --- a/src/widgets/widgets/qgroupbox.h +++ b/src/widgets/widgets/qgroupbox.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp index f34b30013f..7f2a7684eb 100644 --- a/src/widgets/widgets/qlabel.cpp +++ b/src/widgets/widgets/qlabel.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qlabel.h b/src/widgets/widgets/qlabel.h index 311eab958f..8edb099560 100644 --- a/src/widgets/widgets/qlabel.h +++ b/src/widgets/widgets/qlabel.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qlabel_p.h b/src/widgets/widgets/qlabel_p.h index 2a8958099b..a82ae0653b 100644 --- a/src/widgets/widgets/qlabel_p.h +++ b/src/widgets/widgets/qlabel_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qlcdnumber.cpp b/src/widgets/widgets/qlcdnumber.cpp index 876acf4c0c..3ba9ad9ba3 100644 --- a/src/widgets/widgets/qlcdnumber.cpp +++ b/src/widgets/widgets/qlcdnumber.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qlcdnumber.h b/src/widgets/widgets/qlcdnumber.h index e5c2b40cf8..3dde1527f2 100644 --- a/src/widgets/widgets/qlcdnumber.h +++ b/src/widgets/widgets/qlcdnumber.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 5155df8e23..ea58ec1429 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qlineedit.h b/src/widgets/widgets/qlineedit.h index 56a18d4fab..e2b944314b 100644 --- a/src/widgets/widgets/qlineedit.h +++ b/src/widgets/widgets/qlineedit.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index 10329293b3..1999216e65 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index 8f1ca48865..4eb35b7dc6 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmaccocoaviewcontainer_mac.h b/src/widgets/widgets/qmaccocoaviewcontainer_mac.h index d555d5cedd..b89b796819 100644 --- a/src/widgets/widgets/qmaccocoaviewcontainer_mac.h +++ b/src/widgets/widgets/qmaccocoaviewcontainer_mac.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm index 7077772be4..2be11f34d5 100644 --- a/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm +++ b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmacnativewidget_mac.h b/src/widgets/widgets/qmacnativewidget_mac.h index 47d7e17638..796d7b38d4 100644 --- a/src/widgets/widgets/qmacnativewidget_mac.h +++ b/src/widgets/widgets/qmacnativewidget_mac.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmacnativewidget_mac.mm b/src/widgets/widgets/qmacnativewidget_mac.mm index 240bd6d92e..50907b8dfc 100644 --- a/src/widgets/widgets/qmacnativewidget_mac.mm +++ b/src/widgets/widgets/qmacnativewidget_mac.mm @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmainwindow.cpp b/src/widgets/widgets/qmainwindow.cpp index 5bb331a99a..436fb65dd2 100644 --- a/src/widgets/widgets/qmainwindow.cpp +++ b/src/widgets/widgets/qmainwindow.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmainwindow.h b/src/widgets/widgets/qmainwindow.h index 0527725976..d9edf711e0 100644 --- a/src/widgets/widgets/qmainwindow.h +++ b/src/widgets/widgets/qmainwindow.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp index 17a3f06e79..cfeb0e2c67 100644 --- a/src/widgets/widgets/qmainwindowlayout.cpp +++ b/src/widgets/widgets/qmainwindowlayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmainwindowlayout_mac.mm b/src/widgets/widgets/qmainwindowlayout_mac.mm index 4fea391339..38605c2e09 100644 --- a/src/widgets/widgets/qmainwindowlayout_mac.mm +++ b/src/widgets/widgets/qmainwindowlayout_mac.mm @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmainwindowlayout_p.h b/src/widgets/widgets/qmainwindowlayout_p.h index 50fcf8a15f..f866a554dc 100644 --- a/src/widgets/widgets/qmainwindowlayout_p.h +++ b/src/widgets/widgets/qmainwindowlayout_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp index 5135cf6962..b2409e300c 100644 --- a/src/widgets/widgets/qmdiarea.cpp +++ b/src/widgets/widgets/qmdiarea.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmdiarea.h b/src/widgets/widgets/qmdiarea.h index 9cb8cb01dc..87ecd432dc 100644 --- a/src/widgets/widgets/qmdiarea.h +++ b/src/widgets/widgets/qmdiarea.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmdiarea_p.h b/src/widgets/widgets/qmdiarea_p.h index 4c953b80ef..90db55438a 100644 --- a/src/widgets/widgets/qmdiarea_p.h +++ b/src/widgets/widgets/qmdiarea_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp index 7ea2369ba5..4259f75097 100644 --- a/src/widgets/widgets/qmdisubwindow.cpp +++ b/src/widgets/widgets/qmdisubwindow.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmdisubwindow.h b/src/widgets/widgets/qmdisubwindow.h index db5238f07f..915fef758b 100644 --- a/src/widgets/widgets/qmdisubwindow.h +++ b/src/widgets/widgets/qmdisubwindow.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmdisubwindow_p.h b/src/widgets/widgets/qmdisubwindow_p.h index 810fd3d27d..90369ff526 100644 --- a/src/widgets/widgets/qmdisubwindow_p.h +++ b/src/widgets/widgets/qmdisubwindow_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index bbfc79d117..dfa906d2ea 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmenu.h b/src/widgets/widgets/qmenu.h index 7fa3336769..518771d846 100644 --- a/src/widgets/widgets/qmenu.h +++ b/src/widgets/widgets/qmenu.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmenu_p.h b/src/widgets/widgets/qmenu_p.h index 27b4745951..6cc88c56e2 100644 --- a/src/widgets/widgets/qmenu_p.h +++ b/src/widgets/widgets/qmenu_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmenu_wince.cpp b/src/widgets/widgets/qmenu_wince.cpp index ec1560f5e2..a82cc4abb9 100644 --- a/src/widgets/widgets/qmenu_wince.cpp +++ b/src/widgets/widgets/qmenu_wince.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmenu_wince_resource_p.h b/src/widgets/widgets/qmenu_wince_resource_p.h index 783f3285af..3ecf05a02a 100644 --- a/src/widgets/widgets/qmenu_wince_resource_p.h +++ b/src/widgets/widgets/qmenu_wince_resource_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmenubar.cpp b/src/widgets/widgets/qmenubar.cpp index 5fdd505f16..f22c48b26f 100644 --- a/src/widgets/widgets/qmenubar.cpp +++ b/src/widgets/widgets/qmenubar.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmenubar.h b/src/widgets/widgets/qmenubar.h index 592c951815..e88a0c07c0 100644 --- a/src/widgets/widgets/qmenubar.h +++ b/src/widgets/widgets/qmenubar.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qmenubar_p.h b/src/widgets/widgets/qmenubar_p.h index b39d370c76..817df945c5 100644 --- a/src/widgets/widgets/qmenubar_p.h +++ b/src/widgets/widgets/qmenubar_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index 8f00201e70..95271adeb0 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qplaintextedit.h b/src/widgets/widgets/qplaintextedit.h index 7e2e10d8e4..42e8288cf3 100644 --- a/src/widgets/widgets/qplaintextedit.h +++ b/src/widgets/widgets/qplaintextedit.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qplaintextedit_p.h b/src/widgets/widgets/qplaintextedit_p.h index 6173234f5a..ab464676e5 100644 --- a/src/widgets/widgets/qplaintextedit_p.h +++ b/src/widgets/widgets/qplaintextedit_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qprogressbar.cpp b/src/widgets/widgets/qprogressbar.cpp index 6b3dadddf0..e317933e4d 100644 --- a/src/widgets/widgets/qprogressbar.cpp +++ b/src/widgets/widgets/qprogressbar.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qprogressbar.h b/src/widgets/widgets/qprogressbar.h index 71bb2fc8f8..2f66aaad9e 100644 --- a/src/widgets/widgets/qprogressbar.h +++ b/src/widgets/widgets/qprogressbar.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qpushbutton.cpp b/src/widgets/widgets/qpushbutton.cpp index 139e3949d1..a10d726e36 100644 --- a/src/widgets/widgets/qpushbutton.cpp +++ b/src/widgets/widgets/qpushbutton.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qpushbutton.h b/src/widgets/widgets/qpushbutton.h index 3154c0dedb..7806e96763 100644 --- a/src/widgets/widgets/qpushbutton.h +++ b/src/widgets/widgets/qpushbutton.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qpushbutton_p.h b/src/widgets/widgets/qpushbutton_p.h index 803bb0c4ac..93069d295f 100644 --- a/src/widgets/widgets/qpushbutton_p.h +++ b/src/widgets/widgets/qpushbutton_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qradiobutton.cpp b/src/widgets/widgets/qradiobutton.cpp index 1195b5fad4..7bc57df12b 100644 --- a/src/widgets/widgets/qradiobutton.cpp +++ b/src/widgets/widgets/qradiobutton.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qradiobutton.h b/src/widgets/widgets/qradiobutton.h index ad73d0387c..104d4a12e0 100644 --- a/src/widgets/widgets/qradiobutton.h +++ b/src/widgets/widgets/qradiobutton.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qrubberband.cpp b/src/widgets/widgets/qrubberband.cpp index 2adc81fd3e..112a9b66cd 100644 --- a/src/widgets/widgets/qrubberband.cpp +++ b/src/widgets/widgets/qrubberband.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qrubberband.h b/src/widgets/widgets/qrubberband.h index 3b74ec9f10..b603415d1a 100644 --- a/src/widgets/widgets/qrubberband.h +++ b/src/widgets/widgets/qrubberband.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qscrollarea.cpp b/src/widgets/widgets/qscrollarea.cpp index 0de63a5a47..93c335c56b 100644 --- a/src/widgets/widgets/qscrollarea.cpp +++ b/src/widgets/widgets/qscrollarea.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qscrollarea.h b/src/widgets/widgets/qscrollarea.h index d506cd829c..576c9bc9e0 100644 --- a/src/widgets/widgets/qscrollarea.h +++ b/src/widgets/widgets/qscrollarea.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qscrollarea_p.h b/src/widgets/widgets/qscrollarea_p.h index c5c00d3451..919d1c8df2 100644 --- a/src/widgets/widgets/qscrollarea_p.h +++ b/src/widgets/widgets/qscrollarea_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qscrollbar.cpp b/src/widgets/widgets/qscrollbar.cpp index bddef57f5d..e1e2723a2d 100644 --- a/src/widgets/widgets/qscrollbar.cpp +++ b/src/widgets/widgets/qscrollbar.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qscrollbar.h b/src/widgets/widgets/qscrollbar.h index b452c97c10..27d0169b40 100644 --- a/src/widgets/widgets/qscrollbar.h +++ b/src/widgets/widgets/qscrollbar.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qscrollbar_p.h b/src/widgets/widgets/qscrollbar_p.h index 75fea46e04..c62c337a40 100644 --- a/src/widgets/widgets/qscrollbar_p.h +++ b/src/widgets/widgets/qscrollbar_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qsizegrip.cpp b/src/widgets/widgets/qsizegrip.cpp index 0b9341de58..106a8d770a 100644 --- a/src/widgets/widgets/qsizegrip.cpp +++ b/src/widgets/widgets/qsizegrip.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qsizegrip.h b/src/widgets/widgets/qsizegrip.h index 61f71b788f..11dadfa306 100644 --- a/src/widgets/widgets/qsizegrip.h +++ b/src/widgets/widgets/qsizegrip.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qslider.cpp b/src/widgets/widgets/qslider.cpp index f10a693117..2d91cd07e6 100644 --- a/src/widgets/widgets/qslider.cpp +++ b/src/widgets/widgets/qslider.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qslider.h b/src/widgets/widgets/qslider.h index 5c4aade02c..a8d7019c1f 100644 --- a/src/widgets/widgets/qslider.h +++ b/src/widgets/widgets/qslider.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qspinbox.cpp b/src/widgets/widgets/qspinbox.cpp index b51bf4c078..0ce5473ad8 100644 --- a/src/widgets/widgets/qspinbox.cpp +++ b/src/widgets/widgets/qspinbox.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qspinbox.h b/src/widgets/widgets/qspinbox.h index 501e6388ce..4963f87a1a 100644 --- a/src/widgets/widgets/qspinbox.h +++ b/src/widgets/widgets/qspinbox.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qsplashscreen.cpp b/src/widgets/widgets/qsplashscreen.cpp index 4b24c9dfef..746c02e4e2 100644 --- a/src/widgets/widgets/qsplashscreen.cpp +++ b/src/widgets/widgets/qsplashscreen.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qsplashscreen.h b/src/widgets/widgets/qsplashscreen.h index b356291adc..a1af8e45ef 100644 --- a/src/widgets/widgets/qsplashscreen.h +++ b/src/widgets/widgets/qsplashscreen.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qsplitter.cpp b/src/widgets/widgets/qsplitter.cpp index e39b79c67a..031763b80c 100644 --- a/src/widgets/widgets/qsplitter.cpp +++ b/src/widgets/widgets/qsplitter.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qsplitter.h b/src/widgets/widgets/qsplitter.h index 511aadd2c9..ed4102d31e 100644 --- a/src/widgets/widgets/qsplitter.h +++ b/src/widgets/widgets/qsplitter.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qsplitter_p.h b/src/widgets/widgets/qsplitter_p.h index e829fd2f69..f1e050b8f6 100644 --- a/src/widgets/widgets/qsplitter_p.h +++ b/src/widgets/widgets/qsplitter_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qstackedwidget.cpp b/src/widgets/widgets/qstackedwidget.cpp index 4dd11a00b8..4b7170a596 100644 --- a/src/widgets/widgets/qstackedwidget.cpp +++ b/src/widgets/widgets/qstackedwidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qstackedwidget.h b/src/widgets/widgets/qstackedwidget.h index 59b340d03e..a147577ba6 100644 --- a/src/widgets/widgets/qstackedwidget.h +++ b/src/widgets/widgets/qstackedwidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qstatusbar.cpp b/src/widgets/widgets/qstatusbar.cpp index 4c9be611bb..86fd10699c 100644 --- a/src/widgets/widgets/qstatusbar.cpp +++ b/src/widgets/widgets/qstatusbar.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qstatusbar.h b/src/widgets/widgets/qstatusbar.h index 989d3b9623..4a5b1ee494 100644 --- a/src/widgets/widgets/qstatusbar.h +++ b/src/widgets/widgets/qstatusbar.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp index 787cc754f6..b975035dcf 100644 --- a/src/widgets/widgets/qtabbar.cpp +++ b/src/widgets/widgets/qtabbar.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtabbar.h b/src/widgets/widgets/qtabbar.h index 8d2bb6d11d..72c19ab520 100644 --- a/src/widgets/widgets/qtabbar.h +++ b/src/widgets/widgets/qtabbar.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtabbar_p.h b/src/widgets/widgets/qtabbar_p.h index 2dc7569d27..7468144146 100644 --- a/src/widgets/widgets/qtabbar_p.h +++ b/src/widgets/widgets/qtabbar_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtabwidget.cpp b/src/widgets/widgets/qtabwidget.cpp index 2f0acc3ea4..4df55e2537 100644 --- a/src/widgets/widgets/qtabwidget.cpp +++ b/src/widgets/widgets/qtabwidget.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtabwidget.h b/src/widgets/widgets/qtabwidget.h index 5bed379931..1a1eb2ef2b 100644 --- a/src/widgets/widgets/qtabwidget.h +++ b/src/widgets/widgets/qtabwidget.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtextbrowser.cpp b/src/widgets/widgets/qtextbrowser.cpp index b4158e3b8d..e05da51207 100644 --- a/src/widgets/widgets/qtextbrowser.cpp +++ b/src/widgets/widgets/qtextbrowser.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtextbrowser.h b/src/widgets/widgets/qtextbrowser.h index 3f9488152a..244d8a32df 100644 --- a/src/widgets/widgets/qtextbrowser.h +++ b/src/widgets/widgets/qtextbrowser.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index a79cea31a1..bf2c8a4495 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtextedit.h b/src/widgets/widgets/qtextedit.h index 8eb274342f..e1471848e7 100644 --- a/src/widgets/widgets/qtextedit.h +++ b/src/widgets/widgets/qtextedit.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtextedit_p.h b/src/widgets/widgets/qtextedit_p.h index a2ca2dc6f4..1ce68dc23e 100644 --- a/src/widgets/widgets/qtextedit_p.h +++ b/src/widgets/widgets/qtextedit_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbar.cpp b/src/widgets/widgets/qtoolbar.cpp index 907874fc0e..0c2dd20d77 100644 --- a/src/widgets/widgets/qtoolbar.cpp +++ b/src/widgets/widgets/qtoolbar.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbar.h b/src/widgets/widgets/qtoolbar.h index 99a8544153..663497493f 100644 --- a/src/widgets/widgets/qtoolbar.h +++ b/src/widgets/widgets/qtoolbar.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbar_p.h b/src/widgets/widgets/qtoolbar_p.h index 464f653059..9ff0b9d61c 100644 --- a/src/widgets/widgets/qtoolbar_p.h +++ b/src/widgets/widgets/qtoolbar_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbararealayout.cpp b/src/widgets/widgets/qtoolbararealayout.cpp index 969bb8a7fd..94a1148ded 100644 --- a/src/widgets/widgets/qtoolbararealayout.cpp +++ b/src/widgets/widgets/qtoolbararealayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbararealayout_p.h b/src/widgets/widgets/qtoolbararealayout_p.h index e052a71044..ec7d1f26f1 100644 --- a/src/widgets/widgets/qtoolbararealayout_p.h +++ b/src/widgets/widgets/qtoolbararealayout_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbarextension.cpp b/src/widgets/widgets/qtoolbarextension.cpp index 682ababc33..1e1999d4f3 100644 --- a/src/widgets/widgets/qtoolbarextension.cpp +++ b/src/widgets/widgets/qtoolbarextension.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbarextension_p.h b/src/widgets/widgets/qtoolbarextension_p.h index 5175d7bc2d..ccb2e411b0 100644 --- a/src/widgets/widgets/qtoolbarextension_p.h +++ b/src/widgets/widgets/qtoolbarextension_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbarlayout.cpp b/src/widgets/widgets/qtoolbarlayout.cpp index 7a4f3b17d0..3c0c84ee2f 100644 --- a/src/widgets/widgets/qtoolbarlayout.cpp +++ b/src/widgets/widgets/qtoolbarlayout.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbarlayout_p.h b/src/widgets/widgets/qtoolbarlayout_p.h index 5796c21861..8605a9a6ac 100644 --- a/src/widgets/widgets/qtoolbarlayout_p.h +++ b/src/widgets/widgets/qtoolbarlayout_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbarseparator.cpp b/src/widgets/widgets/qtoolbarseparator.cpp index a5b5bb9569..140f26eaed 100644 --- a/src/widgets/widgets/qtoolbarseparator.cpp +++ b/src/widgets/widgets/qtoolbarseparator.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbarseparator_p.h b/src/widgets/widgets/qtoolbarseparator_p.h index bea892c6fb..8db7205b4f 100644 --- a/src/widgets/widgets/qtoolbarseparator_p.h +++ b/src/widgets/widgets/qtoolbarseparator_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbox.cpp b/src/widgets/widgets/qtoolbox.cpp index 52ab5465ae..1264a5b6f2 100644 --- a/src/widgets/widgets/qtoolbox.cpp +++ b/src/widgets/widgets/qtoolbox.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbox.h b/src/widgets/widgets/qtoolbox.h index dc3dbad5b2..3a15ca1850 100644 --- a/src/widgets/widgets/qtoolbox.h +++ b/src/widgets/widgets/qtoolbox.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp index 54c73588f7..88690f8bff 100644 --- a/src/widgets/widgets/qtoolbutton.cpp +++ b/src/widgets/widgets/qtoolbutton.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qtoolbutton.h b/src/widgets/widgets/qtoolbutton.h index 40ebfed9fb..3310476b44 100644 --- a/src/widgets/widgets/qtoolbutton.h +++ b/src/widgets/widgets/qtoolbutton.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qwidgetanimator.cpp b/src/widgets/widgets/qwidgetanimator.cpp index c6520a010e..bbd96ca29a 100644 --- a/src/widgets/widgets/qwidgetanimator.cpp +++ b/src/widgets/widgets/qwidgetanimator.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qwidgetanimator_p.h b/src/widgets/widgets/qwidgetanimator_p.h index fa2421c1fa..776ca74b1f 100644 --- a/src/widgets/widgets/qwidgetanimator_p.h +++ b/src/widgets/widgets/qwidgetanimator_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qwidgetlinecontrol.cpp b/src/widgets/widgets/qwidgetlinecontrol.cpp index 579c1713aa..9212f942c5 100644 --- a/src/widgets/widgets/qwidgetlinecontrol.cpp +++ b/src/widgets/widgets/qwidgetlinecontrol.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qwidgetlinecontrol_p.h b/src/widgets/widgets/qwidgetlinecontrol_p.h index b114648c3c..1cee67bfd2 100644 --- a/src/widgets/widgets/qwidgetlinecontrol_p.h +++ b/src/widgets/widgets/qwidgetlinecontrol_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qwidgetresizehandler.cpp b/src/widgets/widgets/qwidgetresizehandler.cpp index 362f46ac6a..ba4e69126a 100644 --- a/src/widgets/widgets/qwidgetresizehandler.cpp +++ b/src/widgets/widgets/qwidgetresizehandler.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qwidgetresizehandler_p.h b/src/widgets/widgets/qwidgetresizehandler_p.h index 8c6b8cd669..6ace370e9d 100644 --- a/src/widgets/widgets/qwidgetresizehandler_p.h +++ b/src/widgets/widgets/qwidgetresizehandler_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index d4801f6d5a..99493704b5 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qwidgettextcontrol_p.h b/src/widgets/widgets/qwidgettextcontrol_p.h index c805e38da7..e857fffba5 100644 --- a/src/widgets/widgets/qwidgettextcontrol_p.h +++ b/src/widgets/widgets/qwidgettextcontrol_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage diff --git a/src/widgets/widgets/qwidgettextcontrol_p_p.h b/src/widgets/widgets/qwidgettextcontrol_p_p.h index 86a7f1e48e..727821015e 100644 --- a/src/widgets/widgets/qwidgettextcontrol_p_p.h +++ b/src/widgets/widgets/qwidgettextcontrol_p_p.h @@ -3,7 +3,7 @@ ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** -** This file is part of the QtGui module of the Qt Toolkit. +** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage -- cgit v1.2.3 From 36cb3f3f655a9090c82de609010cbfb88651a0f3 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Fri, 15 Mar 2013 01:28:40 +0200 Subject: Fix the font engines leaking 1. when there were some engines with ref > 1 in the cache, prior to calling QFontDatabase::{add,remove}ApplicationFont()/removeAllApplicationFonts() (QFontCache::clear() has never decreased engine's cache_count); 2. when the QFontEngineData's engine is not in cache i.e. the Box or Test font engine (~QFontEngineData() didn't free engines it keeps). Instead of using the font engine's (external) "cache_count" counter, QFontCache now references a given font engine every time it is inserted to the cache and dereferences exactly that number of times in clear(). Change-Id: I87677ebd24c1f4a81a53526f2e726e596b043c61 Reviewed-by: Lars Knoll --- src/gui/text/qfont.cpp | 172 ++++++++++----------- src/gui/text/qfont_p.h | 9 +- src/gui/text/qfontengine.cpp | 40 ++++- src/gui/text/qfontengine_p.h | 1 - src/gui/text/qrawfont.cpp | 6 +- src/gui/text/qtextengine.cpp | 7 +- .../platforms/windows/qwindowsfontdatabase.cpp | 4 +- 7 files changed, 126 insertions(+), 113 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp index 279d165322..fc694dc497 100644 --- a/src/gui/text/qfont.cpp +++ b/src/gui/text/qfont.cpp @@ -324,9 +324,11 @@ QFontEngineData::QFontEngineData() QFontEngineData::~QFontEngineData() { for (int i = 0; i < QChar::ScriptCount; ++i) { - if (engines[i]) - engines[i]->ref.deref(); - engines[i] = 0; + if (engines[i]) { + if (!engines[i]->ref.deref()) + delete engines[i]; + engines[i] = 0; + } } } @@ -2647,24 +2649,6 @@ QFontCache::~QFontCache() ++it; } } - EngineCache::ConstIterator it = engineCache.constBegin(), - end = engineCache.constEnd(); - while (it != end) { - if (--it.value().data->cache_count == 0) { - if (it.value().data->ref.load() == 0) { - FC_DEBUG("QFontCache::~QFontCache: deleting engine %p key=(%d / %g %g %d %d %d)", - it.value().data, it.key().script, it.key().def.pointSize, - it.key().def.pixelSize, it.key().def.weight, it.key().def.style, - it.key().def.fixedPitch); - - delete it.value().data; - } else { - FC_DEBUG("QFontCache::~QFontCache: engine = %p still has refcount %d", - it.value().data, it.value().data->ref.load()); - } - } - ++it; - } } void QFontCache::clear() @@ -2676,7 +2660,10 @@ void QFontCache::clear() QFontEngineData *data = it.value(); for (int i = 0; i < QChar::ScriptCount; ++i) { if (data->engines[i]) { - data->engines[i]->ref.deref(); + if (!data->engines[i]->ref.deref()) { + Q_ASSERT(engineCacheCount.value(data->engines[i]) == 0); + delete data->engines[i]; + } data->engines[i] = 0; } } @@ -2684,23 +2671,25 @@ void QFontCache::clear() } } - for (EngineCache::Iterator it = engineCache.begin(), end = engineCache.end(); - it != end; ++it) { - if (it->data->ref.load() == 0) { - delete it->data; - it->data = 0; - } - } - - for (EngineCache::Iterator it = engineCache.begin(), end = engineCache.end(); - it != end; ++it) { - if (it->data && it->data->ref.load() == 0) { - delete it->data; - it->data = 0; + bool mightHaveEnginesLeftForCleanup = true; + while (mightHaveEnginesLeftForCleanup) { + mightHaveEnginesLeftForCleanup = false; + for (EngineCache::Iterator it = engineCache.begin(), end = engineCache.end(); + it != end; ++it) { + if (it.value().data && engineCacheCount.value(it.value().data) > 0) { + --engineCacheCount[it.value().data]; + if (!it.value().data->ref.deref()) { + Q_ASSERT(engineCacheCount.value(it.value().data) == 0); + delete it.value().data; + mightHaveEnginesLeftForCleanup = true; + } + it.value().data = 0; + } } } engineCache.clear(); + engineCacheCount.clear(); } @@ -2716,7 +2705,14 @@ QFontEngineData *QFontCache::findEngineData(const QFontDef &def) const void QFontCache::insertEngineData(const QFontDef &def, QFontEngineData *engineData) { +#ifdef QFONTCACHE_DEBUG FC_DEBUG("QFontCache: inserting new engine data %p", engineData); + if (engineDataCache.contains(def)) { + FC_DEBUG(" QFontCache already contains engine data %p for key=(%g %g %d %d %d)", + engineDataCache.value(def), def.pointSize, + def.pixelSize, def.weight, def.style, def.fixedPitch); + } +#endif engineDataCache.insert(def, engineData); increaseCost(sizeof(QFontEngineData)); @@ -2741,13 +2737,22 @@ void QFontCache::updateHitCountAndTimeStamp(Engine &value) FC_DEBUG("QFontCache: found font engine\n" " %p: timestamp %4u hits %3u ref %2d/%2d, type '%s'", value.data, value.timestamp, value.hits, - value.data->ref.load(), value.data->cache_count, + value.data->ref.load(), engineCacheCount.value(value.data), value.data->name()); } void QFontCache::insertEngine(const Key &key, QFontEngine *engine, bool insertMulti) { - FC_DEBUG("QFontCache: inserting new engine %p", engine); +#ifdef QFONTCACHE_DEBUG + FC_DEBUG("QFontCache: inserting new engine %p, refcount %d", engine, engine->ref.load()); + if (!insertMulti && engineCache.contains(key)) { + FC_DEBUG(" QFontCache already contains engine %p for key=(%g %g %d %d %d)", + engineCache.value(key).data, key.def.pointSize, + key.def.pixelSize, key.def.weight, key.def.style, key.def.fixedPitch); + } +#endif + + engine->ref.ref(); Engine data(engine); data.timestamp = ++current_timestamp; @@ -2756,12 +2761,9 @@ void QFontCache::insertEngine(const Key &key, QFontEngine *engine, bool insertMu engineCache.insertMulti(key, data); else engineCache.insert(key, data); - // only increase the cost if this is the first time we insert the engine - if (engine->cache_count == 0) + if (++engineCacheCount[engine] == 1) increaseCost(engine->cache_cost); - - ++engine->cache_count; } void QFontCache::increaseCost(uint cost) @@ -2825,11 +2827,8 @@ void QFontCache::timerEvent(QTimerEvent *) EngineDataCache::ConstIterator it = engineDataCache.constBegin(), end = engineDataCache.constEnd(); for (; it != end; ++it) { -#ifdef QFONTCACHE_DEBUG FC_DEBUG(" %p: ref %2d", it.value(), int(it.value()->ref.load())); -#endif // QFONTCACHE_DEBUG - if (it.value()->ref.load() != 0) in_use_cost += engine_data_cost; } @@ -2843,11 +2842,11 @@ void QFontCache::timerEvent(QTimerEvent *) for (; it != end; ++it) { FC_DEBUG(" %p: timestamp %4u hits %2u ref %2d/%2d, cost %u bytes", it.value().data, it.value().timestamp, it.value().hits, - it.value().data->ref.load(), it.value().data->cache_count, + it.value().data->ref.load(), engineCacheCount.value(it.value().data), it.value().data->cache_cost); if (it.value().data->ref.load() != 0) - in_use_cost += it.value().data->cache_cost / it.value().data->cache_count; + in_use_cost += it.value().data->cache_cost / engineCacheCount.value(it.value().data); } // attempt to make up for rounding errors @@ -2893,29 +2892,25 @@ void QFontCache::timerEvent(QTimerEvent *) FC_DEBUG(" CLEAN engine data:"); // clean out all unused engine data - EngineDataCache::Iterator it = engineDataCache.begin(), - end = engineDataCache.end(); - while (it != end) { - if (it.value()->ref.load() != 0) { + EngineDataCache::Iterator it = engineDataCache.begin(); + while (it != engineDataCache.end()) { + if (it.value()->ref.load() == 0) { + FC_DEBUG(" %p", it.value()); + decreaseCost(sizeof(QFontEngineData)); + delete it.value(); + it = engineDataCache.erase(it); + } else { ++it; - continue; } - - EngineDataCache::Iterator rem = it++; - - decreaseCost(sizeof(QFontEngineData)); - - FC_DEBUG(" %p", rem.value()); - - delete rem.value(); - engineDataCache.erase(rem); } } + FC_DEBUG(" CLEAN engine:"); + // clean out the engine cache just enough to get below our new max cost - uint current_cost; + bool cost_decreased; do { - current_cost = total_cost; + cost_decreased = false; EngineCache::Iterator it = engineCache.begin(), end = engineCache.end(); @@ -2923,49 +2918,46 @@ void QFontCache::timerEvent(QTimerEvent *) uint oldest = ~0u; uint least_popular = ~0u; - for (; it != end; ++it) { - if (it.value().data->ref.load() != 0) + EngineCache::Iterator jt = end; + + for ( ; it != end; ++it) { + if (it.value().data->ref.load() != engineCacheCount.value(it.value().data)) continue; - if (it.value().timestamp < oldest && - it.value().hits <= least_popular) { + if (it.value().timestamp < oldest && it.value().hits <= least_popular) { oldest = it.value().timestamp; least_popular = it.value().hits; + jt = it; } } - FC_DEBUG(" oldest %u least popular %u", oldest, least_popular); - - for (it = engineCache.begin(); it != end; ++it) { - if (it.value().data->ref.load() == 0 && - it.value().timestamp == oldest && - it.value().hits == least_popular) - break; - } - + it = jt; if (it != end) { FC_DEBUG(" %p: timestamp %4u hits %2u ref %2d/%2d, type '%s'", it.value().data, it.value().timestamp, it.value().hits, - it.value().data->ref.load(), it.value().data->cache_count, + it.value().data->ref.load(), engineCacheCount.value(it.value().data), it.value().data->name()); - if (--it.value().data->cache_count == 0) { - FC_DEBUG(" DELETE: last occurrence in cache"); - - decreaseCost(it.value().data->cache_cost); - delete it.value().data; - } else { - /* - this particular font engine is in the cache multiple - times... set current_cost to zero, so that we can - keep looping to get rid of all occurrences - */ - current_cost = 0; + QFontEngine *fontEngine = it.value().data; + // get rid of all occurrences + it = engineCache.begin(); + while (it != engineCache.end()) { + if (it.value().data == fontEngine) { + fontEngine->ref.deref(); + it = engineCache.erase(it); + } else { + ++it; + } } + // and delete the last occurrence + Q_ASSERT(fontEngine->ref.load() == 0); + decreaseCost(fontEngine->cache_cost); + delete fontEngine; + engineCacheCount.remove(fontEngine); - engineCache.erase(it); + cost_decreased = true; } - } while (current_cost != total_cost && total_cost > max_cost); + } while (cost_decreased && total_cost > max_cost); } diff --git a/src/gui/text/qfont_p.h b/src/gui/text/qfont_p.h index a35896e763..4cbf51d59c 100644 --- a/src/gui/text/qfont_p.h +++ b/src/gui/text/qfont_p.h @@ -193,9 +193,8 @@ private: }; -class QFontCache : public QObject +class Q_AUTOTEST_EXPORT QFontCache : public QObject { - Q_OBJECT public: // note: these static functions work on a per-thread basis static QFontCache *instance(); @@ -205,8 +204,7 @@ public: ~QFontCache(); void clear(); - // universal key structure. QFontEngineDatas and QFontEngines are cached using - // the same keys + struct Key { Key() : script(0), screen(0) { } Key(const QFontDef &d, int c, int s = 0) @@ -245,13 +243,14 @@ public: typedef QMap EngineCache; EngineCache engineCache; + QHash engineCacheCount; QFontEngine *findEngine(const Key &key); void updateHitCountAndTimeStamp(Engine &value); void insertEngine(const Key &key, QFontEngine *engine, bool insertMulti = false); - private: +private: void increaseCost(uint cost); void decreaseCost(uint cost); void timerEvent(QTimerEvent *event); diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 2bf33863f7..dbe56889da 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -170,6 +170,28 @@ static void hb_freeFace(void *face) qHBFreeFace((HB_Face)face); } + +#ifdef QT_BUILD_INTERNAL +// for testing purpose only, not thread-safe! +static QList *enginesCollector = 0; + +Q_AUTOTEST_EXPORT void QFontEngine_startCollectingEngines() +{ + delete enginesCollector; + enginesCollector = new QList(); +} + +Q_AUTOTEST_EXPORT QList QFontEngine_stopCollectingEngines() +{ + Q_ASSERT(enginesCollector); + QList ret = *enginesCollector; + delete enginesCollector; + enginesCollector = 0; + return ret; +} +#endif // QT_BUILD_INTERNAL + + // QFontEngine QFontEngine::QFontEngine() @@ -177,7 +199,6 @@ QFontEngine::QFontEngine() font_(0), font_destroy_func(0), face_(0), face_destroy_func(0) { - cache_count = 0; fsType = 0; symbol = false; @@ -194,6 +215,11 @@ QFontEngine::QFontEngine() glyphFormat = -1; m_subPixelPositionCount = 0; + +#ifdef QT_BUILD_INTERNAL + if (enginesCollector) + enginesCollector->append(this); +#endif } QFontEngine::~QFontEngine() @@ -208,6 +234,11 @@ QFontEngine::~QFontEngine() face_destroy_func(face_); face_ = 0; } + +#ifdef QT_BUILD_INTERNAL + if (enginesCollector) + enginesCollector->removeOne(this); +#endif } QFixed QFontEngine::lineThickness() const @@ -1384,11 +1415,8 @@ QFontEngineMulti::~QFontEngineMulti() { for (int i = 0; i < engines.size(); ++i) { QFontEngine *fontEngine = engines.at(i); - if (fontEngine) { - fontEngine->ref.deref(); - if (fontEngine->cache_count == 0 && fontEngine->ref.load() == 0) - delete fontEngine; - } + if (fontEngine && !fontEngine->ref.deref()) + delete fontEngine; } } diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h index 3c7746b3c9..f0f8713f74 100644 --- a/src/gui/text/qfontengine_p.h +++ b/src/gui/text/qfontengine_p.h @@ -273,7 +273,6 @@ public: mutable qt_destroy_func_t face_destroy_func; uint cache_cost; // amount of mem used in kb by the font - int cache_count; uint fsType : 16; bool symbol; struct KernPair { diff --git a/src/gui/text/qrawfont.cpp b/src/gui/text/qrawfont.cpp index 5781b49eab..f52b46eeae 100644 --- a/src/gui/text/qrawfont.cpp +++ b/src/gui/text/qrawfont.cpp @@ -738,8 +738,7 @@ void QRawFont::setPixelSize(qreal pixelSize) if (d->fontEngine != 0) d->fontEngine->ref.ref(); - oldFontEngine->ref.deref(); - if (oldFontEngine->cache_count == 0 && oldFontEngine->ref.load() == 0) + if (!oldFontEngine->ref.deref()) delete oldFontEngine; } @@ -750,8 +749,7 @@ void QRawFontPrivate::cleanUp() { platformCleanUp(); if (fontEngine != 0) { - fontEngine->ref.deref(); - if (fontEngine->cache_count == 0 && fontEngine->ref.load() == 0) + if (!fontEngine->ref.deref()) delete fontEngine; fontEngine = 0; } diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index ad85fedcd0..2fa7f0232d 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1253,11 +1253,8 @@ void QTextEngine::shape(int item) const static inline void releaseCachedFontEngine(QFontEngine *fontEngine) { - if (fontEngine) { - fontEngine->ref.deref(); - if (fontEngine->cache_count == 0 && fontEngine->ref.load() == 0) - delete fontEngine; - } + if (fontEngine && !fontEngine->ref.deref()) + delete fontEngine; } void QTextEngine::resetFontEngineCache() diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp index 2fa691347d..c59b0edf78 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp @@ -1097,11 +1097,11 @@ QFontEngine *QWindowsFontDatabase::fontEngine(const QByteArray &fontData, qreal if (request.family != fontEngine->fontDef.family) { qWarning("%s: Failed to load font. Got fallback instead: %s", __FUNCTION__, qPrintable(fontEngine->fontDef.family)); - if (fontEngine->cache_count == 0 && fontEngine->ref.load() == 0) + if (fontEngine->ref.load() == 0) delete fontEngine; fontEngine = 0; } else { - Q_ASSERT(fontEngine->cache_count == 0 && fontEngine->ref.load() == 0); + Q_ASSERT(fontEngine->ref.load() == 0); // Override the generated font name static_cast(fontEngine)->setUniqueFamilyName(uniqueFamilyName); -- cgit v1.2.3